| @@ -1,354 +1,824 @@ | ||
| 1 | 1 | <?php |
| 2 | +namespace ULTP; | |
| 2 | 3 | |
| 3 | -/** | |
| 4 | - * Options Action. | |
| 5 | - * | |
| 6 | - * @package ULTP\Notice | |
| 7 | - * @since v.1.0.0 | |
| 8 | - */ | |
| 4 | +defined('ABSPATH') || exit; | |
| 9 | 5 | |
| 10 | -namespace ULTP; | |
| 6 | +class Options{ | |
| 7 | + public function __construct() { | |
| 8 | + add_action( 'admin_menu', array( $this, 'menu_page_callback' ) ); | |
| 9 | + add_action( 'admin_init', array( $this, 'register_settings' ) ); | |
| 10 | + } | |
| 11 | 11 | |
| 12 | -use ULTP\Includes\Durbin\Xpo; | |
| 12 | + public static function menu_page_callback() { | |
| 13 | + add_menu_page( | |
| 14 | + esc_html__( 'Post Blocks', 'ultimate-post' ), | |
| 15 | + esc_html__( 'Post Blocks', 'ultimate-post' ), | |
| 16 | + 'manage_options', | |
| 17 | + 'ultp-settings', | |
| 18 | + array( self::class, 'create_admin_page' ), | |
| 19 | + ULTP_URL.'assets/img/menu-panel.svg' | |
| 20 | + ); | |
| 21 | + } | |
| 13 | 22 | |
| 14 | -defined( 'ABSPATH' ) || exit; | |
| 23 | + /** | |
| 24 | + * Register a setting and its sanitization callback. | |
| 25 | + */ | |
| 26 | + public static function register_settings() { | |
| 27 | + register_setting( 'ultp_options', 'ultp_options', array( self::class, 'sanitize' ) ); | |
| 28 | + } | |
| 15 | 29 | |
| 16 | -/** | |
| 17 | - * Options class. | |
| 18 | - * | |
| 19 | - * Handles plugin options and settings for Ultimate Post. | |
| 20 | - * | |
| 21 | - * @package ULTP\Options | |
| 22 | - * @since 4.0.0 | |
| 23 | - */ | |
| 24 | -class Options { | |
| 30 | + /** | |
| 31 | + * Sanitization callback | |
| 32 | + */ | |
| 33 | + public static function sanitize( $options ) { | |
| 34 | + if ($options) { | |
| 35 | + $settings = self::get_option_settings(); | |
| 36 | + foreach ($settings as $key => $setting) { | |
| 37 | + if (!empty($key)) { | |
| 38 | + $options[$key] = isset($options[$key]) ? sanitize_text_field($options[$key]) : ''; | |
| 39 | + } | |
| 40 | + } | |
| 41 | + } | |
| 42 | + return $options; | |
| 43 | + } | |
| 25 | 44 | |
| 26 | - /** | |
| 27 | - * Setup class. | |
| 28 | - * | |
| 29 | - * @since v.1.0.0 | |
| 30 | - */ | |
| 31 | - public function __construct() { | |
| 32 | - add_action( 'admin_init', array( $this, 'handle_external_redirects' ) ); | |
| 33 | - add_action( 'admin_menu', array( $this, 'menu_page_callback' ) ); | |
| 34 | - add_action( 'admin_footer', array( $this, 'sync_addon_submenu_visibility' ) ); | |
| 35 | - add_action( 'in_admin_header', array( $this, 'remove_all_notices' ) ); | |
| 36 | - add_filter( 'plugin_row_meta', array( $this, 'plugin_settings_meta' ), 10, 2 ); | |
| 37 | - add_filter( 'plugin_action_links_' . ULTP_BASE, array( $this, 'plugin_action_links_callback' ) ); | |
| 38 | - } | |
| 45 | + public static function get_option_settings(){ | |
| 46 | + return array( | |
| 47 | + 'css_save_as' => array( | |
| 48 | + 'type' => 'select', | |
| 49 | + 'label' => __('CSS Add Via', 'ultimate-post'), | |
| 50 | + 'options' => array( | |
| 51 | + 'wp_head' => __( 'Header - (Internal)','ultimate-post' ), | |
| 52 | + 'filesystem' => __( 'File System - (External)','ultimate-post' ), | |
| 53 | + ), | |
| 54 | + 'default' => 'wp_head', | |
| 55 | + 'desc' => __('Select where you want to save CSS.', 'ultimate-post') | |
| 56 | + ), | |
| 57 | + 'preloader_style' => array( | |
| 58 | + 'type' => 'select', | |
| 59 | + 'label' => __('Preloader Style', 'ultimate-post'), | |
| 60 | + 'options' => array( | |
| 61 | + 'style1' => __( 'Preloader Style 1','ultimate-post' ), | |
| 62 | + 'style2' => __( 'Preloader Style 2','ultimate-post' ), | |
| 63 | + ), | |
| 64 | + 'default' => 'style1', | |
| 65 | + 'desc' => __('Select Preloader Style.', 'ultimate-post') | |
| 66 | + ), | |
| 67 | + 'container_width' => array( | |
| 68 | + 'type' => 'number', | |
| 69 | + 'label' => __('Container Width', 'ultimate-post'), | |
| 70 | + 'default' => '1140', | |
| 71 | + 'desc' => __('Change Container Width.', 'ultimate-post') | |
| 72 | + ), | |
| 73 | + 'hide_import_btn' => array( | |
| 74 | + 'type' => 'switch', | |
| 75 | + 'label' => __('Hide Import Button', 'ultimate-post'), | |
| 76 | + 'default' => '', | |
| 77 | + 'desc' => __('Hide Import Layout Button from the Gutenberg Editor.', 'ultimate-post') | |
| 78 | + ), | |
| 79 | + ); | |
| 80 | + } | |
| 39 | 81 | |
| 82 | + public static function get_recommended_themes(){ | |
| 83 | + $recommended_themes = array( | |
| 84 | + 'coblog' => array( | |
| 85 | + 'name' => 'Coblog', | |
| 86 | + 'slug' => 'coblog', | |
| 87 | + 'url' => 'https://wordpress.org/themes/coblog', | |
| 88 | + 'logo' => ULTP_URL.'assets/img/WordPress.png' | |
| 89 | + ), | |
| 90 | + 'blocksy' => array( | |
| 91 | + 'name' => 'Blocksy', | |
| 92 | + 'slug' => 'blocksy', | |
| 93 | + 'url' => 'https://wordpress.org/themes/blocksy/', | |
| 94 | + 'logo' => ULTP_URL.'assets/img/WordPress.png' | |
| 95 | + ), | |
| 96 | + ); | |
| 40 | 97 | |
| 41 | - /** | |
| 42 | - * Adds extra links to the plugin row meta on the plugins page. | |
| 43 | - * | |
| 44 | - * @param array $links Existing plugin meta links. | |
| 45 | - * @param string $file Plugin file path. | |
| 46 | - * @return array Modified plugin meta links. | |
| 47 | - */ | |
| 48 | - public function plugin_settings_meta( $links, $file ) { | |
| 49 | - if ( strpos( $file, 'ultimate-post.php' ) !== false ) { | |
| 50 | - $new_links = array( | |
| 51 | - 'ultp_docs' => '<a href="https://wpxpo.com/docs/" target="_blank">' . esc_html__( 'Docs', 'ultimate-post' ) . '</a>', | |
| 52 | - 'ultp_tutorial' => '<a href="https://www.youtube.com/watch?v=JZxIflYKOuM&list=PLPidnGLSR4qcAwVwIjMo1OVaqXqjUp_s4" target="_blank">' . esc_html__( 'Tutorials', 'ultimate-post' ) . '</a>', | |
| 53 | - 'ultp_support' => '<a href="' . esc_url( | |
| 54 | - Xpo::generate_utm_link( | |
| 55 | - array( | |
| 56 | - 'url' => 'https://www.wpxpo.com/contact/', | |
| 57 | - 'utmKey' => 'plugin_dir_support', | |
| 58 | - ) | |
| 59 | - ) | |
| 60 | - ) . '" target="_blank">' . esc_html__( 'Support', 'ultimate-post' ) . '</a>', | |
| 61 | - ); | |
| 62 | - $links = array_merge( $links, $new_links ); | |
| 98 | + $html = ''; | |
| 99 | + foreach ($recommended_themes as $key => $value) { | |
| 100 | + $html .= '<div class="ultp-recommended-theme">'; | |
| 101 | + $html .= '<div class="ultp-recommended-image">'; | |
| 102 | + $html .= '<img src="'.$value['logo'].'" alt="'.$value['name'].'" />'; | |
| 103 | + $html .= '</div>'; | |
| 104 | + $html .= '<div class="ultp-recommended-name"><a target="_blank" href="'.$value['url'].'">'.$value['name'].'</a></div>'; | |
| 105 | + $html .= '<div class="ultp-recommended-button">'; | |
| 106 | + $html .= '<a target="_blank" href="'.$value['url'].'" class="button button-success">'.__('Download Now').'</a>'; | |
| 107 | + $html .= '</div>'; | |
| 108 | + $html .= '</div>'; | |
| 109 | + } | |
| 110 | + echo $html; | |
| 111 | + } | |
| 112 | + | |
| 113 | + public static function get_changelog_data() { | |
| 114 | + $html = ''; | |
| 115 | + $resource_data = file_get_contents(ULTP_PATH.'/readme.txt', "r"); | |
| 116 | + $data = array(); | |
| 117 | + if ($resource_data) { | |
| 118 | + $resource_data = explode('== Changelog ==', $resource_data); | |
| 119 | + if (isset($resource_data[1])) { | |
| 120 | + $resource_data = $resource_data[1]; | |
| 121 | + $resource_data = explode("\n", $resource_data); | |
| 122 | + $inner = false; | |
| 123 | + $count = -1; | |
| 124 | + | |
| 125 | + foreach ($resource_data as $element) { | |
| 126 | + if ($element){ | |
| 127 | + if (substr_count($element, '=') > 1) { | |
| 128 | + $count++; | |
| 129 | + $temp = trim(str_replace('=', '', $element)); | |
| 130 | + if (strpos($temp, '-') !== false) { | |
| 131 | + $temp = explode('-', $temp); | |
| 132 | + $data[$count]['date'] = trim($temp[1]); | |
| 133 | + $data[$count]['version'] = trim($temp[0]); | |
| 134 | + } | |
| 135 | + } | |
| 136 | + if (strpos($element, '* New:') !== false) { | |
| 137 | + $data[$count]['new'][] = trim(str_replace('* New:', '', $element)); | |
| 138 | + } | |
| 139 | + if (strpos($element, '* Fix:') !== false) { | |
| 140 | + $data[$count]['fix'][] = trim(str_replace('* Fix:', '', $element)); | |
| 141 | + } | |
| 142 | + if (strpos($element, '* Update:') !== false) { | |
| 143 | + $data[$count]['update'][] = trim(str_replace('* Update:', '', $element)); | |
| 144 | + } | |
| 145 | + } | |
| 146 | + } | |
| 147 | + } | |
| 148 | + } | |
| 149 | + if (!empty($data)) { | |
| 150 | + foreach ($data as $k => $inner_data) { | |
| 151 | + $html .= '<div class="ultp-changelog-wrap">'; | |
| 152 | + foreach ($inner_data as $key => $changelog) { | |
| 153 | + if ($key == 'date') { | |
| 154 | + $html .= '<div class="ultp-changelog-date">'.__('Released on ', 'ultimate-post').' '.$changelog.'</div>'; | |
| 155 | + } elseif($key == 'version') { | |
| 156 | + $html .= '<div class="ultp-changelog-version">'.__('Version', 'ultimate-post').' : '.$changelog.'</div>'; | |
| 157 | + } else { | |
| 158 | + foreach ($changelog as $keyword => $val) { | |
| 159 | + $html .= '<div class="ultp-changelog-title"><span class="changelog-'.$key.'">'.$key.'</span>'.$val.'</div>'; | |
| 160 | + } | |
| 161 | + } | |
| 162 | + } | |
| 163 | + $html .= '</div>'; | |
| 164 | + } | |
| 165 | + } | |
| 166 | + echo $html; | |
| 167 | + } | |
| 168 | + | |
| 169 | + public static function get_settings_data() { | |
| 170 | + $html = ''; | |
| 171 | + $option_data = get_option( 'ultp_options' ); | |
| 172 | + if(!isset($option_data['css_save_as'])){ | |
| 173 | + $option_data = ultimate_post()->init_set_data(); | |
| 63 | 174 | } |
| 64 | - return $links; | |
| 65 | - } | |
| 175 | + $data = self::get_option_settings(); | |
| 176 | + $html .= '<div class="ultp-settings">'; | |
| 177 | + $html .= '<input type="hidden" name="option_page" value="ultp_options" />'; | |
| 178 | + $html .= '<input type="hidden" name="action" value="update" />'; | |
| 179 | + $html .= wp_nonce_field( "ultp_options-options" ); | |
| 180 | + foreach ($data as $key => $value) { | |
| 181 | + $html .= '<div class="ultp-settings-wrap">'; | |
| 182 | + $html .= '<div class="ultp-settings-label">'.$value['label'].'</div>'; | |
| 183 | + $html .= '<div class="ultp-settings-field-wrap">'; | |
| 184 | + switch ($value['type']) { | |
| 66 | 185 | |
| 67 | - /** | |
| 68 | - * Adds quick action links below the plugin name. | |
| 69 | - * | |
| 70 | - * @param array $links Default plugin action links. | |
| 71 | - * @return array Modified plugin action links. | |
| 72 | - */ | |
| 73 | - public function plugin_action_links_callback( $links ) { | |
| 74 | - $offer_config = array( | |
| 75 | - array( | |
| 76 | - 'start' => '2026-07-06 00:00 Asia/Dhaka', | |
| 77 | - 'end' => '2026-08-01 23:59 Asia/Dhaka', | |
| 78 | - 'text' => __( | |
| 79 | - 'Summer Sale - Up to 50% OFF', | |
| 80 | - 'ultimate-post' | |
| 81 | - ), | |
| 82 | - 'utmKey' => 'summer_sale_meta', | |
| 83 | - ), | |
| 84 | - array( | |
| 85 | - 'start' => '2026-08-02 00:00 Asia/Dhaka', | |
| 86 | - 'end' => '2026-08-16 23:59 Asia/Dhaka', | |
| 87 | - 'text' => __( | |
| 88 | - 'Summer Sale - Up to 50% OFF', | |
| 89 | - 'ultimate-post' | |
| 90 | - ), | |
| 91 | - 'utmKey' => 'summer_sale_meta', | |
| 92 | - ), | |
| 93 | - ); | |
| 186 | + case 'select': | |
| 187 | + $html .= '<div class="ultp-settings-field">'; | |
| 188 | + $val = isset($option_data[$key]) ? $option_data[$key] : (isset($value['default']) ? $value['default'] : ''); | |
| 189 | + $html .= '<select name="ultp_options['.$key.']">'; | |
| 190 | + foreach ( $value['options'] as $id => $label ) { | |
| 191 | + $html .= '<option value="'.$id.'" '.( $val == $id ? ' selected="selected"':'').'>'; | |
| 192 | + $html .= strip_tags( $label ); | |
| 193 | + $html .= '</option>'; | |
| 194 | + } | |
| 195 | + $html .= '</select>'; | |
| 196 | + $html .= '<p class="description">'.$value['desc'].'</p>'; | |
| 197 | + $html .= '</div>'; | |
| 198 | + break; | |
| 94 | 199 | |
| 95 | - $setting_link = array( | |
| 96 | - 'ultp_options' => '<a href="' . esc_url( admin_url( 'admin.php?page=ultp-settings#startersites' ) ) . '">' . esc_html__( 'Starter Sites', 'ultimate-post' ) . '</a>', | |
| 97 | - ); | |
| 200 | + case 'color': | |
| 201 | + $html .= '<div class="ultp-settings-field">'; | |
| 202 | + $val = isset($option_data[$key]) ? $option_data[$key] : (isset($value['default']) ? $value['default'] : ''); | |
| 203 | + $html .= '<input name="ultp_options['.$key.']" value="'.$val.'" class="ultp-color-picker" />'; | |
| 204 | + $html .= '<p class="description">'.$value['desc'].'</p>'; | |
| 205 | + $html .= '</div>'; | |
| 206 | + break; | |
| 98 | 207 | |
| 99 | - $upgrade_link = array(); | |
| 208 | + case 'number': | |
| 209 | + $html .= '<div class="ultp-settings-field">'; | |
| 210 | + $val = isset($option_data[$key]) ? $option_data[$key] : (isset($value['default']) ? $value['default'] : ''); | |
| 211 | + $html .= '<input type="number" name="ultp_options['.$key.']" value="'.$val.'"/>'; | |
| 212 | + $html .= '<p class="description">'.$value['desc'].'</p>'; | |
| 213 | + $html .= '</div>'; | |
| 214 | + break; | |
| 100 | 215 | |
| 101 | - // Free user or expired license user. | |
| 102 | - if ( ! defined( 'ULTP_PRO_VER' ) || Xpo::is_lc_expired() ) { | |
| 216 | + case 'switch': | |
| 217 | + $html .= '<div class="ultp-settings-field">'; | |
| 218 | + $val = isset($option_data[$key]) ? $option_data[$key] : (isset($value['default']) ? $value['default'] : ''); | |
| 219 | + $html .= '<input type="checkbox" value="yes" name="ultp_options['.$key.']" '.($val == 'yes' ? 'checked' : '').' />'; | |
| 220 | + $html .= '<p class="description">'.$value['desc'].'</p>'; | |
| 221 | + $html .= '</div>'; | |
| 222 | + break; | |
| 103 | 223 | |
| 104 | - $license_key = Xpo::get_lc_key() ?? ''; | |
| 224 | + default: | |
| 225 | + # code... | |
| 226 | + break; | |
| 105 | 227 | |
| 106 | - if ( Xpo::is_lc_expired() ) { | |
| 107 | - $text = esc_html__( 'Renew License', 'ultimate-post' ); | |
| 108 | - $url = 'https://account.wpxpo.com/checkout/?edd_license_key=' . $license_key; | |
| 109 | - } else { | |
| 228 | + } | |
| 229 | + $html .= '</div>'; | |
| 230 | + $html .= '</div>'; | |
| 231 | + } | |
| 232 | + $html .= '<div class="ultp-settings-wrap ultp-submit-button">'; | |
| 233 | + $html .= '<div></div>'.get_submit_button(); | |
| 234 | + $html .= '</div>'; | |
| 110 | 235 | |
| 111 | - $text = esc_html__( 'Upgrade to Pro', 'ultimate-post' ); | |
| 112 | - $url = Xpo::generate_utm_link(array( | |
| 113 | - 'utmKey' => 'sub_menu', | |
| 114 | - )); | |
| 236 | + $html .= '</div>'; | |
| 115 | 237 | |
| 116 | - foreach ( $offer_config as $offer ) { | |
| 117 | - $current_time = gmdate( 'U' ); | |
| 118 | - $notice_start = gmdate( 'U', strtotime( $offer['start'] ) ); | |
| 119 | - $notice_end = gmdate( 'U', strtotime( $offer['end'] ) ); | |
| 120 | - if ( $current_time >= $notice_start && $current_time <= $notice_end ) { | |
| 121 | - $url = Xpo::generate_utm_link( | |
| 122 | - array( | |
| 123 | - 'utmKey' => $offer['utmKey'], | |
| 124 | - ) | |
| 125 | - ); | |
| 126 | - $text = $offer['text']; | |
| 127 | - break; | |
| 128 | - } | |
| 129 | - } | |
| 130 | - } | |
| 238 | + | |
| 239 | + | |
| 240 | + echo '<form method="post" action="options.php">'.$html.'</form>'; | |
| 241 | + } | |
| 131 | 242 | |
| 132 | - $upgrade_link['ultp_pro'] = '<a style="color: #0062ff; font-weight: bold;" target="_blank" href="' . esc_url( $url ) . '">' . esc_html( $text ) . '</a>'; | |
| 133 | - } | |
| 134 | 243 | |
| 135 | - return array_merge( $setting_link, $links, $upgrade_link ); | |
| 136 | - } | |
| 244 | + public static function get_support_data() { | |
| 245 | + $html = ''; | |
| 246 | + $html .= '<div class="ultp-admin-sidebar">'; | |
| 137 | 247 | |
| 248 | + $html .= '<div class="ultp-admin-card ultp-sidebar-card">'; | |
| 249 | + $html .= '<h3 class="ultp-sidebar-title">'.esc_html__( 'Coblog Theme', 'ultimate-post' ).'</h3>'; | |
| 250 | + $html .= '<p class="ultp-sidebar-content">'.esc_html__( 'Responsive WordPress Theme news theme built for personal blog, blogging, blogger, journal, lifestyle, magazine, photography, editorial, traveler and so on.', 'ultimate-post' ).'</p>'; | |
| 251 | + $html .= '<h4>'.esc_html__( 'Core Features', 'ultimate-post' ).'</h4>'; | |
| 252 | + $html .= '<ul class="ultp-sidebar-list">'; | |
| 253 | + $html .= '<li>'.esc_html__( 'Based On Gutenberg', 'ultimate-post' ).'</li>'; | |
| 254 | + $html .= '<li>'.esc_html__( 'Header Variations', 'ultimate-post' ).'</li>'; | |
| 255 | + $html .= '<li>'.esc_html__( 'Footer Variations', 'ultimate-post' ).'</li>'; | |
| 256 | + $html .= '<li>'.esc_html__( 'Advanced Option Panel', 'ultimate-post' ).'</li>'; | |
| 257 | + $html .= '<li>'.esc_html__( 'Box Width layout', 'ultimate-post' ).'</li>'; | |
| 258 | + $html .= '<li>'.esc_html__( 'Unlimited Color Options', 'ultimate-post' ).'</li>'; | |
| 259 | + $html .= '</ul>'; | |
| 260 | + $html .= '<a class="button button-success" target="_blank" href="https://wordpress.org/themes/coblog">'.__('Free Download', 'ultimate-post').'</a>'; | |
| 261 | + $html .= '</div>';//ultp-admin-card | |
| 138 | 262 | |
| 139 | - /** | |
| 140 | - * Add admin menu option page and submenus. | |
| 141 | - * | |
| 142 | - * @since v.1.0.0 | |
| 143 | - * @return void No return value. | |
| 144 | - */ | |
| 145 | - public static function menu_page_callback() { | |
| 146 | - $ultp_menu_icon = 'data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MCA0OC4zIj4NCiAgPGRlZnM+DQogICAgPHN0eWxlPg0KICAgICAgLmNscy0xIHsNCiAgICAgICAgZmlsbDogI2E3YWFhZDsNCiAgICAgIH0NCiAgICA8L3N0eWxlPg0KICA8L2RlZnM+DQogIDx0aXRsZT5Qb3N0eCBJY29uIGNtcHJzc2QgU1ZHPC90aXRsZT4NCiAgPGc+DQogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTguODEsOXY4LjlIOC4xOUE2LjE5LDYuMTksMCwwLDAsMiwyMy43N2EzLjE2LDMuMTYsMCwwLDEtMi0yLjk0VjRBMy4xNiwzLjE2LDAsMCwxLDMuMTUuODVIMjBhMy4xOCwzLjE4LDAsMCwxLDMsMi4zMUE2LjIxLDYuMjEsMCwwLDAsMTguODEsOVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTAuODUpIi8+DQogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDUsOVYyM0gzMS4xYTYuMjMsNi4yMywwLDAsMC00LjkzLTQuOTNBNS41NCw1LjU0LDAsMCwwLDI1LDE3Ljk0SDIxLjg1VjlBMy4xNSwzLjE1LDAsMCwxLDIzLjEzLDYuNWEzLjEyLDMuMTIsMCwwLDEsMS40My0uNThsLjA5LDBINDEuODNBMy4xNCwzLjE0LDAsMCwxLDQ1LDlaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIC0wLjg1KSIvPg0KICAgIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTUwLDI5LjE3VjQ2YTMuMTYsMy4xNiwwLDAsMS0zLjE1LDMuMTVIMzBhMy4xOCwzLjE4LDAsMCwxLTMtMi4zMUE2LjIyLDYuMjIsMCwwLDAsMzEuMjEsNDFWMjZINDYuODVhMy4zLDMuMywwLDAsMSwxLjE0LjIxQTMuMTYsMy4xNiwwLDAsMSw1MCwyOS4xN1oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTAuODUpIi8+DQogICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjguMTYsMjQuMTNWNDFhMy4xMywzLjEzLDAsMCwxLTEuMjksMi41NCwzLDMsMCwwLDEtMS40Ny41OGwwLDBIOC4xOUEzLjE1LDMuMTUsMCwwLDEsNSw0MVYyNGEzLjE3LDMuMTcsMCwwLDEsMy4xNS0zSDI1YTMuMTIsMy4xMiwwLDAsMSwxLjE0LjIyLDMuMjQsMy4yNCwwLDAsMSwxLjksMi4xQTMuNjMsMy42MywwLDAsMSwyOC4xNiwyNC4xM1oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTAuODUpIi8+DQogIDwvZz4NCjwvc3ZnPg0K'; | |
| 147 | - $menupage_cap = apply_filters( 'ultp_menu_page_capability', 'manage_options' ); | |
| 148 | - add_menu_page( | |
| 149 | - __( 'PostX', 'ultimate-post' ), | |
| 150 | - __( 'PostX', 'ultimate-post' ), | |
| 151 | - $menupage_cap, | |
| 152 | - 'ultp-settings', | |
| 153 | - array( self::class, 'ultp_dashboard' ), | |
| 154 | - $ultp_menu_icon, | |
| 155 | - 58.5 | |
| 156 | - ); | |
| 263 | + $html .= '</div>';//ultp-admin-sidebar | |
| 264 | + echo $html; | |
| 265 | + } | |
| 157 | 266 | |
| 158 | - add_submenu_page( | |
| 159 | - 'ultp-settings', | |
| 160 | - __( 'PostX Dashboard', 'ultimate-post' ), | |
| 161 | - __( 'Getting Started', 'ultimate-post' ), | |
| 162 | - $menupage_cap, | |
| 163 | - 'ultp-settings' | |
| 164 | - ); | |
| 267 | + /** | |
| 268 | + * Settings page output | |
| 269 | + */ | |
| 270 | + public static function create_admin_page() { ?> | |
| 271 | + <style> | |
| 272 | + /* ----Common--- */ | |
| 273 | + #wpbody-content, #wpwrap{ | |
| 274 | + background-color: #f2f2f2; | |
| 275 | + -webkit-font-smoothing: subpixel-antialiased; | |
| 276 | + } | |
| 277 | + .error, .notice { | |
| 278 | + display: none; | |
| 279 | + } | |
| 280 | + #wpcontent { | |
| 281 | + padding-left: 0px; | |
| 282 | + } | |
| 283 | + .ultp-option-body { | |
| 284 | + position: relative; | |
| 285 | + font-size: 15px; | |
| 286 | + max-width: 100%; | |
| 287 | + display:block; | |
| 288 | + } | |
| 165 | 289 | |
| 166 | - $menu_lists = array( | |
| 167 | - 'startersites' => esc_html__( 'Starter Sites', 'ultimate-post' ), | |
| 168 | - 'builder' => esc_html__( 'Site Builder', 'ultimate-post' ), | |
| 169 | - 'saved-templates' => esc_html__( 'Saved Templates', 'ultimate-post' ), | |
| 170 | - 'custom-font' => esc_html__( 'Custom Font', 'ultimate-post' ), | |
| 171 | - 'addons' => esc_html__( 'Add-ons', 'ultimate-post' ), | |
| 172 | - 'blocks' => esc_html__( 'Blocks', 'ultimate-post' ), | |
| 173 | - 'settings' => esc_html__( 'Settings', 'ultimate-post' ), | |
| 174 | - ); | |
| 175 | - if ( defined( 'ULTP_PRO_VER' ) ) { | |
| 176 | - $menu_lists['license'] = esc_html__( 'License ', 'ultimate-post' ); | |
| 177 | - } | |
| 290 | + /* ----Header--- */ | |
| 291 | + .ultp-setting-header { | |
| 292 | + width: 100%; | |
| 293 | + display: flex; | |
| 294 | + align-items: center; | |
| 295 | + padding: 20px 40px; | |
| 296 | + box-sizing: border-box; | |
| 297 | + background: #fff; | |
| 298 | + } | |
| 299 | + .ultp-setting-header img { | |
| 300 | + margin-left:auto; | |
| 301 | + } | |
| 302 | + .ultp-setting-header-info h1 { | |
| 303 | + margin: 0; | |
| 304 | + font-weight: 300; | |
| 305 | + font-size: 35px; | |
| 306 | + line-height: normal; | |
| 307 | + color: #000; | |
| 308 | + } | |
| 309 | + .ultp-setting-header-info p { | |
| 310 | + font-size: 14px; | |
| 311 | + margin-top: 5px; | |
| 312 | + margin-bottom: 0; | |
| 313 | + font-weight:300; | |
| 314 | + } | |
| 315 | + .ultp-setting-header-info p a { | |
| 316 | + margin-left: 5px; | |
| 317 | + text-decoration: none; | |
| 318 | + color: #007AFF; | |
| 319 | + } | |
| 320 | + .ultp-setting-header-info p a span { | |
| 321 | + color: #FF9920; | |
| 322 | + margin-left: 10px; | |
| 323 | + font-size: 18px; | |
| 324 | + letter-spacing: 4px; | |
| 325 | + } | |
| 178 | 326 | |
| 179 | - foreach ( $menu_lists as $key => $val ) { | |
| 180 | - add_submenu_page( | |
| 181 | - 'ultp-settings', | |
| 182 | - $val, | |
| 183 | - $val, | |
| 184 | - $menupage_cap, | |
| 185 | - 'ultp-settings#' . $key, | |
| 186 | - array( __CLASS__, 'render_main' ) | |
| 187 | - ); | |
| 188 | - } | |
| 189 | - add_submenu_page( | |
| 190 | - 'ultp-settings', | |
| 191 | - esc_html__( 'Initial Setup', 'ultimate-post' ), | |
| 192 | - esc_html__( 'Initial Setup', 'ultimate-post' ), | |
| 193 | - $menupage_cap, | |
| 194 | - 'ultp-setup-wizard', | |
| 195 | - array( __CLASS__, 'ultp_wizard_page' ) | |
| 196 | - ); | |
| 197 | 327 | |
| 198 | - $pro_link = ''; | |
| 199 | - $pro_link_text = ''; | |
| 200 | 328 | |
| 201 | - // Check if current date is between November 5th and December 10th | |
| 202 | - $current_date = current_time( 'Y-m-d' ); | |
| 203 | - $start_date = date( 'Y' ) . '-01-01'; // January 1st of current year | |
| 204 | - $end_date = date( 'Y' ) . '-02-15'; // February 15th of current year | |
| 205 | - $menu_pro_text_period = ( $current_date >= $start_date && $current_date <= $end_date ); | |
| 206 | 329 | |
| 207 | - if ( ! Xpo::is_lc_active() ) { | |
| 208 | - $pro_link = Xpo::generate_utm_link( | |
| 209 | - array( | |
| 210 | - 'utmKey' => 'sub_menu', | |
| 211 | - ) | |
| 212 | - ); | |
| 213 | - $pro_link_text = $menu_pro_text_period ? __( 'New Year Offer!', 'ultimate-post' ) : __( 'Upgrade to Pro', 'ultimate-post' ); | |
| 214 | - } elseif ( Xpo::is_lc_expired() ) { | |
| 215 | - $license_key = Xpo::get_lc_key(); | |
| 216 | - $pro_link = 'https://account.wpxpo.com/checkout/?edd_license_key=' . $license_key; | |
| 217 | - $pro_link_text = __( 'Renew License', 'ultimate-post' ); | |
| 218 | - } | |
| 330 | + /* ----common--- */ | |
| 331 | + .ultp-admin-card { | |
| 332 | + box-shadow: 0 0 10px -5px rgba(0,0,0,0.5); | |
| 333 | + background-color: #fff; | |
| 334 | + } | |
| 335 | + .ultp-title { | |
| 336 | + margin-top:0; | |
| 337 | + color: #000; | |
| 338 | + } | |
| 339 | + .ultp-overview { | |
| 340 | + padding: 50px; | |
| 341 | + display:flex; | |
| 342 | + } | |
| 343 | + .ultp-overview-content { | |
| 344 | + max-width: 50%; | |
| 345 | + padding-right: 30px; | |
| 346 | + } | |
| 347 | + .wp-core-ui .button-primary { | |
| 348 | + background: #006ade; | |
| 349 | + border-color: #006ade; | |
| 350 | + border-radius: 2px; | |
| 351 | + padding: 3px 15px; | |
| 352 | + font-weight: 400; | |
| 353 | + height: auto; | |
| 354 | + } | |
| 355 | + .wp-core-ui .button.button-success { | |
| 356 | + background: #14bd62; | |
| 357 | + border-color: #14bd62; | |
| 358 | + color: #fff; | |
| 359 | + margin-left: 10px; | |
| 360 | + transition: 400ms; | |
| 361 | + border-radius: 2px; | |
| 362 | + padding: 3px 15px; | |
| 363 | + font-weight: 400; | |
| 364 | + height: auto; | |
| 365 | + } | |
| 366 | + .wp-core-ui .button.button-success:hover { | |
| 367 | + background: #14d26c; | |
| 368 | + border-color: #14d26c; | |
| 369 | + } | |
| 370 | + .wp-core-ui .button.button-primary:hover { | |
| 371 | + background: #007afe; | |
| 372 | + border-color: #007afe; | |
| 373 | + } | |
| 374 | + .wp-core-ui .button.button-success:focus { | |
| 375 | + box-shadow: 0 0 0 1px #10b35b; | |
| 376 | + } | |
| 377 | + .wp-core-ui .button.button-primary:focus { | |
| 378 | + box-shadow: 0 0 0 1px #016BDF; | |
| 379 | + } | |
| 380 | + .ultp-overview-text { | |
| 381 | + font-size: 14px; | |
| 382 | + font-weight: 300; | |
| 383 | + line-height: 25px; | |
| 384 | + } | |
| 385 | + .ultp-overview-text .button { | |
| 386 | + margin-top: 30px; | |
| 387 | + } | |
| 388 | + .ultp-overview-feature { | |
| 389 | + margin-top: 40px; | |
| 390 | + } | |
| 219 | 391 | |
| 220 | - if ( ! empty( $pro_link ) ) { | |
| 221 | - ob_start(); | |
| 222 | - ?> | |
| 223 | - <a href="<?php echo esc_url( $pro_link ); ?>" target="_blank" class="ultp-go-pro"> | |
| 224 | - <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> | |
| 225 | - <path d="M2.86 6.553a.5.5 0 01.823-.482l3.02 2.745c.196.178.506.13.64-.098L9.64 4.779a.417.417 0 01.72 0l2.297 3.939a.417.417 0 00.64.098l3.02-2.745a.5.5 0 01.823.482l-1.99 8.63a.833.833 0 01-.813.646H5.663a.833.833 0 01-.812-.646L2.86 6.553z" stroke="currentColor" stroke-width="1.5"></path> | |
| 226 | - </svg> | |
| 227 | - <span><?php echo esc_html( $pro_link_text ); ?></span> | |
| 228 | - </a> | |
| 229 | - <?php | |
| 230 | - $submenu_content = ob_get_clean(); | |
| 392 | + .ultp-dashboard-list { | |
| 393 | + list-style: none; | |
| 394 | + padding: 0; | |
| 395 | + } | |
| 396 | + .ultp-dashboard-list li { | |
| 397 | + font-size: 14px; | |
| 398 | + font-weight: 300; | |
| 399 | + line-height: 26px; | |
| 400 | + position: relative; | |
| 401 | + padding: 0 20px; | |
| 402 | + display: inline-block; | |
| 403 | + width: 40%; | |
| 404 | + } | |
| 405 | + .ultp-dashboard-list li:after { | |
| 406 | + content: ""; | |
| 407 | + left: 0; | |
| 408 | + width: 8px; | |
| 409 | + height: 8px; | |
| 410 | + border-radius: 100px; | |
| 411 | + background: #dcdcdc; | |
| 412 | + position: absolute; | |
| 413 | + top: 50%; | |
| 414 | + margin-top: -4px; | |
| 415 | + } | |
| 231 | 416 | |
| 232 | - add_submenu_page( | |
| 233 | - 'ultp-settings', | |
| 234 | - '', | |
| 235 | - $submenu_content, | |
| 236 | - 'manage_options', | |
| 237 | - 'ultp-pro', | |
| 238 | - array( self::class, 'handle_external_redirects' ) | |
| 239 | - ); | |
| 240 | - } | |
| 241 | 417 | |
| 242 | - add_theme_page( | |
| 243 | - __( 'Starter Sites', 'ultimate-post' ), | |
| 244 | - __( 'Starter Sites', 'ultimate-post' ), | |
| 245 | - $menupage_cap, | |
| 246 | - 'ultp-startersites', | |
| 247 | - array( self::class, 'handle_external_redirects' ) | |
| 248 | - ); | |
| 249 | - } | |
| 250 | 418 | |
| 251 | - /** | |
| 252 | - * Sync addon-backed WordPress submenu items with addon enabled status. | |
| 253 | - * | |
| 254 | - * @since v.4.1.7 | |
| 255 | - * @return void No return value. | |
| 256 | - */ | |
| 257 | - public function sync_addon_submenu_visibility() { | |
| 258 | - $settings = ultimate_post()->get_setting(); | |
| 259 | - $submenus = array( | |
| 260 | - 'builder' => 'ultp_builder', | |
| 261 | - 'saved-templates' => 'ultp_templates', | |
| 262 | - 'custom-font' => 'ultp_custom_font', | |
| 263 | - ); | |
| 419 | + /* ----Sidebar--- */ | |
| 420 | + .ultp-sidebar-card { | |
| 421 | + padding: 0 20px 25px; | |
| 422 | + } | |
| 423 | + .ultp-sidebar-title { | |
| 424 | + margin: 0 -20px 0; | |
| 425 | + background: #FAFAFA; | |
| 426 | + padding: 15px 20px; | |
| 427 | + font-size: 16px; | |
| 428 | + border-bottom: 1px solid #EEEEEE; | |
| 429 | + color: #000; | |
| 430 | + } | |
| 431 | + .ultp-sidebar-card h4 { | |
| 432 | + color: #000; | |
| 433 | + margin-top: 25px; | |
| 434 | + } | |
| 435 | + .ultp-sidebar-list { | |
| 436 | + list-style: none; | |
| 437 | + padding: 0; | |
| 438 | + margin-bottom: 30px; | |
| 439 | + } | |
| 440 | + .ultp-sidebar-list li { | |
| 441 | + font-size: 13px; | |
| 442 | + padding: 0 20px; | |
| 443 | + position: relative; | |
| 444 | + margin-right: auto; | |
| 445 | + line-height: 24px; | |
| 446 | + } | |
| 447 | + .ultp-sidebar-list li:after { | |
| 448 | + content: ""; | |
| 449 | + left: 0; | |
| 450 | + width: 8px; | |
| 451 | + height: 8px; | |
| 452 | + border-radius: 100px; | |
| 453 | + background: #dcdcdc; | |
| 454 | + position: absolute; | |
| 455 | + top: 50%; | |
| 456 | + margin-top: -4px; | |
| 457 | + } | |
| 458 | + .ultp-sidebar-content { | |
| 459 | + margin-top: 25px; | |
| 460 | + } | |
| 264 | 461 | |
| 265 | - foreach ( $submenus as $slug => $setting_key ) { | |
| 266 | - $submenus[ $slug ] = isset( $settings[ $setting_key ] ) && $settings[ $setting_key ] !== 'false'; | |
| 267 | - } | |
| 268 | - ?> | |
| 269 | - <script> | |
| 270 | - ( function() { | |
| 271 | - const postxAddonSubmenus = <?php echo wp_json_encode( $submenus ); ?>; | |
| 462 | + /* ----Tab--- */ | |
| 463 | + .ultp-content-wrap { | |
| 464 | + padding: 40px; | |
| 465 | + display: flex; | |
| 466 | + width: 100%; | |
| 467 | + box-sizing: border-box; | |
| 468 | + } | |
| 469 | + .ultp-tab-content-wrap { | |
| 470 | + width: 75%; | |
| 471 | + margin-right: 30px; | |
| 472 | + -webkit-box-flex: 0; | |
| 473 | + -ms-flex: 0 0 75%; | |
| 474 | + flex: 0 0 75%; | |
| 475 | + max-width: 75%; | |
| 476 | + } | |
| 272 | 477 | |
| 273 | - Object.keys( postxAddonSubmenus ).forEach( function( slug ) { | |
| 274 | - const link = document.querySelector( '#adminmenu a[href*="page=ultp-settings#' + slug + '"]' ); | |
| 275 | - const item = link ? link.closest( 'li' ) : null; | |
| 478 | + .ultp-tab-title-wrap{ | |
| 479 | + padding: 0 40px; | |
| 480 | + background-color: #ffffff; | |
| 481 | + border-bottom: 3px solid #d5d5d5; | |
| 482 | + } | |
| 483 | + .ultp-tab-title{ | |
| 484 | + font-weight: 300; | |
| 485 | + color: #555; | |
| 486 | + font-size: 15px; | |
| 487 | + display: inline-block; | |
| 488 | + margin-right: 25px; | |
| 489 | + padding: 10px 0; | |
| 490 | + } | |
| 491 | + .ultp-tab-title:hover{ | |
| 492 | + cursor: pointer; | |
| 493 | + } | |
| 494 | + .ultp-tab-title.active{ | |
| 495 | + border-bottom: 3px solid #007AFF; | |
| 496 | + color: #007AFF; | |
| 497 | + margin-bottom: -3px; | |
| 498 | + } | |
| 499 | + .ultp-tab-content{ | |
| 500 | + display: none; | |
| 501 | + } | |
| 502 | + .ultp-tab-content.active{ | |
| 503 | + display: block; | |
| 504 | + } | |
| 276 | 505 | |
| 277 | - if ( ! item ) { | |
| 278 | - return; | |
| 279 | - } | |
| 506 | + /* ----Settings--- */ | |
| 507 | + .ultp-settings-wrap { | |
| 508 | + margin-bottom: 20px; | |
| 509 | + display: grid; | |
| 510 | + grid-template-columns: 0.8fr 1fr; | |
| 511 | + } | |
| 280 | 512 | |
| 281 | - item.id = 'postx-submenu-' + slug; | |
| 282 | - item.style.display = postxAddonSubmenus[ slug ] ? '' : 'none'; | |
| 283 | - } ); | |
| 284 | - }() ); | |
| 285 | - </script> | |
| 286 | - <?php | |
| 287 | - } | |
| 288 | 513 | |
| 289 | - /** | |
| 290 | - * Handle external redirects for menu and pro links. | |
| 291 | - * | |
| 292 | - * @since v.1.0.0 | |
| 293 | - * @return void No return value. | |
| 294 | - */ | |
| 295 | - public function handle_external_redirects() { | |
| 296 | - if (empty($_GET['page'])) { // @codingStandardsIgnoreLine | |
| 297 | - return; | |
| 298 | - } | |
| 299 | - $_page = sanitize_key( $_GET['page'] ); | |
| 300 | - if ('ultp-startersites' === $_page) { // @codingStandardsIgnoreLine | |
| 301 | - exit( wp_safe_redirect( admin_url( 'admin.php?page=ultp-settings#startersites' ) ) ); | |
| 302 | - } else if ('go_postx_pro' === $_page) { // @codingStandardsIgnoreLine | |
| 303 | - wp_redirect( | |
| 304 | - Xpo::generate_utm_link( | |
| 305 | - array( | |
| 306 | - 'utmKey' => 'dashboard_go_pro', | |
| 307 | - ) | |
| 308 | - ) | |
| 309 | - ); | |
| 310 | - die(); | |
| 311 | - } | |
| 312 | - } | |
| 514 | + /* ----Recomended--- */ | |
| 515 | + .ultp-recommended-theme{ | |
| 516 | + max-width: 100%; | |
| 517 | + background-color: #ffffff; | |
| 518 | + border-radius: 3px; | |
| 519 | + box-shadow: 0 0 10px -5px rgba(0,0,0,0.5); | |
| 520 | + margin-bottom: 30px; | |
| 521 | + } | |
| 522 | + .ultp-recommended-image, .ultp-recommended-name, .ultp-recommended-button { | |
| 523 | + display: inline-block; | |
| 524 | + vertical-align: middle; | |
| 525 | + } | |
| 526 | + .ultp-recommended-name { | |
| 527 | + font-size: 18px; | |
| 528 | + margin-left: 20px; | |
| 529 | + } | |
| 530 | + .ultp-recommended-name a { | |
| 531 | + transition: 400ms; | |
| 532 | + color: #000000; | |
| 533 | + text-decoration: none; | |
| 534 | + transition: 400ms; | |
| 535 | + } | |
| 536 | + .ultp-recommended-name a:hover { | |
| 537 | + color: #007AFF; | |
| 538 | + } | |
| 539 | + .ultp-recommended-image { | |
| 540 | + border-right: 1px solid #ececec; | |
| 541 | + } | |
| 542 | + .ultp-recommended-image img { | |
| 543 | + width: 70px; | |
| 544 | + } | |
| 545 | + .ultp-recommended-button { | |
| 546 | + float: right; | |
| 547 | + margin: 20px 20px 0 0; | |
| 548 | + position: relative; | |
| 549 | + } | |
| 550 | + .ultp-recommended-button a{ | |
| 551 | + float: right; | |
| 552 | + transition: 200ms; | |
| 553 | + text-decoration: none; | |
| 554 | + } | |
| 555 | + .ultp-recommended-button a:hover{ | |
| 556 | + cursor: pointer; | |
| 557 | + } | |
| 313 | 558 | |
| 314 | - /** | |
| 315 | - * Render the wizard page. | |
| 316 | - * | |
| 317 | - * @since v.2.4.4 | |
| 318 | - */ | |
| 319 | - public static function ultp_wizard_page() { | |
| 320 | - ?> | |
| 321 | - <div class="ultp-wizard-page-wrap" id="ultp-wizard-page"></div> | |
| 322 | - <?php | |
| 323 | - } | |
| 559 | + /* ---Video Tutorials--- */ | |
| 560 | + .ultp-overview-video iframe { | |
| 561 | + box-shadow: 0 0 10px -5px rgba(0,0,0,0.5); | |
| 562 | + } | |
| 563 | + .ultp-video-tutorials { | |
| 564 | + display: grid; | |
| 565 | + grid-template-columns: 1fr 1fr 1fr; | |
| 566 | + grid-gap: 30px; | |
| 567 | + } | |
| 568 | + .ultp-video-tutorial { | |
| 569 | + box-shadow: 0 0 10px -5px rgba(0,0,0,0.5); | |
| 570 | + background-color: #fff; | |
| 571 | + } | |
| 572 | + .ultp-video-tutorial iframe { | |
| 573 | + box-shadow: 0 0 10px -5px rgba(0,0,0,0.5); | |
| 574 | + width: 100%; | |
| 575 | + height: 207px; | |
| 576 | + } | |
| 577 | + .ultp-video-tutorial h4 { | |
| 578 | + color: #000; | |
| 579 | + margin: 0; | |
| 580 | + padding: 15px 20px 20px; | |
| 581 | + } | |
| 582 | + /* ---Changelog--- */ | |
| 583 | + .ultp-changelog-wrap { | |
| 584 | + background-color: #ffffff; | |
| 585 | + margin: 0 auto 30px; | |
| 586 | + padding: 25px 30px; | |
| 587 | + position: relative; | |
| 588 | + box-shadow: 0 0 10px -5px rgba(0,0,0,0.5); | |
| 589 | + } | |
| 590 | + .ultp-changelog-date{ | |
| 591 | + font-size: 14px; | |
| 592 | + display: inline-block; | |
| 593 | + right: 30px; | |
| 594 | + position: absolute; | |
| 595 | + font-weight: 300; | |
| 596 | + } | |
| 597 | + .ultp-changelog-version{ | |
| 598 | + font-size: 16px; | |
| 599 | + color: #000000; | |
| 600 | + font-weight: 700; | |
| 601 | + margin-bottom: 20px; | |
| 602 | + } | |
| 603 | + .ultp-changelog-title { | |
| 604 | + text-transform: capitalize; | |
| 605 | + font-size: 14px; | |
| 606 | + color: #555555; | |
| 607 | + line-height: 28px; | |
| 608 | + font-weight: 300; | |
| 609 | + margin-bottom: 8px; | |
| 610 | + } | |
| 611 | + .ultp-changelog-title > span { | |
| 612 | + padding: 2px 10px; | |
| 613 | + border-radius: 3px; | |
| 614 | + margin-right: 10px; | |
| 615 | + } | |
| 616 | + .changelog-fix{ | |
| 617 | + color: #721c24; | |
| 618 | + background-color: #f8d7da; | |
| 619 | + border-color: #f5c6cb; | |
| 620 | + } | |
| 621 | + .changelog-update{ | |
| 622 | + color: #856404; | |
| 623 | + background-color: #fff3cd; | |
| 624 | + border-color: #ffeeba; | |
| 625 | + } | |
| 626 | + .changelog-new{ | |
| 627 | + color: #155724; | |
| 628 | + background-color: #d4edda; | |
| 629 | + border-color: #c3e6cb; | |
| 630 | + } | |
| 324 | 631 | |
| 325 | - /** | |
| 326 | - * Render the dashboard page. | |
| 327 | - * | |
| 328 | - * @since v.1.0.0 | |
| 329 | - * @return void No return value. | |
| 330 | - */ | |
| 331 | - public static function ultp_dashboard() { | |
| 332 | - echo '<div id="ultp-dashboard"></div>'; | |
| 333 | - } | |
| 632 | + /* ----Responsive--- */ | |
| 633 | + @media (max-width: 1500px) { | |
| 634 | + .ultp-overview { | |
| 635 | + flex-wrap: wrap; | |
| 636 | + flex-direction: column-reverse; | |
| 637 | + } | |
| 638 | + .ultp-overview-content { | |
| 639 | + max-width: 100%; | |
| 640 | + } | |
| 641 | + .ultp-overview-video { | |
| 642 | + margin-bottom: 40px; | |
| 643 | + } | |
| 644 | + .ultp-overview-video iframe { | |
| 645 | + width: 640px; | |
| 646 | + height: 360px; | |
| 647 | + box-shadow: 0 0 10px -5px rgba(0,0,0,0.5); | |
| 648 | + } | |
| 649 | + .ultp-video-tutorials { | |
| 650 | + grid-template-columns: 1fr 1fr; | |
| 651 | + } | |
| 652 | + } | |
| 653 | + @media (max-width: 1400px) { | |
| 654 | + .ultp-sidebar-card .button.button-primary { | |
| 655 | + text-align: center; | |
| 656 | + display: block; | |
| 657 | + } | |
| 658 | + .ultp-sidebar-card .button.button-success { | |
| 659 | + text-align: center; | |
| 660 | + display: block; | |
| 661 | + margin-left: 0; | |
| 662 | + margin-top: 10px; | |
| 663 | + } | |
| 664 | + } | |
| 665 | + @media (max-width: 1200px) { | |
| 666 | + .ultp-content-wrap { | |
| 667 | + flex-wrap: wrap; | |
| 668 | + } | |
| 669 | + .ultp-tab-content-wrap { | |
| 670 | + width: 100%; | |
| 671 | + margin-right: 0; | |
| 672 | + -webkit-box-flex: 0; | |
| 673 | + -ms-flex: 0 0 100%; | |
| 674 | + flex: 0 0 100%; | |
| 675 | + max-width: 100%; | |
| 676 | + } | |
| 677 | + .ultp-admin-sidebar { | |
| 678 | + margin-top: 40px; | |
| 679 | + } | |
| 680 | + } | |
| 681 | + @media (max-width: 1000px) { | |
| 682 | + .ultp-setting-header-info h1 { | |
| 683 | + font-size: 28px; | |
| 684 | + } | |
| 685 | + .ultp-overview-video iframe { | |
| 686 | + width: 350px; | |
| 687 | + height: 250px; | |
| 688 | + } | |
| 689 | + .ultp-setting-header { | |
| 690 | + padding: 20px 30px; | |
| 691 | + } | |
| 692 | + .ultp-tab-title-wrap { | |
| 693 | + padding: 0 30px; | |
| 694 | + } | |
| 695 | + .ultp-overview { | |
| 696 | + padding: 30px; | |
| 697 | + } | |
| 698 | + .ultp-video-tutorials { | |
| 699 | + grid-template-columns: 1fr; | |
| 700 | + } | |
| 701 | + } | |
| 702 | + </style> | |
| 334 | 703 | |
| 335 | - /** | |
| 336 | - * Remove all notifications from menu page. | |
| 337 | - * | |
| 338 | - * @since v.1.0.0 | |
| 339 | - * @return void No return value. | |
| 340 | - */ | |
| 341 | - public static function remove_all_notices() { | |
| 342 | - if (isset($_GET['page'])) { // @codingStandardsIgnoreLine | |
| 343 | - $page = sanitize_key($_GET['page']); // @codingStandardsIgnoreLine | |
| 344 | - if ( | |
| 345 | - $page === 'ultp-settings' || | |
| 346 | - $page === 'ultp-license' || | |
| 347 | - $page === 'ultp-setup-wizard' | |
| 348 | - ) { | |
| 349 | - remove_all_actions( 'admin_notices' ); | |
| 350 | - remove_all_actions( 'all_admin_notices' ); | |
| 351 | - } | |
| 352 | - } | |
| 353 | - } | |
| 704 | + <div class="ultp-option-body"> | |
| 705 | + <div class="ultp-setting-header"> | |
| 706 | + <div class="ultp-setting-header-info"> | |
| 707 | + <h1> | |
| 708 | + <?php _e('Welcome to <strong>Gutenberg Post Blocks</strong> - Version', 'ultimate-post'); ?><span> <?php echo ULTP_VER; ?></span> | |
| 709 | + </h1> | |
| 710 | + <p><?php esc_html_e('Most Powerful & Advanced Gutenberg Kit', 'ultimate-post'); ?><a href="https://wordpress.org/support/plugin/ultimate-post/reviews/#new-post"><?php esc_html_e('Rate the plugin', 'ultimate-post'); ?><span>★★★★★<span></a></p> | |
| 711 | + </div> | |
| 712 | + <img src="<?php echo ULTP_URL.'assets/img/logo-option.svg'; ?>" alt="<?php _e('Gutenberg Post Blocks', 'ultimate-post'); ?>"> | |
| 713 | + </div> | |
| 714 | + <div class="ultp-tab-wrap"> | |
| 715 | + <div class="ultp-tab-title-wrap"> | |
| 716 | + <div class="ultp-tab-title active"><?php _e('Getting Started', 'ultimate-post'); ?></div> | |
| 717 | + <div class="ultp-tab-title"><?php _e('General Settings', 'ultimate-post'); ?></div> | |
| 718 | + <div class="ultp-tab-title"><?php _e('Recommended Theme', 'ultimate-post'); ?></div> | |
| 719 | + <div class="ultp-tab-title"><?php _e('Video Tutorials', 'ultimate-post'); ?></div> | |
| 720 | + <div class="ultp-tab-title"><?php _e('Changelog', 'ultimate-post'); ?></div> | |
| 721 | + </div> | |
| 722 | + <div class="ultp-content-wrap"> | |
| 723 | + <div class="ultp-tab-content-wrap"> | |
| 724 | + <div class="ultp-tab-content active"><!-- #Recommended Theme Content --> | |
| 725 | + <div class="ultp-overview ultp-admin-card"> | |
| 726 | + <div class="ultp-overview-content"> | |
| 727 | + <div class="ultp-overview-text"> | |
| 728 | + <h3 class="ultp-title"><?php esc_html_e( 'Quick Overview', 'ultimate-post' ); ?></h3> | |
| 729 | + <?php esc_html_e('Gutenberg Post Blocks is a Gutenberg post block plugins for creating beautiful Gutenberg post grid blocks, post listing blocks, post slider blocks and post carousel blocks within a few seconds.', 'ultimate-post'); ?> | |
| 730 | + <div> | |
| 731 | + <a href="https://www.wpxpo.com/" class="button button-primary"><?php esc_html_e('Plugin Details', 'ultimate-post'); ?></a> | |
| 732 | + <a class="button button-success" target="_blank" href="https://demo.wpxpo.com/layouts/"><?php esc_html_e('Free Layout Pack', 'ultimate-post'); ?></a> | |
| 733 | + </div> | |
| 734 | + </div><!--/.ultp-about-text--> | |
| 735 | + <div class="ultp-overview-feature"> | |
| 736 | + <h3 class="ultp-title"><?php esc_html_e( 'Core Features', 'ultimate-post' ); ?></h3> | |
| 737 | + <ul class="ultp-dashboard-list"> | |
| 738 | + <li><?php esc_html_e( 'Infinite Load More', 'ultimate-post' ); ?></li> | |
| 739 | + <li><?php esc_html_e( 'Advanced Pagination', 'ultimate-post' ); ?></li> | |
| 740 | + <li><?php esc_html_e( 'Advanced Query', 'ultimate-post' ); ?></li> | |
| 741 | + <li><?php esc_html_e( 'Premade Layouts', 'ultimate-post' ); ?></li> | |
| 742 | + <li><?php esc_html_e( 'Premade Blocks', 'ultimate-post' ); ?></li> | |
| 743 | + <li><?php esc_html_e( 'Post List View', 'ultimate-post' ); ?></li> | |
| 744 | + <li><?php esc_html_e( 'Post Grid View', 'ultimate-post' ); ?></li> | |
| 745 | + <li><?php esc_html_e( 'Filter Option', 'ultimate-post' ); ?></li> | |
| 746 | + <li><?php esc_html_e( 'Post Carousel', 'ultimate-post' ); ?></li> | |
| 747 | + <li><?php esc_html_e( 'Image Overlay', 'ultimate-post' ); ?></li> | |
| 748 | + </ul> | |
| 749 | + </div><!--/.ultp-overview-feature--> | |
| 750 | + </div><!--/.ultp-overview-content--> | |
| 751 | + <div class="ultp-overview-video"> | |
| 752 | + <h3 class="ultp-title"><?php esc_html_e( 'Getting started', 'ultimate-post' ); ?></h3> | |
| 753 | + <iframe width="500" height="315" src="https://www.youtube.com/embed/JZxIflYKOuM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | |
| 754 | + </div> | |
| 755 | + </div><!--/.ultp-dashboard--> | |
| 756 | + | |
| 757 | + </div> | |
| 758 | + <div class="ultp-tab-content"><!-- #Settings Content --> | |
| 759 | + <div class="ultp-overview ultp-admin-card"><!-- #Settings Content --> | |
| 760 | + <?php self::get_settings_data(); ?> | |
| 761 | + </div> | |
| 762 | + </div> | |
| 763 | + <div class="ultp-tab-content"><!-- #Recommended Theme Content --> | |
| 764 | + <div class="ultp-admin-themes"><!-- #Settings Content --> | |
| 765 | + <?php self::get_recommended_themes(); ?> | |
| 766 | + </div> | |
| 767 | + </div> | |
| 768 | + <div class="ultp-tab-content"><!-- #Video Tutorial --> | |
| 769 | + <div class="ultp-video-tutorials"> | |
| 770 | + <div class="ultp-video-tutorial"> | |
| 771 | + <iframe src="https://www.youtube.com/embed/S0kU_FSa2wc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | |
| 772 | + <h4><?php esc_html_e('How to Import Layouts','ultimate-post'); ?></h4> | |
| 773 | + </div> | |
| 774 | + <div class="ultp-video-tutorial"> | |
| 775 | + <iframe src="https://www.youtube.com/embed/lvRO359JuPw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | |
| 776 | + <h4><?php esc_html_e('How to use advaced query builder','ultimate-post'); ?></h4> | |
| 777 | + </div> | |
| 778 | + <div class="ultp-video-tutorial"> | |
| 779 | + <iframe width="560" height="315" src="https://www.youtube.com/embed/Eoz5yr8BAWY" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | |
| 780 | + <h4><?php esc_html_e('How to use Post Slider','ultimate-post'); ?></h4> | |
| 781 | + </div> | |
| 782 | + <div class="ultp-video-tutorial"> | |
| 783 | + <iframe src="https://www.youtube.com/embed/gqaXZ9nQEV8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | |
| 784 | + <h4><?php esc_html_e('How to use Advanced Pagination','ultimate-post'); ?></h4> | |
| 785 | + </div> | |
| 786 | + <div class="ultp-video-tutorial"> | |
| 787 | + <iframe width="560" height="315" src="https://www.youtube.com/embed/kwGhNfBD6AA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | |
| 788 | + <h4><?php esc_html_e('How to use Pre-made Blocks','ultimate-post'); ?></h4> | |
| 789 | + </div> | |
| 790 | + <div class="ultp-video-tutorial"> | |
| 791 | + <iframe src="https://www.youtube.com/embed/bcZJt2aN7hM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | |
| 792 | + <h4><?php esc_html_e('How to use Image Overlay','ultimate-post'); ?></h4> | |
| 793 | + </div> | |
| 794 | + <div class="ultp-video-tutorial"> | |
| 795 | + <iframe src="https://www.youtube.com/embed/2yIcx-2QkiE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | |
| 796 | + <h4><?php esc_html_e('How to use Category','ultimate-post'); ?></h4> | |
| 797 | + </div> | |
| 798 | + <div class="ultp-video-tutorial"> | |
| 799 | + <iframe src="https://www.youtube.com/embed/WGRy7CHcMFU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | |
| 800 | + <h4><?php esc_html_e('How to use Meta','ultimate-post'); ?></h4> | |
| 801 | + </div> | |
| 802 | + </div> | |
| 803 | + </div> | |
| 804 | + <div class="ultp-tab-content"><!-- #Changelog Content --> | |
| 805 | + <?php self::get_changelog_data(); ?> | |
| 806 | + </div> | |
| 807 | + </div> | |
| 808 | + <?php self::get_support_data(); ?> | |
| 809 | + </div> | |
| 810 | + </div> | |
| 811 | + | |
| 812 | + <script type="text/javascript"> | |
| 813 | + jQuery( document ).ready(function() { | |
| 814 | + jQuery( document ).on( "click", '.ultp-tab-title', function(e){ | |
| 815 | + jQuery(this).closest('.ultp-tab-wrap').find('.ultp-tab-title').removeClass('active').eq(jQuery(this).index()).addClass('active') | |
| 816 | + jQuery(this).closest('.ultp-tab-wrap').find('.ultp-tab-content').removeClass('active').eq(jQuery(this).index()).addClass('active'); | |
| 817 | + }); | |
| 818 | + }); | |
| 819 | + </script> | |
| 820 | + </div> | |
| 821 | + | |
| 822 | + <?php } | |
| 354 | 823 | } |
| 824 | + | |