| @@ -22,10 +22,8 @@ | ||
| 22 | 22 | $pro_tool_use = apply_filters('mxchat_content_pro_feature', false, 'tool_use'); |
| 23 | 23 | $pro_image_management = apply_filters('mxchat_content_pro_feature', false, 'image_management'); |
| 24 | 24 | $pro_meta_management = apply_filters('mxchat_content_pro_feature', false, 'meta_management'); |
| 25 | 25 | $pro_gsc_integration = apply_filters('mxchat_content_pro_feature', false, 'gsc_integration'); |
| 26 | - $pro_content_calendar = apply_filters('mxchat_content_pro_feature', false, 'content_calendar'); | |
| 27 | - $pro_template_generator = apply_filters('mxchat_content_pro_feature', false, 'template_generator'); | |
| 28 | 26 | ?> |
| 29 | 27 | <div class="mxch-admin-wrapper"> |
| 30 | 28 | <!-- Mobile Header --> |
| 31 | 29 | <header class="mxch-mobile-header"> |
| @@ -69,16 +67,8 @@ | ||
| 69 | 67 | <button class="mxch-mobile-nav-link" data-target="content-seo"> |
| 70 | 68 | <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20V10"/><path d="M18 20V4"/><path d="M6 20v-4"/></svg> |
| 71 | 69 | <span><?php esc_html_e('SEO', 'mxchat'); ?></span> |
| 72 | 70 | </button> |
| 73 | - <button class="mxch-mobile-nav-link" data-target="content-calendar"> | |
| 74 | - <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/></svg> | |
| 75 | - <span><?php esc_html_e('Calendar', 'mxchat'); ?></span> | |
| 76 | - </button> | |
| 77 | - <button class="mxch-mobile-nav-link" data-target="content-templates"> | |
| 78 | - <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18"/><path d="M9 21V9"/></svg> | |
| 79 | - <span><?php esc_html_e('Templates', 'mxchat'); ?></span> | |
| 80 | - </button> | |
| 81 | 71 | </div> |
| 82 | 72 | </nav> |
| 83 | 73 | </div> |
| 84 | 74 | |
| @@ -132,26 +122,8 @@ | ||
| 132 | 122 | </span> |
| 133 | 123 | <span class="mxch-nav-link-text"><?php esc_html_e('SEO', 'mxchat'); ?></span> |
| 134 | 124 | </button> |
| 135 | 125 | </div> |
| 136 | - | |
| 137 | - <div class="mxch-nav-item" data-section="content-calendar"> | |
| 138 | - <button class="mxch-nav-link" data-target="content-calendar"> | |
| 139 | - <span class="mxch-nav-link-icon"> | |
| 140 | - <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/></svg> | |
| 141 | - </span> | |
| 142 | - <span class="mxch-nav-link-text"><?php esc_html_e('Calendar', 'mxchat'); ?></span> | |
| 143 | - </button> | |
| 144 | - </div> | |
| 145 | - | |
| 146 | - <div class="mxch-nav-item" data-section="content-templates"> | |
| 147 | - <button class="mxch-nav-link" data-target="content-templates"> | |
| 148 | - <span class="mxch-nav-link-icon"> | |
| 149 | - <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18"/><path d="M9 21V9"/></svg> | |
| 150 | - </span> | |
| 151 | - <span class="mxch-nav-link-text"><?php esc_html_e('Templates', 'mxchat'); ?></span> | |
| 152 | - </button> | |
| 153 | - </div> | |
| 154 | 126 | </div> |
| 155 | 127 | </nav> |
| 156 | 128 | </aside> |
| 157 | 129 | |
| @@ -232,12 +204,8 @@ | ||
| 232 | 204 | </div> |
| 233 | 205 | </div> |
| 234 | 206 | <div class="mxch-cg-form"> |
| 235 | 207 | <textarea id="mxch-cg-prompt" class="mxch-cg-prompt" rows="3" placeholder="<?php esc_attr_e('Describe the content you want to generate...', 'mxchat'); ?>"></textarea> |
| 236 | - <button type="button" id="mxch-cg-edit-prompt-btn" class="mxch-cg-edit-prompt-btn"> | |
| 237 | - <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg> | |
| 238 | - <?php esc_html_e('Edit Default Prompt', 'mxchat'); ?> | |
| 239 | - </button> | |
| 240 | 208 | <div class="mxch-cg-options"> |
| 241 | 209 | <div class="mxch-cg-option"> |
| 242 | 210 | <label class="mxch-cg-option-label" for="mxch-cg-type"><?php esc_html_e('Type', 'mxchat'); ?></label> |
| 243 | 211 | <select id="mxch-cg-type" class="mxch-cg-select"> |
| @@ -272,15 +240,8 @@ | ||
| 272 | 240 | <option value="show"><?php esc_html_e('Show', 'mxchat'); ?></option> |
| 273 | 241 | <option value="hide" selected><?php esc_html_e('Hide (title in content)', 'mxchat'); ?></option> |
| 274 | 242 | </select> |
| 275 | 243 | </div> |
| 276 | - <div class="mxch-cg-option"> | |
| 277 | - <label class="mxch-cg-option-label" for="mxch-cg-template-mode"><?php esc_html_e('Template Mode', 'mxchat'); ?></label> | |
| 278 | - <select id="mxch-cg-template-mode" class="mxch-cg-select"> | |
| 279 | - <option value="off" selected><?php esc_html_e('Off', 'mxchat'); ?></option> | |
| 280 | - <option value="on"><?php esc_html_e('On (Spintax)', 'mxchat'); ?></option> | |
| 281 | - </select> | |
| 282 | - </div> | |
| 283 | 244 | </div> |
| 284 | 245 | <button type="button" id="mxch-cg-generate-btn" class="mxch-cg-generate-btn mxch-cg-generate-btn-full"> |
| 285 | 246 | <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg> |
| 286 | 247 | <span><?php esc_html_e('Generate Content', 'mxchat'); ?></span> |
| @@ -294,29 +255,8 @@ | ||
| 294 | 255 | <p class="mxch-cg-progress-text"><?php esc_html_e('Starting...', 'mxchat'); ?></p> |
| 295 | 256 | </div> |
| 296 | 257 | </div> |
| 297 | 258 | </div> |
| 298 | - <!-- Edit Default Prompt Modal --> | |
| 299 | - <div id="mxch-cg-prompt-modal" class="mxch-cg-prompt-modal" style="display:none;"> | |
| 300 | - <div class="mxch-cg-prompt-modal-overlay"></div> | |
| 301 | - <div class="mxch-cg-prompt-modal-content"> | |
| 302 | - <div class="mxch-cg-prompt-modal-header"> | |
| 303 | - <h3><?php esc_html_e('Edit Default System Prompt', 'mxchat'); ?></h3> | |
| 304 | - <button type="button" id="mxch-cg-prompt-modal-close" class="mxch-cg-prompt-modal-close">×</button> | |
| 305 | - </div> | |
| 306 | - <div class="mxch-cg-prompt-modal-body"> | |
| 307 | - <p class="mxch-cg-prompt-modal-desc"><?php esc_html_e('This is the system prompt sent to the AI when generating content. Edit it to customize how your content is generated.', 'mxchat'); ?></p> | |
| 308 | - <textarea id="mxch-cg-system-prompt-editor" class="mxch-cg-system-prompt-editor" rows="20"></textarea> | |
| 309 | - </div> | |
| 310 | - <div class="mxch-cg-prompt-modal-footer"> | |
| 311 | - <button type="button" id="mxch-cg-prompt-reset" class="button"><?php esc_html_e('Reset to Default', 'mxchat'); ?></button> | |
| 312 | - <div class="mxch-cg-prompt-modal-footer-right"> | |
| 313 | - <button type="button" id="mxch-cg-prompt-cancel" class="button"><?php esc_html_e('Cancel', 'mxchat'); ?></button> | |
| 314 | - <button type="button" id="mxch-cg-prompt-save" class="button button-primary"><?php esc_html_e('Save Changes', 'mxchat'); ?></button> | |
| 315 | - </div> | |
| 316 | - </div> | |
| 317 | - </div> | |
| 318 | - </div> | |
| 319 | 259 | <!-- Loading indicator (shown during async generation) --> |
| 320 | 260 | <div id="mxch-cg-loading-indicator" class="mxch-cg-loading-indicator" style="display:none;"> |
| 321 | 261 | <div class="mxch-cg-loading-spinner"> |
| 322 | 262 | <div class="mxch-cg-loading-spinner-ring"></div> |
| @@ -515,31 +455,20 @@ | ||
| 515 | 455 | <?php |
| 516 | 456 | $content_model = $options['content_model'] ?? ($options['model'] ?? 'gpt-5.1-chat-latest'); |
| 517 | 457 | $models = array( |
| 518 | 458 | 'OpenAI' => array( |
| 519 | - 'gpt-5.5' => 'GPT-5.5', | |
| 520 | - 'gpt-5.4' => 'GPT-5.4', | |
| 521 | 459 | 'gpt-5.2' => 'GPT-5.2', |
| 522 | 460 | 'gpt-5.1-chat-latest' => 'GPT-5.1', |
| 523 | 461 | 'gpt-5' => 'GPT-5', |
| 524 | 462 | ), |
| 525 | 463 | 'Anthropic' => array( |
| 526 | - 'claude-fable-5' => 'Claude Fable 5', | |
| 527 | - 'claude-opus-4-8' => 'Claude Opus 4.8', | |
| 528 | - 'claude-opus-4-7' => 'Claude Opus 4.7', | |
| 529 | 464 | 'claude-opus-4-6' => 'Claude Opus 4.6', |
| 530 | 465 | 'claude-sonnet-4-6' => 'Claude Sonnet 4.6', |
| 531 | 466 | 'claude-haiku-4-5-20251001' => 'Claude Haiku 4.5', |
| 532 | 467 | ), |
| 533 | 468 | 'Google' => array( |
| 534 | - 'gemini-3.5-flash' => 'Gemini 3.5 Flash', | |
| 535 | - 'gemini-3.1-pro-preview' => 'Gemini 3.1 Pro', | |
| 536 | - 'gemini-3-flash-preview' => 'Gemini 3 Flash', | |
| 537 | - 'gemini-3.1-flash-lite' => 'Gemini 3.1 Flash-Lite', | |
| 538 | - 'gemini-3.1-flash-lite-preview' => 'Gemini 3.1 Flash-Lite (Preview)', | |
| 539 | - 'gemini-2.5-pro' => 'Gemini 2.5 Pro', | |
| 540 | - 'gemini-2.5-flash' => 'Gemini 2.5 Flash', | |
| 541 | - 'gemini-2.5-flash-lite' => 'Gemini 2.5 Flash-Lite', | |
| 469 | + 'gemini-3-pro-preview' => 'Gemini 3 Pro', | |
| 470 | + 'gemini-2.5-pro' => 'Gemini 2.5 Pro', | |
| 542 | 471 | ), |
| 543 | 472 | 'xAI' => array( |
| 544 | 473 | 'grok-4-0709' => 'Grok 4', |
| 545 | 474 | 'grok-4-1-fast-non-reasoning' => 'Grok 4.1 Fast', |
| @@ -566,9 +495,8 @@ | ||
| 566 | 495 | <div class="mxch-field-control"> |
| 567 | 496 | <?php $image_model = $options['content_image_model'] ?? 'gpt-image-1.5'; ?> |
| 568 | 497 | <select id="mxch-image-model" data-field="content_image_model" class="mxch-cg-select"> |
| 569 | 498 | <optgroup label="<?php esc_attr_e('OpenAI', 'mxchat'); ?>"> |
| 570 | - <option value="gpt-image-2" <?php selected($image_model, 'gpt-image-2'); ?>><?php esc_html_e('GPT Image 2 (Latest)', 'mxchat'); ?></option> | |
| 571 | 499 | <option value="gpt-image-1.5" <?php selected($image_model, 'gpt-image-1.5'); ?>><?php esc_html_e('GPT Image 1.5', 'mxchat'); ?></option> |
| 572 | 500 | </optgroup> |
| 573 | 501 | <optgroup label="<?php esc_attr_e('xAI', 'mxchat'); ?>"> |
| 574 | 502 | <option value="grok-imagine-image-pro" <?php selected($image_model, 'grok-imagine-image-pro'); ?>><?php esc_html_e('Grok Imagine Pro', 'mxchat'); ?></option> |
| @@ -582,32 +510,8 @@ | ||
| 582 | 510 | </div> |
| 583 | 511 | <p class="mxch-field-description"><?php esc_html_e('Select the AI model used for generating images within your content.', 'mxchat'); ?></p> |
| 584 | 512 | </div> |
| 585 | 513 | |
| 586 | - <!-- Image Quality (GPT Image only) --> | |
| 587 | - <div class="mxch-field"> | |
| 588 | - <label class="mxch-field-label" for="mxch-image-quality"><?php esc_html_e('Image Quality', 'mxchat'); ?></label> | |
| 589 | - <div class="mxch-field-control"> | |
| 590 | - <?php $image_quality = $options['content_image_quality'] ?? 'auto'; ?> | |
| 591 | - <?php $quality_supported = (strpos($image_model, 'gpt-image') === 0); ?> | |
| 592 | - <select id="mxch-image-quality" data-field="content_image_quality" class="mxch-cg-select"<?php echo $quality_supported ? '' : ' disabled'; ?>> | |
| 593 | - <option value="auto" <?php selected($image_quality, 'auto'); ?>><?php esc_html_e('Auto (default)', 'mxchat'); ?></option> | |
| 594 | - <option value="low" <?php selected($image_quality, 'low'); ?>><?php esc_html_e('Low (fastest, cheapest)', 'mxchat'); ?></option> | |
| 595 | - <option value="medium" <?php selected($image_quality, 'medium'); ?>><?php esc_html_e('Medium', 'mxchat'); ?></option> | |
| 596 | - <option value="high" <?php selected($image_quality, 'high'); ?>><?php esc_html_e('High (best, slowest)', 'mxchat'); ?></option> | |
| 597 | - </select> | |
| 598 | - </div> | |
| 599 | - <p class="mxch-field-description"><?php esc_html_e('Quality control for OpenAI GPT Image models only. Grok Imagine and Gemini image models ignore this setting (their APIs do not expose an equivalent parameter).', 'mxchat'); ?></p> | |
| 600 | - </div> | |
| 601 | - <script>(function(){ | |
| 602 | - var m = document.getElementById('mxch-image-model'); | |
| 603 | - var q = document.getElementById('mxch-image-quality'); | |
| 604 | - if (!m || !q || q._wired) { return; } q._wired = true; | |
| 605 | - function sync(){ q.disabled = (m.value || '').indexOf('gpt-image') !== 0; } | |
| 606 | - m.addEventListener('change', sync); | |
| 607 | - sync(); | |
| 608 | - })();</script> | |
| 609 | - | |
| 610 | 514 | <!-- Enable Image Generation --> |
| 611 | 515 | <div class="mxch-field"> |
| 612 | 516 | <label class="mxch-toggle"> |
| 613 | 517 | <?php $enable_images = $options['content_enable_images'] ?? 'on'; ?> |
| @@ -617,35 +521,8 @@ | ||
| 617 | 521 | </label> |
| 618 | 522 | <p class="mxch-field-description"><?php esc_html_e('When enabled, AI will generate and place images throughout your content. When disabled, pages are generated with text-only layouts.', 'mxchat'); ?></p> |
| 619 | 523 | </div> |
| 620 | 524 | |
| 621 | - <!-- Images per Article --> | |
| 622 | - <div class="mxch-field"> | |
| 623 | - <label class="mxch-field-label" for="mxch-image-count"><?php esc_html_e('Images per Article', 'mxchat'); ?></label> | |
| 624 | - <div class="mxch-field-control"> | |
| 625 | - <?php $image_count = max(1, min(5, (int) ($options['content_image_count'] ?? 3))); ?> | |
| 626 | - <?php $images_on = ($options['content_enable_images'] ?? 'on') === 'on'; ?> | |
| 627 | - <div class="mxch-cg-slider-row"> | |
| 628 | - <input type="range" min="1" max="5" step="1" value="<?php echo esc_attr($image_count); ?>" | |
| 629 | - data-field="content_image_count" id="mxch-image-count" class="mxch-cg-slider"<?php echo $images_on ? '' : ' disabled'; ?>> | |
| 630 | - <span id="mxch-image-count-val" class="mxch-cg-slider-value"><?php echo esc_html($image_count); ?></span> | |
| 631 | - </div> | |
| 632 | - </div> | |
| 633 | - <p class="mxch-field-description"><?php esc_html_e('How many images to generate and place in each article (1–5). Default 3. The AI may generate fewer if the article has few sections suited to imagery.', 'mxchat'); ?></p> | |
| 634 | - </div> | |
| 635 | - <script>(function(){ | |
| 636 | - var s = document.getElementById('mxch-image-count'); | |
| 637 | - var v = document.getElementById('mxch-image-count-val'); | |
| 638 | - if (!s || !v || s._wired) { return; } s._wired = true; | |
| 639 | - s.addEventListener('input', function(){ v.textContent = s.value; }); | |
| 640 | - var e = document.querySelector('[data-field="content_enable_images"]'); | |
| 641 | - if (e) { | |
| 642 | - var syncCount = function(){ s.disabled = !e.checked; }; | |
| 643 | - e.addEventListener('change', syncCount); | |
| 644 | - syncCount(); | |
| 645 | - } | |
| 646 | - })();</script> | |
| 647 | - | |
| 648 | 525 | <!-- Internal Linking (Pro) --> |
| 649 | 526 | <div class="mxch-field mxch-cg-pro-field<?php echo $pro_internal_linking ? '' : ' mxch-cg-pro-locked'; ?>"> |
| 650 | 527 | <label class="mxch-toggle"> |
| 651 | 528 | <?php $internal_linking_val = $options['content_internal_linking'] ?? 'off'; ?> |
| @@ -868,222 +745,8 @@ | ||
| 868 | 745 | </div> |
| 869 | 746 | </div> |
| 870 | 747 | </div> |
| 871 | 748 | </div> |
| 872 | - </div> | |
| 873 | - | |
| 874 | - <!-- ======================================== | |
| 875 | - CALENDAR | |
| 876 | - ======================================== --> | |
| 877 | - <div id="content-calendar" class="mxch-section"> | |
| 878 | - <?php if ($pro_content_calendar) : ?> | |
| 879 | - <!-- Add-on is active — container for calendar JS to populate --> | |
| 880 | - <div class="mxcal-container" id="mxcal-container"></div> | |
| 881 | - <?php else : ?> | |
| 882 | - <!-- Add-on not installed — show blurred demo calendar --> | |
| 883 | - <style> | |
| 884 | - .mxcal-demo-wrap { position: relative; } | |
| 885 | - .mxcal-demo-blur { filter: blur(3px); pointer-events: none; user-select: none; opacity: 0.7; } | |
| 886 | - .mxcal-demo-overlay { | |
| 887 | - position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); | |
| 888 | - z-index: 10; text-align: center; background: rgba(255,255,255,0.95); | |
| 889 | - border-radius: 16px; padding: 40px 48px; box-shadow: 0 8px 40px rgba(120,115,245,0.15); | |
| 890 | - border: 1px solid rgba(120,115,245,0.12); max-width: 460px; width: 90%; | |
| 891 | - } | |
| 892 | - .mxcal-demo-overlay h2 { | |
| 893 | - font-size: 22px; font-weight: 700; margin: 0 0 8px; color: #1A202C; | |
| 894 | - } | |
| 895 | - .mxcal-demo-overlay p { font-size: 14px; color: #718096; line-height: 1.6; margin: 0 0 20px; } | |
| 896 | - .mxcal-demo-overlay .mxcal-demo-badge { | |
| 897 | - display: inline-block; background: linear-gradient(135deg, #fa73e6, #7873f5); | |
| 898 | - color: #fff; font-size: 11px; font-weight: 700; padding: 4px 12px; | |
| 899 | - border-radius: 20px; margin-bottom: 16px; letter-spacing: 0.5px; | |
| 900 | - } | |
| 901 | - .mxcal-demo-overlay a.mxcal-demo-btn { | |
| 902 | - display: inline-block; background: linear-gradient(135deg, #fa73e6, #7873f5); | |
| 903 | - color: #fff; font-size: 14px; font-weight: 600; padding: 12px 28px; | |
| 904 | - border-radius: 10px; text-decoration: none; transition: all 0.2s; | |
| 905 | - box-shadow: 0 4px 14px rgba(120,115,245,0.25); | |
| 906 | - } | |
| 907 | - .mxcal-demo-overlay a.mxcal-demo-btn:hover { | |
| 908 | - box-shadow: 0 6px 20px rgba(120,115,245,0.35); transform: translateY(-1px); | |
| 909 | - } | |
| 910 | - .mxcal-demo-grid { | |
| 911 | - display: grid; grid-template-columns: repeat(7, 1fr); | |
| 912 | - border: 1px solid #E2E8F0; border-radius: 12px; overflow: hidden; background: #fff; | |
| 913 | - } | |
| 914 | - .mxcal-demo-hdr { | |
| 915 | - background: #F7FAFC; padding: 10px 6px; text-align: center; | |
| 916 | - font-size: 11px; font-weight: 600; color: #A0AEC0; text-transform: uppercase; | |
| 917 | - border-bottom: 1px solid #E2E8F0; | |
| 918 | - } | |
| 919 | - .mxcal-demo-day { | |
| 920 | - min-height: 90px; padding: 8px; border-right: 1px solid #F0F0F5; | |
| 921 | - border-bottom: 1px solid #F0F0F5; display: flex; flex-direction: column; gap: 4px; | |
| 922 | - } | |
| 923 | - .mxcal-demo-day:nth-child(7n) { border-right: none; } | |
| 924 | - .mxcal-demo-num { font-size: 12px; font-weight: 600; color: #A0AEC0; } | |
| 925 | - .mxcal-demo-kw { font-size: 10px; font-weight: 600; color: #2D3748; line-height: 1.2; } | |
| 926 | - .mxcal-demo-stats { display: flex; gap: 4px; margin-top: auto; } | |
| 927 | - .mxcal-demo-vol { font-size: 9px; background: #EDF2F7; padding: 1px 5px; border-radius: 3px; color: #718096; } | |
| 928 | - .mxcal-demo-kd { font-size: 9px; padding: 1px 5px; border-radius: 3px; font-weight: 700; } | |
| 929 | - .mxcal-demo-easy { background: rgba(16,185,129,0.1); color: #059669; } | |
| 930 | - .mxcal-demo-med { background: rgba(245,158,11,0.1); color: #d97706; } | |
| 931 | - .mxcal-demo-hard { background: rgba(239,68,68,0.1); color: #dc2626; } | |
| 932 | - .mxcal-demo-planned { border-left: 3px solid #CBD5E0; } | |
| 933 | - .mxcal-demo-done { border-left: 3px solid #10b981; } | |
| 934 | - .mxcal-demo-empty { background: #FAFAFA; } | |
| 935 | - .mxcal-demo-header { | |
| 936 | - display: flex; justify-content: space-between; align-items: center; | |
| 937 | - margin-bottom: 16px; flex-wrap: wrap; gap: 12px; | |
| 938 | - } | |
| 939 | - .mxcal-demo-header h3 { font-size: 18px; font-weight: 700; color: #1A202C; margin: 0; } | |
| 940 | - .mxcal-demo-month { | |
| 941 | - display: flex; align-items: center; gap: 16px; justify-content: center; margin-bottom: 14px; | |
| 942 | - } | |
| 943 | - .mxcal-demo-month span { font-size: 16px; font-weight: 700; color: #2D3748; } | |
| 944 | - .mxcal-demo-month-btn { | |
| 945 | - background: none; border: 1px solid #E2E8F0; border-radius: 6px; | |
| 946 | - padding: 4px 12px; font-size: 12px; color: #718096; | |
| 947 | - } | |
| 948 | - </style> | |
| 949 | - <div class="mxcal-demo-wrap"> | |
| 950 | - <div class="mxcal-demo-blur"> | |
| 951 | - <div class="mxcal-demo-header"> | |
| 952 | - <h3>Content Calendar</h3> | |
| 953 | - <div style="display:flex;gap:8px;"> | |
| 954 | - <span style="background:#EDF2F7;padding:4px 12px;border-radius:20px;font-size:12px;color:#4A5568;">mxchat.ai</span> | |
| 955 | - <span style="background:linear-gradient(135deg,#fa73e6,#7873f5);padding:4px 12px;border-radius:20px;font-size:11px;color:#fff;font-weight:600;">AI Chatbot Plugin</span> | |
| 956 | - </div> | |
| 957 | - </div> | |
| 958 | - <div class="mxcal-demo-month"> | |
| 959 | - <button class="mxcal-demo-month-btn">←</button> | |
| 960 | - <span><?php echo esc_html(wp_date('F Y')); ?></span> | |
| 961 | - <button class="mxcal-demo-month-btn">→</button> | |
| 962 | - </div> | |
| 963 | - <div class="mxcal-demo-grid"> | |
| 964 | - <?php | |
| 965 | - $days = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); | |
| 966 | - foreach ($days as $d) echo '<div class="mxcal-demo-hdr">' . $d . '</div>'; | |
| 967 | - | |
| 968 | - $demo_posts = array( | |
| 969 | - array('kw' => 'wordpress chatbot plugin', 'vol' => '2,400', 'kd' => 'KD 28', 'cls' => 'easy', 'st' => 'done'), | |
| 970 | - array('kw' => 'ai customer support', 'vol' => '1,900', 'kd' => 'KD 35', 'cls' => 'med', 'st' => 'done'), | |
| 971 | - array('kw' => 'chatbot for ecommerce', 'vol' => '1,600', 'kd' => 'KD 22', 'cls' => 'easy', 'st' => 'done'), | |
| 972 | - array('kw' => 'gpt wordpress integration', 'vol' => '1,100', 'kd' => 'KD 41', 'cls' => 'med', 'st' => 'planned'), | |
| 973 | - array('kw' => 'live chat vs chatbot', 'vol' => '3,200', 'kd' => 'KD 18', 'cls' => 'easy', 'st' => 'planned'), | |
| 974 | - array('kw' => 'ai lead generation', 'vol' => '2,800', 'kd' => 'KD 52', 'cls' => 'med', 'st' => 'planned'), | |
| 975 | - array('kw' => 'reduce support tickets ai', 'vol' => '880', 'kd' => 'KD 15', 'cls' => 'easy', 'st' => 'planned'), | |
| 976 | - array('kw' => 'best chatbot plugins 2026', 'vol' => '4,100', 'kd' => 'KD 62', 'cls' => 'hard', 'st' => 'planned'), | |
| 977 | - array('kw' => 'woocommerce chatbot', 'vol' => '1,400', 'kd' => 'KD 30', 'cls' => 'med', 'st' => 'planned'), | |
| 978 | - array('kw' => 'automate faq wordpress', 'vol' => '720', 'kd' => 'KD 12', 'cls' => 'easy', 'st' => 'planned'), | |
| 979 | - array('kw' => 'claude vs chatgpt wordpress', 'vol' => '2,100', 'kd' => 'KD 38', 'cls' => 'med', 'st' => 'planned'), | |
| 980 | - array('kw' => 'ai content generation', 'vol' => '5,400', 'kd' => 'KD 68', 'cls' => 'hard', 'st' => 'planned'), | |
| 981 | - ); | |
| 982 | - | |
| 983 | - $first_day = (int) wp_date('w', strtotime('first day of this month')); | |
| 984 | - $days_in_month = (int) wp_date('t'); | |
| 985 | - $post_idx = 0; | |
| 986 | - | |
| 987 | - for ($i = 0; $i < $first_day; $i++) echo '<div class="mxcal-demo-day mxcal-demo-empty"></div>'; | |
| 988 | - | |
| 989 | - for ($d = 1; $d <= $days_in_month; $d++) { | |
| 990 | - if ($post_idx < count($demo_posts)) { | |
| 991 | - $p = $demo_posts[$post_idx]; | |
| 992 | - $st_cls = $p['st'] === 'done' ? 'mxcal-demo-done' : 'mxcal-demo-planned'; | |
| 993 | - echo '<div class="mxcal-demo-day ' . $st_cls . '">'; | |
| 994 | - echo '<span class="mxcal-demo-num">' . $d . '</span>'; | |
| 995 | - echo '<span class="mxcal-demo-kw">' . esc_html($p['kw']) . '</span>'; | |
| 996 | - echo '<div class="mxcal-demo-stats">'; | |
| 997 | - echo '<span class="mxcal-demo-vol">' . $p['vol'] . '</span>'; | |
| 998 | - echo '<span class="mxcal-demo-kd mxcal-demo-' . $p['cls'] . '">' . $p['kd'] . '</span>'; | |
| 999 | - echo '</div></div>'; | |
| 1000 | - $post_idx++; | |
| 1001 | - } else { | |
| 1002 | - echo '<div class="mxcal-demo-day mxcal-demo-empty"><span class="mxcal-demo-num">' . $d . '</span></div>'; | |
| 1003 | - } | |
| 1004 | - } | |
| 1005 | - | |
| 1006 | - $total = $first_day + $days_in_month; | |
| 1007 | - $remaining = $total % 7 === 0 ? 0 : 7 - ($total % 7); | |
| 1008 | - for ($i = 0; $i < $remaining; $i++) echo '<div class="mxcal-demo-day mxcal-demo-empty"></div>'; | |
| 1009 | - ?> | |
| 1010 | - </div> | |
| 1011 | - </div> | |
| 1012 | - <div class="mxcal-demo-overlay"> | |
| 1013 | - <span class="mxcal-demo-badge">PRO ADD-ON</span> | |
| 1014 | - <h2>AI Content Calendar</h2> | |
| 1015 | - <p>Import SEO data and let AI generate a 30-day blog plan with targeted keywords, difficulty scores, and automated post scheduling.</p> | |
| 1016 | - <a href="https://mxchat.ai/advanced-content-editor/" target="_blank" class="mxcal-demo-btn">Get Advanced Content Editor</a> | |
| 1017 | - </div> | |
| 1018 | - </div> | |
| 1019 | - <?php endif; ?> | |
| 1020 | - </div> | |
| 1021 | - | |
| 1022 | - <!-- ======================================== | |
| 1023 | - TEMPLATES | |
| 1024 | - ======================================== --> | |
| 1025 | - <div id="content-templates" class="mxch-section"> | |
| 1026 | - <?php if ($pro_template_generator) : ?> | |
| 1027 | - <div id="mxtpl-container"></div> | |
| 1028 | - <?php else : ?> | |
| 1029 | - <style> | |
| 1030 | - .mxtpl-demo-wrap { position: relative; } | |
| 1031 | - .mxtpl-demo-blur { filter: blur(3px); pointer-events: none; user-select: none; opacity: 0.7; padding: 24px; } | |
| 1032 | - .mxtpl-demo-overlay { | |
| 1033 | - position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); | |
| 1034 | - z-index: 10; text-align: center; background: rgba(255,255,255,0.95); | |
| 1035 | - border-radius: 16px; padding: 40px 48px; box-shadow: 0 8px 40px rgba(120,115,245,0.15); | |
| 1036 | - border: 1px solid rgba(120,115,245,0.12); max-width: 460px; width: 90%; | |
| 1037 | - } | |
| 1038 | - .mxtpl-demo-overlay h2 { font-size: 22px; font-weight: 700; margin: 0 0 8px; color: #1A202C; } | |
| 1039 | - .mxtpl-demo-overlay p { font-size: 14px; color: #718096; line-height: 1.6; margin: 0 0 20px; } | |
| 1040 | - .mxtpl-demo-badge { display: inline-block; background: linear-gradient(135deg, #fa73e6, #7873f5); color: #fff; font-size: 11px; font-weight: 700; padding: 4px 12px; border-radius: 20px; margin-bottom: 16px; letter-spacing: 0.5px; } | |
| 1041 | - .mxtpl-demo-btn { display: inline-block; background: linear-gradient(135deg, #fa73e6, #7873f5); color: #fff; font-size: 14px; font-weight: 600; padding: 12px 28px; border-radius: 10px; text-decoration: none; box-shadow: 0 4px 14px rgba(120,115,245,0.25); } | |
| 1042 | - .mxtpl-demo-section { margin-bottom: 20px; } | |
| 1043 | - .mxtpl-demo-label { font-size: 14px; font-weight: 700; color: #2D3748; margin-bottom: 8px; } | |
| 1044 | - .mxtpl-demo-textarea { width: 100%; padding: 12px; border: 2px solid #E2E8F0; border-radius: 8px; font-size: 13px; color: #4A5568; background: #F7FAFC; resize: none; font-family: inherit; } | |
| 1045 | - .mxtpl-demo-pills { display: flex; gap: 6px; margin-bottom: 12px; flex-wrap: wrap; } | |
| 1046 | - .mxtpl-demo-pill { background: rgba(120,115,245,0.08); color: #7873f5; padding: 3px 10px; border-radius: 20px; font-size: 11px; font-weight: 600; font-family: monospace; } | |
| 1047 | - .mxtpl-demo-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; } | |
| 1048 | - .mxtpl-demo-field { display: flex; flex-direction: column; gap: 4px; } | |
| 1049 | - .mxtpl-demo-field label { font-size: 12px; font-weight: 600; color: #718096; } | |
| 1050 | - .mxtpl-demo-field select, .mxtpl-demo-field input { padding: 8px 10px; border: 2px solid #E2E8F0; border-radius: 6px; font-size: 13px; background: #F7FAFC; } | |
| 1051 | - </style> | |
| 1052 | - <div class="mxtpl-demo-wrap"> | |
| 1053 | - <div class="mxtpl-demo-blur"> | |
| 1054 | - <div class="mxtpl-demo-section"> | |
| 1055 | - <div class="mxtpl-demo-label">1. Upload Data</div> | |
| 1056 | - <button style="padding:8px 18px;border:1px solid #E2E8F0;border-radius:8px;background:#F7FAFC;color:#718096;font-size:13px;cursor:default;">Upload CSV</button> | |
| 1057 | - <span style="font-size:12px;color:#10b981;margin-left:8px;">24 rows loaded</span> | |
| 1058 | - </div> | |
| 1059 | - <div class="mxtpl-demo-section"> | |
| 1060 | - <div class="mxtpl-demo-label">2. Content Source</div> | |
| 1061 | - <div class="mxtpl-demo-pills"> | |
| 1062 | - <span class="mxtpl-demo-pill">{city}</span> | |
| 1063 | - <span class="mxtpl-demo-pill">{state}</span> | |
| 1064 | - <span class="mxtpl-demo-pill">{service}</span> | |
| 1065 | - <span class="mxtpl-demo-pill">{phone}</span> | |
| 1066 | - </div> | |
| 1067 | - <textarea class="mxtpl-demo-textarea" rows="3" readonly>Write a {comprehensive|detailed|in-depth} service page about {service} in {city}, {state}. Highlight our expertise and include a call to action with {phone}.</textarea> | |
| 1068 | - </div> | |
| 1069 | - <div class="mxtpl-demo-section"> | |
| 1070 | - <div class="mxtpl-demo-label">3. Settings</div> | |
| 1071 | - <div class="mxtpl-demo-grid"> | |
| 1072 | - <div class="mxtpl-demo-field"><label>Content Type</label><select><option>Page</option></select></div> | |
| 1073 | - <div class="mxtpl-demo-field"><label>Status</label><select><option>Draft</option></select></div> | |
| 1074 | - <div class="mxtpl-demo-field"><label>Slug Template</label><input type="text" value="{service}-in-{city}" readonly /></div> | |
| 1075 | - </div> | |
| 1076 | - </div> | |
| 1077 | - </div> | |
| 1078 | - <div class="mxtpl-demo-overlay"> | |
| 1079 | - <span class="mxtpl-demo-badge">PRO ADD-ON</span> | |
| 1080 | - <h2>Spintax & Template Generator</h2> | |
| 1081 | - <p>Generate bulk pages from CSV data with spintax variations. Create hundreds of unique, AI-written city pages, service pages, and landing pages.</p> | |
| 1082 | - <a href="https://mxchat.ai/advanced-content-editor/" target="_blank" class="mxtpl-demo-btn">Get Advanced Content Editor</a> | |
| 1083 | - </div> | |
| 1084 | - </div> | |
| 1085 | - <?php endif; ?> | |
| 1086 | 749 | </div> |
| 1087 | 750 | |
| 1088 | 751 | </main> |
| 1089 | 752 | </div> |