Changeset 3285449
- Timestamp:
- 05/01/2025 09:00:24 AM (8 months ago)
- Location:
- ai-content-writer/trunk
- Files:
-
- 146 added
- 22 edited
-
ai-content-writer.php (modified) (3 diffs)
-
assets/css/aicw-admin-rtl.css (modified) (1 diff)
-
assets/css/aicw-admin.asset.php (modified) (1 diff)
-
assets/css/aicw-admin.css (modified) (1 diff)
-
assets/js/aicw-admin.asset.php (modified) (1 diff)
-
assets/js/aicw-admin.js (modified) (1 diff)
-
includes/Admin/Actions.php (modified) (10 diffs)
-
includes/Admin/views/add-campaign.php (modified) (8 diffs)
-
includes/Admin/views/edit-campaign.php (modified) (10 diffs)
-
includes/Admin/views/help.php (modified) (1 diff)
-
includes/Admin/views/settings.php (modified) (4 diffs)
-
includes/Campaigns (added)
-
includes/Campaigns/Articles.php (added)
-
includes/Campaigns/RSSFeed.php (added)
-
includes/Cron.php (modified) (6 diffs)
-
includes/Plugin.php (modified) (1 diff)
-
includes/functions.php (modified) (10 diffs)
-
languages/ai-content-writer.pot (modified) (24 diffs)
-
readme.txt (modified) (4 diffs)
-
vendor/autoload.php (modified) (1 diff)
-
vendor/composer/autoload_classmap.php (modified) (1 diff)
-
vendor/composer/autoload_real.php (modified) (2 diffs)
-
vendor/composer/autoload_static.php (modified) (3 diffs)
-
vendor/composer/installed.json (modified) (1 diff)
-
vendor/composer/installed.php (modified) (3 diffs)
-
vendor/simplehtmldom (added)
-
vendor/simplehtmldom/simplehtmldom (added)
-
vendor/simplehtmldom/simplehtmldom/CHANGELOG.md (added)
-
vendor/simplehtmldom/simplehtmldom/Debug.php (added)
-
vendor/simplehtmldom/simplehtmldom/HtmlDocument.php (added)
-
vendor/simplehtmldom/simplehtmldom/HtmlNode.php (added)
-
vendor/simplehtmldom/simplehtmldom/HtmlWeb.php (added)
-
vendor/simplehtmldom/simplehtmldom/LICENSE (added)
-
vendor/simplehtmldom/simplehtmldom/constants.php (added)
-
vendor/simplehtmldom/simplehtmldom/example (added)
-
vendor/simplehtmldom/simplehtmldom/example/example_advanced_selector.php (added)
-
vendor/simplehtmldom/simplehtmldom/example/example_basic_selector.php (added)
-
vendor/simplehtmldom/simplehtmldom/example/example_callback.php (added)
-
vendor/simplehtmldom/simplehtmldom/example/example_extract_html.php (added)
-
vendor/simplehtmldom/simplehtmldom/example/example_modify_contents.php (added)
-
vendor/simplehtmldom/simplehtmldom/example/scraping (added)
-
vendor/simplehtmldom/simplehtmldom/example/scraping/example_scraping_digg.php (added)
-
vendor/simplehtmldom/simplehtmldom/example/scraping/example_scraping_imdb.php (added)
-
vendor/simplehtmldom/simplehtmldom/example/scraping/example_scraping_slashdot.php (added)
-
vendor/simplehtmldom/simplehtmldom/manual (added)
-
vendor/simplehtmldom/simplehtmldom/manual/custom_theme (added)
-
vendor/simplehtmldom/simplehtmldom/manual/custom_theme/main.html (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/Debug (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/Debug/disable.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/Debug/enable.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/Debug/index.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/Debug/log.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/Debug/log_once.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/Debug/setDebugHandler.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/__call.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/__construct.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/__debugInfo.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/__destruct.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/__get.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/__toString.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/as_text_node.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/childNodes.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/copy_skip.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/copy_until.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/copy_until_char.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/createElement.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/createTextNode.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/decode.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/dump.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/expect.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/find.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/firstChild.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/getElementById.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/getElementByTagName.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/getElementsById.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/getElementsByTagName.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/index.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/lastChild.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/link_nodes.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/load.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/loadFile.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/parse.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/parse_attr.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/parse_charset.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/prepare.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/read_tag.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/remove_callback.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/remove_noise.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/restore_noise.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/save.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/search_noise.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/set_callback.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlDocument/skip.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/__call.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/__construct.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/__debugInfo.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/__destruct.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/__get.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/__isset.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/__set.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/__toString.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/__unset.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/addClass.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/appendChild.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/childNodes.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/clear.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/convert_text.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/definitions.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/dump.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/dump_node.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/expect.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/find.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/find_ancestor_tag.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/firstChild.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/getAllAttributes.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/getAttribute.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/getElementById.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/getElementByTagName.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/getElementsById.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/getElementsByTagName.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/get_display_size.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/hasAttribute.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/hasChildNodes.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/hasClass.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/index.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/innertext.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/is_block_element.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/is_inline_element.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/is_utf8.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/lastChild.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/makeup.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/match.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/nextSibling.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/nodeName.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/outertext.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/parent.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/parentNode.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/parse_selector.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/previousSibling.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/remove.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/removeAttribute.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/removeChild.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/removeClass.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/save.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/seek.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/setAttribute.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/text.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/HtmlNode/xmltext.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/api/constants.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/extra.css (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/faq (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/faq/0001.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/index.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/manual (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/manual/accessing-element-attributes.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/manual/adding-nodes.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/manual/creating-dom-objects.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/manual/customizing-parsing-behavior.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/manual/finding-html-elements.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/manual/saving-dom-objects.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/manual/traversing-dom-tree.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/quick-start.md (added)
-
vendor/simplehtmldom/simplehtmldom/manual/docs/requirements.md (added)
-
vendor/simplehtmldom/simplehtmldom/simple_html_dom.php (added)
Legend:
- Unmodified
- Added
- Removed
-
ai-content-writer/trunk/ai-content-writer.php
r3265465 r3285449 3 3 * Plugin Name: AI Content Writer 4 4 * Plugin URI: https://beautifulplugins.com/ai-content-writer/ 5 * Description: AI Content Writer is a powerful AI tool that helps you generate high-qualitycontent for your blog or website in minutes using advanced AI technologies like ChatGPT, OpenAI, Google Gemini, and more.6 * Version: 1.6.05 * Description: AI Content Writer helps you automatically generate high-quality, SEO-optimized content for your blog or website in minutes using advanced AI technologies like ChatGPT, OpenAI, Google Gemini, and more. 6 * Version: 2.0.0 7 7 * Requires at least: 5.0 8 8 * Requires PHP: 7.4 … … 13 13 * Text Domain: ai-content-writer 14 14 * Domain Path: /languages 15 * Tested up to: 6. 715 * Tested up to: 6.8 16 16 * 17 17 * @package AIContentWriter … … 47 47 */ 48 48 function ai_content_writer() { 49 return Plugin::create( __FILE__, ' 1.6.0' );49 return Plugin::create( __FILE__, '2.0.0' ); 50 50 } 51 51 -
ai-content-writer/trunk/assets/css/aicw-admin-rtl.css
r3252952 r3285449 1 .form-field .input-group{margin-top:5px}.form-field .input-group.range_slider{display:flex;gap:.25rem}.form-field input[type=color],.form-field input[type=date],.form-field input[type=datetime-local],.form-field input[type=datetime],.form-field input[type=email],.form-field input[type=month],.form-field input[type=number],.form-field input[type=password],.form-field input[type=search],.form-field input[type=tel],.form-field input[type=text],.form-field input[type=time],.form-field input[type=url],.form-field input[type=week],.form-field select,.form-field textarea{border:1px solid #ddd;max-width:100%;padding:4px 8px;width:100%}.form-field input[type=range]{width:100%}.form-field abbr{text-decoration:none}.aicw-wrap .d-flex{display:flex}.aicw-wrap .flex-justify__space-between{justify-content:space-between}.aicw-wrap .w-100{width:100%}.aicw-wrap .text-center{text-align:center}.aicw-wrap .gap-1{gap:1rem}.aicw-wrap .aicw__body{display:flex;gap:1.25rem}.aicw-wrap .aicw__body__content{width:100%}.aicw-wrap .aicw__body__content.has-padding{background:#fff;padding:20px}.aicw-wrap .aicw__body__aside{display:flex;flex-direction:column;gap:1.25rem}.aicw-wrap #aicw-form{display:flex;gap:1.25rem}.aicw-wrap #aicw-form .aicw-form__content{width:70%}.aicw-wrap #aicw-form .aicw-form__content.has-padding{background:#fff;padding:20px}.aicw-wrap #aicw-form .aicw-form__aside{display:flex;flex-direction:column;gap:1.25rem;width:30%}@media(max-width:768px){.aicw-wrap #aicw-form{flex-direction:column}.aicw-wrap #aicw-form .aicw-form__aside,.aicw-wrap #aicw-form .aicw-form__content{width:100%}.aicw-wrap .page-title-action,.aicw-wrap .page-title-action:focus{font-size:12px;line-height:1.3rem;padding:5px 10px}}.aicw-card{background:#fff;border:1px solid #ddd;margin-bottom:1.25rem}.aicw-card__title{margin:0}.aicw-card__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-card__body,.aicw-card__footer{padding:10px 20px}.aicw-sidebar{background:#fff;border:1px solid #ddd}.aicw-sidebar h2{margin:0}.aicw-sidebar__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-sidebar__header sup{color:#4caf50;font-size:12px}.aicw-sidebar__body{padding:10px 20px}.aicw-sidebar__footer{border-top:1px solid #ddd;display:flex;justify-content:flex-end;padding:10px 20px}.aicw-sidebar__footer .submit{margin:0;padding:0}.aicw-sidebar .spinner{display:none;height:20px;vertical-align:middle;visibility:hidden;width:20px}.aicw-sidebar .spinner.active{display:inline-block;visibility:visible}.aicw-sidebar .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw-sidebar .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .heading sup{color:#f60;font-size:12px}.aicw_posts .actions,.aicw_posts .status{width:10%}.aicw_posts .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw_posts .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .progress-indicator{background:#eee;border-radius:5px;height:20px;overflow:hidden;width:100%}.aicw_posts .progress-indicator .progress-indicator-inner{background:#4caf50;color:#fff;font-weight:700;height:100%;line-height:20px;text-align:center}.aicw-total-processed .aicw-post-count{font-size:3rem;font-weight:700;margin:0}.aicw-total-processed .published-posts{background:rgba(54,162,235,.05)}.aicw-total-processed .published-posts .aicw-post-count{color:#36a2eb}.aicw-total-processed .pending-posts{background:rgba(255,99,132,.05)}.aicw-total-processed .pending-posts .aicw-post-count{color:#ff6384}.aicw-total-processed .draft-posts{background:rgba(255,206,86,.05)}.aicw-total-processed .draft-posts .aicw-post-count{color:#ffce56}@media(max-width:576px){.aicw-total-processed{flex-direction:column;gap:0!important}}.aicw-settings #aicw-form .aicw-form__content{background:rgba(0,0,0,0);padding-bottom:0;padding-right:0;padding-top:0}.aicw-settings .field-group{display:flex;flex-direction:row;gap:1rem;margin-bottom:20px}.aicw-settings .field-group .field-label{min-width:180px;width:180px}.aicw-settings .field-group.field-section{flex-direction:column;gap:0}.aicw__sidebar__header small,.wp-heading-inline small{color:#888;font-size:13px;vertical-align:super}.aicw-featured-image__content{padding-left:20px}.aicw-featured-image__images{display:-ms-grid;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.aicw-featured-image__images .aicw-featured-image__image{align-items:center;border:2px solid #ddd;display:flex;justify-content:center;padding:8px;transition:transform .2s ease}.aicw-featured-image__images .aicw-featured-image__image:hover{-ms-transform:scale(1.05);transform:scale(1.05)}.aicw-featured-image__images .aicw-featured-image__image img{border-radius:4px;display:block;height:auto;max-width:100%}.aicw-featured-image__images .aicw-featured-image__image.selected{border:2px solid #007cba}.aicw-featured-image__images .aicw-featured-image__image-label{cursor:pointer;display:block;text-align:center}.aicw-featured-image__images .aicw-featured-image__image-label input[type=radio]{display:none}.aicw-featured-image__footer{margin-top:50px}1 .form-field{margin-bottom:.5rem}.form-field .input-group{margin-top:5px}.form-field .input-group.range_slider{display:flex;gap:.25rem}.form-field input[type=color],.form-field input[type=date],.form-field input[type=datetime-local],.form-field input[type=datetime],.form-field input[type=email],.form-field input[type=month],.form-field input[type=number],.form-field input[type=password],.form-field input[type=search],.form-field input[type=tel],.form-field input[type=text],.form-field input[type=time],.form-field input[type=url],.form-field input[type=week],.form-field select,.form-field textarea{border:1px solid #ddd;max-width:100%;padding:4px 8px;width:100%}.form-field input[type=range]{width:100%}.form-field abbr{text-decoration:none}.form-field:last-child{margin-bottom:0}.aicw-wrap .d-flex{display:flex}.aicw-wrap .flex-justify__space-between{justify-content:space-between}.aicw-wrap .w-100{width:100%}.aicw-wrap .text-center{text-align:center}.aicw-wrap .gap-1{gap:1rem}.aicw-wrap .display-none{display:none}.aicw-wrap .aicw__body{display:flex;gap:1.25rem}.aicw-wrap .aicw__body__content{width:100%}.aicw-wrap .aicw__body__content.has-padding{background:#fff;padding:20px}.aicw-wrap .aicw__body__aside{display:flex;flex-direction:column;gap:1.25rem}.aicw-wrap #aicw-form{display:flex;gap:1.25rem;width:100%}.aicw-wrap #aicw-form .aicw-form__content{width:70%}.aicw-wrap #aicw-form .aicw-form__content.has-padding{background:#fff;padding:20px}.aicw-wrap #aicw-form .aicw-form__aside{display:flex;flex-direction:column;gap:1.25rem;width:30%}@media(max-width:768px){.aicw-wrap #aicw-form{flex-direction:column}.aicw-wrap #aicw-form .aicw-form__aside,.aicw-wrap #aicw-form .aicw-form__content{width:100%}.aicw-wrap .page-title-action,.aicw-wrap .page-title-action:focus{font-size:12px;line-height:1.3rem;padding:5px 10px}}.aicw-card{background:#fff;border:1px solid #ddd;margin-bottom:1.25rem}.aicw-card__title{margin:0}.aicw-card__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-card__body,.aicw-card__footer{padding:10px 20px}.aicw-sidebar{background:#fff;border:1px solid #ddd}.aicw-sidebar h2{margin:0}.aicw-sidebar__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-sidebar__header sup{color:#4caf50;font-size:12px}.aicw-sidebar__body{padding:10px 20px}.aicw-sidebar__footer{border-top:1px solid #ddd;display:flex;justify-content:flex-end;padding:10px 20px}.aicw-sidebar__footer .submit{margin:0;padding:0}.aicw-sidebar .spinner{display:none;height:20px;vertical-align:middle;visibility:hidden;width:20px}.aicw-sidebar .spinner.active{display:inline-block;visibility:visible}.aicw-sidebar .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw-sidebar .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .heading sup{color:#f60;font-size:12px}.aicw_posts .actions,.aicw_posts .status{width:10%}.aicw_posts .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw_posts .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .progress-indicator{background:#eee;border-radius:5px;height:20px;overflow:hidden;width:100%}.aicw_posts .progress-indicator .progress-indicator-inner{background:#4caf50;color:#fff;font-weight:700;height:100%;line-height:20px;text-align:center}.aicw-total-processed .aicw-post-count{font-size:3rem;font-weight:700;margin:0}.aicw-total-processed .published-posts{background:rgba(54,162,235,.05)}.aicw-total-processed .published-posts .aicw-post-count{color:#36a2eb}.aicw-total-processed .pending-posts{background:rgba(255,99,132,.05)}.aicw-total-processed .pending-posts .aicw-post-count{color:#ff6384}.aicw-total-processed .draft-posts{background:rgba(255,206,86,.05)}.aicw-total-processed .draft-posts .aicw-post-count{color:#ffce56}@media(max-width:576px){.aicw-total-processed{flex-direction:column;gap:0!important}}.aicw-settings #aicw-form .aicw-form__content{background:rgba(0,0,0,0);padding-bottom:0;padding-right:0;padding-top:0}.aicw-settings .field-group{display:flex;flex-direction:row;gap:1rem;margin-bottom:20px}.aicw-settings .field-group .field-label{min-width:180px;width:180px}.aicw-settings .field-group.field-section{flex-direction:column;gap:0}.aicw__sidebar__header small,.wp-heading-inline small{color:#888;font-size:13px;vertical-align:super}.aicw-featured-image__content{padding-left:20px}.aicw-featured-image__images{display:-ms-grid;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.aicw-featured-image__images .aicw-featured-image__image{align-items:center;border:2px solid #ddd;display:flex;justify-content:center;padding:8px;transition:transform .2s ease}.aicw-featured-image__images .aicw-featured-image__image:hover{-ms-transform:scale(1.05);transform:scale(1.05)}.aicw-featured-image__images .aicw-featured-image__image img{border-radius:4px;display:block;height:auto;max-width:100%}.aicw-featured-image__images .aicw-featured-image__image.selected{border:2px solid #007cba}.aicw-featured-image__images .aicw-featured-image__image-label{cursor:pointer;display:block;text-align:center}.aicw-featured-image__images .aicw-featured-image__image-label input[type=radio]{display:none}.aicw-featured-image__footer{margin-top:50px} -
ai-content-writer/trunk/assets/css/aicw-admin.asset.php
r3252952 r3285449 1 <?php return array('dependencies' => array(), 'version' => ' 9cedb5b731929f5b17a2');1 <?php return array('dependencies' => array(), 'version' => 'ac8b5c693ab3101e0344'); -
ai-content-writer/trunk/assets/css/aicw-admin.css
r3252952 r3285449 1 .form-field .input-group{margin-top:5px}.form-field .input-group.range_slider{display:flex;gap:.25rem}.form-field input[type=color],.form-field input[type=date],.form-field input[type=datetime-local],.form-field input[type=datetime],.form-field input[type=email],.form-field input[type=month],.form-field input[type=number],.form-field input[type=password],.form-field input[type=search],.form-field input[type=tel],.form-field input[type=text],.form-field input[type=time],.form-field input[type=url],.form-field input[type=week],.form-field select,.form-field textarea{border:1px solid #ddd;max-width:100%;padding:4px 8px;width:100%}.form-field input[type=range]{width:100%}.form-field abbr{text-decoration:none}.aicw-wrap .d-flex{display:flex}.aicw-wrap .flex-justify__space-between{justify-content:space-between}.aicw-wrap .w-100{width:100%}.aicw-wrap .text-center{text-align:center}.aicw-wrap .gap-1{gap:1rem}.aicw-wrap .aicw__body{display:flex;gap:1.25rem}.aicw-wrap .aicw__body__content{width:100%}.aicw-wrap .aicw__body__content.has-padding{background:#fff;padding:20px}.aicw-wrap .aicw__body__aside{display:flex;flex-direction:column;gap:1.25rem}.aicw-wrap #aicw-form{display:flex;gap:1.25rem}.aicw-wrap #aicw-form .aicw-form__content{width:70%}.aicw-wrap #aicw-form .aicw-form__content.has-padding{background:#fff;padding:20px}.aicw-wrap #aicw-form .aicw-form__aside{display:flex;flex-direction:column;gap:1.25rem;width:30%}@media(max-width:768px){.aicw-wrap #aicw-form{flex-direction:column}.aicw-wrap #aicw-form .aicw-form__aside,.aicw-wrap #aicw-form .aicw-form__content{width:100%}.aicw-wrap .page-title-action,.aicw-wrap .page-title-action:focus{font-size:12px;line-height:1.3rem;padding:5px 10px}}.aicw-card{background:#fff;border:1px solid #ddd;margin-bottom:1.25rem}.aicw-card__title{margin:0}.aicw-card__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-card__body,.aicw-card__footer{padding:10px 20px}.aicw-sidebar{background:#fff;border:1px solid #ddd}.aicw-sidebar h2{margin:0}.aicw-sidebar__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-sidebar__header sup{color:#4caf50;font-size:12px}.aicw-sidebar__body{padding:10px 20px}.aicw-sidebar__footer{border-top:1px solid #ddd;display:flex;justify-content:flex-end;padding:10px 20px}.aicw-sidebar__footer .submit{margin:0;padding:0}.aicw-sidebar .spinner{display:none;height:20px;vertical-align:middle;visibility:hidden;width:20px}.aicw-sidebar .spinner.active{display:inline-block;visibility:visible}.aicw-sidebar .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw-sidebar .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .heading sup{color:#f60;font-size:12px}.aicw_posts .actions,.aicw_posts .status{width:10%}.aicw_posts .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw_posts .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .progress-indicator{background:#eee;border-radius:5px;height:20px;overflow:hidden;width:100%}.aicw_posts .progress-indicator .progress-indicator-inner{background:#4caf50;color:#fff;font-weight:700;height:100%;line-height:20px;text-align:center}.aicw-total-processed .aicw-post-count{font-size:3rem;font-weight:700;margin:0}.aicw-total-processed .published-posts{background:rgba(54,162,235,.05)}.aicw-total-processed .published-posts .aicw-post-count{color:#36a2eb}.aicw-total-processed .pending-posts{background:rgba(255,99,132,.05)}.aicw-total-processed .pending-posts .aicw-post-count{color:#ff6384}.aicw-total-processed .draft-posts{background:rgba(255,206,86,.05)}.aicw-total-processed .draft-posts .aicw-post-count{color:#ffce56}@media(max-width:576px){.aicw-total-processed{flex-direction:column;gap:0!important}}.aicw-settings #aicw-form .aicw-form__content{background:rgba(0,0,0,0);padding-bottom:0;padding-left:0;padding-top:0}.aicw-settings .field-group{display:flex;flex-direction:row;gap:1rem;margin-bottom:20px}.aicw-settings .field-group .field-label{min-width:180px;width:180px}.aicw-settings .field-group.field-section{flex-direction:column;gap:0}.aicw__sidebar__header small,.wp-heading-inline small{color:#888;font-size:13px;vertical-align:super}.aicw-featured-image__content{padding-right:20px}.aicw-featured-image__images{display:-ms-grid;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.aicw-featured-image__images .aicw-featured-image__image{align-items:center;border:2px solid #ddd;display:flex;justify-content:center;padding:8px;transition:transform .2s ease}.aicw-featured-image__images .aicw-featured-image__image:hover{-ms-transform:scale(1.05);transform:scale(1.05)}.aicw-featured-image__images .aicw-featured-image__image img{border-radius:4px;display:block;height:auto;max-width:100%}.aicw-featured-image__images .aicw-featured-image__image.selected{border:2px solid #007cba}.aicw-featured-image__images .aicw-featured-image__image-label{cursor:pointer;display:block;text-align:center}.aicw-featured-image__images .aicw-featured-image__image-label input[type=radio]{display:none}.aicw-featured-image__footer{margin-top:50px}1 .form-field{margin-bottom:.5rem}.form-field .input-group{margin-top:5px}.form-field .input-group.range_slider{display:flex;gap:.25rem}.form-field input[type=color],.form-field input[type=date],.form-field input[type=datetime-local],.form-field input[type=datetime],.form-field input[type=email],.form-field input[type=month],.form-field input[type=number],.form-field input[type=password],.form-field input[type=search],.form-field input[type=tel],.form-field input[type=text],.form-field input[type=time],.form-field input[type=url],.form-field input[type=week],.form-field select,.form-field textarea{border:1px solid #ddd;max-width:100%;padding:4px 8px;width:100%}.form-field input[type=range]{width:100%}.form-field abbr{text-decoration:none}.form-field:last-child{margin-bottom:0}.aicw-wrap .d-flex{display:flex}.aicw-wrap .flex-justify__space-between{justify-content:space-between}.aicw-wrap .w-100{width:100%}.aicw-wrap .text-center{text-align:center}.aicw-wrap .gap-1{gap:1rem}.aicw-wrap .display-none{display:none}.aicw-wrap .aicw__body{display:flex;gap:1.25rem}.aicw-wrap .aicw__body__content{width:100%}.aicw-wrap .aicw__body__content.has-padding{background:#fff;padding:20px}.aicw-wrap .aicw__body__aside{display:flex;flex-direction:column;gap:1.25rem}.aicw-wrap #aicw-form{display:flex;gap:1.25rem;width:100%}.aicw-wrap #aicw-form .aicw-form__content{width:70%}.aicw-wrap #aicw-form .aicw-form__content.has-padding{background:#fff;padding:20px}.aicw-wrap #aicw-form .aicw-form__aside{display:flex;flex-direction:column;gap:1.25rem;width:30%}@media(max-width:768px){.aicw-wrap #aicw-form{flex-direction:column}.aicw-wrap #aicw-form .aicw-form__aside,.aicw-wrap #aicw-form .aicw-form__content{width:100%}.aicw-wrap .page-title-action,.aicw-wrap .page-title-action:focus{font-size:12px;line-height:1.3rem;padding:5px 10px}}.aicw-card{background:#fff;border:1px solid #ddd;margin-bottom:1.25rem}.aicw-card__title{margin:0}.aicw-card__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-card__body,.aicw-card__footer{padding:10px 20px}.aicw-sidebar{background:#fff;border:1px solid #ddd}.aicw-sidebar h2{margin:0}.aicw-sidebar__header{border-bottom:1px solid #ddd;padding:10px 20px}.aicw-sidebar__header sup{color:#4caf50;font-size:12px}.aicw-sidebar__body{padding:10px 20px}.aicw-sidebar__footer{border-top:1px solid #ddd;display:flex;justify-content:flex-end;padding:10px 20px}.aicw-sidebar__footer .submit{margin:0;padding:0}.aicw-sidebar .spinner{display:none;height:20px;vertical-align:middle;visibility:hidden;width:20px}.aicw-sidebar .spinner.active{display:inline-block;visibility:visible}.aicw-sidebar .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw-sidebar .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .heading sup{color:#f60;font-size:12px}.aicw_posts .actions,.aicw_posts .status{width:10%}.aicw_posts .maybe-has__thumbnail{align-items:center;display:flex;flex-direction:row;gap:5px}.aicw_posts .maybe-has__thumbnail img{border-radius:5px;height:40px;width:40px}.aicw_posts .progress-indicator{background:#eee;border-radius:5px;height:20px;overflow:hidden;width:100%}.aicw_posts .progress-indicator .progress-indicator-inner{background:#4caf50;color:#fff;font-weight:700;height:100%;line-height:20px;text-align:center}.aicw-total-processed .aicw-post-count{font-size:3rem;font-weight:700;margin:0}.aicw-total-processed .published-posts{background:rgba(54,162,235,.05)}.aicw-total-processed .published-posts .aicw-post-count{color:#36a2eb}.aicw-total-processed .pending-posts{background:rgba(255,99,132,.05)}.aicw-total-processed .pending-posts .aicw-post-count{color:#ff6384}.aicw-total-processed .draft-posts{background:rgba(255,206,86,.05)}.aicw-total-processed .draft-posts .aicw-post-count{color:#ffce56}@media(max-width:576px){.aicw-total-processed{flex-direction:column;gap:0!important}}.aicw-settings #aicw-form .aicw-form__content{background:rgba(0,0,0,0);padding-bottom:0;padding-left:0;padding-top:0}.aicw-settings .field-group{display:flex;flex-direction:row;gap:1rem;margin-bottom:20px}.aicw-settings .field-group .field-label{min-width:180px;width:180px}.aicw-settings .field-group.field-section{flex-direction:column;gap:0}.aicw__sidebar__header small,.wp-heading-inline small{color:#888;font-size:13px;vertical-align:super}.aicw-featured-image__content{padding-right:20px}.aicw-featured-image__images{display:-ms-grid;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.aicw-featured-image__images .aicw-featured-image__image{align-items:center;border:2px solid #ddd;display:flex;justify-content:center;padding:8px;transition:transform .2s ease}.aicw-featured-image__images .aicw-featured-image__image:hover{-ms-transform:scale(1.05);transform:scale(1.05)}.aicw-featured-image__images .aicw-featured-image__image img{border-radius:4px;display:block;height:auto;max-width:100%}.aicw-featured-image__images .aicw-featured-image__image.selected{border:2px solid #007cba}.aicw-featured-image__images .aicw-featured-image__image-label{cursor:pointer;display:block;text-align:center}.aicw-featured-image__images .aicw-featured-image__image-label input[type=radio]{display:none}.aicw-featured-image__footer{margin-top:50px} -
ai-content-writer/trunk/assets/js/aicw-admin.asset.php
r3249260 r3285449 1 <?php return array('dependencies' => array(), 'version' => ' 922fc08bdb9fccdf7678');1 <?php return array('dependencies' => array(), 'version' => '12bf826ac0129fb4e6d7'); -
ai-content-writer/trunk/assets/js/aicw-admin.js
r3249260 r3285449 1 !function(e){"use strict";e(document).ready((function(){e('.aicw-featured-image__image-label input[type="radio"]').on("change",(function(){e(".aicw-featured-image__image").removeClass("selected"),e(this).closest(".aicw-featured-image__image").addClass("selected")})),e("#generate_content").on("click",(function(){var t=e(".aicw__sidebar__footer .spinner");e(this).closest("form")[0].checkValidity()&&t.addClass("active").show()})) ,e('.range_slider input[type="range"]').on("input",(function(){var t=e(this).val();e(this).next(".range_slider_value").text(t)})),e(".aicw_delete_temp_post").on("click",(function(t){t.preventDefault();var a=e(this).data("post-id");confirm("Are you sure you want to delete this post? This action cannot be undone.")&&e.ajax({url:aicw_object.ajax_url,type:"POST",data:{action:"aicw_delete_temp_post",post_id:a,nonce:aicw_object.nonce},success:function(e){e.success?(alert(e.data.message),location.reload()):alert(e.data.message)},error:function(){alert("Something went wrong. Please try again later.")}})}))}))}(jQuery);1 !function(e){"use strict";e(document).ready((function(){e('.aicw-featured-image__image-label input[type="radio"]').on("change",(function(){e(".aicw-featured-image__image").removeClass("selected"),e(this).closest(".aicw-featured-image__image").addClass("selected")})),e("#generate_content").on("click",(function(){var t=e(".aicw__sidebar__footer .spinner");e(this).closest("form")[0].checkValidity()&&t.addClass("active").show()}));var t=e("#campaign_type");function a(t){e(".hide-if__"+t).hide(),e(".show-if__"+t).show()}a(t.val()),t.on("change",(function(){a(t.val())})),e('.range_slider input[type="range"]').on("input",(function(){var t=e(this).val();e(this).next(".range_slider_value").text(t)})),e(".aicw_delete_temp_post").on("click",(function(t){t.preventDefault();var a=e(this).data("post-id");confirm("Are you sure you want to delete this post? This action cannot be undone.")&&e.ajax({url:aicw_object.ajax_url,type:"POST",data:{action:"aicw_delete_temp_post",post_id:a,nonce:aicw_object.nonce},success:function(e){e.success?(alert(e.data.message),location.reload()):alert(e.data.message)},error:function(){alert("Something went wrong. Please try again later.")}})}))}))}(jQuery); -
ai-content-writer/trunk/includes/Admin/Actions.php
r3252952 r3285449 45 45 } 46 46 47 $type = isset( $_POST['campaign_type'] ) ? sanitize_text_field( wp_unslash( $_POST['campaign_type'] ) ) : 'articles'; 47 48 $title = isset( $_POST['title'] ) ? sanitize_text_field( wp_unslash( $_POST['title'] ) ) : ''; 48 49 $keywords = isset( $_POST['keywords'] ) ? wp_kses_post( wp_unslash( $_POST['keywords'] ) ) : ''; 49 50 $status = isset( $_POST['status'] ) ? sanitize_text_field( wp_unslash( $_POST['status'] ) ) : 'publish'; 51 $rss_feed = isset( $_POST['rss_feed_link'] ) ? sanitize_text_field( wp_unslash( $_POST['rss_feed_link'] ) ) : ''; 50 52 51 53 // Validate the input fields. … … 56 58 } 57 59 58 if ( empty( $keywords ) ) { 60 if ( empty( $type ) ) { 61 ai_content_writer()->flash_notice( esc_html__( 'Campaign type is required. Please select the campaign type.', 'ai-content-writer' ), 'error' ); 62 wp_safe_redirect( $referer ); 63 exit(); 64 } 65 66 if ( empty( $keywords ) && 'rss-feed' !== $type ) { 59 67 ai_content_writer()->flash_notice( esc_html__( 'Keywords are required. Please enter the keywords.', 'ai-content-writer' ), 'error' ); 68 wp_safe_redirect( $referer ); 69 exit(); 70 } 71 72 if ( 'rss-feed' === $type && empty( $rss_feed ) ) { 73 ai_content_writer()->flash_notice( esc_html__( 'RSS feed link is required. Please enter the RSS feed link.', 'ai-content-writer' ), 'error' ); 60 74 wp_safe_redirect( $referer ); 61 75 exit(); … … 79 93 80 94 // Update the campaign meta. 95 $host = isset( $_POST['campaign_host'] ) ? sanitize_text_field( wp_unslash( $_POST['campaign_host'] ) ) : 'https://bing.com'; 96 $source = isset( $_POST['campaign_source'] ) ? sanitize_text_field( wp_unslash( $_POST['campaign_source'] ) ) : ''; 81 97 $target = isset( $_POST['target'] ) ? sanitize_text_field( wp_unslash( $_POST['target'] ) ) : ''; 82 98 $generate_thumb = isset( $_POST['generate_thumbnail'] ) ? 'yes' : ''; … … 84 100 $completed_post_status = isset( $_POST['completed_post_status'] ) ? sanitize_text_field( wp_unslash( $_POST['completed_post_status'] ) ) : 'publish'; 85 101 102 update_post_meta( $campaign_id, '_aicw_campaign_type', $type ); 103 update_post_meta( $campaign_id, '_aicw_campaign_host', $host ); 104 update_post_meta( $campaign_id, '_aicw_campaign_source', $source ); 105 update_post_meta( $campaign_id, '_aicw_rss_feed_link', $rss_feed ); 86 106 update_post_meta( $campaign_id, '_aicw_campaign_target', $target ); 87 107 update_post_meta( $campaign_id, '_aicw_generate_thumbnail', $generate_thumb ); … … 115 135 116 136 $id = isset( $_POST['id'] ) ? absint( wp_unslash( $_POST['id'] ) ) : 0; 137 $type = isset( $_POST['campaign_type'] ) ? sanitize_text_field( wp_unslash( $_POST['campaign_type'] ) ) : 'articles'; 117 138 $title = isset( $_POST['title'] ) ? sanitize_text_field( wp_unslash( $_POST['title'] ) ) : ''; 118 139 $keywords = isset( $_POST['keywords'] ) ? wp_kses_post( wp_unslash( $_POST['keywords'] ) ) : ''; 119 140 $status = isset( $_POST['status'] ) ? sanitize_text_field( wp_unslash( $_POST['status'] ) ) : 'publish'; 141 $rss_feed = isset( $_POST['rss_feed_link'] ) ? sanitize_text_field( wp_unslash( $_POST['rss_feed_link'] ) ) : ''; 120 142 121 143 // Validate the input fields. … … 132 154 } 133 155 134 if ( empty( $keywords ) ) { 156 if ( empty( $type ) ) { 157 ai_content_writer()->flash_notice( esc_html__( 'Campaign type is required. Please select the campaign type.', 'ai-content-writer' ), 'error' ); 158 wp_safe_redirect( $referer ); 159 exit(); 160 } 161 162 if ( empty( $keywords ) && 'rss-feed' !== $type ) { 135 163 ai_content_writer()->flash_notice( esc_html__( 'Keywords are required. Please enter the keywords.', 'ai-content-writer' ), 'error' ); 164 wp_safe_redirect( $referer ); 165 exit(); 166 } 167 168 if ( 'rss-feed' === $type && empty( $rss_feed ) ) { 169 ai_content_writer()->flash_notice( esc_html__( 'RSS feed link is required. Please enter the RSS feed link.', 'ai-content-writer' ), 'error' ); 136 170 wp_safe_redirect( $referer ); 137 171 exit(); … … 155 189 156 190 // Update the campaign meta. 191 $host = isset( $_POST['campaign_host'] ) ? sanitize_text_field( wp_unslash( $_POST['campaign_host'] ) ) : 'https://bing.com'; 192 $source = isset( $_POST['campaign_source'] ) ? sanitize_text_field( wp_unslash( $_POST['campaign_source'] ) ) : ''; 157 193 $target = isset( $_POST['target'] ) ? sanitize_text_field( wp_unslash( $_POST['target'] ) ) : ''; 158 194 $generate_thumb = isset( $_POST['generate_thumbnail'] ) ? 'yes' : ''; … … 160 196 $completed_post_status = isset( $_POST['completed_post_status'] ) ? sanitize_text_field( wp_unslash( $_POST['completed_post_status'] ) ) : 'publish'; 161 197 198 update_post_meta( $campaign_id, '_aicw_campaign_type', $type ); 199 update_post_meta( $campaign_id, '_aicw_campaign_host', $host ); 200 update_post_meta( $campaign_id, '_aicw_campaign_source', $source ); 201 update_post_meta( $campaign_id, '_aicw_rss_feed_link', $rss_feed ); 162 202 update_post_meta( $campaign_id, '_aicw_campaign_target', $target ); 163 203 update_post_meta( $campaign_id, '_aicw_generate_thumbnail', $generate_thumb ); … … 186 226 } 187 227 228 /* 229 * Allow third-party plugins to modify the settings before saving. 230 * 231 * @param array $settings The settings array. 232 * 233 * @since 1.7.0 234 */ 235 do_action( 'aicw_before_update_settings', $_POST ); 236 237 $allowed_hosts = isset( $_POST['aicw_allowed_hosts'] ) ? sanitize_textarea_field( wp_unslash( $_POST['aicw_allowed_hosts'] ) ) : 'https://www.bing.com'; 238 $default_host = isset( $_POST['aicw_default_host'] ) ? sanitize_text_field( wp_unslash( $_POST['aicw_default_host'] ) ) : 'https://www.bing.com/'; 188 239 $api_model = isset( $_POST['aicw_api_model'] ) ? sanitize_text_field( wp_unslash( $_POST['aicw_api_model'] ) ) : ''; 189 240 $gemini_api_key = isset( $_POST['aicw_gemini_api_key'] ) ? sanitize_text_field( wp_unslash( $_POST['aicw_gemini_api_key'] ) ) : ''; … … 194 245 $pexels_api_key = isset( $_POST['aicw_pexels_api_key'] ) ? sanitize_text_field( wp_unslash( $_POST['aicw_pexels_api_key'] ) ) : ''; 195 246 247 if ( 'https://www.bing.com' === $allowed_hosts ) { 248 update_option( 'aicw_allowed_hosts', $allowed_hosts ); 249 } 250 update_option( 'aicw_default_host', $default_host ); 196 251 update_option( 'aicw_api_model', $api_model ); 197 252 update_option( 'aicw_gemini_api_key', $gemini_api_key ); -
ai-content-writer/trunk/includes/Admin/views/add-campaign.php
r3249260 r3285449 4 4 * 5 5 * @since 1.0.0 6 * @package CoPilot/Admin/Views6 * @package AIContentWriter/Admin/Views 7 7 */ 8 8 … … 21 21 </div> 22 22 <div class="aicw__body"> 23 <form id="aicw-form" class="inline-fields"method="POST" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>">23 <form id="aicw-form" method="POST" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>"> 24 24 <div class="aicw-form__content"> 25 25 <div class="aicw-card"> 26 26 <div class="aicw-card__body"> 27 27 <div class="form-field"> 28 <label for="title"><strong><?php esc_html_e( 'Title', 'ai-content-writer' ); ?></strong><abbr title="required">*</abbr></label>28 <label for="title"><strong><?php esc_html_e( 'Title', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label> 29 29 <div class="input-group"> 30 30 <input type="text" name="title" id="title" class="regular-text" placeholder="Enter campaign title" required="required"/> … … 42 42 <div class="aicw-card__body"> 43 43 <div class="form-field"> 44 <label for="campaign_source"><strong><?php esc_html_e( 'Campaign Source', 'ai-content-writer' ); ?></strong><abbr title="required">*</abbr></label> 44 <label for="campaign_type"><strong><?php esc_html_e( 'Campaign Type', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label> 45 <div class="input-group"> 46 <select name="campaign_type" id="campaign_type"> 47 <option value="articles"><?php esc_html_e( 'Articles', 'ai-content-writer' ); ?></option> 48 <option value="rss-feed"><?php esc_html_e( 'RSS Feed', 'ai-content-writer' ); ?></option> 49 <option value="gemini"><?php esc_html_e( 'Gemini', 'ai-content-writer' ); ?></option> 50 <option value="chatgpt"><?php esc_html_e( 'ChatGPT', 'ai-content-writer' ); ?></option> 51 </select> 52 </div> 53 <p class="description"> 54 <?php esc_html_e( 'Select the campaign type to generate the campaign content.', 'ai-content-writer' ); ?> 55 </p> 56 </div> 57 58 <div class="form-field show-if__articles hide-if__rss-feed hide-if__gemini hide-if__chatgpt"> 59 <label for="campaign_host"><strong><?php esc_html_e( 'Campaign Host', 'ai-content-writer' ); ?></strong></label> 60 <div class="input-group"> 61 <input type="text" name="campaign_host" id="campaign_host" class="regular-text" placeholder="<?php esc_attr_e( 'https://www.bing.com/', 'ai-content-writer' ); ?>" value="<?php echo esc_attr( get_option( 'aicw_default_host', 'https://www.bing.com/' ) ); ?>"/> 62 </div> 63 <p class="description"> 64 <?php esc_html_e( 'Enter the campaign host URL. This will be used to scrape the content from the allowed hosts. Configure the allowed hosts in the settings page. Currently, we allow only Bing as a host.', 'ai-content-writer' ); ?> 65 </p> 66 </div> 67 68 <div class="form-field show-if__articles hide-if__rss-feed show-if__gemini show-if__chatgpt"> 69 <label for="campaign_source"><strong><?php esc_html_e( 'Campaign Source', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label> 45 70 <div class="input-group"> 46 71 <select name="campaign_source" id="campaign_source"> … … 52 77 </p> 53 78 </div> 54 <div class="form-field ">55 <label for="keywords"><strong><?php esc_html_e( 'Keywords', 'ai-content-writer' ); ?></strong><abbr title="required">*</abbr></label>79 <div class="form-field show-if__articles hide-if__rss-feed show-if__gemini show-if__chatgpt"> 80 <label for="keywords"><strong><?php esc_html_e( 'Keywords', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label> 56 81 <div class="input-group"> 57 82 <textarea name="keywords" id="keywords" class="regular-text" placeholder="<?php esc_attr_e( 'keyword, keyword 2, keyword 3, ...', 'ai-content-writer' ); ?>"></textarea> … … 59 84 <p class="description"> 60 85 <?php esc_html_e( 'Enter the keywords to generate the campaign content. Separate each keyword with a comma.', 'ai-content-writer' ); ?> 86 </p> 87 </div> 88 <div class="form-field hide-if__articles show-if__rss-feed hide-if__gemini hide-if__chatgpt display-none"> 89 <label for="rss_feed_link"><strong><?php esc_html_e( 'RSS Feed Link', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label> 90 <div class="input-group"> 91 <input type="text" name="rss_feed_link" id="rss_feed_link" class="regular-text" placeholder="<?php esc_attr_e( 'https://www.example.com/feed', 'ai-content-writer' ); ?>"/> 92 </div> 93 <p class="description"> 94 <?php esc_html_e( 'Enter the RSS feed link. This will be used to generate the content from the RSS feed.', 'ai-content-writer' ); ?> 61 95 </p> 62 96 </div> … … 73 107 <label for="target"><strong><?php esc_html_e( 'Campaign Target', 'ai-content-writer' ); ?></strong></label> 74 108 <div class="input-group range_slider"> 75 <input type="range" name="target" id="target" min="1" max="<?php echo esc_attr( aicw_get_campaign_target_max_limit() ); ?>" value="<?php echo esc_attr( ' 1' ); ?>"/>76 <span class="range_slider_value"><?php echo esc_html( ' 1' ); ?></span>109 <input type="range" name="target" id="target" min="1" max="<?php echo esc_attr( aicw_get_campaign_target_max_limit() ); ?>" value="<?php echo esc_attr( '5' ); ?>"/> 110 <span class="range_slider_value"><?php echo esc_html( '5' ); ?></span> 77 111 </div> 78 112 <p class="description"> … … 113 147 <label for="post_type"> 114 148 <strong><?php esc_html_e( 'Post Type', 'ai-content-writer' ); ?></strong> 115 <abbr title="required">*</abbr>149 <abbr class="required" title="required">*</abbr> 116 150 </label> 117 151 <div class="input-group"> … … 138 172 <label for="completed_post_status"> 139 173 <strong><?php esc_html_e( 'Completed Post Status', 'ai-content-writer' ); ?></strong> 140 <abbr title="required">*</abbr>174 <abbr class="required" title="required">*</abbr> 141 175 </label> 142 176 <div class="input-group"> -
ai-content-writer/trunk/includes/Admin/views/edit-campaign.php
r3249260 r3285449 21 21 <p><?php esc_html_e( 'You can edit the campaign here. This form will update the campaign.', 'ai-content-writer' ); ?></p> 22 22 </div> 23 24 23 <div class="aicw__body"> 25 24 <form id="aicw-form" method="POST" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>"> … … 28 27 <div class="aicw-card__body"> 29 28 <div class="form-field"> 30 <label for="title"><strong><?php esc_html_e( 'Title', 'ai-content-writer' ); ?></strong><abbr title="required">*</abbr></label>29 <label for="title"><strong><?php esc_html_e( 'Title', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label> 31 30 <div class="input-group"> 32 31 <input type="text" name="title" id="title" class="regular-text" placeholder="Enter campaign title" value="<?php echo esc_attr( $campaign->post_title ); ?>" required="required"/> … … 38 37 </div> 39 38 </div> 40 41 39 <div class="aicw-card"> 42 40 <div class="aicw-card__header"> … … 45 43 <div class="aicw-card__body"> 46 44 <div class="form-field"> 47 <?php $campaign_source = get_post_meta( $campaign->ID, 'aicw_campaign_source', true ); ?> 48 <label for="campaign_source"><strong><?php esc_html_e( 'Campaign Source', 'ai-content-writer' ); ?></strong><abbr title="required">*</abbr></label> 45 <?php $campaign_type = get_post_meta( $campaign->ID, '_aicw_campaign_type', true ); ?> 46 <label for="campaign_type"><strong><?php esc_html_e( 'Campaign Type', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label> 47 <div class="input-group"> 48 <select name="campaign_type" id="campaign_type"> 49 <option value="articles" <?php selected( 'articles', $campaign_type ); ?>><?php esc_html_e( 'Articles', 'ai-content-writer' ); ?></option> 50 <option value="rss-feed" <?php selected( 'rss-feed', $campaign_type ); ?>><?php esc_html_e( 'RSS Feed', 'ai-content-writer' ); ?></option> 51 <option value="gemini" <?php selected( 'gemini', $campaign_type ); ?>><?php esc_html_e( 'Gemini', 'ai-content-writer' ); ?></option> 52 <option value="chatgpt" <?php selected( 'chatgpt', $campaign_type ); ?>><?php esc_html_e( 'ChatGPT', 'ai-content-writer' ); ?></option> 53 </select> 54 </div> 55 <p class="description"> 56 <?php esc_html_e( 'Select the campaign type to generate the campaign content.', 'ai-content-writer' ); ?> 57 </p> 58 </div> 59 60 <div class="form-field show-if__articles hide-if__rss-feed hide-if__gemini hide-if__chatgpt"> 61 <label for="campaign_host"><strong><?php esc_html_e( 'Campaign Host', 'ai-content-writer' ); ?></strong></label> 62 <div class="input-group"> 63 <input type="text" name="campaign_host" id="campaign_host" class="regular-text" placeholder="<?php esc_attr_e( 'https://www.bing.com/', 'ai-content-writer' ); ?>" value="<?php echo esc_attr( get_post_meta( $campaign->ID, '_aicw_campaign_host', true ) ); ?>"/> 64 </div> 65 <p class="description"> 66 <?php esc_html_e( 'Enter the campaign host URL. This will be used to scrape the content from the allowed hosts. Configure the allowed hosts in the settings page. Currently, we allow only Bing as a host.', 'ai-content-writer' ); ?> 67 </p> 68 </div> 69 70 <div class="form-field show-if__articles hide-if__rss-feed show-if__gemini show-if__chatgpt"> 71 <?php $campaign_source = get_post_meta( $campaign->ID, '_aicw_campaign_source', true ); ?> 72 <label for="campaign_source"><strong><?php esc_html_e( 'Campaign Source', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label> 49 73 <div class="input-group"> 50 74 <select name="campaign_source" id="campaign_source"> … … 56 80 </p> 57 81 </div> 58 <div class="form-field ">59 <label for="keywords"><strong><?php esc_html_e( 'Keywords', 'ai-content-writer' ); ?></strong><abbr title="required">*</abbr></label>60 <div class="input-group"> 61 <textarea name="keywords" id="keywords" class="regular-text" placeholder="<?php esc_attr_e( 'keyword, keyword 2, keyword 3, ...', 'ai-content-writer' ); ?>" required><?php echo wp_kses_post( $campaign->post_content ); ?></textarea>82 <div class="form-field show-if__articles hide-if__rss-feed show-if__gemini show-if__chatgpt"> 83 <label for="keywords"><strong><?php esc_html_e( 'Keywords', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label> 84 <div class="input-group"> 85 <textarea name="keywords" id="keywords" class="regular-text" placeholder="<?php esc_attr_e( 'keyword, keyword 2, keyword 3, ...', 'ai-content-writer' ); ?>"><?php echo wp_kses_post( $campaign->post_content ); ?></textarea> 62 86 </div> 63 87 <p class="description"> 64 88 <?php esc_html_e( 'Enter the keywords to generate the campaign content. Separate each keyword with a comma.', 'ai-content-writer' ); ?> 89 </p> 90 </div> 91 <div class="form-field hide-if__articles show-if__rss-feed hide-if__gemini hide-if__chatgpt display-none"> 92 <label for="rss_feed_link"><strong><?php esc_html_e( 'RSS Feed Link', 'ai-content-writer' ); ?></strong><abbr class="required" title="required">*</abbr></label> 93 <div class="input-group"> 94 <input type="text" name="rss_feed_link" id="rss_feed_link" class="regular-text" placeholder="<?php esc_attr_e( 'https://www.example.com/feed', 'ai-content-writer' ); ?>" value="<?php echo esc_attr( get_post_meta( $campaign->ID, '_aicw_rss_feed_link', true ) ); ?>"/> 95 </div> 96 <p class="description"> 97 <?php esc_html_e( 'Enter the RSS feed link. This will be used to generate the content from the RSS feed.', 'ai-content-writer' ); ?> 65 98 </p> 66 99 </div> … … 148 181 </div> 149 182 </div> 150 151 183 <div class="aicw-form__aside"> 152 184 <div class="aicw-sidebar"> … … 191 223 <div class="aicw-sidebar__header"> 192 224 <h2> 193 <?php esc_html_e( 'Publish content as', 'ai-content-writer' ); ?>225 <?php esc_html_e( 'Publish Content as', 'ai-content-writer' ); ?> 194 226 <sup><?php esc_html_e( 'Type', 'ai-content-writer' ); ?></sup> 195 227 </h2> … … 199 231 <label for="post_type"> 200 232 <strong><?php esc_html_e( 'Post Type', 'ai-content-writer' ); ?></strong> 201 <abbr title="required">*</abbr>233 <abbr class="required" title="required">*</abbr> 202 234 </label> 203 235 <div class="input-group"> … … 224 256 <label for="completed_post_status"> 225 257 <strong><?php esc_html_e( 'Completed Post Status', 'ai-content-writer' ); ?></strong> 226 <abbr title="required">*</abbr>258 <abbr class="required" title="required">*</abbr> 227 259 </label> 228 260 <div class="input-group"> … … 314 346 </div> 315 347 </div> 316 317 -
ai-content-writer/trunk/includes/Admin/views/help.php
r3249260 r3285449 133 133 <div class="aicw-sidebar__body"> 134 134 <ul> 135 <li> 135 <li>→ 136 <a href="https://wordpress.org/plugins/send-emails/" target="_blank"> 137 <?php esc_html_e( 'Send Emails – Newsletters, Automation & Email Marketing for WordPress', 'ai-content-writer' ); ?> 138 </a> 139 </li> 140 <li>→ 141 <a href="https://wordpress.org/plugins/essential-elements/" target="_blank"> 142 <?php esc_html_e( 'Essential Elements for WordPress', 'ai-content-writer' ); ?> 143 </a> 144 </li> 145 <li>→ 136 146 <a href="https://wordpress.org/plugins/advanced-shortcodes/" target="_blank"> 137 <?php esc_html_e( 'Advanced Shortcodes', 'ai-content-writer' ); ?> 147 <?php esc_html_e( 'Shortcodes – Advanced Shortcode Manager', 'ai-content-writer' ); ?> 148 </a> 149 </li> 150 <li>→ 151 <a href="https://wordpress.org/plugins/post-showcase/" target="_blank"> 152 <?php esc_html_e( 'Post Showcase', 'ai-content-writer' ); ?> 153 </a> 154 </li> 155 <li>→ 156 <a href="https://wordpress.org/plugins/sms-manager/" target="_blank"> 157 <?php esc_html_e( 'SMS Manager – WooCommerce SMS Notifications', 'ai-content-writer' ); ?> 158 </a> 159 </li> 160 <li>→ 161 <a href="https://wordpress.org/plugins/invoice-payment/" target="_blank"> 162 <?php esc_html_e( 'Invoice Payment', 'ai-content-writer' ); ?> 138 163 </a> 139 164 </li> -
ai-content-writer/trunk/includes/Admin/views/settings.php
r3249260 r3285449 28 28 <div class="field-group"> 29 29 <div class="field-label"> 30 <label for="aicw_api_model"><strong><?php esc_html_e( 'API Model:', 'ai-content-writer' ); ?></strong></label> 31 </div> 32 <div class="field"> 33 <select name="aicw_api_model" id="aicw_api_model" class="regular-text"> 34 <option value="gemini" <?php selected( get_option( 'aicw_api_model' ), 'gemini' ); ?>><?php esc_html_e( 'Gemini', 'ai-content-writer' ); ?></option> 35 <option value="chatgpt" <?php selected( get_option( 'aicw_api_model' ), 'chatgpt' ); ?>><?php esc_html_e( 'ChatGPT', 'ai-content-writer' ); ?></option> 36 </select> 37 <p class="description"><?php esc_html_e( 'Select the AI model to generate content.', 'ai-content-writer' ); ?></p> 38 </div> 30 <label for="aicw_allowed_hosts"><strong><?php esc_html_e( 'Allowed Hosts:', 'ai-content-writer' ); ?></strong></label> 31 </div> 32 <div class="field"> 33 <textarea name="aicw_allowed_hosts" id="aicw_allowed_hosts" class="regular-text" rows="3" placeholder="<?php esc_html_e( 'https://bing.com', 'ai-content-writer' ); ?>" disabled><?php echo esc_textarea( get_option( 'aicw_allowed_hosts' ) ); ?></textarea> 34 <p class="description"><?php esc_html_e( 'Enter the allowed hosts. Each host should be on a new line. Example: https://bing.com. Currently, we allow only Bing as a host.', 'ai-content-writer' ); ?></p> 35 </div> 36 </div> 37 <div class="field-group"> 38 <div class="field-label"> 39 <label for="aicw_default_host"><strong><?php esc_html_e( 'Default Host:', 'ai-content-writer' ); ?></strong></label> 40 </div> 41 <div class="field"> 42 <input type="text" name="aicw_default_host" id="aicw_default_host" class="regular-text" placeholder="<?php esc_html_e( 'https://www.bing.com/', 'ai-content-writer' ); ?>" value="<?php echo esc_attr( get_option( 'aicw_default_host', 'https://www.bing.com/' ) ); ?>" disabled/> 43 <p class="description"><?php esc_html_e( 'Enter the default host URL. This will be used as a default host while generating the content.', 'ai-content-writer' ); ?></p> 44 </div> 45 </div> 46 <div class="field-group field-section"> 47 <h3><?php esc_html_e( 'API Settings', 'ai-content-writer' ); ?></h3> 48 <p><?php esc_html_e( 'The following options are the API settings for the AI Content Writer plugin.', 'ai-content-writer' ); ?></p> 39 49 </div> 40 50 <div class="field-group"> … … 70 80 </div> 71 81 </div> 82 <div class="field-group field-section"> 83 <h3><?php esc_html_e( 'Image Settings', 'ai-content-writer' ); ?></h3> 84 <p><?php esc_html_e( 'The following options are the image settings for the AI Content Writer plugin.', 'ai-content-writer' ); ?></p> 85 </div> 86 <div class="field-group"> 87 <div class="field-label"> 88 <label for="aicw_pexels_api_key"><strong><?php esc_html_e( 'Pexels API Key:', 'ai-content-writer' ); ?></strong></label> 89 </div> 90 <div class="field"> 91 <input type="text" name="aicw_pexels_api_key" id="aicw_pexels_api_key" class="regular-text" value="<?php echo esc_attr( get_option( 'aicw_pexels_api_key' ) ); ?>"/> 92 <p class="description"><?php esc_html_e( 'Enter your Pexels API key. This key is required to generate thumbnails images for the AI generated content.', 'ai-content-writer' ); ?></p> 93 </div> 94 </div> 95 <div class="field-group field-section"> 96 <h3><?php esc_html_e( 'Miscellaneous Settings', 'ai-content-writer' ); ?></h3> 97 <p><?php esc_html_e( 'The following options are the miscellaneous settings for the AI Content Writer instant content generation feature.', 'ai-content-writer' ); ?></p> 98 </div> 99 <div class="field-group"> 100 <div class="field-label"> 101 <label for="aicw_api_model"><strong><?php esc_html_e( 'API Model:', 'ai-content-writer' ); ?></strong></label> 102 </div> 103 <div class="field"> 104 <select name="aicw_api_model" id="aicw_api_model" class="regular-text"> 105 <option value="gemini" <?php selected( get_option( 'aicw_api_model' ), 'gemini' ); ?>><?php esc_html_e( 'Gemini', 'ai-content-writer' ); ?></option> 106 <option value="chatgpt" <?php selected( get_option( 'aicw_api_model' ), 'chatgpt' ); ?>><?php esc_html_e( 'ChatGPT', 'ai-content-writer' ); ?></option> 107 </select> 108 <p class="description"><?php esc_html_e( 'Select the AI model to generate content using the instant content Generation feature.', 'ai-content-writer' ); ?></p> 109 </div> 110 </div> 111 <div class="field-group"> 112 <div class="field-label"> 113 <strong><?php esc_html_e( 'Enable Image Generation:', 'ai-content-writer' ); ?></strong> 114 </div> 115 <div class="field"> 116 <label for="aicw_enable_img_generation"> 117 <input name="aicw_enable_img_generation" id="aicw_enable_img_generation" type="checkbox" value="yes" <?php checked( get_option( 'aicw_enable_img_generation' ), 'yes' ); ?>> 118 <?php esc_html_e( 'Enable Thumbnail Image Generation', 'ai-content-writer' ); ?> 119 </label> 120 <p class="description"><?php esc_html_e( 'Enable to activate the thumbnail image generation feature. AI generated content will have a featured image. This feature requires the Pexels API key.', 'ai-content-writer' ); ?></p> 121 </div> 122 </div> 72 123 <div class="field-group"> 73 124 <div class="field-label"> … … 82 133 </div> 83 134 </div> 84 <div class="field-group field-section"> 85 <h3><?php esc_html_e( 'Image Settings', 'ai-content-writer' ); ?></h3> 86 <p><?php esc_html_e( 'The following options are the image settings for the AI Content Writer plugin.', 'ai-content-writer' ); ?></p> 87 </div> 88 <div class="field-group"> 89 <div class="field-label"> 90 <strong><?php esc_html_e( 'Enable Image Generation:', 'ai-content-writer' ); ?></strong> 91 </div> 92 <div class="field"> 93 <label for="aicw_enable_img_generation"> 94 <input name="aicw_enable_img_generation" id="aicw_enable_img_generation" type="checkbox" value="yes" <?php checked( get_option( 'aicw_enable_img_generation' ), 'yes' ); ?>> 95 <?php esc_html_e( 'Enable Thumbnail Image Generation', 'ai-content-writer' ); ?> 96 </label> 97 <p class="description"><?php esc_html_e( 'Enable to activate the thumbnail image generation feature. AI generated content will have a featured image. This feature requires the Pexels API key.', 'ai-content-writer' ); ?></p> 98 </div> 99 </div> 100 <div class="field-group"> 101 <div class="field-label"> 102 <label for="aicw_pexels_api_key"><strong><?php esc_html_e( 'Pexels API Key:', 'ai-content-writer' ); ?></strong></label> 103 </div> 104 <div class="field"> 105 <input type="text" name="aicw_pexels_api_key" id="aicw_pexels_api_key" class="regular-text" value="<?php echo esc_attr( get_option( 'aicw_pexels_api_key' ) ); ?>"/> 106 <p class="description"><?php esc_html_e( 'Enter your Pexels API key. This key is required to generate thumbnails images for the AI generated content.', 'ai-content-writer' ); ?></p> 107 </div> 108 </div> 135 <?php 136 /* 137 * This is a good place to add your own settings fields. 138 * You can use the following code to add your own settings fields: 139 * 140 * do_action( 'aicw_after_general_settings_fields' ); 141 * 142 * This will allow you to add your own settings fields after the default settings. 143 */ 144 do_action( 'aicw_after_general_settings_fields' ); 145 ?> 109 146 <div class="field-group"> 110 147 <div class="field-submit-btn"> … … 135 172 <div class="aicw-sidebar__body"> 136 173 <ul> 137 <li> 174 <li>→ 175 <a href="https://wordpress.org/plugins/send-emails/" target="_blank"> 176 <?php esc_html_e( 'Send Emails – Newsletters, Automation & Email Marketing for WordPress', 'ai-content-writer' ); ?> 177 </a> 178 </li> 179 <li>→ 180 <a href="https://wordpress.org/plugins/essential-elements/" target="_blank"> 181 <?php esc_html_e( 'Essential Elements for WordPress', 'ai-content-writer' ); ?> 182 </a> 183 </li> 184 <li>→ 138 185 <a href="https://wordpress.org/plugins/advanced-shortcodes/" target="_blank"> 139 <?php esc_html_e( 'Advanced Shortcodes', 'ai-content-writer' ); ?> 186 <?php esc_html_e( 'Shortcodes – Advanced Shortcode Manager', 'ai-content-writer' ); ?> 187 </a> 188 </li> 189 <li>→ 190 <a href="https://wordpress.org/plugins/post-showcase/" target="_blank"> 191 <?php esc_html_e( 'Post Showcase', 'ai-content-writer' ); ?> 192 </a> 193 </li> 194 <li>→ 195 <a href="https://wordpress.org/plugins/sms-manager/" target="_blank"> 196 <?php esc_html_e( 'SMS Manager – WooCommerce SMS Notifications', 'ai-content-writer' ); ?> 197 </a> 198 </li> 199 <li>→ 200 <a href="https://wordpress.org/plugins/invoice-payment/" target="_blank"> 201 <?php esc_html_e( 'Invoice Payment', 'ai-content-writer' ); ?> 140 202 </a> 141 203 </li> -
ai-content-writer/trunk/includes/Cron.php
r3249260 r3285449 2 2 3 3 namespace AIContentWriter; 4 5 use AIContentWriter\Campaigns\Articles; 6 use AIContentWriter\Campaigns\RSSFeed; 4 7 5 8 defined( 'ABSPATH' ) || exit; // Exit if accessed directly. … … 33 36 */ 34 37 public function schedule_cron() { 38 // Add a filter hook to check the campaign frequency. 39 $frequency = apply_filters( 'aicw_campaign_frequency', 'hourly' ); 40 35 41 // Schedule the cron job for generating titles. 36 42 if ( ! wp_next_scheduled( 'aicw_generate_title' ) ) { 37 wp_schedule_event( time(), 'hourly', 'aicw_generate_title' );43 wp_schedule_event( time(), $frequency, 'aicw_generate_title' ); 38 44 } 39 45 40 46 // Schedule the cron job for generating content. 41 47 if ( ! wp_next_scheduled( 'aicw_generate_content' ) ) { 42 wp_schedule_event( time() + 300, 'hourly', 'aicw_generate_content' );48 wp_schedule_event( time() + 300, $frequency, 'aicw_generate_content' ); 43 49 } 44 50 45 51 // Schedule the cron job for generating thumbnails. 46 52 if ( ! wp_next_scheduled( 'aicw_generate_thumbnail' ) ) { 47 wp_schedule_event( time() + 600, 'hourly', 'aicw_generate_thumbnail' );53 wp_schedule_event( time() + 600, $frequency, 'aicw_generate_thumbnail' ); 48 54 } 49 55 50 56 // Schedule the cron job for publishing the generated posts. 51 57 if ( ! wp_next_scheduled( 'aicw_publish_posts' ) ) { 52 wp_schedule_event( time() + 900, 'hourly', 'aicw_publish_posts' );58 wp_schedule_event( time() + 900, $frequency, 'aicw_publish_posts' ); 53 59 } 54 60 } … … 87 93 } 88 94 89 // Now request the OpenAI to generate the titles depending on the keywords. 90 $titles = aicw_generate_titles( $keywords ); 95 $type = get_post_meta( $campaign_id, '_aicw_campaign_type', true ); 96 $posts_needed = isset( $needs_update['posts_needed'] ) ? absint( $needs_update['posts_needed'] ) : 0; 97 98 if ( 'articles' === $type ) { 99 Articles::generate_titles( $campaign_id, $keywords, $posts_needed ); 100 // Update the last run time. 101 aicw_update_last_run_time( $campaign_id ); 102 break; 103 } elseif ( 'rss-feed' === $type ) { 104 RSSFeed::generate_titles( $campaign_id, $posts_needed ); 105 // Update the last run time. 106 aicw_update_last_run_time( $campaign_id ); 107 break; 108 } else { 109 // Now request the OpenAI to generate the titles depending on the keywords. 110 $type = empty( $type ) ? get_option( 'aicw_api_model' ) : $type; // TODO: We will remove this option in the future. It's already remove from the settings page. 111 $titles = aicw_generate_titles( $type, $keywords ); 112 } 91 113 92 114 $counter = 0; … … 178 200 $needs_update = aicw_temp_post_needs_update( $post, $campaign_id ); 179 201 180 if ( array_key_exists( 'content', $needs_update ) && ! $needs_update['content']) {202 if ( empty( $needs_update ) || ( array_key_exists( 'content', $needs_update ) && ! $needs_update['content'] ) ) { 181 203 aicw_update_last_run_time( $post_id ); 182 204 continue; … … 193 215 } 194 216 195 // Now request the OpenAI to generate the content depending on the keywords and title. 196 $content = aicw_generate_content( $title, $keywords ); 197 198 // Update the post content. 199 wp_update_post( 200 array( 201 'ID' => $post_id, 202 'post_content' => wp_kses_post( $content ), 203 ) 204 ); 217 $campaign_type = get_post_meta( $campaign_id, '_aicw_campaign_type', true ); 218 219 if ( empty( $campaign_type ) ) { 220 continue; 221 } 222 223 $is_updated = false; 224 // Check if the campaign type is articles or rss-feed. 225 if ( 'articles' === $campaign_type ) { 226 $is_updated = Articles::generate_content( $post_id, $title, $keywords ); 227 } elseif ( 'rss-feed' === $campaign_type ) { 228 $is_updated = RSSFeed::generate_content( $post_id, $title, $keywords ); 229 } else { 230 $content = aicw_generate_content( $post_id, $title, $keywords ); 231 $updated = wp_update_post( 232 array( 233 'ID' => $post_id, 234 'post_content' => wp_kses_post( $content ), 235 ) 236 ); 237 238 $is_updated = is_wp_error( $updated ) ? false : true; 239 } 240 241 // Check if the content is updated successfully or not. 242 if ( ! $is_updated ) { 243 // If the content is not updated then handle the itteration occurring. and delete it if the post is not updated with 2 attempts. 244 $attempts = get_post_meta( $post_id, '_aicw_generate_content_attempts', true ); 245 if ( empty( $attempts ) ) { 246 $attempts = 0; 247 } 248 249 ++$attempts; 250 // Check if the attempts are greater than or equal to 2 then delete the post. 251 if ( $attempts >= 2 ) { 252 wp_delete_post( $post_id, true ); 253 continue; 254 } else { 255 update_post_meta( $post_id, '_aicw_generate_content_attempts', $attempts ); 256 } 257 } 205 258 206 259 // Update the last run time. … … 241 294 $needs_update = aicw_temp_post_needs_update( $post, $campaign_id ); 242 295 243 if ( array_key_exists( 'thumbnail', $needs_update ) && ! $needs_update['thumbnail']) {296 if ( empty( $needs_update ) || ( array_key_exists( 'thumbnail', $needs_update ) && ! $needs_update['thumbnail'] ) ) { 244 297 aicw_update_last_run_time( $post_id ); 245 298 continue; -
ai-content-writer/trunk/includes/Plugin.php
r3252952 r3285449 129 129 130 130 if ( ! defined( 'AICW_PRO_VERSION' ) ) { 131 $action_links['go_pro'] = '<a href="https://beautifulplugins.com/ " target="_blank" style="color: #39b54a; font-weight: bold;">' . esc_html__( 'Go Pro', 'ai-content-writer' ) . '</a>';131 $action_links['go_pro'] = '<a href="https://beautifulplugins.com/plugins/ai-content-writer-pro/" target="_blank" style="color: #39b54a; font-weight: bold;">' . esc_html__( 'Go Pro', 'ai-content-writer' ) . '</a>'; 132 132 } 133 133 -
ai-content-writer/trunk/includes/functions.php
r3249260 r3285449 137 137 * This will generate the titles for the campaign using OpenAI or any other AI service. 138 138 * 139 * @param string $type The type of the campaign. 139 140 * @param string $keywords The campaign keywords. 140 141 * … … 142 143 * @return array The generated titles. 143 144 */ 144 function aicw_generate_titles( $ keywords ) {145 if ( empty( $ keywords ) ) {145 function aicw_generate_titles( $type, $keywords ) { 146 if ( empty( $type ) || empty( $keywords ) ) { 146 147 return array(); 147 148 } 148 149 149 $api_model = get_option( 'aicw_api_model' ); 150 151 if ( 'gemini' === $api_model ) { 150 if ( 'gemini' === $type ) { 152 151 $api_key = get_option( 'aicw_gemini_api_key' ); 153 152 if ( empty( $api_key ) ) { … … 206 205 207 206 $titles = explode( "\n", trim( $result['candidates'][0]['content']['parts'][0]['text'] ) ); 208 } elseif ( 'chatgpt' === $ api_model) {207 } elseif ( 'chatgpt' === $type ) { 209 208 $api_key = get_option( 'aicw_chatgpt_api_secret_key' ); 210 209 if ( empty( $api_key ) ) { … … 275 274 * This will generate the content for the campaign using OpenAI or any other AI service. 276 275 * 276 * @param int $post_id The ID of the post for which content is being generated. 277 277 * @param string $title The title of the content. 278 278 * @param string $keywords The campaign keywords. … … 281 281 * @return string|mixed The generated content or null. 282 282 */ 283 function aicw_generate_content( $ title, $keywords = '' ) {284 if ( empty( $ title ) ) {283 function aicw_generate_content( $post_id, $title, $keywords = '' ) { 284 if ( empty( $post_id ) || empty( $title ) ) { 285 285 return ''; 286 286 } 287 287 288 $api_model = get_option( 'aicw_api_model' ); 288 // Get the associated campaign ID. 289 $campaign_id = get_post_meta( $post_id, '_aicw_campaign_id', true ); 290 $campaign_type = get_post_meta( $campaign_id, '_aicw_campaign_type', true ); 291 $api_model = empty( $campaign_type ) ? get_option( 'aicw_api_model' ) : $campaign_type; // TODO: We will remove this option in the future. It's already remove from the settings page. 292 293 if ( empty( $api_model ) ) { 294 return null; 295 } 289 296 290 297 if ( 'gemini' === $api_model ) { … … 425 432 426 433 /** 427 * Get the post ID by title across all post types.434 * Get the post ID by exact title using direct $wpdb query. 428 435 * 429 436 * @param string $post_title The post title. … … 433 440 */ 434 441 function aicw_get_post_by_title( $post_title ) { 435 436 // TODO: The old code is commented out. It should be removed after testing. 437 /** 438 $query = new WP_Query( 439 array( 440 'title' => $post_title, 441 'post_type' => 'aicw_post', 442 'posts_per_page' => 1, 442 global $wpdb; 443 444 $post_title = wp_unslash( $post_title ); // Just in case, unescape slashes. 445 446 $query = $wpdb->get_var( 447 $wpdb->prepare( 448 "SELECT ID FROM {$wpdb->posts} 449 WHERE post_title = %s 450 AND post_type != 'revision' 451 AND post_status IN ('publish', 'pending', 'draft', 'future', 'private') 452 LIMIT 1", 453 $post_title 443 454 ) 444 455 ); 445 456 446 $post = $query->post; 447 448 if ( $post instanceof WP_Post && 'aicw_post' === $post->post_type ) { 449 return $post->ID; 450 } 451 */ 452 453 $query = new WP_Query( 454 array( 455 'title' => $post_title, 456 'post_type' => 'any', 457 'posts_per_page' => 1, 458 'fields' => 'ids', 459 'no_found_rows' => true, 457 return $query ? (int) $query : null; 458 } 459 460 /** 461 * Get all post IDs by exact title using direct $wpdb query. 462 * 463 * @param string $post_title The post title. 464 * 465 * @since 1.4.0 466 * @return int[] Array of post IDs if found, otherwise an empty array. 467 */ 468 function aicw_get_posts_by_title( $post_title ) { 469 global $wpdb; 470 471 $post_title = wp_unslash( $post_title ); // Ensure slashes are removed. 472 473 $query = $wpdb->get_col( 474 $wpdb->prepare( 475 "SELECT ID FROM {$wpdb->posts} 476 WHERE post_title = %s 477 AND post_type != 'revision' 478 AND post_status IN ('publish', 'pending', 'draft', 'future', 'private')", 479 $post_title 460 480 ) 461 481 ); 462 482 463 return ! empty( $query->posts ) ? $query->posts[0] : null; 464 } 483 return array_map( 'intval', $query ); 484 } 485 486 465 487 466 488 /** … … 478 500 return array( 479 501 'needs_update' => false, 480 'error' => 'The campaign is not found.',502 'error' => __( 'The campaign is not found.', 'ai-content-writer' ), 481 503 ); 482 504 } … … 526 548 return array( 527 549 'needs_update' => false, 528 'error' => 'The campaign target is reached.',550 'error' => __( 'The campaign target is reached.', 'ai-content-writer' ), 529 551 ); 530 552 } … … 611 633 return absint( $target_limit ); 612 634 } 635 636 /** 637 * Get user agents. 638 * This function gets the user agents for the campaigns. 639 * 640 * @since 1.7.0 641 * @return array The user agents. 642 */ 643 function aicw_user_agents(): array { 644 return array( 645 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36', 646 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36', 647 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36', 648 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1', 649 'Mozilla/5.0 (iPad; CPU OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1', 650 ); 651 } -
ai-content-writer/trunk/languages/ai-content-writer.pot
r3265465 r3285449 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: AI Content Writer 1.6.0\n"5 "Project-Id-Version: AI Content Writer 2.0.0\n" 6 6 "Report-Msgid-Bugs-To: https://beautifulplugins.com/support/\n" 7 "POT-Creation-Date: 2025-0 4-02 06:48:54+00:00\n"7 "POT-Creation-Date: 2025-05-01 08:42:38+00:00\n" 8 8 "MIME-Version: 1.0\n" 9 9 "Content-Type: text/plain; charset=utf-8\n" … … 25 25 "X-Generator: grunt-wp-i18n 1.0.3\n" 26 26 27 #: includes/Admin/Actions.php:42 includes/Admin/Actions.php:1 1128 #: includes/Admin/Actions.php: 183 includes/Admin/Actions.php:22029 #: includes/Admin/Actions.php: 460 includes/Admin/Actions.php:51727 #: includes/Admin/Actions.php:42 includes/Admin/Actions.php:131 28 #: includes/Admin/Actions.php:223 includes/Admin/Actions.php:275 29 #: includes/Admin/Actions.php:515 includes/Admin/Actions.php:572 30 30 #: includes/Admin/Admin.php:290 includes/Admin/Dashboard.php:36 31 31 msgid "You do not have permission to perform this action." 32 32 msgstr "" 33 33 34 #: includes/Admin/Actions.php:5 3 includes/Admin/Actions.php:12934 #: includes/Admin/Actions.php:55 includes/Admin/Actions.php:151 35 35 msgid "Title is required. Please enter the campaign title." 36 36 msgstr "" 37 37 38 #: includes/Admin/Actions.php:59 includes/Admin/Actions.php:135 38 #: includes/Admin/Actions.php:61 includes/Admin/Actions.php:157 39 msgid "Campaign type is required. Please select the campaign type." 40 msgstr "" 41 42 #: includes/Admin/Actions.php:67 includes/Admin/Actions.php:163 39 43 msgid "Keywords are required. Please enter the keywords." 40 44 msgstr "" 41 45 42 #: includes/Admin/Actions.php:91 46 #: includes/Admin/Actions.php:73 includes/Admin/Actions.php:169 47 msgid "RSS feed link is required. Please enter the RSS feed link." 48 msgstr "" 49 50 #: includes/Admin/Actions.php:111 43 51 msgid "Campaign added successfully." 44 52 msgstr "" 45 53 46 #: includes/Admin/Actions.php:1 2354 #: includes/Admin/Actions.php:145 47 55 msgid "Invalid campaign. Please try again." 48 56 msgstr "" 49 57 50 #: includes/Admin/Actions.php: 16758 #: includes/Admin/Actions.php:207 51 59 msgid "Campaign updated successfully." 52 60 msgstr "" 53 61 54 #: includes/Admin/Actions.php:2 0462 #: includes/Admin/Actions.php:259 55 63 msgid "Settings saved successfully." 56 64 msgstr "" 57 65 58 #: includes/Admin/Actions.php:2 28includes/Admin/views/generate-content.php:6066 #: includes/Admin/Actions.php:283 includes/Admin/views/generate-content.php:60 59 67 msgid "English" 60 68 msgstr "" 61 69 62 #: includes/Admin/Actions.php:2 35includes/Admin/views/generate-content.php:8263 #: includes/Plugin.php:320 includes/functions.php:3 7470 #: includes/Admin/Actions.php:290 includes/Admin/views/generate-content.php:82 71 #: includes/Plugin.php:320 includes/functions.php:381 64 72 msgid "" 65 73 "You are an expert SEO content writer. Generate factually accurate, " … … 68 76 msgstr "" 69 77 70 #: includes/Admin/Actions.php:2 4378 #: includes/Admin/Actions.php:298 71 79 msgid "Title is required. Please, start with \"Write an article on...\"" 72 80 msgstr "" 73 81 74 #: includes/Admin/Actions.php: 24982 #: includes/Admin/Actions.php:304 75 83 msgid "Prompt type is required. Please, select the prompt type." 76 84 msgstr "" 77 85 78 #: includes/Admin/Actions.php: 25586 #: includes/Admin/Actions.php:310 79 87 msgid "Language is required. Please, select the language." 80 88 msgstr "" 81 89 82 #: includes/Admin/Actions.php: 26190 #: includes/Admin/Actions.php:316 83 91 msgid "Post type is required. Please, select the post type." 84 92 msgstr "" 85 93 86 #: includes/Admin/Actions.php: 272includes/Plugin.php:23694 #: includes/Admin/Actions.php:327 includes/Plugin.php:236 87 95 msgid "" 88 96 "Please configure the API settings. A valid Gemini API key is required to " … … 90 98 msgstr "" 91 99 92 #: includes/Admin/Actions.php: 351100 #: includes/Admin/Actions.php:406 93 101 msgid "" 94 102 "Please configure the API settings. A valid ChatGPT API secret key is " … … 96 104 msgstr "" 97 105 98 #: includes/Admin/Actions.php: 359106 #: includes/Admin/Actions.php:414 99 107 #. translators: 1: Prompt Content, 2: System Tone, 3: Language, 4: Min Words 100 108 msgid "" … … 118 126 msgstr "" 119 127 120 #: includes/Admin/Actions.php: 374 includes/functions.php:398128 #: includes/Admin/Actions.php:429 includes/functions.php:405 121 129 msgid "The article should be optimized for SEO" 122 130 msgstr "" 123 131 124 #: includes/Admin/Actions.php: 374 includes/functions.php:398132 #: includes/Admin/Actions.php:429 includes/functions.php:405 125 133 msgid "The article should be optimized for SEO, including relevant keywords: " 126 134 msgstr "" 127 135 128 #: includes/Admin/Actions.php:4 01136 #: includes/Admin/Actions.php:456 129 137 msgid "Invalid API model. Please configure the API settings." 130 138 msgstr "" 131 139 132 #: includes/Admin/Actions.php:4 39 includes/Admin/Actions.php:444140 #: includes/Admin/Actions.php:494 includes/Admin/Actions.php:499 133 141 msgid "Content generated successfully." 134 142 msgstr "" 135 143 136 #: includes/Admin/Actions.php: 469 includes/Admin/Actions.php:527144 #: includes/Admin/Actions.php:524 includes/Admin/Actions.php:582 137 145 msgid "Invalid post. Please try again." 138 146 msgstr "" 139 147 140 #: includes/Admin/Actions.php: 475148 #: includes/Admin/Actions.php:530 141 149 msgid "Invalid image. Please select an image." 142 150 msgstr "" 143 151 144 #: includes/Admin/Actions.php: 485152 #: includes/Admin/Actions.php:540 145 153 msgid "Invalid image URL. Please try again." 146 154 msgstr "" 147 155 148 #: includes/Admin/Actions.php: 499156 #: includes/Admin/Actions.php:554 149 157 msgid "Content generated and featured image set successfully." 150 158 msgstr "" 151 159 152 #: includes/Admin/Actions.php:5 36160 #: includes/Admin/Actions.php:591 153 161 msgid "Post deleted successfully." 154 162 msgstr "" 155 163 156 #: includes/Admin/Actions.php:5 43164 #: includes/Admin/Actions.php:598 157 165 msgid "Failed to delete the post. Please try again." 158 166 msgstr "" … … 213 221 214 222 #: includes/Admin/ListTables/CampaignsListTable.php:106 215 #: includes/Admin/views/edit-campaign.php: 97223 #: includes/Admin/views/edit-campaign.php:130 216 224 #: includes/Admin/views/generate-content.php:148 217 225 msgid "Status" … … 233 241 #: includes/Admin/ListTables/CampaignsListTable.php:170 234 242 #: includes/Admin/ListTables/CampaignsListTable.php:183 235 #: includes/Admin/views/edit-campaign.php:1 32243 #: includes/Admin/views/edit-campaign.php:165 236 244 msgid "Delete" 237 245 msgstr "" 238 246 239 247 #: includes/Admin/ListTables/CampaignsListTable.php:215 240 #: includes/Admin/views/add-campaign.php: 87241 #: includes/Admin/views/edit-campaign.php: 172248 #: includes/Admin/views/add-campaign.php:121 249 #: includes/Admin/views/edit-campaign.php:204 242 250 msgid "Active" 243 251 msgstr "" 244 252 245 253 #: includes/Admin/views/add-campaign.php:15 246 #: includes/Admin/views/add-campaign.php:1 00254 #: includes/Admin/views/add-campaign.php:134 247 255 msgid "Add Campaign" 248 256 msgstr "" … … 257 265 258 266 #: includes/Admin/views/add-campaign.php:28 259 #: includes/Admin/views/edit-campaign.php: 30260 #: includes/Admin/views/edit-campaign.php: 95267 #: includes/Admin/views/edit-campaign.php:29 268 #: includes/Admin/views/edit-campaign.php:128 261 269 msgid "Title" 262 270 msgstr "" 263 271 264 272 #: includes/Admin/views/add-campaign.php:33 265 #: includes/Admin/views/edit-campaign.php:3 5273 #: includes/Admin/views/edit-campaign.php:34 266 274 msgid "Enter the campaign title." 267 275 msgstr "" 268 276 269 277 #: includes/Admin/views/add-campaign.php:40 270 #: includes/Admin/views/edit-campaign.php:4 3278 #: includes/Admin/views/edit-campaign.php:41 271 279 msgid "Campaign Details" 272 280 msgstr "" 273 281 274 282 #: includes/Admin/views/add-campaign.php:44 275 #: includes/Admin/views/edit-campaign.php:48 283 #: includes/Admin/views/edit-campaign.php:46 284 msgid "Campaign Type" 285 msgstr "" 286 287 #: includes/Admin/views/add-campaign.php:47 288 #: includes/Admin/views/edit-campaign.php:49 289 msgid "Articles" 290 msgstr "" 291 292 #: includes/Admin/views/add-campaign.php:48 293 #: includes/Admin/views/edit-campaign.php:50 294 msgid "RSS Feed" 295 msgstr "" 296 297 #: includes/Admin/views/add-campaign.php:49 298 #: includes/Admin/views/edit-campaign.php:51 299 #: includes/Admin/views/settings.php:105 300 msgid "Gemini" 301 msgstr "" 302 303 #: includes/Admin/views/add-campaign.php:50 304 #: includes/Admin/views/edit-campaign.php:52 305 #: includes/Admin/views/settings.php:106 306 msgid "ChatGPT" 307 msgstr "" 308 309 #: includes/Admin/views/add-campaign.php:54 310 #: includes/Admin/views/edit-campaign.php:56 311 msgid "Select the campaign type to generate the campaign content." 312 msgstr "" 313 314 #: includes/Admin/views/add-campaign.php:59 315 #: includes/Admin/views/edit-campaign.php:61 316 msgid "Campaign Host" 317 msgstr "" 318 319 #: includes/Admin/views/add-campaign.php:61 320 #: includes/Admin/views/edit-campaign.php:63 321 #: includes/Admin/views/settings.php:42 322 msgid "https://www.bing.com/" 323 msgstr "" 324 325 #: includes/Admin/views/add-campaign.php:64 326 #: includes/Admin/views/edit-campaign.php:66 327 msgid "" 328 "Enter the campaign host URL. This will be used to scrape the content from " 329 "the allowed hosts. Configure the allowed hosts in the settings page. " 330 "Currently, we allow only Bing as a host." 331 msgstr "" 332 333 #: includes/Admin/views/add-campaign.php:69 334 #: includes/Admin/views/edit-campaign.php:72 276 335 msgid "Campaign Source" 277 336 msgstr "" 278 337 279 #: includes/Admin/views/add-campaign.php: 47280 #: includes/Admin/views/add-campaign.php: 55281 #: includes/Admin/views/edit-campaign.php: 51282 #: includes/Admin/views/edit-campaign.php: 59338 #: includes/Admin/views/add-campaign.php:72 339 #: includes/Admin/views/add-campaign.php:80 340 #: includes/Admin/views/edit-campaign.php:75 341 #: includes/Admin/views/edit-campaign.php:83 283 342 msgid "Keywords" 284 343 msgstr "" 285 344 286 #: includes/Admin/views/add-campaign.php: 51287 #: includes/Admin/views/edit-campaign.php: 55345 #: includes/Admin/views/add-campaign.php:76 346 #: includes/Admin/views/edit-campaign.php:79 288 347 msgid "" 289 348 "Select the campaign source. This will be used to generate the campaign " … … 291 350 msgstr "" 292 351 293 #: includes/Admin/views/add-campaign.php: 57294 #: includes/Admin/views/edit-campaign.php: 61352 #: includes/Admin/views/add-campaign.php:82 353 #: includes/Admin/views/edit-campaign.php:85 295 354 #: includes/Admin/views/generate-content.php:38 296 355 msgid "keyword, keyword 2, keyword 3, ..." 297 356 msgstr "" 298 357 299 #: includes/Admin/views/add-campaign.php: 60300 #: includes/Admin/views/edit-campaign.php: 64358 #: includes/Admin/views/add-campaign.php:85 359 #: includes/Admin/views/edit-campaign.php:88 301 360 msgid "" 302 361 "Enter the keywords to generate the campaign content. Separate each keyword " … … 304 363 msgstr "" 305 364 306 #: includes/Admin/views/add-campaign.php:69 307 #: includes/Admin/views/edit-campaign.php:154 365 #: includes/Admin/views/add-campaign.php:89 366 #: includes/Admin/views/edit-campaign.php:92 367 msgid "RSS Feed Link" 368 msgstr "" 369 370 #: includes/Admin/views/add-campaign.php:91 371 #: includes/Admin/views/edit-campaign.php:94 372 msgid "https://www.example.com/feed" 373 msgstr "" 374 375 #: includes/Admin/views/add-campaign.php:94 376 #: includes/Admin/views/edit-campaign.php:97 377 msgid "" 378 "Enter the RSS feed link. This will be used to generate the content from the " 379 "RSS feed." 380 msgstr "" 381 382 #: includes/Admin/views/add-campaign.php:103 383 #: includes/Admin/views/edit-campaign.php:186 308 384 msgid "Campaign Actions" 309 385 msgstr "" 310 386 311 #: includes/Admin/views/add-campaign.php: 73312 #: includes/Admin/views/edit-campaign.php:1 58387 #: includes/Admin/views/add-campaign.php:107 388 #: includes/Admin/views/edit-campaign.php:190 313 389 msgid "Campaign Target" 314 390 msgstr "" 315 391 316 #: includes/Admin/views/add-campaign.php: 79317 #: includes/Admin/views/edit-campaign.php:1 64392 #: includes/Admin/views/add-campaign.php:113 393 #: includes/Admin/views/edit-campaign.php:196 318 394 msgid "" 319 395 "Target number of posts to generate. Upgrading to Pro version will increase " … … 321 397 msgstr "" 322 398 323 #: includes/Admin/views/add-campaign.php: 84324 #: includes/Admin/views/edit-campaign.php: 169399 #: includes/Admin/views/add-campaign.php:118 400 #: includes/Admin/views/edit-campaign.php:201 325 401 msgid "Campaign Status" 326 402 msgstr "" 327 403 328 #: includes/Admin/views/add-campaign.php: 88329 #: includes/Admin/views/add-campaign.php:1 45330 #: includes/Admin/views/edit-campaign.php: 173331 #: includes/Admin/views/edit-campaign.php:2 31404 #: includes/Admin/views/add-campaign.php:122 405 #: includes/Admin/views/add-campaign.php:179 406 #: includes/Admin/views/edit-campaign.php:205 407 #: includes/Admin/views/edit-campaign.php:263 332 408 #: includes/Admin/views/generate-content.php:152 333 409 msgid "Draft" 334 410 msgstr "" 335 411 336 #: includes/Admin/views/add-campaign.php: 89337 #: includes/Admin/views/add-campaign.php:1 46338 #: includes/Admin/views/edit-campaign.php: 174339 #: includes/Admin/views/edit-campaign.php:2 32412 #: includes/Admin/views/add-campaign.php:123 413 #: includes/Admin/views/add-campaign.php:180 414 #: includes/Admin/views/edit-campaign.php:206 415 #: includes/Admin/views/edit-campaign.php:264 340 416 #: includes/Admin/views/generate-content.php:153 341 417 msgid "Pending" 342 418 msgstr "" 343 419 344 #: includes/Admin/views/add-campaign.php: 93345 #: includes/Admin/views/edit-campaign.php: 178420 #: includes/Admin/views/add-campaign.php:127 421 #: includes/Admin/views/edit-campaign.php:210 346 422 #: includes/Admin/views/generate-content.php:157 347 423 msgid "Select the status of the campaign." 348 424 msgstr "" 349 425 350 #: includes/Admin/views/add-campaign.php:107 426 #: includes/Admin/views/add-campaign.php:141 427 #: includes/Admin/views/edit-campaign.php:225 351 428 msgid "Publish Content as" 352 429 msgstr "" 353 430 354 #: includes/Admin/views/add-campaign.php:1 08355 #: includes/Admin/views/edit-campaign.php: 194431 #: includes/Admin/views/add-campaign.php:142 432 #: includes/Admin/views/edit-campaign.php:226 356 433 #: includes/Admin/views/generate-content.php:111 357 434 msgid "Type" 358 435 msgstr "" 359 436 360 #: includes/Admin/views/add-campaign.php:1 14361 #: includes/Admin/views/edit-campaign.php:2 00437 #: includes/Admin/views/add-campaign.php:148 438 #: includes/Admin/views/edit-campaign.php:232 362 439 #: includes/Admin/views/generate-content.php:117 363 440 msgid "Post Type" 364 441 msgstr "" 365 442 366 #: includes/Admin/views/add-campaign.php:1 34367 #: includes/Admin/views/edit-campaign.php:2 20443 #: includes/Admin/views/add-campaign.php:168 444 #: includes/Admin/views/edit-campaign.php:252 368 445 #: includes/Admin/views/generate-content.php:137 369 446 msgid "Select the post type to publish the content." 370 447 msgstr "" 371 448 372 #: includes/Admin/views/add-campaign.php:1 39373 #: includes/Admin/views/edit-campaign.php:2 25449 #: includes/Admin/views/add-campaign.php:173 450 #: includes/Admin/views/edit-campaign.php:257 374 451 msgid "Completed Post Status" 375 452 msgstr "" 376 453 377 #: includes/Admin/views/add-campaign.php:1 44378 #: includes/Admin/views/edit-campaign.php:2 30454 #: includes/Admin/views/add-campaign.php:178 455 #: includes/Admin/views/edit-campaign.php:262 379 456 #: includes/Admin/views/generate-content.php:151 380 457 msgid "Publish" 381 458 msgstr "" 382 459 383 #: includes/Admin/views/add-campaign.php:1 50384 #: includes/Admin/views/edit-campaign.php:2 36460 #: includes/Admin/views/add-campaign.php:184 461 #: includes/Admin/views/edit-campaign.php:268 385 462 msgid "" 386 463 "Select the status of the generated posts. This will be used while " … … 388 465 msgstr "" 389 466 390 #: includes/Admin/views/add-campaign.php:1 58391 #: includes/Admin/views/edit-campaign.php:2 44467 #: includes/Admin/views/add-campaign.php:192 468 #: includes/Admin/views/edit-campaign.php:276 392 469 msgid "Campaign Settings" 393 470 msgstr "" 394 471 395 #: includes/Admin/views/add-campaign.php:1 64396 #: includes/Admin/views/edit-campaign.php:2 50472 #: includes/Admin/views/add-campaign.php:198 473 #: includes/Admin/views/edit-campaign.php:282 397 474 msgid "Generate Thumbnail" 398 475 msgstr "" 399 476 400 #: includes/Admin/views/add-campaign.php: 167401 #: includes/Admin/views/edit-campaign.php:2 53477 #: includes/Admin/views/add-campaign.php:201 478 #: includes/Admin/views/edit-campaign.php:285 402 479 msgid "Enable to generate a thumbnail for the each campaigns generated content." 403 480 msgstr "" … … 463 540 msgstr "" 464 541 465 #: includes/Admin/views/edit-campaign.php: 72466 #: includes/Admin/views/edit-campaign.php:2 62542 #: includes/Admin/views/edit-campaign.php:105 543 #: includes/Admin/views/edit-campaign.php:294 467 544 msgid "Campaign Posts" 468 545 msgstr "" 469 546 470 #: includes/Admin/views/edit-campaign.php: 73547 #: includes/Admin/views/edit-campaign.php:106 471 548 msgid "Processing" 472 549 msgstr "" 473 550 474 #: includes/Admin/views/edit-campaign.php: 75551 #: includes/Admin/views/edit-campaign.php:108 475 552 msgid "" 476 553 "Below are the temporary posts generated for this campaign. The progress bar " … … 478 555 msgstr "" 479 556 480 #: includes/Admin/views/edit-campaign.php: 96557 #: includes/Admin/views/edit-campaign.php:129 481 558 msgid "Progress" 482 559 msgstr "" 483 560 484 #: includes/Admin/views/edit-campaign.php: 98561 #: includes/Admin/views/edit-campaign.php:131 485 562 #: includes/Admin/views/generate-content.php:144 486 563 msgid "Actions" 487 564 msgstr "" 488 565 489 #: includes/Admin/views/edit-campaign.php:1 41566 #: includes/Admin/views/edit-campaign.php:174 490 567 msgid "" 491 568 "No generated posts found for this campaign. Please wait while the posts are " … … 494 571 msgstr "" 495 572 496 #: includes/Admin/views/edit-campaign.php: 186497 #: includes/Admin/views/settings.php:1 11573 #: includes/Admin/views/edit-campaign.php:218 574 #: includes/Admin/views/settings.php:148 498 575 msgid "Save Changes" 499 576 msgstr "" 500 577 501 #: includes/Admin/views/edit-campaign.php:193 502 #: includes/Admin/views/generate-content.php:110 503 msgid "Publish content as" 504 msgstr "" 505 506 #: includes/Admin/views/edit-campaign.php:263 578 #: includes/Admin/views/edit-campaign.php:295 507 579 msgid "Completed" 508 580 msgstr "" 509 581 510 #: includes/Admin/views/edit-campaign.php:3 06582 #: includes/Admin/views/edit-campaign.php:338 511 583 msgid "No completed posts found for this campaign." 512 584 msgstr "" … … 627 699 msgstr "" 628 700 701 #: includes/Admin/views/generate-content.php:110 702 msgid "Publish content as" 703 msgstr "" 704 629 705 #: includes/Admin/views/help.php:18 630 706 msgid "" … … 846 922 msgstr "" 847 923 848 #: includes/Admin/views/help.php:118 includes/Admin/views/settings.php:1 20924 #: includes/Admin/views/help.php:118 includes/Admin/views/settings.php:157 849 925 msgid "Support" 850 926 msgstr "" 851 927 852 #: includes/Admin/views/help.php:121 includes/Admin/views/settings.php:1 23928 #: includes/Admin/views/help.php:121 includes/Admin/views/settings.php:160 853 929 msgid "If you need help, please contact us." 854 930 msgstr "" 855 931 856 #: includes/Admin/views/help.php:124 includes/Admin/views/settings.php:1 26932 #: includes/Admin/views/help.php:124 includes/Admin/views/settings.php:163 857 933 msgid "Contact Support" 858 934 msgstr "" 859 935 860 #: includes/Admin/views/help.php:131 includes/Admin/views/settings.php:1 33936 #: includes/Admin/views/help.php:131 includes/Admin/views/settings.php:170 861 937 msgid "Our Popular Plugins" 862 938 msgstr "" 863 939 864 #: includes/Admin/views/help.php:137 includes/Admin/views/settings.php:139 865 msgid "Advanced Shortcodes" 940 #: includes/Admin/views/help.php:137 includes/Admin/views/settings.php:176 941 msgid "Send Emails – Newsletters, Automation & Email Marketing for WordPress" 942 msgstr "" 943 944 #: includes/Admin/views/help.php:142 includes/Admin/views/settings.php:181 945 msgid "Essential Elements for WordPress" 946 msgstr "" 947 948 #: includes/Admin/views/help.php:147 includes/Admin/views/settings.php:186 949 msgid "Shortcodes – Advanced Shortcode Manager" 950 msgstr "" 951 952 #: includes/Admin/views/help.php:152 includes/Admin/views/settings.php:191 953 msgid "Post Showcase" 954 msgstr "" 955 956 #: includes/Admin/views/help.php:157 includes/Admin/views/settings.php:196 957 msgid "SMS Manager – WooCommerce SMS Notifications" 958 msgstr "" 959 960 #: includes/Admin/views/help.php:162 includes/Admin/views/settings.php:201 961 msgid "Invoice Payment" 866 962 msgstr "" 867 963 … … 883 979 884 980 #: includes/Admin/views/settings.php:30 885 msgid "API Model:" 981 msgid "Allowed Hosts:" 982 msgstr "" 983 984 #: includes/Admin/views/settings.php:33 985 msgid "https://bing.com" 886 986 msgstr "" 887 987 888 988 #: includes/Admin/views/settings.php:34 889 msgid "Gemini" 890 msgstr "" 891 892 #: includes/Admin/views/settings.php:35 893 msgid "ChatGPT" 894 msgstr "" 895 896 #: includes/Admin/views/settings.php:37 897 msgid "Select the AI model to generate content." 898 msgstr "" 899 900 #: includes/Admin/views/settings.php:42 989 msgid "" 990 "Enter the allowed hosts. Each host should be on a new line. Example: " 991 "https://bing.com. Currently, we allow only Bing as a host." 992 msgstr "" 993 994 #: includes/Admin/views/settings.php:39 995 msgid "Default Host:" 996 msgstr "" 997 998 #: includes/Admin/views/settings.php:43 999 msgid "" 1000 "Enter the default host URL. This will be used as a default host while " 1001 "generating the content." 1002 msgstr "" 1003 1004 #: includes/Admin/views/settings.php:47 1005 msgid "API Settings" 1006 msgstr "" 1007 1008 #: includes/Admin/views/settings.php:48 1009 msgid "The following options are the API settings for the AI Content Writer plugin." 1010 msgstr "" 1011 1012 #: includes/Admin/views/settings.php:52 901 1013 msgid "Gemini API Key:" 902 1014 msgstr "" 903 1015 904 #: includes/Admin/views/settings.php: 461016 #: includes/Admin/views/settings.php:56 905 1017 msgid "Enter your Gemini API key." 906 1018 msgstr "" 907 1019 908 #: includes/Admin/views/settings.php: 511020 #: includes/Admin/views/settings.php:61 909 1021 msgid "ChatGPT API Secret Key:" 910 1022 msgstr "" 911 1023 912 #: includes/Admin/views/settings.php: 551024 #: includes/Admin/views/settings.php:65 913 1025 msgid "Enter your ChatGPT API secret key." 914 1026 msgstr "" 915 1027 916 #: includes/Admin/views/settings.php: 601028 #: includes/Admin/views/settings.php:70 917 1029 msgid "ChatGPT AI Model:" 918 1030 msgstr "" 919 1031 920 #: includes/Admin/views/settings.php: 641032 #: includes/Admin/views/settings.php:74 921 1033 msgid "GPT-3.5 Turbo" 922 1034 msgstr "" 923 1035 924 #: includes/Admin/views/settings.php: 651036 #: includes/Admin/views/settings.php:75 925 1037 msgid "GPT-4o" 926 1038 msgstr "" 927 1039 928 #: includes/Admin/views/settings.php: 661040 #: includes/Admin/views/settings.php:76 929 1041 msgid "GPT-4o Mini" 930 1042 msgstr "" 931 1043 932 #: includes/Admin/views/settings.php: 671044 #: includes/Admin/views/settings.php:77 933 1045 msgid "GPT-4 Turbo" 934 1046 msgstr "" 935 1047 936 #: includes/Admin/views/settings.php: 691048 #: includes/Admin/views/settings.php:79 937 1049 msgid "Select the ChatGPT AI model to generate content." 938 1050 msgstr "" 939 1051 940 #: includes/Admin/views/settings.php:74 941 msgid "Enable Redirection:" 942 msgstr "" 943 944 #: includes/Admin/views/settings.php:79 945 msgid "Enable Redirection" 946 msgstr "" 947 948 #: includes/Admin/views/settings.php:81 949 msgid "" 950 "Enable to redirect to the edit page after successful generation of content " 951 "from the \"Generate Content\" page." 952 msgstr "" 953 954 #: includes/Admin/views/settings.php:85 1052 #: includes/Admin/views/settings.php:83 955 1053 msgid "Image Settings" 956 1054 msgstr "" 957 1055 958 #: includes/Admin/views/settings.php:8 61056 #: includes/Admin/views/settings.php:84 959 1057 msgid "" 960 1058 "The following options are the image settings for the AI Content Writer " … … 962 1060 msgstr "" 963 1061 964 #: includes/Admin/views/settings.php:90 1062 #: includes/Admin/views/settings.php:88 1063 msgid "Pexels API Key:" 1064 msgstr "" 1065 1066 #: includes/Admin/views/settings.php:92 1067 msgid "" 1068 "Enter your Pexels API key. This key is required to generate thumbnails " 1069 "images for the AI generated content." 1070 msgstr "" 1071 1072 #: includes/Admin/views/settings.php:96 1073 msgid "Miscellaneous Settings" 1074 msgstr "" 1075 1076 #: includes/Admin/views/settings.php:97 1077 msgid "" 1078 "The following options are the miscellaneous settings for the AI Content " 1079 "Writer instant content generation feature." 1080 msgstr "" 1081 1082 #: includes/Admin/views/settings.php:101 1083 msgid "API Model:" 1084 msgstr "" 1085 1086 #: includes/Admin/views/settings.php:108 1087 msgid "" 1088 "Select the AI model to generate content using the instant content " 1089 "Generation feature." 1090 msgstr "" 1091 1092 #: includes/Admin/views/settings.php:113 965 1093 msgid "Enable Image Generation:" 966 1094 msgstr "" 967 1095 968 #: includes/Admin/views/settings.php: 951096 #: includes/Admin/views/settings.php:118 969 1097 msgid "Enable Thumbnail Image Generation" 970 1098 msgstr "" 971 1099 972 #: includes/Admin/views/settings.php: 971100 #: includes/Admin/views/settings.php:120 973 1101 msgid "" 974 1102 "Enable to activate the thumbnail image generation feature. AI generated " … … 977 1105 msgstr "" 978 1106 979 #: includes/Admin/views/settings.php:102 980 msgid "Pexels API Key:" 981 msgstr "" 982 983 #: includes/Admin/views/settings.php:106 984 msgid "" 985 "Enter your Pexels API key. This key is required to generate thumbnails " 986 "images for the AI generated content." 1107 #: includes/Admin/views/settings.php:125 1108 msgid "Enable Redirection:" 1109 msgstr "" 1110 1111 #: includes/Admin/views/settings.php:130 1112 msgid "Enable Redirection" 1113 msgstr "" 1114 1115 #: includes/Admin/views/settings.php:132 1116 msgid "" 1117 "Enable to redirect to the edit page after successful generation of content " 1118 "from the \"Generate Content\" page." 987 1119 msgstr "" 988 1120 … … 1071 1203 msgstr "" 1072 1204 1073 #: includes/functions.php:3 831205 #: includes/functions.php:390 1074 1206 #. translators: 1: Prompt Content, 2: System Tone, 3: Language 1075 1207 msgid "" … … 1092 1224 msgstr "" 1093 1225 1226 #: includes/functions.php:502 1227 msgid "The campaign is not found." 1228 msgstr "" 1229 1230 #: includes/functions.php:550 1231 msgid "The campaign target is reached." 1232 msgstr "" 1233 1094 1234 #. Plugin URI of the plugin/theme 1095 1235 msgid "https://beautifulplugins.com/ai-content-writer/" … … 1098 1238 #. Description of the plugin/theme 1099 1239 msgid "" 1100 "AI Content Writer is a powerful AI tool that helps you generate"1101 " high-qualitycontent for your blog or website in minutes using advanced AI "1240 "AI Content Writer helps you automatically generate high-quality, " 1241 "SEO-optimized content for your blog or website in minutes using advanced AI " 1102 1242 "technologies like ChatGPT, OpenAI, Google Gemini, and more." 1103 1243 msgstr "" -
ai-content-writer/trunk/readme.txt
r3265465 r3285449 2 2 Contributors: beautifulplugins 3 3 Tags: content writer, ai, content, writing, autoblog 4 Tested up to: 6. 75 Stable tag: 1.6.04 Tested up to: 6.8 5 Stable tag: 2.0.0 6 6 License: GPLv2 or later 7 7 License URI: https://www.gnu.org/licenses/gpl-2.0.html 8 8 9 AI Content Writer is a powerful AI tool that helps you generate high-qualitycontent for your blog or website.9 AI Content Writer helps you automatically generate high-quality, SEO-optimized content for your blog or website. 10 10 11 11 == Description == … … 33 33 * **Customizable**: AI Content Writer allows you to customize the content to suit your needs, ensuring that the final product meets your expectations. 34 34 * **Fast**: With AI Content Writer, you can create content in minutes, saving you time and effort. 35 36 === 📊 Available Campaign Types === 37 * **Articles**: Generate articles on various topics from different sources. like Bing.com, Bing.com/news, RSS feeds, and more. 38 * **RSS Feeds**: Generate content from RSS feeds to keep your website updated with the latest news and articles. 39 * **Gemini**: Generate content using the Google Gemini API, a powerful AI model that creates high-quality content. It is free to use and does not require a subscription to use. But it has some limitations on the number of requests you can make. (Freemium) 40 * **ChatGPT**: Generate content using the ChatGPT API, a popular AI model that creates high-quality content. It is a paid service and requires a subscription to use. (Paid) 35 41 36 42 == Why Choose AI Content Writer? == … … 180 186 181 187 == Changelog == 182 = 1.6.0 (April 02, 2025) = 188 = 2.0.0 (1st May 2025) = 189 * New: Added new campaign types for generating content in bulk. 190 * New: Added support for generating content from search engines like Bing.com and Bing.com/news. 191 * New: Added support for generating content from RSS feeds. 192 * Enhance: Expand functionality, improve user experience, and streamline campaign management. 193 * Secure: Enhanced form validation, and improved settings handling. 194 195 = 1.6.0 (2nd April 2025) = 183 196 * Enhance: Added SEO-Friendly title and description for AI Content Writer. 184 197 185 = 1.5.0 ( March 10,2025) =198 = 1.5.0 (10th March 2025) = 186 199 * New: Dashboard page to display the post statistics, plugin overview and features. 187 200 * Enhance: Update layout and design for better user experience. 188 201 * Fix: Minor bug fixes and improvements. 189 202 190 = 1.4.0 ( March 3,2025) =203 = 1.4.0 (3rd March 2025) = 191 204 * New: Added support for automatic content generation with AI. 192 205 * New: Added campaign feature to generate content in bulk. … … 197 210 * Enhance: Added settings page link to the plugin action links. 198 211 199 = 1.2.0 ( January 31,2025) =212 = 1.2.0 (31st January 2025) = 200 213 * New: Added support for ChatGPT API for content generation. 201 214 * New: Added support for OpenAI API for content generation. 202 215 * Enhance: Enhanced the user interface for better user experience while generating content. 203 216 204 = 1.1.0 ( January 30,2025) =217 = 1.1.0 (30th January 2025) = 205 218 * New: Added spinner to indicate content generation in progress. 206 219 * Enhance: Rename the plugin initialization function to avoid conflicts. 207 220 208 = 1.0.0 ( January 18,2025) =221 = 1.0.0 (18th January 2025) = 209 222 * Initial Release 210 223 211 224 == Upgrade Notice == 212 = 1.5.0 =213 This version includes a new dashboard page to display post statistics, plugin overview, and features. It also includes minor bug fixes and improvements.225 = 2.0.0 = 226 This version includes new features, enhancements, and bug fixes. We recommend upgrading to this version for the best experience and performance. Please refer to the changelog for more details on the changes made in this version. -
ai-content-writer/trunk/vendor/autoload.php
r3249260 r3285449 23 23 require_once __DIR__ . '/composer/autoload_real.php'; 24 24 25 return ComposerAutoloaderInit fd83684bdf6b99fc67c2944c45cff21f::getLoader();25 return ComposerAutoloaderInit323bde87c3a41909797ba511302c4b47::getLoader(); -
ai-content-writer/trunk/vendor/composer/autoload_classmap.php
r3252952 r3285449 11 11 'AIContentWriter\\Admin\\Dashboard' => $baseDir . '/includes/Admin/Dashboard.php', 12 12 'AIContentWriter\\Admin\\ListTables\\CampaignsListTable' => $baseDir . '/includes/Admin/ListTables/CampaignsListTable.php', 13 'AIContentWriter\\Campaigns\\Articles' => $baseDir . '/includes/Campaigns/Articles.php', 14 'AIContentWriter\\Campaigns\\RSSFeed' => $baseDir . '/includes/Campaigns/RSSFeed.php', 13 15 'AIContentWriter\\Cron' => $baseDir . '/includes/Cron.php', 14 16 'AIContentWriter\\Plugin' => $baseDir . '/includes/Plugin.php', 15 17 'AIContentWriter\\PostTypes' => $baseDir . '/includes/PostTypes.php', 16 18 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 19 'simplehtmldom\\Debug' => $vendorDir . '/simplehtmldom/simplehtmldom/Debug.php', 20 'simplehtmldom\\HtmlDocument' => $vendorDir . '/simplehtmldom/simplehtmldom/HtmlDocument.php', 21 'simplehtmldom\\HtmlNode' => $vendorDir . '/simplehtmldom/simplehtmldom/HtmlNode.php', 22 'simplehtmldom\\HtmlWeb' => $vendorDir . '/simplehtmldom/simplehtmldom/HtmlWeb.php', 17 23 ); -
ai-content-writer/trunk/vendor/composer/autoload_real.php
r3249260 r3285449 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit fd83684bdf6b99fc67c2944c45cff21f5 class ComposerAutoloaderInit323bde87c3a41909797ba511302c4b47 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit fd83684bdf6b99fc67c2944c45cff21f', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit323bde87c3a41909797ba511302c4b47', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit fd83684bdf6b99fc67c2944c45cff21f', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit323bde87c3a41909797ba511302c4b47', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit fd83684bdf6b99fc67c2944c45cff21f::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInit323bde87c3a41909797ba511302c4b47::getInitializer($loader)); 33 33 34 34 $loader->register(true); -
ai-content-writer/trunk/vendor/composer/autoload_static.php
r3252952 r3285449 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit fd83684bdf6b99fc67c2944c45cff21f7 class ComposerStaticInit323bde87c3a41909797ba511302c4b47 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 26 26 'AIContentWriter\\Admin\\Dashboard' => __DIR__ . '/../..' . '/includes/Admin/Dashboard.php', 27 27 'AIContentWriter\\Admin\\ListTables\\CampaignsListTable' => __DIR__ . '/../..' . '/includes/Admin/ListTables/CampaignsListTable.php', 28 'AIContentWriter\\Campaigns\\Articles' => __DIR__ . '/../..' . '/includes/Campaigns/Articles.php', 29 'AIContentWriter\\Campaigns\\RSSFeed' => __DIR__ . '/../..' . '/includes/Campaigns/RSSFeed.php', 28 30 'AIContentWriter\\Cron' => __DIR__ . '/../..' . '/includes/Cron.php', 29 31 'AIContentWriter\\Plugin' => __DIR__ . '/../..' . '/includes/Plugin.php', 30 32 'AIContentWriter\\PostTypes' => __DIR__ . '/../..' . '/includes/PostTypes.php', 31 33 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 34 'simplehtmldom\\Debug' => __DIR__ . '/..' . '/simplehtmldom/simplehtmldom/Debug.php', 35 'simplehtmldom\\HtmlDocument' => __DIR__ . '/..' . '/simplehtmldom/simplehtmldom/HtmlDocument.php', 36 'simplehtmldom\\HtmlNode' => __DIR__ . '/..' . '/simplehtmldom/simplehtmldom/HtmlNode.php', 37 'simplehtmldom\\HtmlWeb' => __DIR__ . '/..' . '/simplehtmldom/simplehtmldom/HtmlWeb.php', 32 38 ); 33 39 … … 35 41 { 36 42 return \Closure::bind(function () use ($loader) { 37 $loader->prefixLengthsPsr4 = ComposerStaticInit fd83684bdf6b99fc67c2944c45cff21f::$prefixLengthsPsr4;38 $loader->prefixDirsPsr4 = ComposerStaticInit fd83684bdf6b99fc67c2944c45cff21f::$prefixDirsPsr4;39 $loader->classMap = ComposerStaticInit fd83684bdf6b99fc67c2944c45cff21f::$classMap;43 $loader->prefixLengthsPsr4 = ComposerStaticInit323bde87c3a41909797ba511302c4b47::$prefixLengthsPsr4; 44 $loader->prefixDirsPsr4 = ComposerStaticInit323bde87c3a41909797ba511302c4b47::$prefixDirsPsr4; 45 $loader->classMap = ComposerStaticInit323bde87c3a41909797ba511302c4b47::$classMap; 40 46 41 47 }, null, ClassLoader::class); -
ai-content-writer/trunk/vendor/composer/installed.json
r3229925 r3285449 1 1 { 2 "packages": [], 2 "packages": [ 3 { 4 "name": "simplehtmldom/simplehtmldom", 5 "version": "2.0-RC2", 6 "version_normalized": "2.0.0.0-RC2", 7 "source": { 8 "type": "git", 9 "url": "https://github.com/simplehtmldom/simplehtmldom.git", 10 "reference": "3c87726400e59d8e1bc4709cfe82353abeb0f4d1" 11 }, 12 "dist": { 13 "type": "zip", 14 "url": "https://api.github.com/repos/simplehtmldom/simplehtmldom/zipball/3c87726400e59d8e1bc4709cfe82353abeb0f4d1", 15 "reference": "3c87726400e59d8e1bc4709cfe82353abeb0f4d1", 16 "shasum": "" 17 }, 18 "require": { 19 "ext-iconv": "*", 20 "php": ">=5.6" 21 }, 22 "require-dev": { 23 "phpunit/phpunit": "^6 || ^7" 24 }, 25 "suggest": { 26 "ext-curl": "Needed to support cURL downloads in class HtmlWeb", 27 "ext-mbstring": "Allows better decoding for multi-byte documents", 28 "ext-openssl": "Allows loading HTTPS pages when using cURL" 29 }, 30 "time": "2019-11-09T15:42:50+00:00", 31 "type": "library", 32 "installation-source": "dist", 33 "autoload": { 34 "classmap": [ 35 "./" 36 ], 37 "exclude-from-classmap": [ 38 "/example/", 39 "/manual/", 40 "/testcase/", 41 "/tests/", 42 "simple_html_dom.php" 43 ] 44 }, 45 "notification-url": "https://packagist.org/downloads/", 46 "license": [ 47 "MIT" 48 ], 49 "authors": [ 50 { 51 "name": "S.C. Chen", 52 "role": "Developer" 53 }, 54 { 55 "name": "John Schlick", 56 "role": "Developer" 57 }, 58 { 59 "name": "logmanoriginal", 60 "role": "Developer" 61 } 62 ], 63 "description": "A fast, simple and reliable HTML document parser for PHP.", 64 "homepage": "https://simplehtmldom.sourceforge.io/", 65 "keywords": [ 66 "Simple", 67 "dom", 68 "html", 69 "parser", 70 "php", 71 "simplehtmldom" 72 ], 73 "support": { 74 "issues": "https://sourceforge.net/p/simplehtmldom/bugs/", 75 "rss": "https://sourceforge.net/p/simplehtmldom/news/feed.rss", 76 "source": "https://sourceforge.net/p/simplehtmldom/repository/", 77 "wiki": "https://simplehtmldom.sourceforge.io/docs/" 78 }, 79 "install-path": "../simplehtmldom/simplehtmldom" 80 } 81 ], 3 82 "dev": false, 4 83 "dev-package-names": [] -
ai-content-writer/trunk/vendor/composer/installed.php
r3265465 r3285449 2 2 'root' => array( 3 3 'name' => 'beautifulplugins/ai-content-writer', 4 'pretty_version' => 'v 1.6.0',5 'version' => ' 1.6.0.0',6 'reference' => ' f6eb412575a44c9cea512f73350dc8803362f006',4 'pretty_version' => 'v2.0.0', 5 'version' => '2.0.0.0', 6 'reference' => '8501631baecc9e8184cbfec6b3f548e5c5f071e2', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 'beautifulplugins/ai-content-writer' => array( 14 'pretty_version' => 'v 1.6.0',15 'version' => ' 1.6.0.0',16 'reference' => ' f6eb412575a44c9cea512f73350dc8803362f006',14 'pretty_version' => 'v2.0.0', 15 'version' => '2.0.0.0', 16 'reference' => '8501631baecc9e8184cbfec6b3f548e5c5f071e2', 17 17 'type' => 'wordpress-plugin', 18 18 'install_path' => __DIR__ . '/../../', … … 20 20 'dev_requirement' => false, 21 21 ), 22 'simplehtmldom/simplehtmldom' => array( 23 'pretty_version' => '2.0-RC2', 24 'version' => '2.0.0.0-RC2', 25 'reference' => '3c87726400e59d8e1bc4709cfe82353abeb0f4d1', 26 'type' => 'library', 27 'install_path' => __DIR__ . '/../simplehtmldom/simplehtmldom', 28 'aliases' => array(), 29 'dev_requirement' => false, 30 ), 22 31 ), 23 32 );
Note: See TracChangeset
for help on using the changeset viewer.