- Create SQL migration for prompt templates used in article and image generation. - Add migration to change publish interval from days to hours in the sites table. - Implement InstallerController to handle installation requests and validation. - Develop FtpService for FTP connections and file uploads. - Create InstallerService to manage the WordPress installation process, including downloading, extracting, and configuring WordPress. - Add index view for the installer with form inputs for FTP, database, and WordPress admin settings. - Implement progress tracking for the installation process with AJAX polling.
92 lines
5.4 KiB
PHP
92 lines
5.4 KiB
PHP
<h2 class="mb-4">Ustawienia</h2>
|
|
|
|
<div class="card" style="max-width: 700px;">
|
|
<div class="card-body">
|
|
<form method="post" action="/settings">
|
|
|
|
<h5 class="mb-3 border-bottom pb-2">OpenAI (Generowanie artykułów)</h5>
|
|
|
|
<div class="mb-3">
|
|
<label for="openai_api_key" class="form-label">Klucz API OpenAI</label>
|
|
<input type="password" class="form-control" id="openai_api_key" name="openai_api_key"
|
|
value="<?= htmlspecialchars($settings['openai_api_key']) ?>"
|
|
placeholder="sk-proj-...">
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="openai_model" class="form-label">Model AI</label>
|
|
<select class="form-select" id="openai_model" name="openai_model">
|
|
<optgroup label="GPT-5">
|
|
<option value="gpt-5" <?= $settings['openai_model'] === 'gpt-5' ? 'selected' : '' ?>>GPT-5 (najnowszy)</option>
|
|
<option value="gpt-5-mini" <?= $settings['openai_model'] === 'gpt-5-mini' ? 'selected' : '' ?>>GPT-5 Mini</option>
|
|
</optgroup>
|
|
<optgroup label="GPT-4">
|
|
<option value="gpt-4o" <?= $settings['openai_model'] === 'gpt-4o' ? 'selected' : '' ?>>GPT-4o (rekomendowany)</option>
|
|
<option value="gpt-4o-mini" <?= $settings['openai_model'] === 'gpt-4o-mini' ? 'selected' : '' ?>>GPT-4o-mini (tańszy)</option>
|
|
<option value="gpt-4-turbo" <?= $settings['openai_model'] === 'gpt-4-turbo' ? 'selected' : '' ?>>GPT-4 Turbo</option>
|
|
</optgroup>
|
|
<optgroup label="GPT-3.5">
|
|
<option value="gpt-3.5-turbo" <?= $settings['openai_model'] === 'gpt-3.5-turbo' ? 'selected' : '' ?>>GPT-3.5 Turbo (najtańszy)</option>
|
|
</optgroup>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="row mb-3">
|
|
<div class="col">
|
|
<label for="article_min_words" class="form-label">Min. słów w artykule</label>
|
|
<input type="number" class="form-control" id="article_min_words" name="article_min_words"
|
|
value="<?= htmlspecialchars($settings['article_min_words']) ?>">
|
|
</div>
|
|
<div class="col">
|
|
<label for="article_max_words" class="form-label">Max. słów w artykule</label>
|
|
<input type="number" class="form-control" id="article_max_words" name="article_max_words"
|
|
value="<?= htmlspecialchars($settings['article_max_words']) ?>">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="article_generation_prompt" class="form-label">Prompt do generowania artykułu</label>
|
|
<textarea class="form-control" id="article_generation_prompt" name="article_generation_prompt" rows="6"><?= htmlspecialchars($settings['article_generation_prompt']) ?></textarea>
|
|
<small class="text-muted">Dostępne placeholdery: {min_words}, {max_words}</small>
|
|
</div>
|
|
|
|
<h5 class="mb-3 mt-4 border-bottom pb-2">Obrazki</h5>
|
|
|
|
<div class="mb-3">
|
|
<label for="image_provider" class="form-label">Dostawca obrazków</label>
|
|
<select class="form-select" id="image_provider" name="image_provider">
|
|
<option value="freepik" <?= $settings['image_provider'] === 'freepik' ? 'selected' : '' ?>>Freepik AI (generowanie)</option>
|
|
<option value="unsplash" <?= $settings['image_provider'] === 'unsplash' ? 'selected' : '' ?>>Unsplash (darmowe stocki)</option>
|
|
<option value="pexels" <?= $settings['image_provider'] === 'pexels' ? 'selected' : '' ?>>Pexels (darmowe stocki)</option>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="image_generation_prompt" class="form-label">Prompt do generowania zdjęcia (Freepik)</label>
|
|
<textarea class="form-control" id="image_generation_prompt" name="image_generation_prompt" rows="3"><?= htmlspecialchars($settings['image_generation_prompt']) ?></textarea>
|
|
<small class="text-muted">Dostępne placeholdery: {topic_name}, {article_title}</small>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="freepik_api_key" class="form-label">Klucz API Freepik</label>
|
|
<input type="password" class="form-control" id="freepik_api_key" name="freepik_api_key"
|
|
value="<?= htmlspecialchars($settings['freepik_api_key']) ?>">
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="unsplash_api_key" class="form-label">Klucz API Unsplash</label>
|
|
<input type="password" class="form-control" id="unsplash_api_key" name="unsplash_api_key"
|
|
value="<?= htmlspecialchars($settings['unsplash_api_key']) ?>">
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="pexels_api_key" class="form-label">Klucz API Pexels</label>
|
|
<input type="password" class="form-control" id="pexels_api_key" name="pexels_api_key"
|
|
value="<?= htmlspecialchars($settings['pexels_api_key']) ?>">
|
|
</div>
|
|
|
|
<button type="submit" class="btn btn-primary">Zapisz ustawienia</button>
|
|
</form>
|
|
</div>
|
|
</div>
|