| @@ -1,12 +1,8 @@ | ||
| 1 | 1 | <?php |
| 2 | + | |
| 2 | 3 | namespace WPDeveloper\BetterDocs\Core; |
| 3 | 4 | |
| 4 | -if ( ! defined( 'ABSPATH' ) ) { | |
| 5 | - exit; | |
| 6 | -} | |
| 7 | - | |
| 8 | - | |
| 9 | 5 | use WPDeveloper\BetterDocs\Utils\Base; |
| 10 | 6 | use WPDeveloper\BetterDocs\Admin\Builder\Rules; |
| 11 | 7 | use WPDeveloper\BetterDocs\Admin\Builder\GlobalFields; |
| 12 | 8 | |
| @@ -24,28 +20,8 @@ | ||
| 24 | 20 | } |
| 25 | 21 | |
| 26 | 22 | betterdocs()->assets->enqueue( 'betterdocs-quick-setup', 'admin/js/quick-setup.js' ); |
| 27 | 23 | betterdocs()->assets->localize( 'betterdocs-quick-setup', 'betterdocsQuickSetup', GlobalFields::normalize( $this->quickbuilder_setup() ) ); |
| 28 | - betterdocs()->assets->localize( | |
| 29 | - 'betterdocs-quick-setup', | |
| 30 | - 'betterdocsSampleDocs', | |
| 31 | - [ | |
| 32 | - 'enabled' => (bool) $this->settings->get( 'enable_ai_sample_docs', true ), | |
| 33 | - 'rest_url' => esc_url_raw( rest_url() ), | |
| 34 | - 'rest_base' => esc_url_raw( get_rest_url( null, '/betterdocs/v1/sample-docs' ) ), | |
| 35 | - 'nonce' => wp_create_nonce( 'wp_rest' ), | |
| 36 | - ] | |
| 37 | - ); | |
| 38 | - betterdocs()->assets->localize( | |
| 39 | - 'betterdocs-quick-setup', | |
| 40 | - 'betterdocsCustomizeLayouts', | |
| 41 | - [ | |
| 42 | - 'rest_url' => esc_url_raw( rest_url() ), | |
| 43 | - 'rest_base' => esc_url_raw( get_rest_url( null, '/betterdocs/v1/customize' ) ), | |
| 44 | - 'nonce' => wp_create_nonce( 'wp_rest' ), | |
| 45 | - 'groups' => $this->customize_layout_groups(), | |
| 46 | - ] | |
| 47 | - ); | |
| 48 | 24 | betterdocs()->assets->enqueue( 'betterdocs-sweetalert', 'vendor/js/sweetalert.min.js', [] ); |
| 49 | 25 | betterdocs()->assets->enqueue( 'betterdocs-icons', 'admin/btd-icon/style.css' ); |
| 50 | 26 | betterdocs()->assets->enqueue( 'betterdocs-setup-wizard-qb-css', 'admin/css/quick-setup.css' ); |
| 51 | 27 | betterdocs()->assets->enqueue( 'betterdocs-setup-wizard-new-css', 'admin/css/setup-wizard.css' ); |
| @@ -66,92 +42,8 @@ | ||
| 66 | 42 | ] |
| 67 | 43 | ); |
| 68 | 44 | } |
| 69 | 45 | |
| 70 | - /** | |
| 71 | - * Layout-picker groups for the interactive "Customize" step. Each group's | |
| 72 | - * `current` reflects the saved theme_mod; only the free layouts are offered. | |
| 73 | - * | |
| 74 | - * @return array | |
| 75 | - */ | |
| 76 | - private function customize_layout_groups() { | |
| 77 | - $build = function ( $key, $default, $dir, $title, $hint, $cols, array $options ) { | |
| 78 | - $out = []; | |
| 79 | - foreach ( $options as $value => $label ) { | |
| 80 | - $out[] = [ | |
| 81 | - 'value' => $value, | |
| 82 | - 'label' => $label, | |
| 83 | - 'image' => betterdocs()->assets->icon( "customizer/{$dir}/{$value}.png", true ), | |
| 84 | - ]; | |
| 85 | - } | |
| 86 | - return [ | |
| 87 | - 'title' => $title, | |
| 88 | - 'hint' => $hint, | |
| 89 | - 'cols' => $cols, | |
| 90 | - 'key' => $key, | |
| 91 | - 'current' => get_theme_mod( $key, $default ), | |
| 92 | - 'options' => $out, | |
| 93 | - ]; | |
| 94 | - }; | |
| 95 | - | |
| 96 | - return [ | |
| 97 | - 'docs' => $build( | |
| 98 | - 'betterdocs_docs_layout_select', | |
| 99 | - 'layout-7', | |
| 100 | - 'docs-page', | |
| 101 | - __( 'Docs Page', 'betterdocs' ), | |
| 102 | - __( 'The main knowledge-base landing page.', 'betterdocs' ), | |
| 103 | - 4, | |
| 104 | - [ | |
| 105 | - 'layout-7' => __( 'Sleek', 'betterdocs' ), | |
| 106 | - 'layout-1' => __( 'Grid', 'betterdocs' ), | |
| 107 | - 'layout-8' => __( 'Slate', 'betterdocs' ), | |
| 108 | - 'layout-5' => __( 'Classic', 'betterdocs' ), | |
| 109 | - ] | |
| 110 | - ), | |
| 111 | - 'category' => $build( | |
| 112 | - 'betterdocs_archive_layout_select', | |
| 113 | - 'layout-7', | |
| 114 | - 'archive', | |
| 115 | - __( 'Category Page', 'betterdocs' ), | |
| 116 | - __( "Where a single category's articles live.", 'betterdocs' ), | |
| 117 | - 4, | |
| 118 | - [ | |
| 119 | - 'layout-7' => __( 'Sleek', 'betterdocs' ), | |
| 120 | - 'layout-1' => __( 'Classic', 'betterdocs' ), | |
| 121 | - 'layout-8' => __( 'Slate', 'betterdocs' ), | |
| 122 | - 'layout-4' => __( 'Abstract', 'betterdocs' ), | |
| 123 | - ] | |
| 124 | - ), | |
| 125 | - 'single' => $build( | |
| 126 | - 'betterdocs_single_layout_select', | |
| 127 | - 'layout-8', | |
| 128 | - 'single', | |
| 129 | - __( 'Single Doc', 'betterdocs' ), | |
| 130 | - __( 'An individual article layout.', 'betterdocs' ), | |
| 131 | - 4, | |
| 132 | - [ | |
| 133 | - 'layout-8' => __( 'Essence', 'betterdocs' ), | |
| 134 | - 'layout-9' => __( 'Rustic', 'betterdocs' ), | |
| 135 | - 'layout-10' => __( 'Slate', 'betterdocs' ), | |
| 136 | - 'layout-1' => __( 'Classic', 'betterdocs' ), | |
| 137 | - ] | |
| 138 | - ), | |
| 139 | - 'search' => $build( | |
| 140 | - 'betterdocs_search_layout_select', | |
| 141 | - 'layout-2', | |
| 142 | - 'search', | |
| 143 | - __( 'Search', 'betterdocs' ), | |
| 144 | - __( 'How visitors search your docs.', 'betterdocs' ), | |
| 145 | - 4, | |
| 146 | - [ | |
| 147 | - 'layout-2' => __( 'Modal', 'betterdocs' ), | |
| 148 | - 'layout-1' => __( 'Classic', 'betterdocs' ), | |
| 149 | - ] | |
| 150 | - ), | |
| 151 | - ]; | |
| 152 | - } | |
| 153 | - | |
| 154 | 46 | public function normalize_options( $options ) { |
| 155 | 47 | return GlobalFields::normalize_fields( $options ); |
| 156 | 48 | } |
| 157 | 49 | |
| @@ -197,19 +89,19 @@ | ||
| 197 | 89 | 'active' => 'getting-started', |
| 198 | 90 | 'sidebar' => false, |
| 199 | 91 | 'title' => false, |
| 200 | 92 | 'tab_number' => true, |
| 201 | - 'clickable' => true, | |
| 93 | + 'clickable' => false, | |
| 202 | 94 | 'completionTrack' => true, |
| 203 | 95 | 'content_heading' => [], |
| 204 | 96 | 'step' => [ |
| 205 | 97 | 'show' => true, |
| 206 | 98 | 'buttons' => [ |
| 207 | - 'skip' => __( 'Skip for now', 'betterdocs' ), | |
| 99 | + 'skip' => __( 'Skip This Step', 'betterdocs' ), | |
| 208 | 100 | 'prev' => [ |
| 209 | - 'name' => __( 'Back', 'betterdocs' ), | |
| 101 | + 'name' => __( 'Previous', 'betterdocs' ), | |
| 210 | 102 | 'type' => 'customize', |
| 211 | - 'customName' => __( 'Back', 'betterdocs' ), | |
| 103 | + 'customName' => __( 'Previous', 'betterdocs' ), | |
| 212 | 104 | 'condition' => 'getting-started', |
| 213 | 105 | ], |
| 214 | 106 | 'start' => [ |
| 215 | 107 | 'name' => 'Start', |
| @@ -227,23 +119,18 @@ | ||
| 227 | 119 | ], |
| 228 | 120 | 'next' => [ |
| 229 | 121 | 'name' => 'Next', |
| 230 | 122 | 'type' => 'customize', |
| 231 | - 'customName' => __( 'Save & Continue', 'betterdocs' ), | |
| 123 | + 'customName' => __( 'Next', 'betterdocs' ), | |
| 232 | 124 | 'condition' => 'getting-started', |
| 125 | + ], | |
| 126 | + 'quick-builder-publish' => [ | |
| 127 | + 'name' => 'quick-builder-publish', | |
| 128 | + 'type' => 'action', | |
| 129 | + 'action' => 'btd_quick_build_launch' | |
| 233 | 130 | ] |
| 234 | 131 | ], |
| 235 | - // Hide the footer step bar on the first step (its CTA is in | |
| 236 | - // content via showSteps) and on the last step (Finalize's | |
| 237 | - // Finish CTA is in content too, so a lone Back button looked | |
| 238 | - // off). Back-navigation there is still available via the tabs. | |
| 239 | - 'rules' => Rules::logicalRule( | |
| 240 | - [ | |
| 241 | - Rules::is( 'config.active', 'getting-started', true ), | |
| 242 | - Rules::is( 'config.active', 'finalize', true ), | |
| 243 | - ], | |
| 244 | - 'and' | |
| 245 | - ) | |
| 132 | + 'rules' => Rules::is( 'config.active', 'getting-started', true ) | |
| 246 | 133 | ] |
| 247 | 134 | ], |
| 248 | 135 | 'submit' => [ |
| 249 | 136 | 'show' => false |
| @@ -264,9 +151,9 @@ | ||
| 264 | 151 | 'type' => 'header', |
| 265 | 152 | 'title' => __( 'Quick Launch', 'betterdocs' ), |
| 266 | 153 | 'direction' => 'column', |
| 267 | 154 | 'description' => __( 'Start your Knowledge Base configuration process with an easy-to-follow setup wizard.', 'betterdocs' ), |
| 268 | - 'icon' => '<svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"></path><path d="M12 15l-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"></path><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"></path><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"></path></svg>', | |
| 155 | + 'icon' => '<img src="' . betterdocs()->assets->icon( 'icons/rocket.svg', true ) . '"/>', | |
| 269 | 156 | 'priority' => 1 |
| 270 | 157 | ], |
| 271 | 158 | 'betterdocs-quick-setup-start' => [ |
| 272 | 159 | 'name' => 'betterdocs-quick-setup-start', |
| @@ -278,9 +165,9 @@ | ||
| 278 | 165 | 'name' => 'betterdocs-quick-setup-start-collapse', |
| 279 | 166 | 'type' => 'collapse', |
| 280 | 167 | 'priority' => 2, |
| 281 | 168 | 'label' => __( 'By clicking this button, you are allowing this app to collect your information.', 'betterdocs' ), |
| 282 | - 'collapse_title' => __( 'What do we collect?', 'betterdocs' ), | |
| 169 | + 'collapse_title' => __( 'What We Collect?', 'betterdocs' ), | |
| 283 | 170 | 'collapse_message' => __( 'We collect non-sensitive diagnostic data and plugin usage information. Your site URL, WordPress & PHP version, plugins & themes and email address to send you the discount coupon. This data lets us make sure this plugin always stays compatible with the most popular plugins and themes. No spam, we promise.', 'betterdocs' ) |
| 284 | 171 | ] |
| 285 | 172 | ] |
| 286 | 173 | ] |
| @@ -301,9 +188,9 @@ | ||
| 301 | 188 | 'type' => 'header', |
| 302 | 189 | 'title' => __( 'Page Setup Magic', 'betterdocs' ), |
| 303 | 190 | 'direction' => 'row', |
| 304 | 191 | 'description' => __( 'Configure the structure and layout of your documentation pages to match your preferences for an organized Knowledge Base.', 'betterdocs' ), |
| 305 | - 'icon' => '<svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M15 8a1 1 0 0 1-1-1V2a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8z"></path><path d="M20 8v12a2 2 0 0 1-2 2h-4.182"></path><path d="m3.305 19.53.923-.382"></path><path d="M4 10.592V4a2 2 0 0 1 2-2h8"></path><path d="m4.228 16.852-.924-.383"></path><path d="m5.852 15.228-.383-.923"></path><path d="m5.852 20.772-.383.924"></path><path d="m8.148 15.228.383-.923"></path><path d="m8.53 21.696-.382-.924"></path><path d="m9.773 16.852.922-.383"></path><path d="m9.773 19.148.922.383"></path><circle cx="7" cy="18" r="3"></circle></svg>', | |
| 192 | + 'icon' => '<img src="' . betterdocs()->assets->icon( 'icons/content-setting.svg', true ) . '"/>', | |
| 306 | 193 | 'priority' => 1 |
| 307 | 194 | ], |
| 308 | 195 | 'betterdocs-quick-setup-fields' => [ |
| 309 | 196 | 'name' => 'betterdocs-quick-setup-fields', |
| @@ -316,13 +203,9 @@ | ||
| 316 | 203 | 'label' => __( 'Built-in Documentation Page', 'betterdocs' ), |
| 317 | 204 | 'enable_disable_text_active' => true, |
| 318 | 205 | 'default' => 1, |
| 319 | 206 | 'priority' => 1, |
| 320 | - 'label_subtitle' => sprintf( | |
| 321 | - /* translators: %s: example knowledge base URL */ | |
| 322 | - __( 'If you disable root slug for KB Archives, your individual knowledge base URL will be like this: %s', 'betterdocs' ), | |
| 323 | - 'https://example.com/knowledgebase-1' | |
| 324 | - ) | |
| 207 | + 'label_subtitle' => __( 'If you disable root slug for KB Archives, your individual knowledge base URL will be like this: https://example.com/knowledgebase-1', 'betterdocs' ) | |
| 325 | 208 | ], |
| 326 | 209 | 'docs_page' => [ |
| 327 | 210 | 'name' => 'docs_page', |
| 328 | 211 | 'label' => __( 'Docs Page', 'betterdocs' ), |
| @@ -442,14 +325,17 @@ | ||
| 442 | 325 | 'type' => 'header', |
| 443 | 326 | 'title' => __( 'Content Crafting', 'betterdocs' ), |
| 444 | 327 | 'direction' => 'row', |
| 445 | 328 | 'description' => __( 'Craft categories & articles for your Knowledge Base to efficiently organize and manage your repository with respective categories.', 'betterdocs' ), |
| 446 | - 'icon' => '<svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4a1 1 0 0 1 1-1h9l5 5v3"></path><path d="M4 4v15a1 1 0 0 0 1 1h6"></path><path d="M14 3v5h5"></path><path d="M18.5 13.5a2.1 2.1 0 0 1 3 3L16 22l-4 1 1-4z"></path></svg>', | |
| 329 | + 'icon' => '<img src="' . betterdocs()->assets->icon( 'icons/create-content.svg', true ) . '"/>', | |
| 447 | 330 | 'priority' => 1 |
| 448 | 331 | ], |
| 449 | - 'create_content_generator' => [ | |
| 450 | - 'name' => 'create_content_generator', | |
| 451 | - 'type' => 'sample_docs_generator', | |
| 332 | + 'create_content_video' => [ | |
| 333 | + 'name' => 'create_content_video', | |
| 334 | + 'type' => 'image', | |
| 335 | + 'media' => [ | |
| 336 | + 'url' => betterdocs()->assets->icon( 'setup-wizard/DocCreate.gif', true ) | |
| 337 | + ], | |
| 452 | 338 | 'priority' => 2 |
| 453 | 339 | ] |
| 454 | 340 | ] |
| 455 | 341 | ] |
| @@ -466,15 +352,18 @@ | ||
| 466 | 352 | 'name' => 'customize_header', |
| 467 | 353 | 'type' => 'header', |
| 468 | 354 | 'title' => __( 'Style Your Documentation', 'betterdocs' ), |
| 469 | 355 | 'direction' => 'row', |
| 470 | - 'description' => __( 'Pick a layout for your docs page, categories, single articles, and search — applied when you finish setup. Fine-tune the details anytime in the Customizer.', 'betterdocs' ), | |
| 471 | - 'icon' => '<svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="16" rx="2.5"></rect><path d="M3 9h18M9 9v11"></path></svg>', | |
| 356 | + 'description' => __( 'Personalize the appearance of your documentation page, articles, and archive pages using the power of this Customizer.', 'betterdocs' ), | |
| 357 | + 'icon' => '<img src="' . betterdocs()->assets->icon( 'icons/customize.svg', true ) . '"/>', | |
| 472 | 358 | 'priority' => 1 |
| 473 | 359 | ], |
| 474 | - 'customize_layouts' => [ | |
| 475 | - 'name' => 'customize_layouts', | |
| 476 | - 'type' => 'layout_customizer', | |
| 360 | + 'customize_video' => [ | |
| 361 | + 'name' => 'customize_video', | |
| 362 | + 'type' => 'image', | |
| 363 | + 'media' => [ | |
| 364 | + 'url' => betterdocs()->assets->icon( 'setup-wizard/Customizer.gif', true ) | |
| 365 | + ], | |
| 477 | 366 | 'priority' => 2 |
| 478 | 367 | ] |
| 479 | 368 | ] |
| 480 | 369 | ] |
| @@ -489,17 +378,20 @@ | ||
| 489 | 378 | 'fields' => [ |
| 490 | 379 | 'finalize_header' => [ |
| 491 | 380 | 'name' => 'finalize_header', |
| 492 | 381 | 'type' => 'header', |
| 493 | - 'title' => __( 'One last step', 'betterdocs' ), | |
| 382 | + 'title' => __( 'Congratulations!', 'betterdocs' ), | |
| 494 | 383 | 'direction' => 'row', |
| 495 | - 'description' => __( 'Review your setup below. When you\'re ready, finish to save your settings and apply BetterDocs across your site — you can change anything later in Settings.', 'betterdocs' ), | |
| 496 | - 'icon' => '<svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="m3 17 2 2 4-4"></path><path d="m3 7 2 2 4-4"></path><path d="M13 6h8"></path><path d="M13 12h8"></path><path d="M13 18h8"></path></svg>', | |
| 384 | + 'description' => __( 'Your documentation page is now ready for use. Enrich it with more articles to ensure proper categorization and valuable resources.', 'betterdocs' ), | |
| 385 | + 'icon' => '<img src="' . betterdocs()->assets->icon( 'icons/thumbs-up.svg', true ) . '"/>', | |
| 497 | 386 | 'priority' => 1 |
| 498 | 387 | ], |
| 499 | - 'finalize_finish' => [ | |
| 500 | - 'name' => 'finalize_finish', | |
| 501 | - 'type' => 'finish_panel', | |
| 388 | + 'finalize_video' => [ | |
| 389 | + 'name' => 'finalize_video', | |
| 390 | + 'type' => 'image', | |
| 391 | + 'media' => [ | |
| 392 | + 'url' => betterdocs()->assets->icon( 'setup-wizard/ThankYou.gif', true ) | |
| 393 | + ], | |
| 502 | 394 | 'priority' => 2 |
| 503 | 395 | ] |
| 504 | 396 | ] |
| 505 | 397 | ] |