@@ -14,619 +14,619 @@ |
||
| 14 | 14 | */ |
| 15 | 15 | class WPInv_Plugin { |
| 16 | 16 | |
| 17 | - /** |
|
| 18 | - * GetPaid version. |
|
| 19 | - * |
|
| 20 | - * @var string |
|
| 21 | - */ |
|
| 22 | - public $version; |
|
| 23 | - |
|
| 24 | - /** |
|
| 25 | - * Data container. |
|
| 26 | - * |
|
| 27 | - * @var array |
|
| 28 | - */ |
|
| 29 | - protected $data = array(); |
|
| 30 | - |
|
| 31 | - /** |
|
| 32 | - * Form elements instance. |
|
| 33 | - * |
|
| 34 | - * @var WPInv_Payment_Form_Elements |
|
| 35 | - */ |
|
| 36 | - public $form_elements; |
|
| 37 | - |
|
| 38 | - /** |
|
| 39 | - * @var array An array of payment gateways. |
|
| 40 | - */ |
|
| 41 | - public $gateways; |
|
| 42 | - |
|
| 43 | - /** |
|
| 44 | - * Class constructor. |
|
| 45 | - */ |
|
| 46 | - public function __construct() { |
|
| 47 | - $this->define_constants(); |
|
| 48 | - $this->includes(); |
|
| 49 | - $this->init_hooks(); |
|
| 50 | - $this->set_properties(); |
|
| 51 | - } |
|
| 52 | - |
|
| 53 | - /** |
|
| 54 | - * Sets a custom data property. |
|
| 55 | - * |
|
| 56 | - * @param string $prop The prop to set. |
|
| 57 | - * @param mixed $value The value to retrieve. |
|
| 58 | - */ |
|
| 59 | - public function set( $prop, $value ) { |
|
| 60 | - $this->data[ $prop ] = $value; |
|
| 61 | - } |
|
| 62 | - |
|
| 63 | - /** |
|
| 64 | - * Gets a custom data property. |
|
| 65 | - * |
|
| 66 | - * @param string $prop The prop to set. |
|
| 67 | - * @return mixed The value. |
|
| 68 | - */ |
|
| 69 | - public function get( $prop ) { |
|
| 70 | - if ( isset( $this->data[ $prop ] ) ) { |
|
| 71 | - return $this->data[ $prop ]; |
|
| 72 | - } |
|
| 73 | - |
|
| 74 | - return null; |
|
| 75 | - } |
|
| 76 | - |
|
| 77 | - /** |
|
| 78 | - * Define class properties. |
|
| 79 | - */ |
|
| 80 | - public function set_properties() { |
|
| 81 | - // Sessions. |
|
| 82 | - $this->set( 'session', new WPInv_Session_Handler() ); |
|
| 83 | - $GLOBALS['wpi_session'] = $this->get( 'session' ); // Backwards compatibility. |
|
| 84 | - $GLOBALS['wpinv_euvat'] = new WPInv_EUVat(); // Backwards compatibility. |
|
| 85 | - |
|
| 86 | - // Init other objects. |
|
| 87 | - $this->set( 'notes', new WPInv_Notes() ); |
|
| 88 | - $this->set( 'api', new WPInv_API() ); |
|
| 89 | - $this->set( 'post_types', new GetPaid_Post_Types() ); |
|
| 90 | - $this->set( 'template', new GetPaid_Template() ); |
|
| 91 | - $this->set( 'admin', new GetPaid_Admin() ); |
|
| 92 | - $this->set( 'subscriptions', new WPInv_Subscriptions() ); |
|
| 93 | - $this->set( 'invoice_emails', new GetPaid_Invoice_Notification_Emails() ); |
|
| 94 | - $this->set( 'subscription_emails', new GetPaid_Subscription_Notification_Emails() ); |
|
| 95 | - $this->set( 'daily_maintenace', new GetPaid_Daily_Maintenance() ); |
|
| 96 | - $this->set( 'payment_forms', new GetPaid_Payment_Forms() ); |
|
| 97 | - $this->set( 'maxmind', new GetPaid_MaxMind_Geolocation() ); |
|
| 98 | - } |
|
| 99 | - |
|
| 100 | - /** |
|
| 101 | - * Define plugin constants. |
|
| 102 | - */ |
|
| 103 | - public function define_constants() { |
|
| 104 | - define( 'WPINV_PLUGIN_DIR', plugin_dir_path( WPINV_PLUGIN_FILE ) ); |
|
| 105 | - define( 'WPINV_PLUGIN_URL', plugin_dir_url( WPINV_PLUGIN_FILE ) ); |
|
| 106 | - $this->version = WPINV_VERSION; |
|
| 107 | - } |
|
| 108 | - |
|
| 109 | - /** |
|
| 110 | - * Hook into actions and filters. |
|
| 111 | - * |
|
| 112 | - * @since 1.0.19 |
|
| 113 | - */ |
|
| 114 | - protected function init_hooks() { |
|
| 115 | - /* Internationalize the text strings used. */ |
|
| 116 | - add_action( 'plugins_loaded', array( &$this, 'plugins_loaded' ) ); |
|
| 117 | - |
|
| 118 | - // Init the plugin after WordPress inits. |
|
| 119 | - add_action( 'init', array( $this, 'init' ), 1 ); |
|
| 120 | - add_action( 'init', array( $this, 'maybe_process_ipn' ), 10 ); |
|
| 121 | - add_action( 'init', array( $this, 'wpinv_actions' ) ); |
|
| 122 | - add_action( 'init', array( $this, 'maybe_do_authenticated_action' ), 100 ); |
|
| 123 | - add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 11 ); |
|
| 124 | - add_action( 'wp_footer', array( $this, 'wp_footer' ) ); |
|
| 125 | - add_action( 'wp_head', array( $this, 'wp_head' ) ); |
|
| 126 | - add_action( 'widgets_init', array( $this, 'register_widgets' ) ); |
|
| 127 | - add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', array( $this, 'wpseo_exclude_from_sitemap_by_post_ids' ) ); |
|
| 128 | - add_filter( 'the_seo_framework_sitemap_supported_post_types', array( $this, 'exclude_invoicing_post_types' ) ); |
|
| 129 | - add_filter( 'pre_get_posts', array( &$this, 'pre_get_posts' ) ); |
|
| 130 | - |
|
| 131 | - add_filter( 'query_vars', array( $this, 'custom_query_vars' ) ); |
|
| 132 | - add_action( 'init', array( $this, 'add_rewrite_rule' ), 10, 0 ); |
|
| 133 | - add_action( 'pre_get_posts', array( $this, 'maybe_process_new_ipn' ), 1 ); |
|
| 134 | - |
|
| 135 | - // Fires after registering actions. |
|
| 136 | - do_action( 'wpinv_actions', $this ); |
|
| 137 | - do_action( 'getpaid_actions', $this ); |
|
| 138 | - } |
|
| 139 | - |
|
| 140 | - public function plugins_loaded() { |
|
| 141 | - /* Internationalize the text strings used. */ |
|
| 142 | - $this->load_textdomain(); |
|
| 143 | - |
|
| 144 | - do_action( 'wpinv_loaded' ); |
|
| 145 | - |
|
| 146 | - // Fix oxygen page builder conflict |
|
| 147 | - if ( function_exists( 'ct_css_output' ) ) { |
|
| 148 | - wpinv_oxygen_fix_conflict(); |
|
| 149 | - } |
|
| 150 | - } |
|
| 151 | - |
|
| 152 | - /** |
|
| 153 | - * Load Localisation files. |
|
| 154 | - * |
|
| 155 | - * Note: the first-loaded translation file overrides any following ones if the same translation is present. |
|
| 156 | - * |
|
| 157 | - * Locales found in: |
|
| 158 | - * - WP_LANG_DIR/plugins/invoicing-LOCALE.mo |
|
| 159 | - * - WP_PLUGIN_DIR/invoicing/languages/invoicing-LOCALE.mo |
|
| 160 | - * |
|
| 161 | - * @since 1.0.0 |
|
| 162 | - */ |
|
| 163 | - public function load_textdomain() { |
|
| 164 | - // Determines the current locale. |
|
| 165 | - if ( function_exists( 'determine_locale' ) ) { |
|
| 166 | - $locale = determine_locale(); |
|
| 167 | - } else if ( function_exists( 'get_user_locale' ) ) { |
|
| 168 | - $locale = get_user_locale(); |
|
| 169 | - } else { |
|
| 170 | - $locale = get_locale(); |
|
| 171 | - } |
|
| 172 | - |
|
| 173 | - /** |
|
| 174 | - * Filter the locale to use for translations. |
|
| 175 | - */ |
|
| 176 | - $locale = apply_filters( 'plugin_locale', $locale, 'invoicing' ); |
|
| 177 | - |
|
| 178 | - unload_textdomain( 'invoicing', true ); |
|
| 179 | - load_textdomain( 'invoicing', WP_LANG_DIR . '/invoicing/invoicing-' . $locale . '.mo' ); |
|
| 180 | - load_plugin_textdomain( 'invoicing', false, plugin_basename( dirname( WPINV_PLUGIN_FILE ) ) . '/languages/' ); |
|
| 181 | - } |
|
| 182 | - |
|
| 183 | - /** |
|
| 184 | - * Include required core files used in admin and on the frontend. |
|
| 185 | - */ |
|
| 186 | - public function includes() { |
|
| 187 | - // Start with the settings. |
|
| 188 | - require_once WPINV_PLUGIN_DIR . 'includes/admin/register-settings.php'; |
|
| 189 | - |
|
| 190 | - // Packages/libraries. |
|
| 191 | - require_once WPINV_PLUGIN_DIR . 'vendor/autoload.php'; |
|
| 192 | - require_once WPINV_PLUGIN_DIR . 'vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php'; |
|
| 193 | - |
|
| 194 | - // Load functions. |
|
| 195 | - require_once WPINV_PLUGIN_DIR . 'includes/deprecated-functions.php'; |
|
| 196 | - require_once WPINV_PLUGIN_DIR . 'includes/wpinv-email-functions.php'; |
|
| 197 | - require_once WPINV_PLUGIN_DIR . 'includes/wpinv-general-functions.php'; |
|
| 198 | - require_once WPINV_PLUGIN_DIR . 'includes/wpinv-helper-functions.php'; |
|
| 199 | - require_once WPINV_PLUGIN_DIR . 'includes/wpinv-tax-functions.php'; |
|
| 200 | - require_once WPINV_PLUGIN_DIR . 'includes/wpinv-template-functions.php'; |
|
| 201 | - require_once WPINV_PLUGIN_DIR . 'includes/wpinv-address-functions.php'; |
|
| 202 | - require_once WPINV_PLUGIN_DIR . 'includes/invoice-functions.php'; |
|
| 203 | - require_once WPINV_PLUGIN_DIR . 'includes/subscription-functions.php'; |
|
| 204 | - require_once WPINV_PLUGIN_DIR . 'includes/wpinv-item-functions.php'; |
|
| 205 | - require_once WPINV_PLUGIN_DIR . 'includes/wpinv-discount-functions.php'; |
|
| 206 | - require_once WPINV_PLUGIN_DIR . 'includes/wpinv-gateway-functions.php'; |
|
| 207 | - require_once WPINV_PLUGIN_DIR . 'includes/wpinv-payment-functions.php'; |
|
| 208 | - require_once WPINV_PLUGIN_DIR . 'includes/user-functions.php'; |
|
| 209 | - require_once WPINV_PLUGIN_DIR . 'includes/error-functions.php'; |
|
| 210 | - |
|
| 211 | - // Register autoloader. |
|
| 212 | - try { |
|
| 213 | - spl_autoload_register( array( $this, 'autoload' ), true ); |
|
| 214 | - } catch ( Exception $e ) { |
|
| 215 | - wpinv_error_log( $e->getMessage(), '', __FILE__, 149, true ); |
|
| 216 | - } |
|
| 217 | - |
|
| 218 | - require_once WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-session.php'; |
|
| 219 | - require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-session-handler.php'; |
|
| 220 | - require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-ajax.php'; |
|
| 221 | - require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-api.php'; |
|
| 222 | - require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-cache-helper.php'; |
|
| 223 | - require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-db.php'; |
|
| 224 | - require_once WPINV_PLUGIN_DIR . 'includes/admin/subscriptions.php'; |
|
| 225 | - require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-subscriptions-db.php'; |
|
| 226 | - require_once WPINV_PLUGIN_DIR . 'includes/wpinv-subscription.php'; |
|
| 227 | - require_once WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-privacy.php'; |
|
| 228 | - require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-privacy.php'; |
|
| 229 | - require_once WPINV_PLUGIN_DIR . 'includes/libraries/class-ayecode-addons.php'; |
|
| 230 | - require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-addons.php'; |
|
| 231 | - require_once WPINV_PLUGIN_DIR . 'widgets/checkout.php'; |
|
| 232 | - require_once WPINV_PLUGIN_DIR . 'widgets/invoice-history.php'; |
|
| 233 | - require_once WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php'; |
|
| 234 | - require_once WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php'; |
|
| 235 | - require_once WPINV_PLUGIN_DIR . 'widgets/subscriptions.php'; |
|
| 236 | - require_once WPINV_PLUGIN_DIR . 'widgets/buy-item.php'; |
|
| 237 | - require_once WPINV_PLUGIN_DIR . 'widgets/getpaid.php'; |
|
| 238 | - require_once WPINV_PLUGIN_DIR . 'widgets/invoice.php'; |
|
| 239 | - require_once WPINV_PLUGIN_DIR . 'includes/admin/admin-pages.php'; |
|
| 240 | - |
|
| 241 | - if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) { |
|
| 242 | - GetPaid_Post_Types_Admin::init(); |
|
| 243 | - |
|
| 244 | - require_once WPINV_PLUGIN_DIR . 'includes/admin/wpinv-admin-functions.php'; |
|
| 245 | - require_once WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-payment-form.php'; |
|
| 246 | - require_once WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-notes.php'; |
|
| 247 | - require_once WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-admin-menus.php'; |
|
| 248 | - require_once WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-users.php'; |
|
| 249 | - require_once WPINV_PLUGIN_DIR . 'includes/admin/class-getpaid-admin-profile.php'; |
|
| 250 | - // load the user class only on the users.php page |
|
| 251 | - global $pagenow; |
|
| 252 | - if ( $pagenow == 'users.php' ) { |
|
| 253 | - new WPInv_Admin_Users(); |
|
| 254 | - } |
|
| 255 | - } |
|
| 256 | - |
|
| 257 | - // Register cli commands |
|
| 258 | - if ( defined( 'WP_CLI' ) && WP_CLI ) { |
|
| 259 | - require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-cli.php'; |
|
| 260 | - WP_CLI::add_command( 'invoicing', 'WPInv_CLI' ); |
|
| 261 | - } |
|
| 262 | - } |
|
| 263 | - |
|
| 264 | - /** |
|
| 265 | - * Class autoloader |
|
| 266 | - * |
|
| 267 | - * @param string $class_name The name of the class to load. |
|
| 268 | - * @access public |
|
| 269 | - * @since 1.0.19 |
|
| 270 | - * @return void |
|
| 271 | - */ |
|
| 272 | - public function autoload( $class_name ) { |
|
| 273 | - // Normalize the class name... |
|
| 274 | - $class_name = strtolower( $class_name ); |
|
| 275 | - |
|
| 276 | - // ... and make sure it is our class. |
|
| 277 | - if ( false === strpos( $class_name, 'getpaid_' ) && false === strpos( $class_name, 'wpinv_' ) ) { |
|
| 278 | - return; |
|
| 279 | - } |
|
| 280 | - |
|
| 281 | - // Next, prepare the file name from the class. |
|
| 282 | - $file_name = 'class-' . str_replace( '_', '-', $class_name ) . '.php'; |
|
| 283 | - |
|
| 284 | - // Base path of the classes. |
|
| 285 | - $plugin_path = untrailingslashit( WPINV_PLUGIN_DIR ); |
|
| 286 | - |
|
| 287 | - // And an array of possible locations in order of importance. |
|
| 288 | - $locations = array( |
|
| 289 | - "$plugin_path/includes", |
|
| 290 | - "$plugin_path/includes/data-stores", |
|
| 291 | - "$plugin_path/includes/gateways", |
|
| 292 | - "$plugin_path/includes/payments", |
|
| 293 | - "$plugin_path/includes/geolocation", |
|
| 294 | - "$plugin_path/includes/reports", |
|
| 295 | - "$plugin_path/includes/api", |
|
| 296 | - "$plugin_path/includes/admin", |
|
| 297 | - "$plugin_path/includes/admin/meta-boxes", |
|
| 298 | - ); |
|
| 299 | - |
|
| 300 | - foreach ( apply_filters( 'getpaid_autoload_locations', $locations ) as $location ) { |
|
| 301 | - if ( file_exists( trailingslashit( $location ) . $file_name ) ) { |
|
| 302 | - include trailingslashit( $location ) . $file_name; |
|
| 303 | - break; |
|
| 304 | - } |
|
| 305 | - } |
|
| 306 | - } |
|
| 307 | - |
|
| 308 | - /** |
|
| 309 | - * Inits hooks etc. |
|
| 310 | - */ |
|
| 311 | - public function init() { |
|
| 312 | - // Fires before getpaid inits. |
|
| 313 | - do_action( 'before_getpaid_init', $this ); |
|
| 314 | - |
|
| 315 | - // Maybe upgrade. |
|
| 316 | - $this->maybe_upgrade_database(); |
|
| 317 | - |
|
| 318 | - // Load default gateways. |
|
| 319 | - $gateways = apply_filters( |
|
| 320 | - 'getpaid_default_gateways', |
|
| 321 | - array( |
|
| 322 | - 'manual' => 'GetPaid_Manual_Gateway', |
|
| 323 | - 'paypal' => 'GetPaid_Paypal_Gateway', |
|
| 324 | - 'worldpay' => 'GetPaid_Worldpay_Gateway', |
|
| 325 | - 'bank_transfer' => 'GetPaid_Bank_Transfer_Gateway', |
|
| 326 | - 'authorizenet' => 'GetPaid_Authorize_Net_Gateway', |
|
| 327 | - ) |
|
| 328 | - ); |
|
| 329 | - |
|
| 330 | - foreach ( $gateways as $id => $class ) { |
|
| 331 | - $this->gateways[ $id ] = new $class(); |
|
| 332 | - } |
|
| 333 | - |
|
| 334 | - if ( 'yes' != get_option( 'wpinv_renamed_gateways' ) ) { |
|
| 335 | - GetPaid_Installer::rename_gateways_label(); |
|
| 336 | - update_option( 'wpinv_renamed_gateways', 'yes' ); |
|
| 337 | - } |
|
| 338 | - |
|
| 339 | - // Fires after getpaid inits. |
|
| 340 | - do_action( 'getpaid_init', $this ); |
|
| 341 | - } |
|
| 342 | - |
|
| 343 | - /** |
|
| 344 | - * Checks if this is an IPN request and processes it. |
|
| 345 | - */ |
|
| 346 | - public function maybe_process_ipn() { |
|
| 347 | - // Ensure that this is an IPN request. |
|
| 348 | - if ( empty( $_GET['wpi-listener'] ) || 'IPN' !== $_GET['wpi-listener'] || empty( $_GET['wpi-gateway'] ) ) { |
|
| 349 | - return; |
|
| 350 | - } |
|
| 351 | - |
|
| 352 | - $gateway = sanitize_text_field( $_GET['wpi-gateway'] ); |
|
| 353 | - |
|
| 354 | - do_action( 'wpinv_verify_payment_ipn', $gateway ); |
|
| 355 | - do_action( "wpinv_verify_{$gateway}_ipn" ); |
|
| 356 | - exit; |
|
| 357 | - } |
|
| 358 | - |
|
| 359 | - public function enqueue_scripts() { |
|
| 360 | - // Fires before adding scripts. |
|
| 361 | - do_action( 'getpaid_enqueue_scripts' ); |
|
| 362 | - |
|
| 363 | - $localize = array(); |
|
| 364 | - $localize['ajax_url'] = admin_url( 'admin-ajax.php' ); |
|
| 365 | - $localize['thousands'] = wpinv_thousands_separator(); |
|
| 366 | - $localize['decimals'] = wpinv_decimal_separator(); |
|
| 367 | - $localize['nonce'] = wp_create_nonce( 'wpinv-nonce' ); |
|
| 368 | - $localize['txtComplete'] = __( 'Continue', 'invoicing' ); |
|
| 369 | - $localize['UseTaxes'] = wpinv_use_taxes(); |
|
| 370 | - $localize['formNonce'] = wp_create_nonce( 'getpaid_form_nonce' ); |
|
| 371 | - $localize['loading'] = __( 'Loading...', 'invoicing' ); |
|
| 372 | - $localize['connectionError'] = __( 'Could not establish a connection to the server.', 'invoicing' ); |
|
| 373 | - $localize['recaptchaSettings'] = getpaid_get_recaptcha_settings(); |
|
| 374 | - |
|
| 375 | - $localize = apply_filters( 'wpinv_front_js_localize', $localize ); |
|
| 376 | - |
|
| 377 | - // reCaptcha. |
|
| 378 | - if ( getpaid_is_recaptcha_enabled() && ( $recaptcha_js = getpaid_recaptcha_api_url() ) ) { |
|
| 379 | - wp_enqueue_script( 'recaptcha', $recaptcha_js, array(), null, true ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion |
|
| 380 | - } |
|
| 381 | - |
|
| 382 | - wp_enqueue_script( 'wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/payment-forms.min.js', array( 'jquery' ), WPINV_VERSION, true ); |
|
| 383 | - wp_localize_script( 'wpinv-front-script', 'WPInv', $localize ); |
|
| 384 | - } |
|
| 385 | - |
|
| 386 | - public function wpinv_actions() { |
|
| 387 | - if ( isset( $_REQUEST['wpi_action'] ) ) { |
|
| 388 | - do_action( 'wpinv_' . wpinv_sanitize_key( $_REQUEST['wpi_action'] ), $_REQUEST ); |
|
| 389 | - } |
|
| 390 | - |
|
| 391 | - if ( defined( 'WP_ALL_IMPORT_ROOT_DIR' ) ) { |
|
| 392 | - include plugin_dir_path( __FILE__ ) . 'libraries/wp-all-import/class-getpaid-wp-all-import.php'; |
|
| 393 | - } |
|
| 394 | - } |
|
| 395 | - |
|
| 396 | - /** |
|
| 397 | - * Fires an action after verifying that a user can fire them. |
|
| 398 | - * |
|
| 399 | - * Note: If the action is on an invoice, subscription etc, esure that the |
|
| 400 | - * current user owns the invoice/subscription. |
|
| 401 | - */ |
|
| 402 | - public function maybe_do_authenticated_action() { |
|
| 403 | - if ( isset( $_REQUEST['getpaid-action'] ) && isset( $_REQUEST['getpaid-nonce'] ) && wp_verify_nonce( $_REQUEST['getpaid-nonce'], 'getpaid-nonce' ) ) { |
|
| 404 | - $key = sanitize_key( $_REQUEST['getpaid-action'] ); |
|
| 405 | - $data = wp_unslash( $_REQUEST ); |
|
| 406 | - |
|
| 407 | - if ( is_user_logged_in() ) { |
|
| 408 | - do_action( "getpaid_authenticated_action_$key", $data ); |
|
| 409 | - } |
|
| 410 | - |
|
| 411 | - do_action( "getpaid_unauthenticated_action_$key", $data ); |
|
| 412 | - } |
|
| 413 | - } |
|
| 414 | - |
|
| 415 | - public function pre_get_posts( $wp_query ) { |
|
| 416 | - if ( ! is_admin() && ! empty( $wp_query->query_vars['post_type'] ) && getpaid_is_invoice_post_type( $wp_query->query_vars['post_type'] ) && is_user_logged_in() && is_single() && $wp_query->is_main_query() ) { |
|
| 417 | - $wp_query->query_vars['post_status'] = array_keys( wpinv_get_invoice_statuses( false, false, $wp_query->query_vars['post_type'] ) ); |
|
| 418 | - } |
|
| 419 | - |
|
| 420 | - return $wp_query; |
|
| 421 | - } |
|
| 422 | - |
|
| 423 | - /** |
|
| 424 | - * Register widgets |
|
| 425 | - * |
|
| 426 | - */ |
|
| 427 | - public function register_widgets() { |
|
| 428 | - global $pagenow; |
|
| 429 | - |
|
| 430 | - // Currently, UX Builder does not work particulaly well with SuperDuper. |
|
| 431 | - // So we disable our widgets when editing a page with UX Builder. |
|
| 432 | - if ( function_exists( 'ux_builder_is_active' ) && ux_builder_is_active() ) { |
|
| 433 | - return; |
|
| 434 | - } |
|
| 435 | - |
|
| 436 | - $block_widget_init_screens = function_exists( 'sd_pagenow_exclude' ) ? sd_pagenow_exclude() : array(); |
|
| 437 | - |
|
| 438 | - if ( is_admin() && $pagenow && in_array( $pagenow, $block_widget_init_screens ) ) { |
|
| 439 | - // don't initiate in these conditions. |
|
| 440 | - } else { |
|
| 441 | - // Only load allowed widgets. |
|
| 442 | - $exclude = function_exists( 'sd_widget_exclude' ) ? sd_widget_exclude() : array(); |
|
| 443 | - $widgets = apply_filters( |
|
| 444 | - 'getpaid_widget_classes', |
|
| 445 | - array( |
|
| 446 | - 'WPInv_Checkout_Widget', |
|
| 447 | - 'WPInv_History_Widget', |
|
| 448 | - 'WPInv_Receipt_Widget', |
|
| 449 | - 'WPInv_Subscriptions_Widget', |
|
| 450 | - 'WPInv_Buy_Item_Widget', |
|
| 451 | - 'WPInv_Messages_Widget', |
|
| 452 | - 'WPInv_GetPaid_Widget', |
|
| 453 | - 'WPInv_Invoice_Widget', |
|
| 454 | - ) |
|
| 455 | - ); |
|
| 456 | - |
|
| 457 | - // For each widget... |
|
| 458 | - foreach ( $widgets as $widget ) { |
|
| 459 | - // Abort early if it is excluded for this page. |
|
| 460 | - if ( in_array( $widget, $exclude ) ) { |
|
| 461 | - continue; |
|
| 462 | - } |
|
| 463 | - |
|
| 464 | - // SD V1 used to extend the widget class. V2 does not, so we cannot call register widget on it. |
|
| 465 | - if ( is_subclass_of( $widget, 'WP_Widget' ) ) { |
|
| 466 | - register_widget( $widget ); |
|
| 467 | - } else { |
|
| 468 | - new $widget(); |
|
| 469 | - } |
|
| 470 | - } |
|
| 471 | - } |
|
| 472 | - } |
|
| 473 | - |
|
| 474 | - /** |
|
| 475 | - * Upgrades the database. |
|
| 476 | - * |
|
| 477 | - * @since 2.0.2 |
|
| 478 | - */ |
|
| 479 | - public function maybe_upgrade_database() { |
|
| 480 | - // Ensure the database tables are up to date. |
|
| 481 | - GetPaid_Installer::maybe_create_db_tables(); |
|
| 482 | - |
|
| 483 | - $wpi_version = get_option( 'wpinv_version', 0 ); |
|
| 484 | - |
|
| 485 | - if ( $wpi_version == WPINV_VERSION ) { |
|
| 486 | - return; |
|
| 487 | - } |
|
| 488 | - |
|
| 489 | - $installer = new GetPaid_Installer(); |
|
| 490 | - |
|
| 491 | - if ( empty( $wpi_version ) ) { |
|
| 492 | - return $installer->upgrade_db( 0 ); |
|
| 493 | - } |
|
| 494 | - |
|
| 495 | - $upgrades = array( |
|
| 496 | - '0.0.5' => '004', |
|
| 497 | - '1.0.3' => '102', |
|
| 498 | - '2.0.0' => '118', |
|
| 499 | - '2.8.0' => '279', |
|
| 500 | - ); |
|
| 501 | - |
|
| 502 | - foreach ( $upgrades as $key => $method ) { |
|
| 503 | - if ( version_compare( $wpi_version, $key, '<' ) ) { |
|
| 504 | - return $installer->upgrade_db( $method ); |
|
| 505 | - } |
|
| 506 | - } |
|
| 507 | - } |
|
| 508 | - |
|
| 509 | - /** |
|
| 510 | - * Flushes the permalinks if needed. |
|
| 511 | - * |
|
| 512 | - * @since 2.0.8 |
|
| 513 | - */ |
|
| 514 | - public function maybe_flush_permalinks() { |
|
| 515 | - $flush = get_option( 'wpinv_flush_permalinks', 0 ); |
|
| 516 | - |
|
| 517 | - if ( ! empty( $flush ) ) { |
|
| 518 | - flush_rewrite_rules(); |
|
| 519 | - delete_option( 'wpinv_flush_permalinks' ); |
|
| 520 | - } |
|
| 521 | - } |
|
| 522 | - |
|
| 523 | - /** |
|
| 524 | - * Remove our pages from yoast sitemaps. |
|
| 525 | - * |
|
| 526 | - * @since 1.0.19 |
|
| 527 | - * @param int[] $excluded_posts_ids |
|
| 528 | - */ |
|
| 529 | - public function wpseo_exclude_from_sitemap_by_post_ids( $excluded_posts_ids ) { |
|
| 530 | - // Ensure that we have an array. |
|
| 531 | - if ( ! is_array( $excluded_posts_ids ) ) { |
|
| 532 | - $excluded_posts_ids = array(); |
|
| 533 | - } |
|
| 534 | - |
|
| 535 | - // Prepare our pages. |
|
| 536 | - $our_pages = array(); |
|
| 537 | - |
|
| 538 | - // Checkout page. |
|
| 539 | - $our_pages[] = wpinv_get_option( 'checkout_page', false ); |
|
| 540 | - |
|
| 541 | - // Success page. |
|
| 542 | - $our_pages[] = wpinv_get_option( 'success_page', false ); |
|
| 543 | - |
|
| 544 | - // Failure page. |
|
| 545 | - $our_pages[] = wpinv_get_option( 'failure_page', false ); |
|
| 546 | - |
|
| 547 | - // History page. |
|
| 548 | - $our_pages[] = wpinv_get_option( 'invoice_history_page', false ); |
|
| 549 | - |
|
| 550 | - // Subscriptions page. |
|
| 551 | - $our_pages[] = wpinv_get_option( 'invoice_subscription_page', false ); |
|
| 552 | - |
|
| 553 | - $our_pages = array_map( 'intval', array_filter( $our_pages ) ); |
|
| 554 | - |
|
| 555 | - $excluded_posts_ids = $excluded_posts_ids + $our_pages; |
|
| 556 | - |
|
| 557 | - return array_unique( $excluded_posts_ids ); |
|
| 558 | - } |
|
| 559 | - |
|
| 560 | - /** |
|
| 561 | - * Remove our pages from yoast sitemaps. |
|
| 562 | - * |
|
| 563 | - * @since 1.0.19 |
|
| 564 | - * @param string[] $post_types |
|
| 565 | - */ |
|
| 566 | - public function exclude_invoicing_post_types( $post_types ) { |
|
| 567 | - // Ensure that we have an array. |
|
| 568 | - if ( ! is_array( $post_types ) ) { |
|
| 569 | - $post_types = array(); |
|
| 570 | - } |
|
| 571 | - |
|
| 572 | - // Remove our post types. |
|
| 573 | - return array_diff( $post_types, array_keys( getpaid_get_invoice_post_types() ) ); |
|
| 574 | - } |
|
| 575 | - |
|
| 576 | - /** |
|
| 577 | - * Displays additional footer code. |
|
| 578 | - * |
|
| 579 | - * @since 2.0.0 |
|
| 580 | - */ |
|
| 581 | - public function wp_footer() { |
|
| 582 | - wpinv_get_template( 'frontend-footer.php' ); |
|
| 583 | - } |
|
| 584 | - |
|
| 585 | - /** |
|
| 586 | - * Displays additional header code. |
|
| 587 | - * |
|
| 588 | - * @since 2.0.0 |
|
| 589 | - */ |
|
| 590 | - public function wp_head() { |
|
| 591 | - wpinv_get_template( 'frontend-head.php' ); |
|
| 592 | - } |
|
| 593 | - |
|
| 594 | - /** |
|
| 595 | - * Custom query vars. |
|
| 596 | - * |
|
| 597 | - */ |
|
| 598 | - public function custom_query_vars( $vars ) { |
|
| 599 | - $vars[] = 'getpaid-ipn'; |
|
| 600 | - return $vars; |
|
| 601 | - } |
|
| 602 | - |
|
| 603 | - /** |
|
| 604 | - * Add rewrite tags and rules. |
|
| 605 | - * |
|
| 606 | - */ |
|
| 607 | - public function add_rewrite_rule() { |
|
| 608 | - $tag = 'getpaid-ipn'; |
|
| 609 | - add_rewrite_tag( "%$tag%", '([^&]+)' ); |
|
| 610 | - add_rewrite_rule( "^$tag/([^/]*)/?", "index.php?$tag=\$matches[1]", 'top' ); |
|
| 611 | - } |
|
| 612 | - |
|
| 613 | - /** |
|
| 614 | - * Processes non-query string ipns. |
|
| 615 | - * |
|
| 616 | - */ |
|
| 617 | - public function maybe_process_new_ipn( $query ) { |
|
| 618 | - if ( is_admin() || ! $query->is_main_query() ) { |
|
| 619 | - return; |
|
| 620 | - } |
|
| 621 | - |
|
| 622 | - $gateway = get_query_var( 'getpaid-ipn' ); |
|
| 623 | - |
|
| 624 | - if ( ! empty( $gateway ) ) { |
|
| 625 | - $gateway = sanitize_text_field( $gateway ); |
|
| 626 | - nocache_headers(); |
|
| 627 | - do_action( 'wpinv_verify_payment_ipn', $gateway ); |
|
| 628 | - do_action( "wpinv_verify_{$gateway}_ipn" ); |
|
| 629 | - exit; |
|
| 630 | - } |
|
| 631 | - } |
|
| 17 | + /** |
|
| 18 | + * GetPaid version. |
|
| 19 | + * |
|
| 20 | + * @var string |
|
| 21 | + */ |
|
| 22 | + public $version; |
|
| 23 | + |
|
| 24 | + /** |
|
| 25 | + * Data container. |
|
| 26 | + * |
|
| 27 | + * @var array |
|
| 28 | + */ |
|
| 29 | + protected $data = array(); |
|
| 30 | + |
|
| 31 | + /** |
|
| 32 | + * Form elements instance. |
|
| 33 | + * |
|
| 34 | + * @var WPInv_Payment_Form_Elements |
|
| 35 | + */ |
|
| 36 | + public $form_elements; |
|
| 37 | + |
|
| 38 | + /** |
|
| 39 | + * @var array An array of payment gateways. |
|
| 40 | + */ |
|
| 41 | + public $gateways; |
|
| 42 | + |
|
| 43 | + /** |
|
| 44 | + * Class constructor. |
|
| 45 | + */ |
|
| 46 | + public function __construct() { |
|
| 47 | + $this->define_constants(); |
|
| 48 | + $this->includes(); |
|
| 49 | + $this->init_hooks(); |
|
| 50 | + $this->set_properties(); |
|
| 51 | + } |
|
| 52 | + |
|
| 53 | + /** |
|
| 54 | + * Sets a custom data property. |
|
| 55 | + * |
|
| 56 | + * @param string $prop The prop to set. |
|
| 57 | + * @param mixed $value The value to retrieve. |
|
| 58 | + */ |
|
| 59 | + public function set( $prop, $value ) { |
|
| 60 | + $this->data[ $prop ] = $value; |
|
| 61 | + } |
|
| 62 | + |
|
| 63 | + /** |
|
| 64 | + * Gets a custom data property. |
|
| 65 | + * |
|
| 66 | + * @param string $prop The prop to set. |
|
| 67 | + * @return mixed The value. |
|
| 68 | + */ |
|
| 69 | + public function get( $prop ) { |
|
| 70 | + if ( isset( $this->data[ $prop ] ) ) { |
|
| 71 | + return $this->data[ $prop ]; |
|
| 72 | + } |
|
| 73 | + |
|
| 74 | + return null; |
|
| 75 | + } |
|
| 76 | + |
|
| 77 | + /** |
|
| 78 | + * Define class properties. |
|
| 79 | + */ |
|
| 80 | + public function set_properties() { |
|
| 81 | + // Sessions. |
|
| 82 | + $this->set( 'session', new WPInv_Session_Handler() ); |
|
| 83 | + $GLOBALS['wpi_session'] = $this->get( 'session' ); // Backwards compatibility. |
|
| 84 | + $GLOBALS['wpinv_euvat'] = new WPInv_EUVat(); // Backwards compatibility. |
|
| 85 | + |
|
| 86 | + // Init other objects. |
|
| 87 | + $this->set( 'notes', new WPInv_Notes() ); |
|
| 88 | + $this->set( 'api', new WPInv_API() ); |
|
| 89 | + $this->set( 'post_types', new GetPaid_Post_Types() ); |
|
| 90 | + $this->set( 'template', new GetPaid_Template() ); |
|
| 91 | + $this->set( 'admin', new GetPaid_Admin() ); |
|
| 92 | + $this->set( 'subscriptions', new WPInv_Subscriptions() ); |
|
| 93 | + $this->set( 'invoice_emails', new GetPaid_Invoice_Notification_Emails() ); |
|
| 94 | + $this->set( 'subscription_emails', new GetPaid_Subscription_Notification_Emails() ); |
|
| 95 | + $this->set( 'daily_maintenace', new GetPaid_Daily_Maintenance() ); |
|
| 96 | + $this->set( 'payment_forms', new GetPaid_Payment_Forms() ); |
|
| 97 | + $this->set( 'maxmind', new GetPaid_MaxMind_Geolocation() ); |
|
| 98 | + } |
|
| 99 | + |
|
| 100 | + /** |
|
| 101 | + * Define plugin constants. |
|
| 102 | + */ |
|
| 103 | + public function define_constants() { |
|
| 104 | + define( 'WPINV_PLUGIN_DIR', plugin_dir_path( WPINV_PLUGIN_FILE ) ); |
|
| 105 | + define( 'WPINV_PLUGIN_URL', plugin_dir_url( WPINV_PLUGIN_FILE ) ); |
|
| 106 | + $this->version = WPINV_VERSION; |
|
| 107 | + } |
|
| 108 | + |
|
| 109 | + /** |
|
| 110 | + * Hook into actions and filters. |
|
| 111 | + * |
|
| 112 | + * @since 1.0.19 |
|
| 113 | + */ |
|
| 114 | + protected function init_hooks() { |
|
| 115 | + /* Internationalize the text strings used. */ |
|
| 116 | + add_action( 'plugins_loaded', array( &$this, 'plugins_loaded' ) ); |
|
| 117 | + |
|
| 118 | + // Init the plugin after WordPress inits. |
|
| 119 | + add_action( 'init', array( $this, 'init' ), 1 ); |
|
| 120 | + add_action( 'init', array( $this, 'maybe_process_ipn' ), 10 ); |
|
| 121 | + add_action( 'init', array( $this, 'wpinv_actions' ) ); |
|
| 122 | + add_action( 'init', array( $this, 'maybe_do_authenticated_action' ), 100 ); |
|
| 123 | + add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 11 ); |
|
| 124 | + add_action( 'wp_footer', array( $this, 'wp_footer' ) ); |
|
| 125 | + add_action( 'wp_head', array( $this, 'wp_head' ) ); |
|
| 126 | + add_action( 'widgets_init', array( $this, 'register_widgets' ) ); |
|
| 127 | + add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', array( $this, 'wpseo_exclude_from_sitemap_by_post_ids' ) ); |
|
| 128 | + add_filter( 'the_seo_framework_sitemap_supported_post_types', array( $this, 'exclude_invoicing_post_types' ) ); |
|
| 129 | + add_filter( 'pre_get_posts', array( &$this, 'pre_get_posts' ) ); |
|
| 130 | + |
|
| 131 | + add_filter( 'query_vars', array( $this, 'custom_query_vars' ) ); |
|
| 132 | + add_action( 'init', array( $this, 'add_rewrite_rule' ), 10, 0 ); |
|
| 133 | + add_action( 'pre_get_posts', array( $this, 'maybe_process_new_ipn' ), 1 ); |
|
| 134 | + |
|
| 135 | + // Fires after registering actions. |
|
| 136 | + do_action( 'wpinv_actions', $this ); |
|
| 137 | + do_action( 'getpaid_actions', $this ); |
|
| 138 | + } |
|
| 139 | + |
|
| 140 | + public function plugins_loaded() { |
|
| 141 | + /* Internationalize the text strings used. */ |
|
| 142 | + $this->load_textdomain(); |
|
| 143 | + |
|
| 144 | + do_action( 'wpinv_loaded' ); |
|
| 145 | + |
|
| 146 | + // Fix oxygen page builder conflict |
|
| 147 | + if ( function_exists( 'ct_css_output' ) ) { |
|
| 148 | + wpinv_oxygen_fix_conflict(); |
|
| 149 | + } |
|
| 150 | + } |
|
| 151 | + |
|
| 152 | + /** |
|
| 153 | + * Load Localisation files. |
|
| 154 | + * |
|
| 155 | + * Note: the first-loaded translation file overrides any following ones if the same translation is present. |
|
| 156 | + * |
|
| 157 | + * Locales found in: |
|
| 158 | + * - WP_LANG_DIR/plugins/invoicing-LOCALE.mo |
|
| 159 | + * - WP_PLUGIN_DIR/invoicing/languages/invoicing-LOCALE.mo |
|
| 160 | + * |
|
| 161 | + * @since 1.0.0 |
|
| 162 | + */ |
|
| 163 | + public function load_textdomain() { |
|
| 164 | + // Determines the current locale. |
|
| 165 | + if ( function_exists( 'determine_locale' ) ) { |
|
| 166 | + $locale = determine_locale(); |
|
| 167 | + } else if ( function_exists( 'get_user_locale' ) ) { |
|
| 168 | + $locale = get_user_locale(); |
|
| 169 | + } else { |
|
| 170 | + $locale = get_locale(); |
|
| 171 | + } |
|
| 172 | + |
|
| 173 | + /** |
|
| 174 | + * Filter the locale to use for translations. |
|
| 175 | + */ |
|
| 176 | + $locale = apply_filters( 'plugin_locale', $locale, 'invoicing' ); |
|
| 177 | + |
|
| 178 | + unload_textdomain( 'invoicing', true ); |
|
| 179 | + load_textdomain( 'invoicing', WP_LANG_DIR . '/invoicing/invoicing-' . $locale . '.mo' ); |
|
| 180 | + load_plugin_textdomain( 'invoicing', false, plugin_basename( dirname( WPINV_PLUGIN_FILE ) ) . '/languages/' ); |
|
| 181 | + } |
|
| 182 | + |
|
| 183 | + /** |
|
| 184 | + * Include required core files used in admin and on the frontend. |
|
| 185 | + */ |
|
| 186 | + public function includes() { |
|
| 187 | + // Start with the settings. |
|
| 188 | + require_once WPINV_PLUGIN_DIR . 'includes/admin/register-settings.php'; |
|
| 189 | + |
|
| 190 | + // Packages/libraries. |
|
| 191 | + require_once WPINV_PLUGIN_DIR . 'vendor/autoload.php'; |
|
| 192 | + require_once WPINV_PLUGIN_DIR . 'vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php'; |
|
| 193 | + |
|
| 194 | + // Load functions. |
|
| 195 | + require_once WPINV_PLUGIN_DIR . 'includes/deprecated-functions.php'; |
|
| 196 | + require_once WPINV_PLUGIN_DIR . 'includes/wpinv-email-functions.php'; |
|
| 197 | + require_once WPINV_PLUGIN_DIR . 'includes/wpinv-general-functions.php'; |
|
| 198 | + require_once WPINV_PLUGIN_DIR . 'includes/wpinv-helper-functions.php'; |
|
| 199 | + require_once WPINV_PLUGIN_DIR . 'includes/wpinv-tax-functions.php'; |
|
| 200 | + require_once WPINV_PLUGIN_DIR . 'includes/wpinv-template-functions.php'; |
|
| 201 | + require_once WPINV_PLUGIN_DIR . 'includes/wpinv-address-functions.php'; |
|
| 202 | + require_once WPINV_PLUGIN_DIR . 'includes/invoice-functions.php'; |
|
| 203 | + require_once WPINV_PLUGIN_DIR . 'includes/subscription-functions.php'; |
|
| 204 | + require_once WPINV_PLUGIN_DIR . 'includes/wpinv-item-functions.php'; |
|
| 205 | + require_once WPINV_PLUGIN_DIR . 'includes/wpinv-discount-functions.php'; |
|
| 206 | + require_once WPINV_PLUGIN_DIR . 'includes/wpinv-gateway-functions.php'; |
|
| 207 | + require_once WPINV_PLUGIN_DIR . 'includes/wpinv-payment-functions.php'; |
|
| 208 | + require_once WPINV_PLUGIN_DIR . 'includes/user-functions.php'; |
|
| 209 | + require_once WPINV_PLUGIN_DIR . 'includes/error-functions.php'; |
|
| 210 | + |
|
| 211 | + // Register autoloader. |
|
| 212 | + try { |
|
| 213 | + spl_autoload_register( array( $this, 'autoload' ), true ); |
|
| 214 | + } catch ( Exception $e ) { |
|
| 215 | + wpinv_error_log( $e->getMessage(), '', __FILE__, 149, true ); |
|
| 216 | + } |
|
| 217 | + |
|
| 218 | + require_once WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-session.php'; |
|
| 219 | + require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-session-handler.php'; |
|
| 220 | + require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-ajax.php'; |
|
| 221 | + require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-api.php'; |
|
| 222 | + require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-cache-helper.php'; |
|
| 223 | + require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-db.php'; |
|
| 224 | + require_once WPINV_PLUGIN_DIR . 'includes/admin/subscriptions.php'; |
|
| 225 | + require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-subscriptions-db.php'; |
|
| 226 | + require_once WPINV_PLUGIN_DIR . 'includes/wpinv-subscription.php'; |
|
| 227 | + require_once WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-privacy.php'; |
|
| 228 | + require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-privacy.php'; |
|
| 229 | + require_once WPINV_PLUGIN_DIR . 'includes/libraries/class-ayecode-addons.php'; |
|
| 230 | + require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-addons.php'; |
|
| 231 | + require_once WPINV_PLUGIN_DIR . 'widgets/checkout.php'; |
|
| 232 | + require_once WPINV_PLUGIN_DIR . 'widgets/invoice-history.php'; |
|
| 233 | + require_once WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php'; |
|
| 234 | + require_once WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php'; |
|
| 235 | + require_once WPINV_PLUGIN_DIR . 'widgets/subscriptions.php'; |
|
| 236 | + require_once WPINV_PLUGIN_DIR . 'widgets/buy-item.php'; |
|
| 237 | + require_once WPINV_PLUGIN_DIR . 'widgets/getpaid.php'; |
|
| 238 | + require_once WPINV_PLUGIN_DIR . 'widgets/invoice.php'; |
|
| 239 | + require_once WPINV_PLUGIN_DIR . 'includes/admin/admin-pages.php'; |
|
| 240 | + |
|
| 241 | + if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) { |
|
| 242 | + GetPaid_Post_Types_Admin::init(); |
|
| 243 | + |
|
| 244 | + require_once WPINV_PLUGIN_DIR . 'includes/admin/wpinv-admin-functions.php'; |
|
| 245 | + require_once WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-payment-form.php'; |
|
| 246 | + require_once WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-notes.php'; |
|
| 247 | + require_once WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-admin-menus.php'; |
|
| 248 | + require_once WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-users.php'; |
|
| 249 | + require_once WPINV_PLUGIN_DIR . 'includes/admin/class-getpaid-admin-profile.php'; |
|
| 250 | + // load the user class only on the users.php page |
|
| 251 | + global $pagenow; |
|
| 252 | + if ( $pagenow == 'users.php' ) { |
|
| 253 | + new WPInv_Admin_Users(); |
|
| 254 | + } |
|
| 255 | + } |
|
| 256 | + |
|
| 257 | + // Register cli commands |
|
| 258 | + if ( defined( 'WP_CLI' ) && WP_CLI ) { |
|
| 259 | + require_once WPINV_PLUGIN_DIR . 'includes/class-wpinv-cli.php'; |
|
| 260 | + WP_CLI::add_command( 'invoicing', 'WPInv_CLI' ); |
|
| 261 | + } |
|
| 262 | + } |
|
| 263 | + |
|
| 264 | + /** |
|
| 265 | + * Class autoloader |
|
| 266 | + * |
|
| 267 | + * @param string $class_name The name of the class to load. |
|
| 268 | + * @access public |
|
| 269 | + * @since 1.0.19 |
|
| 270 | + * @return void |
|
| 271 | + */ |
|
| 272 | + public function autoload( $class_name ) { |
|
| 273 | + // Normalize the class name... |
|
| 274 | + $class_name = strtolower( $class_name ); |
|
| 275 | + |
|
| 276 | + // ... and make sure it is our class. |
|
| 277 | + if ( false === strpos( $class_name, 'getpaid_' ) && false === strpos( $class_name, 'wpinv_' ) ) { |
|
| 278 | + return; |
|
| 279 | + } |
|
| 280 | + |
|
| 281 | + // Next, prepare the file name from the class. |
|
| 282 | + $file_name = 'class-' . str_replace( '_', '-', $class_name ) . '.php'; |
|
| 283 | + |
|
| 284 | + // Base path of the classes. |
|
| 285 | + $plugin_path = untrailingslashit( WPINV_PLUGIN_DIR ); |
|
| 286 | + |
|
| 287 | + // And an array of possible locations in order of importance. |
|
| 288 | + $locations = array( |
|
| 289 | + "$plugin_path/includes", |
|
| 290 | + "$plugin_path/includes/data-stores", |
|
| 291 | + "$plugin_path/includes/gateways", |
|
| 292 | + "$plugin_path/includes/payments", |
|
| 293 | + "$plugin_path/includes/geolocation", |
|
| 294 | + "$plugin_path/includes/reports", |
|
| 295 | + "$plugin_path/includes/api", |
|
| 296 | + "$plugin_path/includes/admin", |
|
| 297 | + "$plugin_path/includes/admin/meta-boxes", |
|
| 298 | + ); |
|
| 299 | + |
|
| 300 | + foreach ( apply_filters( 'getpaid_autoload_locations', $locations ) as $location ) { |
|
| 301 | + if ( file_exists( trailingslashit( $location ) . $file_name ) ) { |
|
| 302 | + include trailingslashit( $location ) . $file_name; |
|
| 303 | + break; |
|
| 304 | + } |
|
| 305 | + } |
|
| 306 | + } |
|
| 307 | + |
|
| 308 | + /** |
|
| 309 | + * Inits hooks etc. |
|
| 310 | + */ |
|
| 311 | + public function init() { |
|
| 312 | + // Fires before getpaid inits. |
|
| 313 | + do_action( 'before_getpaid_init', $this ); |
|
| 314 | + |
|
| 315 | + // Maybe upgrade. |
|
| 316 | + $this->maybe_upgrade_database(); |
|
| 317 | + |
|
| 318 | + // Load default gateways. |
|
| 319 | + $gateways = apply_filters( |
|
| 320 | + 'getpaid_default_gateways', |
|
| 321 | + array( |
|
| 322 | + 'manual' => 'GetPaid_Manual_Gateway', |
|
| 323 | + 'paypal' => 'GetPaid_Paypal_Gateway', |
|
| 324 | + 'worldpay' => 'GetPaid_Worldpay_Gateway', |
|
| 325 | + 'bank_transfer' => 'GetPaid_Bank_Transfer_Gateway', |
|
| 326 | + 'authorizenet' => 'GetPaid_Authorize_Net_Gateway', |
|
| 327 | + ) |
|
| 328 | + ); |
|
| 329 | + |
|
| 330 | + foreach ( $gateways as $id => $class ) { |
|
| 331 | + $this->gateways[ $id ] = new $class(); |
|
| 332 | + } |
|
| 333 | + |
|
| 334 | + if ( 'yes' != get_option( 'wpinv_renamed_gateways' ) ) { |
|
| 335 | + GetPaid_Installer::rename_gateways_label(); |
|
| 336 | + update_option( 'wpinv_renamed_gateways', 'yes' ); |
|
| 337 | + } |
|
| 338 | + |
|
| 339 | + // Fires after getpaid inits. |
|
| 340 | + do_action( 'getpaid_init', $this ); |
|
| 341 | + } |
|
| 342 | + |
|
| 343 | + /** |
|
| 344 | + * Checks if this is an IPN request and processes it. |
|
| 345 | + */ |
|
| 346 | + public function maybe_process_ipn() { |
|
| 347 | + // Ensure that this is an IPN request. |
|
| 348 | + if ( empty( $_GET['wpi-listener'] ) || 'IPN' !== $_GET['wpi-listener'] || empty( $_GET['wpi-gateway'] ) ) { |
|
| 349 | + return; |
|
| 350 | + } |
|
| 351 | + |
|
| 352 | + $gateway = sanitize_text_field( $_GET['wpi-gateway'] ); |
|
| 353 | + |
|
| 354 | + do_action( 'wpinv_verify_payment_ipn', $gateway ); |
|
| 355 | + do_action( "wpinv_verify_{$gateway}_ipn" ); |
|
| 356 | + exit; |
|
| 357 | + } |
|
| 358 | + |
|
| 359 | + public function enqueue_scripts() { |
|
| 360 | + // Fires before adding scripts. |
|
| 361 | + do_action( 'getpaid_enqueue_scripts' ); |
|
| 362 | + |
|
| 363 | + $localize = array(); |
|
| 364 | + $localize['ajax_url'] = admin_url( 'admin-ajax.php' ); |
|
| 365 | + $localize['thousands'] = wpinv_thousands_separator(); |
|
| 366 | + $localize['decimals'] = wpinv_decimal_separator(); |
|
| 367 | + $localize['nonce'] = wp_create_nonce( 'wpinv-nonce' ); |
|
| 368 | + $localize['txtComplete'] = __( 'Continue', 'invoicing' ); |
|
| 369 | + $localize['UseTaxes'] = wpinv_use_taxes(); |
|
| 370 | + $localize['formNonce'] = wp_create_nonce( 'getpaid_form_nonce' ); |
|
| 371 | + $localize['loading'] = __( 'Loading...', 'invoicing' ); |
|
| 372 | + $localize['connectionError'] = __( 'Could not establish a connection to the server.', 'invoicing' ); |
|
| 373 | + $localize['recaptchaSettings'] = getpaid_get_recaptcha_settings(); |
|
| 374 | + |
|
| 375 | + $localize = apply_filters( 'wpinv_front_js_localize', $localize ); |
|
| 376 | + |
|
| 377 | + // reCaptcha. |
|
| 378 | + if ( getpaid_is_recaptcha_enabled() && ( $recaptcha_js = getpaid_recaptcha_api_url() ) ) { |
|
| 379 | + wp_enqueue_script( 'recaptcha', $recaptcha_js, array(), null, true ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion |
|
| 380 | + } |
|
| 381 | + |
|
| 382 | + wp_enqueue_script( 'wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/payment-forms.min.js', array( 'jquery' ), WPINV_VERSION, true ); |
|
| 383 | + wp_localize_script( 'wpinv-front-script', 'WPInv', $localize ); |
|
| 384 | + } |
|
| 385 | + |
|
| 386 | + public function wpinv_actions() { |
|
| 387 | + if ( isset( $_REQUEST['wpi_action'] ) ) { |
|
| 388 | + do_action( 'wpinv_' . wpinv_sanitize_key( $_REQUEST['wpi_action'] ), $_REQUEST ); |
|
| 389 | + } |
|
| 390 | + |
|
| 391 | + if ( defined( 'WP_ALL_IMPORT_ROOT_DIR' ) ) { |
|
| 392 | + include plugin_dir_path( __FILE__ ) . 'libraries/wp-all-import/class-getpaid-wp-all-import.php'; |
|
| 393 | + } |
|
| 394 | + } |
|
| 395 | + |
|
| 396 | + /** |
|
| 397 | + * Fires an action after verifying that a user can fire them. |
|
| 398 | + * |
|
| 399 | + * Note: If the action is on an invoice, subscription etc, esure that the |
|
| 400 | + * current user owns the invoice/subscription. |
|
| 401 | + */ |
|
| 402 | + public function maybe_do_authenticated_action() { |
|
| 403 | + if ( isset( $_REQUEST['getpaid-action'] ) && isset( $_REQUEST['getpaid-nonce'] ) && wp_verify_nonce( $_REQUEST['getpaid-nonce'], 'getpaid-nonce' ) ) { |
|
| 404 | + $key = sanitize_key( $_REQUEST['getpaid-action'] ); |
|
| 405 | + $data = wp_unslash( $_REQUEST ); |
|
| 406 | + |
|
| 407 | + if ( is_user_logged_in() ) { |
|
| 408 | + do_action( "getpaid_authenticated_action_$key", $data ); |
|
| 409 | + } |
|
| 410 | + |
|
| 411 | + do_action( "getpaid_unauthenticated_action_$key", $data ); |
|
| 412 | + } |
|
| 413 | + } |
|
| 414 | + |
|
| 415 | + public function pre_get_posts( $wp_query ) { |
|
| 416 | + if ( ! is_admin() && ! empty( $wp_query->query_vars['post_type'] ) && getpaid_is_invoice_post_type( $wp_query->query_vars['post_type'] ) && is_user_logged_in() && is_single() && $wp_query->is_main_query() ) { |
|
| 417 | + $wp_query->query_vars['post_status'] = array_keys( wpinv_get_invoice_statuses( false, false, $wp_query->query_vars['post_type'] ) ); |
|
| 418 | + } |
|
| 419 | + |
|
| 420 | + return $wp_query; |
|
| 421 | + } |
|
| 422 | + |
|
| 423 | + /** |
|
| 424 | + * Register widgets |
|
| 425 | + * |
|
| 426 | + */ |
|
| 427 | + public function register_widgets() { |
|
| 428 | + global $pagenow; |
|
| 429 | + |
|
| 430 | + // Currently, UX Builder does not work particulaly well with SuperDuper. |
|
| 431 | + // So we disable our widgets when editing a page with UX Builder. |
|
| 432 | + if ( function_exists( 'ux_builder_is_active' ) && ux_builder_is_active() ) { |
|
| 433 | + return; |
|
| 434 | + } |
|
| 435 | + |
|
| 436 | + $block_widget_init_screens = function_exists( 'sd_pagenow_exclude' ) ? sd_pagenow_exclude() : array(); |
|
| 437 | + |
|
| 438 | + if ( is_admin() && $pagenow && in_array( $pagenow, $block_widget_init_screens ) ) { |
|
| 439 | + // don't initiate in these conditions. |
|
| 440 | + } else { |
|
| 441 | + // Only load allowed widgets. |
|
| 442 | + $exclude = function_exists( 'sd_widget_exclude' ) ? sd_widget_exclude() : array(); |
|
| 443 | + $widgets = apply_filters( |
|
| 444 | + 'getpaid_widget_classes', |
|
| 445 | + array( |
|
| 446 | + 'WPInv_Checkout_Widget', |
|
| 447 | + 'WPInv_History_Widget', |
|
| 448 | + 'WPInv_Receipt_Widget', |
|
| 449 | + 'WPInv_Subscriptions_Widget', |
|
| 450 | + 'WPInv_Buy_Item_Widget', |
|
| 451 | + 'WPInv_Messages_Widget', |
|
| 452 | + 'WPInv_GetPaid_Widget', |
|
| 453 | + 'WPInv_Invoice_Widget', |
|
| 454 | + ) |
|
| 455 | + ); |
|
| 456 | + |
|
| 457 | + // For each widget... |
|
| 458 | + foreach ( $widgets as $widget ) { |
|
| 459 | + // Abort early if it is excluded for this page. |
|
| 460 | + if ( in_array( $widget, $exclude ) ) { |
|
| 461 | + continue; |
|
| 462 | + } |
|
| 463 | + |
|
| 464 | + // SD V1 used to extend the widget class. V2 does not, so we cannot call register widget on it. |
|
| 465 | + if ( is_subclass_of( $widget, 'WP_Widget' ) ) { |
|
| 466 | + register_widget( $widget ); |
|
| 467 | + } else { |
|
| 468 | + new $widget(); |
|
| 469 | + } |
|
| 470 | + } |
|
| 471 | + } |
|
| 472 | + } |
|
| 473 | + |
|
| 474 | + /** |
|
| 475 | + * Upgrades the database. |
|
| 476 | + * |
|
| 477 | + * @since 2.0.2 |
|
| 478 | + */ |
|
| 479 | + public function maybe_upgrade_database() { |
|
| 480 | + // Ensure the database tables are up to date. |
|
| 481 | + GetPaid_Installer::maybe_create_db_tables(); |
|
| 482 | + |
|
| 483 | + $wpi_version = get_option( 'wpinv_version', 0 ); |
|
| 484 | + |
|
| 485 | + if ( $wpi_version == WPINV_VERSION ) { |
|
| 486 | + return; |
|
| 487 | + } |
|
| 488 | + |
|
| 489 | + $installer = new GetPaid_Installer(); |
|
| 490 | + |
|
| 491 | + if ( empty( $wpi_version ) ) { |
|
| 492 | + return $installer->upgrade_db( 0 ); |
|
| 493 | + } |
|
| 494 | + |
|
| 495 | + $upgrades = array( |
|
| 496 | + '0.0.5' => '004', |
|
| 497 | + '1.0.3' => '102', |
|
| 498 | + '2.0.0' => '118', |
|
| 499 | + '2.8.0' => '279', |
|
| 500 | + ); |
|
| 501 | + |
|
| 502 | + foreach ( $upgrades as $key => $method ) { |
|
| 503 | + if ( version_compare( $wpi_version, $key, '<' ) ) { |
|
| 504 | + return $installer->upgrade_db( $method ); |
|
| 505 | + } |
|
| 506 | + } |
|
| 507 | + } |
|
| 508 | + |
|
| 509 | + /** |
|
| 510 | + * Flushes the permalinks if needed. |
|
| 511 | + * |
|
| 512 | + * @since 2.0.8 |
|
| 513 | + */ |
|
| 514 | + public function maybe_flush_permalinks() { |
|
| 515 | + $flush = get_option( 'wpinv_flush_permalinks', 0 ); |
|
| 516 | + |
|
| 517 | + if ( ! empty( $flush ) ) { |
|
| 518 | + flush_rewrite_rules(); |
|
| 519 | + delete_option( 'wpinv_flush_permalinks' ); |
|
| 520 | + } |
|
| 521 | + } |
|
| 522 | + |
|
| 523 | + /** |
|
| 524 | + * Remove our pages from yoast sitemaps. |
|
| 525 | + * |
|
| 526 | + * @since 1.0.19 |
|
| 527 | + * @param int[] $excluded_posts_ids |
|
| 528 | + */ |
|
| 529 | + public function wpseo_exclude_from_sitemap_by_post_ids( $excluded_posts_ids ) { |
|
| 530 | + // Ensure that we have an array. |
|
| 531 | + if ( ! is_array( $excluded_posts_ids ) ) { |
|
| 532 | + $excluded_posts_ids = array(); |
|
| 533 | + } |
|
| 534 | + |
|
| 535 | + // Prepare our pages. |
|
| 536 | + $our_pages = array(); |
|
| 537 | + |
|
| 538 | + // Checkout page. |
|
| 539 | + $our_pages[] = wpinv_get_option( 'checkout_page', false ); |
|
| 540 | + |
|
| 541 | + // Success page. |
|
| 542 | + $our_pages[] = wpinv_get_option( 'success_page', false ); |
|
| 543 | + |
|
| 544 | + // Failure page. |
|
| 545 | + $our_pages[] = wpinv_get_option( 'failure_page', false ); |
|
| 546 | + |
|
| 547 | + // History page. |
|
| 548 | + $our_pages[] = wpinv_get_option( 'invoice_history_page', false ); |
|
| 549 | + |
|
| 550 | + // Subscriptions page. |
|
| 551 | + $our_pages[] = wpinv_get_option( 'invoice_subscription_page', false ); |
|
| 552 | + |
|
| 553 | + $our_pages = array_map( 'intval', array_filter( $our_pages ) ); |
|
| 554 | + |
|
| 555 | + $excluded_posts_ids = $excluded_posts_ids + $our_pages; |
|
| 556 | + |
|
| 557 | + return array_unique( $excluded_posts_ids ); |
|
| 558 | + } |
|
| 559 | + |
|
| 560 | + /** |
|
| 561 | + * Remove our pages from yoast sitemaps. |
|
| 562 | + * |
|
| 563 | + * @since 1.0.19 |
|
| 564 | + * @param string[] $post_types |
|
| 565 | + */ |
|
| 566 | + public function exclude_invoicing_post_types( $post_types ) { |
|
| 567 | + // Ensure that we have an array. |
|
| 568 | + if ( ! is_array( $post_types ) ) { |
|
| 569 | + $post_types = array(); |
|
| 570 | + } |
|
| 571 | + |
|
| 572 | + // Remove our post types. |
|
| 573 | + return array_diff( $post_types, array_keys( getpaid_get_invoice_post_types() ) ); |
|
| 574 | + } |
|
| 575 | + |
|
| 576 | + /** |
|
| 577 | + * Displays additional footer code. |
|
| 578 | + * |
|
| 579 | + * @since 2.0.0 |
|
| 580 | + */ |
|
| 581 | + public function wp_footer() { |
|
| 582 | + wpinv_get_template( 'frontend-footer.php' ); |
|
| 583 | + } |
|
| 584 | + |
|
| 585 | + /** |
|
| 586 | + * Displays additional header code. |
|
| 587 | + * |
|
| 588 | + * @since 2.0.0 |
|
| 589 | + */ |
|
| 590 | + public function wp_head() { |
|
| 591 | + wpinv_get_template( 'frontend-head.php' ); |
|
| 592 | + } |
|
| 593 | + |
|
| 594 | + /** |
|
| 595 | + * Custom query vars. |
|
| 596 | + * |
|
| 597 | + */ |
|
| 598 | + public function custom_query_vars( $vars ) { |
|
| 599 | + $vars[] = 'getpaid-ipn'; |
|
| 600 | + return $vars; |
|
| 601 | + } |
|
| 602 | + |
|
| 603 | + /** |
|
| 604 | + * Add rewrite tags and rules. |
|
| 605 | + * |
|
| 606 | + */ |
|
| 607 | + public function add_rewrite_rule() { |
|
| 608 | + $tag = 'getpaid-ipn'; |
|
| 609 | + add_rewrite_tag( "%$tag%", '([^&]+)' ); |
|
| 610 | + add_rewrite_rule( "^$tag/([^/]*)/?", "index.php?$tag=\$matches[1]", 'top' ); |
|
| 611 | + } |
|
| 612 | + |
|
| 613 | + /** |
|
| 614 | + * Processes non-query string ipns. |
|
| 615 | + * |
|
| 616 | + */ |
|
| 617 | + public function maybe_process_new_ipn( $query ) { |
|
| 618 | + if ( is_admin() || ! $query->is_main_query() ) { |
|
| 619 | + return; |
|
| 620 | + } |
|
| 621 | + |
|
| 622 | + $gateway = get_query_var( 'getpaid-ipn' ); |
|
| 623 | + |
|
| 624 | + if ( ! empty( $gateway ) ) { |
|
| 625 | + $gateway = sanitize_text_field( $gateway ); |
|
| 626 | + nocache_headers(); |
|
| 627 | + do_action( 'wpinv_verify_payment_ipn', $gateway ); |
|
| 628 | + do_action( "wpinv_verify_{$gateway}_ipn" ); |
|
| 629 | + exit; |
|
| 630 | + } |
|
| 631 | + } |
|
| 632 | 632 | } |
@@ -13,7 +13,7 @@ discard block |
||
| 13 | 13 | * Bail if we are not in WP. |
| 14 | 14 | */ |
| 15 | 15 | if ( ! defined( 'ABSPATH' ) ) { |
| 16 | - exit; |
|
| 16 | + exit; |
|
| 17 | 17 | } |
| 18 | 18 | |
| 19 | 19 | /** |
@@ -21,472 +21,472 @@ discard block |
||
| 21 | 21 | */ |
| 22 | 22 | if ( ! class_exists( 'AyeCode_UI_Settings' ) ) { |
| 23 | 23 | |
| 24 | - /** |
|
| 25 | - * A Class to be able to change settings for Font Awesome. |
|
| 26 | - * |
|
| 27 | - * Class AyeCode_UI_Settings |
|
| 28 | - * @ver 1.0.0 |
|
| 29 | - * @todo decide how to implement textdomain |
|
| 30 | - */ |
|
| 31 | - class AyeCode_UI_Settings { |
|
| 32 | - |
|
| 33 | - /** |
|
| 34 | - * Class version version. |
|
| 35 | - * |
|
| 36 | - * @var string |
|
| 37 | - */ |
|
| 38 | - public $version = '0.2.30'; |
|
| 39 | - |
|
| 40 | - /** |
|
| 41 | - * Class textdomain. |
|
| 42 | - * |
|
| 43 | - * @var string |
|
| 44 | - */ |
|
| 45 | - public $textdomain = 'aui'; |
|
| 46 | - |
|
| 47 | - /** |
|
| 48 | - * Latest version of Bootstrap at time of publish published. |
|
| 49 | - * |
|
| 50 | - * @var string |
|
| 51 | - */ |
|
| 52 | - public $latest = "5.2.2"; |
|
| 53 | - |
|
| 54 | - /** |
|
| 55 | - * Current version of select2 being used. |
|
| 56 | - * |
|
| 57 | - * @var string |
|
| 58 | - */ |
|
| 59 | - public $select2_version = "4.0.11"; |
|
| 60 | - |
|
| 61 | - /** |
|
| 62 | - * The title. |
|
| 63 | - * |
|
| 64 | - * @var string |
|
| 65 | - */ |
|
| 66 | - public $name = 'AyeCode UI'; |
|
| 67 | - |
|
| 68 | - /** |
|
| 69 | - * The relative url to the assets. |
|
| 70 | - * |
|
| 71 | - * @var string |
|
| 72 | - */ |
|
| 73 | - public $url = ''; |
|
| 74 | - |
|
| 75 | - /** |
|
| 76 | - * Holds the settings values. |
|
| 77 | - * |
|
| 78 | - * @var array |
|
| 79 | - */ |
|
| 80 | - private $settings; |
|
| 81 | - |
|
| 82 | - /** |
|
| 83 | - * AyeCode_UI_Settings instance. |
|
| 84 | - * |
|
| 85 | - * @access private |
|
| 86 | - * @since 1.0.0 |
|
| 87 | - * @var AyeCode_UI_Settings There can be only one! |
|
| 88 | - */ |
|
| 89 | - private static $instance = null; |
|
| 90 | - |
|
| 91 | - |
|
| 92 | - /** |
|
| 93 | - * Main AyeCode_UI_Settings Instance. |
|
| 94 | - * |
|
| 95 | - * Ensures only one instance of AyeCode_UI_Settings is loaded or can be loaded. |
|
| 96 | - * |
|
| 97 | - * @since 1.0.0 |
|
| 98 | - * @static |
|
| 99 | - * @return AyeCode_UI_Settings - Main instance. |
|
| 100 | - */ |
|
| 101 | - public static function instance() { |
|
| 102 | - if ( ! isset( self::$instance ) && ! ( self::$instance instanceof AyeCode_UI_Settings ) ) { |
|
| 103 | - |
|
| 104 | - self::$instance = new AyeCode_UI_Settings; |
|
| 105 | - |
|
| 106 | - add_action( 'init', array( self::$instance, 'init' ) ); // set settings |
|
| 107 | - |
|
| 108 | - if ( is_admin() ) { |
|
| 109 | - add_action( 'admin_menu', array( self::$instance, 'menu_item' ) ); |
|
| 110 | - add_action( 'admin_init', array( self::$instance, 'register_settings' ) ); |
|
| 111 | - |
|
| 112 | - // Maybe show example page |
|
| 113 | - add_action( 'template_redirect', array( self::$instance,'maybe_show_examples' ) ); |
|
| 114 | - |
|
| 115 | - if ( defined( 'BLOCKSTRAP_VERSION' ) ) { |
|
| 116 | - add_filter( 'sd_aui_colors', array( self::$instance,'sd_aui_colors' ), 10, 3 ); |
|
| 117 | - } |
|
| 118 | - } |
|
| 24 | + /** |
|
| 25 | + * A Class to be able to change settings for Font Awesome. |
|
| 26 | + * |
|
| 27 | + * Class AyeCode_UI_Settings |
|
| 28 | + * @ver 1.0.0 |
|
| 29 | + * @todo decide how to implement textdomain |
|
| 30 | + */ |
|
| 31 | + class AyeCode_UI_Settings { |
|
| 32 | + |
|
| 33 | + /** |
|
| 34 | + * Class version version. |
|
| 35 | + * |
|
| 36 | + * @var string |
|
| 37 | + */ |
|
| 38 | + public $version = '0.2.30'; |
|
| 119 | 39 | |
| 120 | - add_action( 'customize_register', array( self::$instance, 'customizer_settings' )); |
|
| 40 | + /** |
|
| 41 | + * Class textdomain. |
|
| 42 | + * |
|
| 43 | + * @var string |
|
| 44 | + */ |
|
| 45 | + public $textdomain = 'aui'; |
|
| 121 | 46 | |
| 122 | - do_action( 'ayecode_ui_settings_loaded' ); |
|
| 123 | - } |
|
| 47 | + /** |
|
| 48 | + * Latest version of Bootstrap at time of publish published. |
|
| 49 | + * |
|
| 50 | + * @var string |
|
| 51 | + */ |
|
| 52 | + public $latest = "5.2.2"; |
|
| 124 | 53 | |
| 125 | - return self::$instance; |
|
| 126 | - } |
|
| 54 | + /** |
|
| 55 | + * Current version of select2 being used. |
|
| 56 | + * |
|
| 57 | + * @var string |
|
| 58 | + */ |
|
| 59 | + public $select2_version = "4.0.11"; |
|
| 127 | 60 | |
| 128 | - /** |
|
| 129 | - * Add custom colors to the color selector. |
|
| 130 | - * |
|
| 131 | - * @param $theme_colors |
|
| 132 | - * @param $include_outlines |
|
| 133 | - * @param $include_branding |
|
| 134 | - * |
|
| 135 | - * @return mixed |
|
| 136 | - */ |
|
| 137 | - public function sd_aui_colors( $theme_colors, $include_outlines, $include_branding ){ |
|
| 61 | + /** |
|
| 62 | + * The title. |
|
| 63 | + * |
|
| 64 | + * @var string |
|
| 65 | + */ |
|
| 66 | + public $name = 'AyeCode UI'; |
|
| 138 | 67 | |
| 68 | + /** |
|
| 69 | + * The relative url to the assets. |
|
| 70 | + * |
|
| 71 | + * @var string |
|
| 72 | + */ |
|
| 73 | + public $url = ''; |
|
| 139 | 74 | |
| 140 | - $setting = wp_get_global_settings(); |
|
| 75 | + /** |
|
| 76 | + * Holds the settings values. |
|
| 77 | + * |
|
| 78 | + * @var array |
|
| 79 | + */ |
|
| 80 | + private $settings; |
|
| 141 | 81 | |
| 142 | - if(!empty($setting['color']['palette']['custom'])){ |
|
| 143 | - foreach($setting['color']['palette']['custom'] as $color){ |
|
| 144 | - $theme_colors[$color['slug']] = esc_attr($color['name']); |
|
| 145 | - } |
|
| 146 | - } |
|
| 147 | - |
|
| 148 | - return $theme_colors; |
|
| 149 | - } |
|
| 150 | - |
|
| 151 | - /** |
|
| 152 | - * Setup some constants. |
|
| 153 | - */ |
|
| 154 | - public function constants(){ |
|
| 155 | - define( 'AUI_PRIMARY_COLOR_ORIGINAL', "#1e73be" ); |
|
| 156 | - define( 'AUI_SECONDARY_COLOR_ORIGINAL', '#6c757d' ); |
|
| 157 | - define( 'AUI_INFO_COLOR_ORIGINAL', '#17a2b8' ); |
|
| 158 | - define( 'AUI_WARNING_COLOR_ORIGINAL', '#ffc107' ); |
|
| 159 | - define( 'AUI_DANGER_COLOR_ORIGINAL', '#dc3545' ); |
|
| 160 | - define( 'AUI_SUCCESS_COLOR_ORIGINAL', '#44c553' ); |
|
| 161 | - define( 'AUI_LIGHT_COLOR_ORIGINAL', '#f8f9fa' ); |
|
| 162 | - define( 'AUI_DARK_COLOR_ORIGINAL', '#343a40' ); |
|
| 163 | - define( 'AUI_WHITE_COLOR_ORIGINAL', '#fff' ); |
|
| 164 | - define( 'AUI_PURPLE_COLOR_ORIGINAL', '#ad6edd' ); |
|
| 165 | - define( 'AUI_SALMON_COLOR_ORIGINAL', '#ff977a' ); |
|
| 166 | - define( 'AUI_CYAN_COLOR_ORIGINAL', '#35bdff' ); |
|
| 167 | - define( 'AUI_GRAY_COLOR_ORIGINAL', '#ced4da' ); |
|
| 168 | - define( 'AUI_INDIGO_COLOR_ORIGINAL', '#502c6c' ); |
|
| 169 | - define( 'AUI_ORANGE_COLOR_ORIGINAL', '#orange' ); |
|
| 170 | - define( 'AUI_BLACK_COLOR_ORIGINAL', '#000' ); |
|
| 171 | - |
|
| 172 | - if ( ! defined( 'AUI_PRIMARY_COLOR' ) ) { |
|
| 173 | - define( 'AUI_PRIMARY_COLOR', AUI_PRIMARY_COLOR_ORIGINAL ); |
|
| 174 | - } |
|
| 175 | - if ( ! defined( 'AUI_SECONDARY_COLOR' ) ) { |
|
| 176 | - define( 'AUI_SECONDARY_COLOR', AUI_SECONDARY_COLOR_ORIGINAL ); |
|
| 177 | - } |
|
| 178 | - if ( ! defined( 'AUI_INFO_COLOR' ) ) { |
|
| 179 | - define( 'AUI_INFO_COLOR', AUI_INFO_COLOR_ORIGINAL ); |
|
| 180 | - } |
|
| 181 | - if ( ! defined( 'AUI_WARNING_COLOR' ) ) { |
|
| 182 | - define( 'AUI_WARNING_COLOR', AUI_WARNING_COLOR_ORIGINAL ); |
|
| 183 | - } |
|
| 184 | - if ( ! defined( 'AUI_DANGER_COLOR' ) ) { |
|
| 185 | - define( 'AUI_DANGER_COLOR', AUI_DANGER_COLOR_ORIGINAL ); |
|
| 186 | - } |
|
| 187 | - if ( ! defined( 'AUI_SUCCESS_COLOR' ) ) { |
|
| 188 | - define( 'AUI_SUCCESS_COLOR', AUI_SUCCESS_COLOR_ORIGINAL ); |
|
| 189 | - } |
|
| 190 | - if ( ! defined( 'AUI_LIGHT_COLOR' ) ) { |
|
| 191 | - define( 'AUI_LIGHT_COLOR', AUI_LIGHT_COLOR_ORIGINAL ); |
|
| 192 | - } |
|
| 193 | - if ( ! defined( 'AUI_DARK_COLOR' ) ) { |
|
| 194 | - define( 'AUI_DARK_COLOR', AUI_DARK_COLOR_ORIGINAL ); |
|
| 195 | - } |
|
| 196 | - if ( ! defined( 'AUI_WHITE_COLOR' ) ) { |
|
| 197 | - define( 'AUI_WHITE_COLOR', AUI_WHITE_COLOR_ORIGINAL ); |
|
| 198 | - } |
|
| 199 | - if ( ! defined( 'AUI_PURPLE_COLOR' ) ) { |
|
| 200 | - define( 'AUI_PURPLE_COLOR', AUI_PURPLE_COLOR_ORIGINAL ); |
|
| 201 | - } |
|
| 202 | - if ( ! defined( 'AUI_SALMON_COLOR' ) ) { |
|
| 203 | - define( 'AUI_SALMON_COLOR', AUI_SALMON_COLOR_ORIGINAL ); |
|
| 204 | - } |
|
| 205 | - if ( ! defined( 'AUI_CYAN_COLOR' ) ) { |
|
| 206 | - define( 'AUI_CYAN_COLOR', AUI_CYAN_COLOR_ORIGINAL ); |
|
| 207 | - } |
|
| 208 | - if ( ! defined( 'AUI_GRAY_COLOR' ) ) { |
|
| 209 | - define( 'AUI_GRAY_COLOR', AUI_GRAY_COLOR_ORIGINAL ); |
|
| 210 | - } |
|
| 211 | - if ( ! defined( 'AUI_INDIGO_COLOR' ) ) { |
|
| 212 | - define( 'AUI_INDIGO_COLOR', AUI_INDIGO_COLOR_ORIGINAL ); |
|
| 213 | - } |
|
| 214 | - if ( ! defined( 'AUI_ORANGE_COLOR' ) ) { |
|
| 215 | - define( 'AUI_ORANGE_COLOR', AUI_ORANGE_COLOR_ORIGINAL ); |
|
| 216 | - } |
|
| 217 | - if ( ! defined( 'AUI_BLACK_COLOR' ) ) { |
|
| 218 | - define( 'AUI_BLACK_COLOR', AUI_BLACK_COLOR_ORIGINAL ); |
|
| 219 | - } |
|
| 220 | - |
|
| 221 | - } |
|
| 222 | - |
|
| 223 | - public static function get_colors( $original = false){ |
|
| 224 | - |
|
| 225 | - if ( ! defined( 'AUI_PRIMARY_COLOR' ) ) { |
|
| 226 | - return array(); |
|
| 227 | - } |
|
| 228 | - if ( $original ) { |
|
| 229 | - return array( |
|
| 230 | - 'primary' => AUI_PRIMARY_COLOR_ORIGINAL, |
|
| 231 | - 'secondary' => AUI_SECONDARY_COLOR_ORIGINAL, |
|
| 232 | - 'info' => AUI_INFO_COLOR_ORIGINAL, |
|
| 233 | - 'warning' => AUI_WARNING_COLOR_ORIGINAL, |
|
| 234 | - 'danger' => AUI_DANGER_COLOR_ORIGINAL, |
|
| 235 | - 'success' => AUI_SUCCESS_COLOR_ORIGINAL, |
|
| 236 | - 'light' => AUI_LIGHT_COLOR_ORIGINAL, |
|
| 237 | - 'dark' => AUI_DARK_COLOR_ORIGINAL, |
|
| 238 | - 'white' => AUI_WHITE_COLOR_ORIGINAL, |
|
| 239 | - 'purple' => AUI_PURPLE_COLOR_ORIGINAL, |
|
| 240 | - 'salmon' => AUI_SALMON_COLOR_ORIGINAL, |
|
| 241 | - 'cyan' => AUI_CYAN_COLOR_ORIGINAL, |
|
| 242 | - 'gray' => AUI_GRAY_COLOR_ORIGINAL, |
|
| 243 | - 'indigo' => AUI_INDIGO_COLOR_ORIGINAL, |
|
| 244 | - 'orange' => AUI_ORANGE_COLOR_ORIGINAL, |
|
| 245 | - 'black' => AUI_BLACK_COLOR_ORIGINAL, |
|
| 246 | - ); |
|
| 247 | - } |
|
| 248 | - |
|
| 249 | - return array( |
|
| 250 | - 'primary' => AUI_PRIMARY_COLOR, |
|
| 251 | - 'secondary' => AUI_SECONDARY_COLOR, |
|
| 252 | - 'info' => AUI_INFO_COLOR, |
|
| 253 | - 'warning' => AUI_WARNING_COLOR, |
|
| 254 | - 'danger' => AUI_DANGER_COLOR, |
|
| 255 | - 'success' => AUI_SUCCESS_COLOR, |
|
| 256 | - 'light' => AUI_LIGHT_COLOR, |
|
| 257 | - 'dark' => AUI_DARK_COLOR, |
|
| 258 | - 'white' => AUI_WHITE_COLOR, |
|
| 259 | - 'purple' => AUI_PURPLE_COLOR, |
|
| 260 | - 'salmon' => AUI_SALMON_COLOR, |
|
| 261 | - 'cyan' => AUI_CYAN_COLOR, |
|
| 262 | - 'gray' => AUI_GRAY_COLOR, |
|
| 263 | - 'indigo' => AUI_INDIGO_COLOR, |
|
| 264 | - 'orange' => AUI_ORANGE_COLOR, |
|
| 265 | - 'black' => AUI_BLACK_COLOR, |
|
| 266 | - ); |
|
| 267 | - } |
|
| 268 | - |
|
| 269 | - /** |
|
| 270 | - * Add admin body class to show when BS5 is active. |
|
| 271 | - * |
|
| 272 | - * @param $classes |
|
| 273 | - * |
|
| 274 | - * @return mixed |
|
| 275 | - */ |
|
| 276 | - public function add_bs5_admin_body_class( $classes = '' ) { |
|
| 277 | - $classes .= ' aui_bs5'; |
|
| 278 | - |
|
| 279 | - return $classes; |
|
| 280 | - } |
|
| 281 | - |
|
| 282 | - /** |
|
| 283 | - * Add a body class to show when BS5 is active. |
|
| 284 | - * |
|
| 285 | - * @param $classes |
|
| 286 | - * |
|
| 287 | - * @return mixed |
|
| 288 | - */ |
|
| 289 | - public function add_bs5_body_class( $classes ) { |
|
| 290 | - $classes[] = 'aui_bs5'; |
|
| 291 | - |
|
| 292 | - return $classes; |
|
| 293 | - } |
|
| 294 | - |
|
| 295 | - /** |
|
| 296 | - * Initiate the settings and add the required action hooks. |
|
| 297 | - */ |
|
| 298 | - public function init() { |
|
| 82 | + /** |
|
| 83 | + * AyeCode_UI_Settings instance. |
|
| 84 | + * |
|
| 85 | + * @access private |
|
| 86 | + * @since 1.0.0 |
|
| 87 | + * @var AyeCode_UI_Settings There can be only one! |
|
| 88 | + */ |
|
| 89 | + private static $instance = null; |
|
| 90 | + |
|
| 91 | + |
|
| 92 | + /** |
|
| 93 | + * Main AyeCode_UI_Settings Instance. |
|
| 94 | + * |
|
| 95 | + * Ensures only one instance of AyeCode_UI_Settings is loaded or can be loaded. |
|
| 96 | + * |
|
| 97 | + * @since 1.0.0 |
|
| 98 | + * @static |
|
| 99 | + * @return AyeCode_UI_Settings - Main instance. |
|
| 100 | + */ |
|
| 101 | + public static function instance() { |
|
| 102 | + if ( ! isset( self::$instance ) && ! ( self::$instance instanceof AyeCode_UI_Settings ) ) { |
|
| 103 | + |
|
| 104 | + self::$instance = new AyeCode_UI_Settings; |
|
| 105 | + |
|
| 106 | + add_action( 'init', array( self::$instance, 'init' ) ); // set settings |
|
| 107 | + |
|
| 108 | + if ( is_admin() ) { |
|
| 109 | + add_action( 'admin_menu', array( self::$instance, 'menu_item' ) ); |
|
| 110 | + add_action( 'admin_init', array( self::$instance, 'register_settings' ) ); |
|
| 111 | + |
|
| 112 | + // Maybe show example page |
|
| 113 | + add_action( 'template_redirect', array( self::$instance,'maybe_show_examples' ) ); |
|
| 114 | + |
|
| 115 | + if ( defined( 'BLOCKSTRAP_VERSION' ) ) { |
|
| 116 | + add_filter( 'sd_aui_colors', array( self::$instance,'sd_aui_colors' ), 10, 3 ); |
|
| 117 | + } |
|
| 118 | + } |
|
| 119 | + |
|
| 120 | + add_action( 'customize_register', array( self::$instance, 'customizer_settings' )); |
|
| 121 | + |
|
| 122 | + do_action( 'ayecode_ui_settings_loaded' ); |
|
| 123 | + } |
|
| 124 | + |
|
| 125 | + return self::$instance; |
|
| 126 | + } |
|
| 127 | + |
|
| 128 | + /** |
|
| 129 | + * Add custom colors to the color selector. |
|
| 130 | + * |
|
| 131 | + * @param $theme_colors |
|
| 132 | + * @param $include_outlines |
|
| 133 | + * @param $include_branding |
|
| 134 | + * |
|
| 135 | + * @return mixed |
|
| 136 | + */ |
|
| 137 | + public function sd_aui_colors( $theme_colors, $include_outlines, $include_branding ){ |
|
| 138 | + |
|
| 139 | + |
|
| 140 | + $setting = wp_get_global_settings(); |
|
| 141 | + |
|
| 142 | + if(!empty($setting['color']['palette']['custom'])){ |
|
| 143 | + foreach($setting['color']['palette']['custom'] as $color){ |
|
| 144 | + $theme_colors[$color['slug']] = esc_attr($color['name']); |
|
| 145 | + } |
|
| 146 | + } |
|
| 147 | + |
|
| 148 | + return $theme_colors; |
|
| 149 | + } |
|
| 150 | + |
|
| 151 | + /** |
|
| 152 | + * Setup some constants. |
|
| 153 | + */ |
|
| 154 | + public function constants(){ |
|
| 155 | + define( 'AUI_PRIMARY_COLOR_ORIGINAL', "#1e73be" ); |
|
| 156 | + define( 'AUI_SECONDARY_COLOR_ORIGINAL', '#6c757d' ); |
|
| 157 | + define( 'AUI_INFO_COLOR_ORIGINAL', '#17a2b8' ); |
|
| 158 | + define( 'AUI_WARNING_COLOR_ORIGINAL', '#ffc107' ); |
|
| 159 | + define( 'AUI_DANGER_COLOR_ORIGINAL', '#dc3545' ); |
|
| 160 | + define( 'AUI_SUCCESS_COLOR_ORIGINAL', '#44c553' ); |
|
| 161 | + define( 'AUI_LIGHT_COLOR_ORIGINAL', '#f8f9fa' ); |
|
| 162 | + define( 'AUI_DARK_COLOR_ORIGINAL', '#343a40' ); |
|
| 163 | + define( 'AUI_WHITE_COLOR_ORIGINAL', '#fff' ); |
|
| 164 | + define( 'AUI_PURPLE_COLOR_ORIGINAL', '#ad6edd' ); |
|
| 165 | + define( 'AUI_SALMON_COLOR_ORIGINAL', '#ff977a' ); |
|
| 166 | + define( 'AUI_CYAN_COLOR_ORIGINAL', '#35bdff' ); |
|
| 167 | + define( 'AUI_GRAY_COLOR_ORIGINAL', '#ced4da' ); |
|
| 168 | + define( 'AUI_INDIGO_COLOR_ORIGINAL', '#502c6c' ); |
|
| 169 | + define( 'AUI_ORANGE_COLOR_ORIGINAL', '#orange' ); |
|
| 170 | + define( 'AUI_BLACK_COLOR_ORIGINAL', '#000' ); |
|
| 171 | + |
|
| 172 | + if ( ! defined( 'AUI_PRIMARY_COLOR' ) ) { |
|
| 173 | + define( 'AUI_PRIMARY_COLOR', AUI_PRIMARY_COLOR_ORIGINAL ); |
|
| 174 | + } |
|
| 175 | + if ( ! defined( 'AUI_SECONDARY_COLOR' ) ) { |
|
| 176 | + define( 'AUI_SECONDARY_COLOR', AUI_SECONDARY_COLOR_ORIGINAL ); |
|
| 177 | + } |
|
| 178 | + if ( ! defined( 'AUI_INFO_COLOR' ) ) { |
|
| 179 | + define( 'AUI_INFO_COLOR', AUI_INFO_COLOR_ORIGINAL ); |
|
| 180 | + } |
|
| 181 | + if ( ! defined( 'AUI_WARNING_COLOR' ) ) { |
|
| 182 | + define( 'AUI_WARNING_COLOR', AUI_WARNING_COLOR_ORIGINAL ); |
|
| 183 | + } |
|
| 184 | + if ( ! defined( 'AUI_DANGER_COLOR' ) ) { |
|
| 185 | + define( 'AUI_DANGER_COLOR', AUI_DANGER_COLOR_ORIGINAL ); |
|
| 186 | + } |
|
| 187 | + if ( ! defined( 'AUI_SUCCESS_COLOR' ) ) { |
|
| 188 | + define( 'AUI_SUCCESS_COLOR', AUI_SUCCESS_COLOR_ORIGINAL ); |
|
| 189 | + } |
|
| 190 | + if ( ! defined( 'AUI_LIGHT_COLOR' ) ) { |
|
| 191 | + define( 'AUI_LIGHT_COLOR', AUI_LIGHT_COLOR_ORIGINAL ); |
|
| 192 | + } |
|
| 193 | + if ( ! defined( 'AUI_DARK_COLOR' ) ) { |
|
| 194 | + define( 'AUI_DARK_COLOR', AUI_DARK_COLOR_ORIGINAL ); |
|
| 195 | + } |
|
| 196 | + if ( ! defined( 'AUI_WHITE_COLOR' ) ) { |
|
| 197 | + define( 'AUI_WHITE_COLOR', AUI_WHITE_COLOR_ORIGINAL ); |
|
| 198 | + } |
|
| 199 | + if ( ! defined( 'AUI_PURPLE_COLOR' ) ) { |
|
| 200 | + define( 'AUI_PURPLE_COLOR', AUI_PURPLE_COLOR_ORIGINAL ); |
|
| 201 | + } |
|
| 202 | + if ( ! defined( 'AUI_SALMON_COLOR' ) ) { |
|
| 203 | + define( 'AUI_SALMON_COLOR', AUI_SALMON_COLOR_ORIGINAL ); |
|
| 204 | + } |
|
| 205 | + if ( ! defined( 'AUI_CYAN_COLOR' ) ) { |
|
| 206 | + define( 'AUI_CYAN_COLOR', AUI_CYAN_COLOR_ORIGINAL ); |
|
| 207 | + } |
|
| 208 | + if ( ! defined( 'AUI_GRAY_COLOR' ) ) { |
|
| 209 | + define( 'AUI_GRAY_COLOR', AUI_GRAY_COLOR_ORIGINAL ); |
|
| 210 | + } |
|
| 211 | + if ( ! defined( 'AUI_INDIGO_COLOR' ) ) { |
|
| 212 | + define( 'AUI_INDIGO_COLOR', AUI_INDIGO_COLOR_ORIGINAL ); |
|
| 213 | + } |
|
| 214 | + if ( ! defined( 'AUI_ORANGE_COLOR' ) ) { |
|
| 215 | + define( 'AUI_ORANGE_COLOR', AUI_ORANGE_COLOR_ORIGINAL ); |
|
| 216 | + } |
|
| 217 | + if ( ! defined( 'AUI_BLACK_COLOR' ) ) { |
|
| 218 | + define( 'AUI_BLACK_COLOR', AUI_BLACK_COLOR_ORIGINAL ); |
|
| 219 | + } |
|
| 220 | + |
|
| 221 | + } |
|
| 222 | + |
|
| 223 | + public static function get_colors( $original = false){ |
|
| 224 | + |
|
| 225 | + if ( ! defined( 'AUI_PRIMARY_COLOR' ) ) { |
|
| 226 | + return array(); |
|
| 227 | + } |
|
| 228 | + if ( $original ) { |
|
| 229 | + return array( |
|
| 230 | + 'primary' => AUI_PRIMARY_COLOR_ORIGINAL, |
|
| 231 | + 'secondary' => AUI_SECONDARY_COLOR_ORIGINAL, |
|
| 232 | + 'info' => AUI_INFO_COLOR_ORIGINAL, |
|
| 233 | + 'warning' => AUI_WARNING_COLOR_ORIGINAL, |
|
| 234 | + 'danger' => AUI_DANGER_COLOR_ORIGINAL, |
|
| 235 | + 'success' => AUI_SUCCESS_COLOR_ORIGINAL, |
|
| 236 | + 'light' => AUI_LIGHT_COLOR_ORIGINAL, |
|
| 237 | + 'dark' => AUI_DARK_COLOR_ORIGINAL, |
|
| 238 | + 'white' => AUI_WHITE_COLOR_ORIGINAL, |
|
| 239 | + 'purple' => AUI_PURPLE_COLOR_ORIGINAL, |
|
| 240 | + 'salmon' => AUI_SALMON_COLOR_ORIGINAL, |
|
| 241 | + 'cyan' => AUI_CYAN_COLOR_ORIGINAL, |
|
| 242 | + 'gray' => AUI_GRAY_COLOR_ORIGINAL, |
|
| 243 | + 'indigo' => AUI_INDIGO_COLOR_ORIGINAL, |
|
| 244 | + 'orange' => AUI_ORANGE_COLOR_ORIGINAL, |
|
| 245 | + 'black' => AUI_BLACK_COLOR_ORIGINAL, |
|
| 246 | + ); |
|
| 247 | + } |
|
| 248 | + |
|
| 249 | + return array( |
|
| 250 | + 'primary' => AUI_PRIMARY_COLOR, |
|
| 251 | + 'secondary' => AUI_SECONDARY_COLOR, |
|
| 252 | + 'info' => AUI_INFO_COLOR, |
|
| 253 | + 'warning' => AUI_WARNING_COLOR, |
|
| 254 | + 'danger' => AUI_DANGER_COLOR, |
|
| 255 | + 'success' => AUI_SUCCESS_COLOR, |
|
| 256 | + 'light' => AUI_LIGHT_COLOR, |
|
| 257 | + 'dark' => AUI_DARK_COLOR, |
|
| 258 | + 'white' => AUI_WHITE_COLOR, |
|
| 259 | + 'purple' => AUI_PURPLE_COLOR, |
|
| 260 | + 'salmon' => AUI_SALMON_COLOR, |
|
| 261 | + 'cyan' => AUI_CYAN_COLOR, |
|
| 262 | + 'gray' => AUI_GRAY_COLOR, |
|
| 263 | + 'indigo' => AUI_INDIGO_COLOR, |
|
| 264 | + 'orange' => AUI_ORANGE_COLOR, |
|
| 265 | + 'black' => AUI_BLACK_COLOR, |
|
| 266 | + ); |
|
| 267 | + } |
|
| 268 | + |
|
| 269 | + /** |
|
| 270 | + * Add admin body class to show when BS5 is active. |
|
| 271 | + * |
|
| 272 | + * @param $classes |
|
| 273 | + * |
|
| 274 | + * @return mixed |
|
| 275 | + */ |
|
| 276 | + public function add_bs5_admin_body_class( $classes = '' ) { |
|
| 277 | + $classes .= ' aui_bs5'; |
|
| 278 | + |
|
| 279 | + return $classes; |
|
| 280 | + } |
|
| 281 | + |
|
| 282 | + /** |
|
| 283 | + * Add a body class to show when BS5 is active. |
|
| 284 | + * |
|
| 285 | + * @param $classes |
|
| 286 | + * |
|
| 287 | + * @return mixed |
|
| 288 | + */ |
|
| 289 | + public function add_bs5_body_class( $classes ) { |
|
| 290 | + $classes[] = 'aui_bs5'; |
|
| 291 | + |
|
| 292 | + return $classes; |
|
| 293 | + } |
|
| 294 | + |
|
| 295 | + /** |
|
| 296 | + * Initiate the settings and add the required action hooks. |
|
| 297 | + */ |
|
| 298 | + public function init() { |
|
| 299 | 299 | global $aui_bs5; |
| 300 | 300 | |
| 301 | - // Maybe fix settings |
|
| 302 | - if ( ! empty( $_REQUEST['aui-fix-admin'] ) && !empty($_REQUEST['nonce']) && wp_verify_nonce( $_REQUEST['nonce'], "aui-fix-admin" ) ) { |
|
| 303 | - $db_settings = get_option( 'ayecode-ui-settings' ); |
|
| 304 | - if ( ! empty( $db_settings ) ) { |
|
| 305 | - $db_settings['css_backend'] = 'compatibility'; |
|
| 306 | - $db_settings['js_backend'] = 'core-popper'; |
|
| 307 | - update_option( 'ayecode-ui-settings', $db_settings ); |
|
| 308 | - wp_safe_redirect(admin_url("options-general.php?page=ayecode-ui-settings&updated=true")); |
|
| 309 | - } |
|
| 310 | - } |
|
| 301 | + // Maybe fix settings |
|
| 302 | + if ( ! empty( $_REQUEST['aui-fix-admin'] ) && !empty($_REQUEST['nonce']) && wp_verify_nonce( $_REQUEST['nonce'], "aui-fix-admin" ) ) { |
|
| 303 | + $db_settings = get_option( 'ayecode-ui-settings' ); |
|
| 304 | + if ( ! empty( $db_settings ) ) { |
|
| 305 | + $db_settings['css_backend'] = 'compatibility'; |
|
| 306 | + $db_settings['js_backend'] = 'core-popper'; |
|
| 307 | + update_option( 'ayecode-ui-settings', $db_settings ); |
|
| 308 | + wp_safe_redirect(admin_url("options-general.php?page=ayecode-ui-settings&updated=true")); |
|
| 309 | + } |
|
| 310 | + } |
|
| 311 | 311 | |
| 312 | - $this->constants(); |
|
| 313 | - $this->settings = $this->get_settings(); |
|
| 314 | - $this->url = $this->get_url(); |
|
| 312 | + $this->constants(); |
|
| 313 | + $this->settings = $this->get_settings(); |
|
| 314 | + $this->url = $this->get_url(); |
|
| 315 | 315 | |
| 316 | 316 | // define the version |
| 317 | - $aui_bs5 = $this->settings['bs_ver'] === '5'; |
|
| 318 | - |
|
| 319 | - if ( $aui_bs5 ) { |
|
| 320 | - include_once( dirname( __FILE__ ) . '/inc/bs-conversion.php' ); |
|
| 321 | - add_filter( 'admin_body_class', array( $this, 'add_bs5_admin_body_class' ), 99, 1 ); |
|
| 322 | - add_filter( 'body_class', array( $this, 'add_bs5_body_class' ) ); |
|
| 323 | - } |
|
| 324 | - |
|
| 325 | - /** |
|
| 326 | - * Maybe load CSS |
|
| 327 | - * |
|
| 328 | - * We load super early in case there is a theme version that might change the colors |
|
| 329 | - */ |
|
| 330 | - if ( $this->settings['css'] ) { |
|
| 331 | - $priority = $this->is_bs3_compat() ? 100 : 1; |
|
| 317 | + $aui_bs5 = $this->settings['bs_ver'] === '5'; |
|
| 318 | + |
|
| 319 | + if ( $aui_bs5 ) { |
|
| 320 | + include_once( dirname( __FILE__ ) . '/inc/bs-conversion.php' ); |
|
| 321 | + add_filter( 'admin_body_class', array( $this, 'add_bs5_admin_body_class' ), 99, 1 ); |
|
| 322 | + add_filter( 'body_class', array( $this, 'add_bs5_body_class' ) ); |
|
| 323 | + } |
|
| 324 | + |
|
| 325 | + /** |
|
| 326 | + * Maybe load CSS |
|
| 327 | + * |
|
| 328 | + * We load super early in case there is a theme version that might change the colors |
|
| 329 | + */ |
|
| 330 | + if ( $this->settings['css'] ) { |
|
| 331 | + $priority = $this->is_bs3_compat() ? 100 : 1; |
|
| 332 | 332 | $priority = $aui_bs5 ? 10 : $priority; |
| 333 | - add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_style' ), $priority ); |
|
| 334 | - } |
|
| 335 | - if ( $this->settings['css_backend'] && $this->load_admin_scripts() ) { |
|
| 336 | - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_style' ), 1 ); |
|
| 337 | - } |
|
| 338 | - |
|
| 339 | - // maybe load JS |
|
| 340 | - if ( $this->settings['js'] ) { |
|
| 341 | - $priority = $this->is_bs3_compat() ? 100 : 1; |
|
| 342 | - add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), $priority ); |
|
| 343 | - } |
|
| 344 | - if ( $this->settings['js_backend'] && $this->load_admin_scripts() ) { |
|
| 345 | - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ), 1 ); |
|
| 346 | - } |
|
| 347 | - |
|
| 348 | - // Maybe set the HTML font size |
|
| 349 | - if ( $this->settings['html_font_size'] ) { |
|
| 350 | - add_action( 'wp_footer', array( $this, 'html_font_size' ), 10 ); |
|
| 351 | - } |
|
| 352 | - |
|
| 353 | - // Maybe show backend style error |
|
| 354 | - if( $this->settings['css_backend'] != 'compatibility' || $this->settings['js_backend'] != 'core-popper' ){ |
|
| 355 | - add_action( 'admin_notices', array( $this, 'show_admin_style_notice' ) ); |
|
| 356 | - } |
|
| 357 | - |
|
| 358 | - } |
|
| 359 | - |
|
| 360 | - /** |
|
| 361 | - * Show admin notice if backend scripts not loaded. |
|
| 362 | - */ |
|
| 363 | - public function show_admin_style_notice(){ |
|
| 364 | - $fix_url = admin_url("options-general.php?page=ayecode-ui-settings&aui-fix-admin=true&nonce=".wp_create_nonce('aui-fix-admin')); |
|
| 365 | - $button = '<a href="'.esc_url($fix_url).'" class="button-primary">Fix Now</a>'; |
|
| 366 | - $message = __( '<b>Style Issue:</b> AyeCode UI is disable or set wrong.')." " .$button; |
|
| 367 | - echo '<div class="notice notice-error aui-settings-error-notice"><p>'. wp_kses_post( $message ).'</p></div>'; |
|
| 368 | - } |
|
| 369 | - |
|
| 370 | - /** |
|
| 371 | - * Check if we should load the admin scripts or not. |
|
| 372 | - * |
|
| 373 | - * @return bool |
|
| 374 | - */ |
|
| 375 | - public function load_admin_scripts(){ |
|
| 376 | - $result = true; |
|
| 377 | - |
|
| 378 | - // check if specifically disabled |
|
| 379 | - if(!empty($this->settings['disable_admin'])){ |
|
| 380 | - $url_parts = explode("\n",$this->settings['disable_admin']); |
|
| 381 | - foreach($url_parts as $part){ |
|
| 382 | - if( strpos($_SERVER['REQUEST_URI'], trim($part)) !== false ){ |
|
| 383 | - return false; // return early, no point checking further |
|
| 384 | - } |
|
| 385 | - } |
|
| 386 | - } |
|
| 387 | - |
|
| 388 | - return $result; |
|
| 389 | - } |
|
| 390 | - |
|
| 391 | - /** |
|
| 392 | - * Add a html font size to the footer. |
|
| 393 | - */ |
|
| 394 | - public function html_font_size(){ |
|
| 395 | - $this->settings = $this->get_settings(); |
|
| 396 | - echo "<style>html{font-size:".absint($this->settings['html_font_size'])."px;}</style>"; |
|
| 397 | - } |
|
| 398 | - |
|
| 399 | - /** |
|
| 400 | - * Check if the current admin screen should load scripts. |
|
| 401 | - * |
|
| 402 | - * @return bool |
|
| 403 | - */ |
|
| 404 | - public function is_aui_screen(){ |
|
| 333 | + add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_style' ), $priority ); |
|
| 334 | + } |
|
| 335 | + if ( $this->settings['css_backend'] && $this->load_admin_scripts() ) { |
|
| 336 | + add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_style' ), 1 ); |
|
| 337 | + } |
|
| 338 | + |
|
| 339 | + // maybe load JS |
|
| 340 | + if ( $this->settings['js'] ) { |
|
| 341 | + $priority = $this->is_bs3_compat() ? 100 : 1; |
|
| 342 | + add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), $priority ); |
|
| 343 | + } |
|
| 344 | + if ( $this->settings['js_backend'] && $this->load_admin_scripts() ) { |
|
| 345 | + add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ), 1 ); |
|
| 346 | + } |
|
| 347 | + |
|
| 348 | + // Maybe set the HTML font size |
|
| 349 | + if ( $this->settings['html_font_size'] ) { |
|
| 350 | + add_action( 'wp_footer', array( $this, 'html_font_size' ), 10 ); |
|
| 351 | + } |
|
| 352 | + |
|
| 353 | + // Maybe show backend style error |
|
| 354 | + if( $this->settings['css_backend'] != 'compatibility' || $this->settings['js_backend'] != 'core-popper' ){ |
|
| 355 | + add_action( 'admin_notices', array( $this, 'show_admin_style_notice' ) ); |
|
| 356 | + } |
|
| 357 | + |
|
| 358 | + } |
|
| 359 | + |
|
| 360 | + /** |
|
| 361 | + * Show admin notice if backend scripts not loaded. |
|
| 362 | + */ |
|
| 363 | + public function show_admin_style_notice(){ |
|
| 364 | + $fix_url = admin_url("options-general.php?page=ayecode-ui-settings&aui-fix-admin=true&nonce=".wp_create_nonce('aui-fix-admin')); |
|
| 365 | + $button = '<a href="'.esc_url($fix_url).'" class="button-primary">Fix Now</a>'; |
|
| 366 | + $message = __( '<b>Style Issue:</b> AyeCode UI is disable or set wrong.')." " .$button; |
|
| 367 | + echo '<div class="notice notice-error aui-settings-error-notice"><p>'. wp_kses_post( $message ).'</p></div>'; |
|
| 368 | + } |
|
| 369 | + |
|
| 370 | + /** |
|
| 371 | + * Check if we should load the admin scripts or not. |
|
| 372 | + * |
|
| 373 | + * @return bool |
|
| 374 | + */ |
|
| 375 | + public function load_admin_scripts(){ |
|
| 376 | + $result = true; |
|
| 377 | + |
|
| 378 | + // check if specifically disabled |
|
| 379 | + if(!empty($this->settings['disable_admin'])){ |
|
| 380 | + $url_parts = explode("\n",$this->settings['disable_admin']); |
|
| 381 | + foreach($url_parts as $part){ |
|
| 382 | + if( strpos($_SERVER['REQUEST_URI'], trim($part)) !== false ){ |
|
| 383 | + return false; // return early, no point checking further |
|
| 384 | + } |
|
| 385 | + } |
|
| 386 | + } |
|
| 387 | + |
|
| 388 | + return $result; |
|
| 389 | + } |
|
| 390 | + |
|
| 391 | + /** |
|
| 392 | + * Add a html font size to the footer. |
|
| 393 | + */ |
|
| 394 | + public function html_font_size(){ |
|
| 395 | + $this->settings = $this->get_settings(); |
|
| 396 | + echo "<style>html{font-size:".absint($this->settings['html_font_size'])."px;}</style>"; |
|
| 397 | + } |
|
| 398 | + |
|
| 399 | + /** |
|
| 400 | + * Check if the current admin screen should load scripts. |
|
| 401 | + * |
|
| 402 | + * @return bool |
|
| 403 | + */ |
|
| 404 | + public function is_aui_screen(){ |
|
| 405 | 405 | // echo '###';exit; |
| 406 | - $load = false; |
|
| 407 | - // check if we should load or not |
|
| 408 | - if ( is_admin() ) { |
|
| 409 | - // Only enable on set pages |
|
| 410 | - $aui_screens = array( |
|
| 411 | - 'page', |
|
| 406 | + $load = false; |
|
| 407 | + // check if we should load or not |
|
| 408 | + if ( is_admin() ) { |
|
| 409 | + // Only enable on set pages |
|
| 410 | + $aui_screens = array( |
|
| 411 | + 'page', |
|
| 412 | 412 | //'docs', |
| 413 | - 'post', |
|
| 414 | - 'settings_page_ayecode-ui-settings', |
|
| 415 | - 'appearance_page_gutenberg-widgets', |
|
| 416 | - 'widgets', |
|
| 417 | - 'ayecode-ui-settings', |
|
| 418 | - 'site-editor' |
|
| 419 | - ); |
|
| 420 | - $screen_ids = apply_filters( 'aui_screen_ids', $aui_screens ); |
|
| 413 | + 'post', |
|
| 414 | + 'settings_page_ayecode-ui-settings', |
|
| 415 | + 'appearance_page_gutenberg-widgets', |
|
| 416 | + 'widgets', |
|
| 417 | + 'ayecode-ui-settings', |
|
| 418 | + 'site-editor' |
|
| 419 | + ); |
|
| 420 | + $screen_ids = apply_filters( 'aui_screen_ids', $aui_screens ); |
|
| 421 | 421 | |
| 422 | - $screen = get_current_screen(); |
|
| 422 | + $screen = get_current_screen(); |
|
| 423 | 423 | |
| 424 | 424 | // echo '###'.$screen->id; |
| 425 | 425 | |
| 426 | - // check if we are on a AUI screen |
|
| 427 | - if ( $screen && in_array( $screen->id, $screen_ids ) ) { |
|
| 428 | - $load = true; |
|
| 429 | - } |
|
| 426 | + // check if we are on a AUI screen |
|
| 427 | + if ( $screen && in_array( $screen->id, $screen_ids ) ) { |
|
| 428 | + $load = true; |
|
| 429 | + } |
|
| 430 | 430 | |
| 431 | - //load for widget previews in WP 5.8 |
|
| 432 | - if( !empty($_REQUEST['legacy-widget-preview'])){ |
|
| 433 | - $load = true; |
|
| 434 | - } |
|
| 435 | - } |
|
| 431 | + //load for widget previews in WP 5.8 |
|
| 432 | + if( !empty($_REQUEST['legacy-widget-preview'])){ |
|
| 433 | + $load = true; |
|
| 434 | + } |
|
| 435 | + } |
|
| 436 | 436 | |
| 437 | 437 | |
| 438 | 438 | |
| 439 | - return apply_filters( 'aui_load_on_admin' , $load ); |
|
| 440 | - } |
|
| 439 | + return apply_filters( 'aui_load_on_admin' , $load ); |
|
| 440 | + } |
|
| 441 | 441 | |
| 442 | - /** |
|
| 443 | - * Check if the current theme is a block theme. |
|
| 444 | - * |
|
| 445 | - * @return bool |
|
| 446 | - */ |
|
| 447 | - public static function is_block_theme() { |
|
| 448 | - if ( function_exists( 'wp_is_block_theme' && wp_is_block_theme() ) ) { |
|
| 449 | - return true; |
|
| 450 | - } |
|
| 442 | + /** |
|
| 443 | + * Check if the current theme is a block theme. |
|
| 444 | + * |
|
| 445 | + * @return bool |
|
| 446 | + */ |
|
| 447 | + public static function is_block_theme() { |
|
| 448 | + if ( function_exists( 'wp_is_block_theme' && wp_is_block_theme() ) ) { |
|
| 449 | + return true; |
|
| 450 | + } |
|
| 451 | 451 | |
| 452 | - return false; |
|
| 453 | - } |
|
| 452 | + return false; |
|
| 453 | + } |
|
| 454 | 454 | |
| 455 | - /** |
|
| 456 | - * Adds the styles. |
|
| 457 | - */ |
|
| 458 | - public function enqueue_style() { |
|
| 455 | + /** |
|
| 456 | + * Adds the styles. |
|
| 457 | + */ |
|
| 458 | + public function enqueue_style() { |
|
| 459 | 459 | global $aui_bs5; |
| 460 | 460 | |
| 461 | 461 | $load_fse = false; |
| 462 | 462 | |
| 463 | - if ( is_admin() && ! $this->is_aui_screen() ) { |
|
| 464 | - // Don't add wp-admin scripts if not requested to. |
|
| 465 | - } else { |
|
| 466 | - $css_setting = current_action() == 'wp_enqueue_scripts' ? 'css' : 'css_backend'; |
|
| 467 | - $rtl = is_rtl() && ! $aui_bs5 ? '-rtl' : ''; |
|
| 463 | + if ( is_admin() && ! $this->is_aui_screen() ) { |
|
| 464 | + // Don't add wp-admin scripts if not requested to. |
|
| 465 | + } else { |
|
| 466 | + $css_setting = current_action() == 'wp_enqueue_scripts' ? 'css' : 'css_backend'; |
|
| 467 | + $rtl = is_rtl() && ! $aui_bs5 ? '-rtl' : ''; |
|
| 468 | 468 | $bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : ''; |
| 469 | 469 | |
| 470 | - if ( $this->settings[ $css_setting ] ) { |
|
| 471 | - $compatibility = $this->settings[$css_setting]=='core' ? false : true; |
|
| 472 | - $url = $this->settings[$css_setting]=='core' ? $this->url.'assets'.$bs_ver.'/css/ayecode-ui'.$rtl.'.css' : $this->url.'assets'.$bs_ver.'/css/ayecode-ui-compatibility'.$rtl.'.css'; |
|
| 470 | + if ( $this->settings[ $css_setting ] ) { |
|
| 471 | + $compatibility = $this->settings[$css_setting]=='core' ? false : true; |
|
| 472 | + $url = $this->settings[$css_setting]=='core' ? $this->url.'assets'.$bs_ver.'/css/ayecode-ui'.$rtl.'.css' : $this->url.'assets'.$bs_ver.'/css/ayecode-ui-compatibility'.$rtl.'.css'; |
|
| 473 | 473 | |
| 474 | - wp_register_style( 'ayecode-ui', $url, array(), $this->version ); |
|
| 475 | - wp_enqueue_style( 'ayecode-ui' ); |
|
| 474 | + wp_register_style( 'ayecode-ui', $url, array(), $this->version ); |
|
| 475 | + wp_enqueue_style( 'ayecode-ui' ); |
|
| 476 | 476 | |
| 477 | - if ( is_admin() && ( !empty($_REQUEST['postType']) || self::is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) ) ) { |
|
| 478 | - $url = $this->url.'assets'.$bs_ver.'/css/ayecode-ui-fse.css'; |
|
| 479 | - wp_register_style( 'ayecode-ui-fse', $url, array(), $this->version ); |
|
| 480 | - wp_enqueue_style( 'ayecode-ui-fse' ); |
|
| 481 | - $load_fse = true; |
|
| 482 | - } |
|
| 477 | + if ( is_admin() && ( !empty($_REQUEST['postType']) || self::is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) ) ) { |
|
| 478 | + $url = $this->url.'assets'.$bs_ver.'/css/ayecode-ui-fse.css'; |
|
| 479 | + wp_register_style( 'ayecode-ui-fse', $url, array(), $this->version ); |
|
| 480 | + wp_enqueue_style( 'ayecode-ui-fse' ); |
|
| 481 | + $load_fse = true; |
|
| 482 | + } |
|
| 483 | 483 | |
| 484 | - // flatpickr |
|
| 485 | - wp_register_style( 'flatpickr', $this->url.'assets'.$bs_ver.'/css/flatpickr.min.css', array(), $this->version ); |
|
| 484 | + // flatpickr |
|
| 485 | + wp_register_style( 'flatpickr', $this->url.'assets'.$bs_ver.'/css/flatpickr.min.css', array(), $this->version ); |
|
| 486 | 486 | |
| 487 | - // fix some wp-admin issues |
|
| 488 | - if(is_admin()){ |
|
| 489 | - $custom_css = " |
|
| 487 | + // fix some wp-admin issues |
|
| 488 | + if(is_admin()){ |
|
| 489 | + $custom_css = " |
|
| 490 | 490 | body{ |
| 491 | 491 | background-color: #f1f1f1; |
| 492 | 492 | font-family: -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif; |
@@ -526,63 +526,63 @@ discard block |
||
| 526 | 526 | } |
| 527 | 527 | "; |
| 528 | 528 | |
| 529 | - // @todo, remove once fixed :: fix for this bug https://github.com/WordPress/gutenberg/issues/14377 |
|
| 530 | - $custom_css .= " |
|
| 529 | + // @todo, remove once fixed :: fix for this bug https://github.com/WordPress/gutenberg/issues/14377 |
|
| 530 | + $custom_css .= " |
|
| 531 | 531 | .edit-post-sidebar input[type=color].components-text-control__input{ |
| 532 | 532 | padding: 0; |
| 533 | 533 | } |
| 534 | 534 | "; |
| 535 | - wp_add_inline_style( 'ayecode-ui', $custom_css ); |
|
| 536 | - } |
|
| 537 | - |
|
| 538 | - // custom changes |
|
| 539 | - if ( $load_fse ) { |
|
| 540 | - wp_add_inline_style( 'ayecode-ui-fse', self::custom_css($compatibility, true) ); |
|
| 541 | - }else{ |
|
| 542 | - wp_add_inline_style( 'ayecode-ui', self::custom_css($compatibility) ); |
|
| 543 | - } |
|
| 544 | - } |
|
| 545 | - } |
|
| 546 | - } |
|
| 547 | - |
|
| 548 | - /** |
|
| 549 | - * Get inline script used if bootstrap enqueued |
|
| 550 | - * |
|
| 551 | - * If this remains small then its best to use this than to add another JS file. |
|
| 552 | - */ |
|
| 553 | - public function inline_script() { |
|
| 554 | - global $aui_bs5; |
|
| 555 | - // Flatpickr calendar locale |
|
| 556 | - $flatpickr_locale = self::flatpickr_locale(); |
|
| 535 | + wp_add_inline_style( 'ayecode-ui', $custom_css ); |
|
| 536 | + } |
|
| 557 | 537 | |
| 558 | - ob_start(); |
|
| 559 | - if ( $aui_bs5 ) { |
|
| 560 | - include_once( dirname( __FILE__ ) . '/inc/bs5-js.php' ); |
|
| 561 | - }else{ |
|
| 562 | - include_once( dirname( __FILE__ ) . '/inc/bs4-js.php' ); |
|
| 538 | + // custom changes |
|
| 539 | + if ( $load_fse ) { |
|
| 540 | + wp_add_inline_style( 'ayecode-ui-fse', self::custom_css($compatibility, true) ); |
|
| 541 | + }else{ |
|
| 542 | + wp_add_inline_style( 'ayecode-ui', self::custom_css($compatibility) ); |
|
| 543 | + } |
|
| 544 | + } |
|
| 563 | 545 | } |
| 546 | + } |
|
| 564 | 547 | |
| 565 | - $output = ob_get_clean(); |
|
| 548 | + /** |
|
| 549 | + * Get inline script used if bootstrap enqueued |
|
| 550 | + * |
|
| 551 | + * If this remains small then its best to use this than to add another JS file. |
|
| 552 | + */ |
|
| 553 | + public function inline_script() { |
|
| 554 | + global $aui_bs5; |
|
| 555 | + // Flatpickr calendar locale |
|
| 556 | + $flatpickr_locale = self::flatpickr_locale(); |
|
| 557 | + |
|
| 558 | + ob_start(); |
|
| 559 | + if ( $aui_bs5 ) { |
|
| 560 | + include_once( dirname( __FILE__ ) . '/inc/bs5-js.php' ); |
|
| 561 | + }else{ |
|
| 562 | + include_once( dirname( __FILE__ ) . '/inc/bs4-js.php' ); |
|
| 563 | + } |
|
| 566 | 564 | |
| 567 | - /* |
|
| 565 | + $output = ob_get_clean(); |
|
| 566 | + |
|
| 567 | + /* |
|
| 568 | 568 | * We only add the <script> tags for code highlighting, so we strip them from the output. |
| 569 | 569 | */ |
| 570 | - return str_replace( array( |
|
| 571 | - '<script>', |
|
| 572 | - '</script>' |
|
| 573 | - ), '', self::minify_js($output) ); |
|
| 574 | - } |
|
| 575 | - |
|
| 576 | - |
|
| 577 | - /** |
|
| 578 | - * JS to help with conflict issues with other plugins and themes using bootstrap v3. |
|
| 579 | - * |
|
| 580 | - * @TODO we may need this when other conflicts arrise. |
|
| 581 | - * @return mixed |
|
| 582 | - */ |
|
| 583 | - public static function bs3_compat_js() { |
|
| 584 | - ob_start(); |
|
| 585 | - ?> |
|
| 570 | + return str_replace( array( |
|
| 571 | + '<script>', |
|
| 572 | + '</script>' |
|
| 573 | + ), '', self::minify_js($output) ); |
|
| 574 | + } |
|
| 575 | + |
|
| 576 | + |
|
| 577 | + /** |
|
| 578 | + * JS to help with conflict issues with other plugins and themes using bootstrap v3. |
|
| 579 | + * |
|
| 580 | + * @TODO we may need this when other conflicts arrise. |
|
| 581 | + * @return mixed |
|
| 582 | + */ |
|
| 583 | + public static function bs3_compat_js() { |
|
| 584 | + ob_start(); |
|
| 585 | + ?> |
|
| 586 | 586 | <script> |
| 587 | 587 | <?php if( defined( 'FUSION_BUILDER_VERSION' ) ){ ?> |
| 588 | 588 | /* With Avada builder */ |
@@ -590,20 +590,20 @@ discard block |
||
| 590 | 590 | <?php } ?> |
| 591 | 591 | </script> |
| 592 | 592 | <?php |
| 593 | - return str_replace( array( |
|
| 594 | - '<script>', |
|
| 595 | - '</script>' |
|
| 596 | - ), '', ob_get_clean()); |
|
| 597 | - } |
|
| 598 | - |
|
| 599 | - /** |
|
| 600 | - * Get inline script used if bootstrap file browser enqueued. |
|
| 601 | - * |
|
| 602 | - * If this remains small then its best to use this than to add another JS file. |
|
| 603 | - */ |
|
| 604 | - public function inline_script_file_browser(){ |
|
| 605 | - ob_start(); |
|
| 606 | - ?> |
|
| 593 | + return str_replace( array( |
|
| 594 | + '<script>', |
|
| 595 | + '</script>' |
|
| 596 | + ), '', ob_get_clean()); |
|
| 597 | + } |
|
| 598 | + |
|
| 599 | + /** |
|
| 600 | + * Get inline script used if bootstrap file browser enqueued. |
|
| 601 | + * |
|
| 602 | + * If this remains small then its best to use this than to add another JS file. |
|
| 603 | + */ |
|
| 604 | + public function inline_script_file_browser(){ |
|
| 605 | + ob_start(); |
|
| 606 | + ?> |
|
| 607 | 607 | <script> |
| 608 | 608 | // run on doc ready |
| 609 | 609 | jQuery(document).ready(function () { |
@@ -611,314 +611,314 @@ discard block |
||
| 611 | 611 | }); |
| 612 | 612 | </script> |
| 613 | 613 | <?php |
| 614 | - $output = ob_get_clean(); |
|
| 614 | + $output = ob_get_clean(); |
|
| 615 | 615 | |
| 616 | - /* |
|
| 616 | + /* |
|
| 617 | 617 | * We only add the <script> tags for code highlighting, so we strip them from the output. |
| 618 | 618 | */ |
| 619 | - return str_replace( array( |
|
| 620 | - '<script>', |
|
| 621 | - '</script>' |
|
| 622 | - ), '', $output ); |
|
| 623 | - } |
|
| 624 | - |
|
| 625 | - /** |
|
| 626 | - * Adds the Font Awesome JS. |
|
| 627 | - */ |
|
| 628 | - public function enqueue_scripts() { |
|
| 629 | - if( is_admin() && !$this->is_aui_screen()){ |
|
| 630 | - // Don't add wp-admin scripts if not requested to. |
|
| 631 | - } else { |
|
| 632 | - $js_setting = current_action() == 'wp_enqueue_scripts' ? 'js' : 'js_backend'; |
|
| 633 | - |
|
| 634 | - $bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : ''; |
|
| 635 | - |
|
| 636 | - // select2 |
|
| 637 | - wp_register_script( 'select2', $this->url . 'assets/js/select2.min.js', array( 'jquery' ), $this->select2_version ); |
|
| 638 | - |
|
| 639 | - // flatpickr |
|
| 640 | - wp_register_script( 'flatpickr', $this->url . 'assets/js/flatpickr.min.js', array(), $this->version ); |
|
| 641 | - |
|
| 642 | - // iconpicker |
|
| 643 | - if ( defined( 'FAS_ICONPICKER_JS_URL' ) ) { |
|
| 644 | - wp_register_script( 'iconpicker', FAS_ICONPICKER_JS_URL, array(), $this->version ); |
|
| 645 | - }else{ |
|
| 646 | - wp_register_script( 'iconpicker', $this->url . 'assets/js/fa-iconpicker.min.js', array(), $this->version ); |
|
| 647 | - } |
|
| 619 | + return str_replace( array( |
|
| 620 | + '<script>', |
|
| 621 | + '</script>' |
|
| 622 | + ), '', $output ); |
|
| 623 | + } |
|
| 648 | 624 | |
| 649 | - // Bootstrap file browser |
|
| 650 | - wp_register_script( 'aui-custom-file-input', $url = $this->url . 'assets/js/bs-custom-file-input.min.js', array( 'jquery' ), $this->select2_version ); |
|
| 651 | - wp_add_inline_script( 'aui-custom-file-input', $this->inline_script_file_browser() ); |
|
| 625 | + /** |
|
| 626 | + * Adds the Font Awesome JS. |
|
| 627 | + */ |
|
| 628 | + public function enqueue_scripts() { |
|
| 629 | + if( is_admin() && !$this->is_aui_screen()){ |
|
| 630 | + // Don't add wp-admin scripts if not requested to. |
|
| 631 | + } else { |
|
| 632 | + $js_setting = current_action() == 'wp_enqueue_scripts' ? 'js' : 'js_backend'; |
|
| 652 | 633 | |
| 653 | - $load_inline = false; |
|
| 634 | + $bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : ''; |
|
| 654 | 635 | |
| 655 | - // Load select2 only when required. |
|
| 656 | - if ( $this->force_load_select2() ) { |
|
| 657 | - $dependency = array( 'select2', 'jquery' ); |
|
| 658 | - } else { |
|
| 659 | - $dependency = array( 'jquery' ); |
|
| 660 | - } |
|
| 636 | + // select2 |
|
| 637 | + wp_register_script( 'select2', $this->url . 'assets/js/select2.min.js', array( 'jquery' ), $this->select2_version ); |
|
| 661 | 638 | |
| 662 | - if ( $this->settings[ $js_setting ] == 'core-popper' ) { |
|
| 663 | - // Bootstrap bundle |
|
| 664 | - $url = $this->url . 'assets' . $bs_ver . '/js/bootstrap.bundle.min.js'; |
|
| 665 | - wp_register_script( 'bootstrap-js-bundle', $url, $dependency, $this->version, $this->is_bs3_compat() ); |
|
| 666 | - |
|
| 667 | - // If in admin then add to footer for compatibility. |
|
| 668 | - is_admin() ? wp_enqueue_script( 'bootstrap-js-bundle', '', null, null, true ) : wp_enqueue_script( 'bootstrap-js-bundle' ); |
|
| 669 | - |
|
| 670 | - $script = $this->inline_script(); |
|
| 671 | - wp_add_inline_script( 'bootstrap-js-bundle', $script ); |
|
| 672 | - } elseif ( $this->settings[ $js_setting ] == 'popper' ) { |
|
| 673 | - $url = $this->url . 'assets/js/popper.min.js'; // @todo we need to update this to bs5 |
|
| 674 | - wp_register_script( 'bootstrap-js-popper', $url, $dependency, $this->version ); |
|
| 675 | - wp_enqueue_script( 'bootstrap-js-popper' ); |
|
| 676 | - $load_inline = true; |
|
| 677 | - } else { |
|
| 678 | - $load_inline = true; |
|
| 679 | - } |
|
| 639 | + // flatpickr |
|
| 640 | + wp_register_script( 'flatpickr', $this->url . 'assets/js/flatpickr.min.js', array(), $this->version ); |
|
| 641 | + |
|
| 642 | + // iconpicker |
|
| 643 | + if ( defined( 'FAS_ICONPICKER_JS_URL' ) ) { |
|
| 644 | + wp_register_script( 'iconpicker', FAS_ICONPICKER_JS_URL, array(), $this->version ); |
|
| 645 | + }else{ |
|
| 646 | + wp_register_script( 'iconpicker', $this->url . 'assets/js/fa-iconpicker.min.js', array(), $this->version ); |
|
| 647 | + } |
|
| 680 | 648 | |
| 681 | - // Load needed inline scripts by faking the loading of a script if the main script is not being loaded |
|
| 682 | - if ( $load_inline ) { |
|
| 683 | - wp_register_script( 'bootstrap-dummy', '', $dependency ); |
|
| 684 | - wp_enqueue_script( 'bootstrap-dummy' ); |
|
| 649 | + // Bootstrap file browser |
|
| 650 | + wp_register_script( 'aui-custom-file-input', $url = $this->url . 'assets/js/bs-custom-file-input.min.js', array( 'jquery' ), $this->select2_version ); |
|
| 651 | + wp_add_inline_script( 'aui-custom-file-input', $this->inline_script_file_browser() ); |
|
| 685 | 652 | |
| 686 | - $script = $this->inline_script(); |
|
| 687 | - wp_add_inline_script( 'bootstrap-dummy', $script ); |
|
| 688 | - } |
|
| 689 | - } |
|
| 690 | - } |
|
| 691 | - |
|
| 692 | - /** |
|
| 693 | - * Enqueue select2 if called. |
|
| 694 | - * |
|
| 695 | - * @since 0.2.29 |
|
| 696 | - */ |
|
| 697 | - public function force_load_select2() { |
|
| 698 | - global $aui_select2_enqueued; |
|
| 699 | - |
|
| 700 | - $conditional_select2 = apply_filters( 'aui_is_conditional_select2', true ); |
|
| 701 | - |
|
| 702 | - if ( $conditional_select2 !== true ) { |
|
| 703 | - return true; |
|
| 704 | - } |
|
| 705 | - |
|
| 706 | - $load = is_admin() && ! $aui_select2_enqueued; |
|
| 707 | - |
|
| 708 | - return apply_filters( 'aui_force_load_select2', $load ); |
|
| 709 | - } |
|
| 710 | - |
|
| 711 | - /** |
|
| 712 | - * Enqueue select2 if called. |
|
| 713 | - * |
|
| 714 | - * @since 0.2.29 |
|
| 715 | - */ |
|
| 716 | - public function enqueue_select2() { |
|
| 717 | - wp_enqueue_script( 'select2' ); |
|
| 718 | - } |
|
| 719 | - |
|
| 720 | - /** |
|
| 721 | - * Enqueue flatpickr if called. |
|
| 722 | - */ |
|
| 723 | - public function enqueue_flatpickr(){ |
|
| 724 | - wp_enqueue_style( 'flatpickr' ); |
|
| 725 | - wp_enqueue_script( 'flatpickr' ); |
|
| 726 | - } |
|
| 727 | - |
|
| 728 | - /** |
|
| 729 | - * Enqueue iconpicker if called. |
|
| 730 | - */ |
|
| 731 | - public function enqueue_iconpicker(){ |
|
| 732 | - wp_enqueue_style( 'iconpicker' ); |
|
| 733 | - wp_enqueue_script( 'iconpicker' ); |
|
| 734 | - } |
|
| 735 | - |
|
| 736 | - /** |
|
| 737 | - * Get the url path to the current folder. |
|
| 738 | - * |
|
| 739 | - * @return string |
|
| 740 | - */ |
|
| 741 | - public function get_url() { |
|
| 742 | - $content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) ); |
|
| 743 | - $content_url = untrailingslashit( WP_CONTENT_URL ); |
|
| 744 | - |
|
| 745 | - // Replace http:// to https://. |
|
| 746 | - if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) { |
|
| 747 | - $content_url = str_replace( 'http://', 'https://', $content_url ); |
|
| 748 | - } |
|
| 749 | - |
|
| 750 | - // Check if we are inside a plugin |
|
| 751 | - $file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) ); |
|
| 752 | - $url = str_replace( $content_dir, $content_url, $file_dir ); |
|
| 753 | - |
|
| 754 | - return trailingslashit( $url ); |
|
| 755 | - } |
|
| 756 | - |
|
| 757 | - /** |
|
| 758 | - * Get the url path to the current folder. |
|
| 759 | - * |
|
| 760 | - * @return string |
|
| 761 | - */ |
|
| 762 | - public function get_url_old() { |
|
| 763 | - |
|
| 764 | - $url = ''; |
|
| 765 | - // check if we are inside a plugin |
|
| 766 | - $file_dir = str_replace( "/includes","", wp_normalize_path( dirname( __FILE__ ) ) ); |
|
| 767 | - |
|
| 768 | - // add check in-case user has changed wp-content dir name. |
|
| 769 | - $wp_content_folder_name = basename(WP_CONTENT_DIR); |
|
| 770 | - $dir_parts = explode("/$wp_content_folder_name/",$file_dir); |
|
| 771 | - $url_parts = explode("/$wp_content_folder_name/",plugins_url()); |
|
| 772 | - |
|
| 773 | - if(!empty($url_parts[0]) && !empty($dir_parts[1])){ |
|
| 774 | - $url = trailingslashit( $url_parts[0]."/$wp_content_folder_name/".$dir_parts[1] ); |
|
| 775 | - } |
|
| 776 | - |
|
| 777 | - return $url; |
|
| 778 | - } |
|
| 779 | - |
|
| 780 | - /** |
|
| 781 | - * Register the database settings with WordPress. |
|
| 782 | - */ |
|
| 783 | - public function register_settings() { |
|
| 784 | - register_setting( 'ayecode-ui-settings', 'ayecode-ui-settings' ); |
|
| 785 | - } |
|
| 786 | - |
|
| 787 | - /** |
|
| 788 | - * Add the WordPress settings menu item. |
|
| 789 | - * @since 1.0.10 Calling function name direct will fail theme check so we don't. |
|
| 790 | - */ |
|
| 791 | - public function menu_item() { |
|
| 792 | - $menu_function = 'add' . '_' . 'options' . '_' . 'page'; // won't pass theme check if function name present in theme |
|
| 793 | - call_user_func( $menu_function, $this->name, $this->name, 'manage_options', 'ayecode-ui-settings', array( |
|
| 794 | - $this, |
|
| 795 | - 'settings_page' |
|
| 796 | - ) ); |
|
| 797 | - } |
|
| 798 | - |
|
| 799 | - /** |
|
| 800 | - * Get a list of themes and their default JS settings. |
|
| 801 | - * |
|
| 802 | - * @return array |
|
| 803 | - */ |
|
| 804 | - public function theme_js_settings(){ |
|
| 805 | - return array( |
|
| 806 | - 'ayetheme' => 'popper', |
|
| 807 | - 'listimia' => 'required', |
|
| 808 | - 'listimia_backend' => 'core-popper', |
|
| 809 | - //'avada' => 'required', // removed as we now add compatibility |
|
| 810 | - ); |
|
| 811 | - } |
|
| 812 | - |
|
| 813 | - /** |
|
| 653 | + $load_inline = false; |
|
| 654 | + |
|
| 655 | + // Load select2 only when required. |
|
| 656 | + if ( $this->force_load_select2() ) { |
|
| 657 | + $dependency = array( 'select2', 'jquery' ); |
|
| 658 | + } else { |
|
| 659 | + $dependency = array( 'jquery' ); |
|
| 660 | + } |
|
| 661 | + |
|
| 662 | + if ( $this->settings[ $js_setting ] == 'core-popper' ) { |
|
| 663 | + // Bootstrap bundle |
|
| 664 | + $url = $this->url . 'assets' . $bs_ver . '/js/bootstrap.bundle.min.js'; |
|
| 665 | + wp_register_script( 'bootstrap-js-bundle', $url, $dependency, $this->version, $this->is_bs3_compat() ); |
|
| 666 | + |
|
| 667 | + // If in admin then add to footer for compatibility. |
|
| 668 | + is_admin() ? wp_enqueue_script( 'bootstrap-js-bundle', '', null, null, true ) : wp_enqueue_script( 'bootstrap-js-bundle' ); |
|
| 669 | + |
|
| 670 | + $script = $this->inline_script(); |
|
| 671 | + wp_add_inline_script( 'bootstrap-js-bundle', $script ); |
|
| 672 | + } elseif ( $this->settings[ $js_setting ] == 'popper' ) { |
|
| 673 | + $url = $this->url . 'assets/js/popper.min.js'; // @todo we need to update this to bs5 |
|
| 674 | + wp_register_script( 'bootstrap-js-popper', $url, $dependency, $this->version ); |
|
| 675 | + wp_enqueue_script( 'bootstrap-js-popper' ); |
|
| 676 | + $load_inline = true; |
|
| 677 | + } else { |
|
| 678 | + $load_inline = true; |
|
| 679 | + } |
|
| 680 | + |
|
| 681 | + // Load needed inline scripts by faking the loading of a script if the main script is not being loaded |
|
| 682 | + if ( $load_inline ) { |
|
| 683 | + wp_register_script( 'bootstrap-dummy', '', $dependency ); |
|
| 684 | + wp_enqueue_script( 'bootstrap-dummy' ); |
|
| 685 | + |
|
| 686 | + $script = $this->inline_script(); |
|
| 687 | + wp_add_inline_script( 'bootstrap-dummy', $script ); |
|
| 688 | + } |
|
| 689 | + } |
|
| 690 | + } |
|
| 691 | + |
|
| 692 | + /** |
|
| 693 | + * Enqueue select2 if called. |
|
| 694 | + * |
|
| 695 | + * @since 0.2.29 |
|
| 696 | + */ |
|
| 697 | + public function force_load_select2() { |
|
| 698 | + global $aui_select2_enqueued; |
|
| 699 | + |
|
| 700 | + $conditional_select2 = apply_filters( 'aui_is_conditional_select2', true ); |
|
| 701 | + |
|
| 702 | + if ( $conditional_select2 !== true ) { |
|
| 703 | + return true; |
|
| 704 | + } |
|
| 705 | + |
|
| 706 | + $load = is_admin() && ! $aui_select2_enqueued; |
|
| 707 | + |
|
| 708 | + return apply_filters( 'aui_force_load_select2', $load ); |
|
| 709 | + } |
|
| 710 | + |
|
| 711 | + /** |
|
| 712 | + * Enqueue select2 if called. |
|
| 713 | + * |
|
| 714 | + * @since 0.2.29 |
|
| 715 | + */ |
|
| 716 | + public function enqueue_select2() { |
|
| 717 | + wp_enqueue_script( 'select2' ); |
|
| 718 | + } |
|
| 719 | + |
|
| 720 | + /** |
|
| 721 | + * Enqueue flatpickr if called. |
|
| 722 | + */ |
|
| 723 | + public function enqueue_flatpickr(){ |
|
| 724 | + wp_enqueue_style( 'flatpickr' ); |
|
| 725 | + wp_enqueue_script( 'flatpickr' ); |
|
| 726 | + } |
|
| 727 | + |
|
| 728 | + /** |
|
| 729 | + * Enqueue iconpicker if called. |
|
| 730 | + */ |
|
| 731 | + public function enqueue_iconpicker(){ |
|
| 732 | + wp_enqueue_style( 'iconpicker' ); |
|
| 733 | + wp_enqueue_script( 'iconpicker' ); |
|
| 734 | + } |
|
| 735 | + |
|
| 736 | + /** |
|
| 737 | + * Get the url path to the current folder. |
|
| 738 | + * |
|
| 739 | + * @return string |
|
| 740 | + */ |
|
| 741 | + public function get_url() { |
|
| 742 | + $content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) ); |
|
| 743 | + $content_url = untrailingslashit( WP_CONTENT_URL ); |
|
| 744 | + |
|
| 745 | + // Replace http:// to https://. |
|
| 746 | + if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) { |
|
| 747 | + $content_url = str_replace( 'http://', 'https://', $content_url ); |
|
| 748 | + } |
|
| 749 | + |
|
| 750 | + // Check if we are inside a plugin |
|
| 751 | + $file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) ); |
|
| 752 | + $url = str_replace( $content_dir, $content_url, $file_dir ); |
|
| 753 | + |
|
| 754 | + return trailingslashit( $url ); |
|
| 755 | + } |
|
| 756 | + |
|
| 757 | + /** |
|
| 758 | + * Get the url path to the current folder. |
|
| 759 | + * |
|
| 760 | + * @return string |
|
| 761 | + */ |
|
| 762 | + public function get_url_old() { |
|
| 763 | + |
|
| 764 | + $url = ''; |
|
| 765 | + // check if we are inside a plugin |
|
| 766 | + $file_dir = str_replace( "/includes","", wp_normalize_path( dirname( __FILE__ ) ) ); |
|
| 767 | + |
|
| 768 | + // add check in-case user has changed wp-content dir name. |
|
| 769 | + $wp_content_folder_name = basename(WP_CONTENT_DIR); |
|
| 770 | + $dir_parts = explode("/$wp_content_folder_name/",$file_dir); |
|
| 771 | + $url_parts = explode("/$wp_content_folder_name/",plugins_url()); |
|
| 772 | + |
|
| 773 | + if(!empty($url_parts[0]) && !empty($dir_parts[1])){ |
|
| 774 | + $url = trailingslashit( $url_parts[0]."/$wp_content_folder_name/".$dir_parts[1] ); |
|
| 775 | + } |
|
| 776 | + |
|
| 777 | + return $url; |
|
| 778 | + } |
|
| 779 | + |
|
| 780 | + /** |
|
| 781 | + * Register the database settings with WordPress. |
|
| 782 | + */ |
|
| 783 | + public function register_settings() { |
|
| 784 | + register_setting( 'ayecode-ui-settings', 'ayecode-ui-settings' ); |
|
| 785 | + } |
|
| 786 | + |
|
| 787 | + /** |
|
| 788 | + * Add the WordPress settings menu item. |
|
| 789 | + * @since 1.0.10 Calling function name direct will fail theme check so we don't. |
|
| 790 | + */ |
|
| 791 | + public function menu_item() { |
|
| 792 | + $menu_function = 'add' . '_' . 'options' . '_' . 'page'; // won't pass theme check if function name present in theme |
|
| 793 | + call_user_func( $menu_function, $this->name, $this->name, 'manage_options', 'ayecode-ui-settings', array( |
|
| 794 | + $this, |
|
| 795 | + 'settings_page' |
|
| 796 | + ) ); |
|
| 797 | + } |
|
| 798 | + |
|
| 799 | + /** |
|
| 800 | + * Get a list of themes and their default JS settings. |
|
| 801 | + * |
|
| 802 | + * @return array |
|
| 803 | + */ |
|
| 804 | + public function theme_js_settings(){ |
|
| 805 | + return array( |
|
| 806 | + 'ayetheme' => 'popper', |
|
| 807 | + 'listimia' => 'required', |
|
| 808 | + 'listimia_backend' => 'core-popper', |
|
| 809 | + //'avada' => 'required', // removed as we now add compatibility |
|
| 810 | + ); |
|
| 811 | + } |
|
| 812 | + |
|
| 813 | + /** |
|
| 814 | 814 | * Get the date the site was installed. |
| 815 | 815 | * |
| 816 | - * @return false|string |
|
| 817 | - */ |
|
| 816 | + * @return false|string |
|
| 817 | + */ |
|
| 818 | 818 | public function get_site_install_date() { |
| 819 | - global $wpdb; // This gives you access to the WordPress database object |
|
| 819 | + global $wpdb; // This gives you access to the WordPress database object |
|
| 820 | + |
|
| 821 | + // Prepare the SQL query to get the oldest registration date |
|
| 822 | + $query = "SELECT MIN(user_registered) AS oldest_registration_date FROM {$wpdb->users}"; |
|
| 820 | 823 | |
| 821 | - // Prepare the SQL query to get the oldest registration date |
|
| 822 | - $query = "SELECT MIN(user_registered) AS oldest_registration_date FROM {$wpdb->users}"; |
|
| 824 | + // Execute the query |
|
| 825 | + $date = $wpdb->get_var( $query ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching |
|
| 823 | 826 | |
| 824 | - // Execute the query |
|
| 825 | - $date = $wpdb->get_var( $query ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching |
|
| 827 | + return $date ? $date : false; |
|
| 828 | + } |
|
| 826 | 829 | |
| 827 | - return $date ? $date : false; |
|
| 830 | + /** |
|
| 831 | + * Show admin notice if backend scripts not loaded. |
|
| 832 | + */ |
|
| 833 | + public function show_admin_version_notice(){ |
|
| 834 | + $fix_url = admin_url("options-general.php?page=ayecode-ui-settings" ); |
|
| 835 | + $button = '<a href="'.esc_url($fix_url).'" class="button-primary">View Settings</a>'; |
|
| 836 | + $message = __( '<b>Style Issue:</b> AyeCode UI has changed its default version from v4 to v5, if you notice unwanted style changes, please revert to v4 (saving the settings page will remove this notice)')." " .$button; |
|
| 837 | + echo '<div class="notice notice-error aui-settings-error-notice"><p>'. wp_kses_post( $message ).'</p></div>'; |
|
| 828 | 838 | } |
| 829 | 839 | |
| 830 | - /** |
|
| 831 | - * Show admin notice if backend scripts not loaded. |
|
| 832 | - */ |
|
| 833 | - public function show_admin_version_notice(){ |
|
| 834 | - $fix_url = admin_url("options-general.php?page=ayecode-ui-settings" ); |
|
| 835 | - $button = '<a href="'.esc_url($fix_url).'" class="button-primary">View Settings</a>'; |
|
| 836 | - $message = __( '<b>Style Issue:</b> AyeCode UI has changed its default version from v4 to v5, if you notice unwanted style changes, please revert to v4 (saving the settings page will remove this notice)')." " .$button; |
|
| 837 | - echo '<div class="notice notice-error aui-settings-error-notice"><p>'. wp_kses_post( $message ).'</p></div>'; |
|
| 838 | - } |
|
| 839 | - |
|
| 840 | - /** |
|
| 841 | - * Get the current Font Awesome output settings. |
|
| 842 | - * |
|
| 843 | - * @return array The array of settings. |
|
| 844 | - */ |
|
| 845 | - public function get_settings() { |
|
| 846 | - |
|
| 847 | - $db_settings = get_option( 'ayecode-ui-settings' ); |
|
| 840 | + /** |
|
| 841 | + * Get the current Font Awesome output settings. |
|
| 842 | + * |
|
| 843 | + * @return array The array of settings. |
|
| 844 | + */ |
|
| 845 | + public function get_settings() { |
|
| 846 | + |
|
| 847 | + $db_settings = get_option( 'ayecode-ui-settings' ); |
|
| 848 | 848 | |
| 849 | 849 | // Maybe show default version notice |
| 850 | - $site_install_date = new DateTime( self::get_site_install_date() ); |
|
| 851 | - $switch_over_date = new DateTime("2024-02-01"); |
|
| 852 | - if ( empty( $db_settings ) && $site_install_date < $switch_over_date ) { |
|
| 853 | - add_action( 'admin_notices', array( $this, 'show_admin_version_notice' ) ); |
|
| 854 | - } |
|
| 855 | - |
|
| 856 | - $js_default = 'core-popper'; |
|
| 857 | - $js_default_backend = $js_default; |
|
| 858 | - |
|
| 859 | - // maybe set defaults (if no settings set) |
|
| 860 | - if(empty($db_settings)){ |
|
| 861 | - $active_theme = strtolower( get_template() ); // active parent theme. |
|
| 862 | - $theme_js_settings = self::theme_js_settings(); |
|
| 863 | - if(isset($theme_js_settings[$active_theme])){ |
|
| 864 | - $js_default = $theme_js_settings[$active_theme]; |
|
| 865 | - $js_default_backend = isset($theme_js_settings[$active_theme."_backend"]) ? $theme_js_settings[$active_theme."_backend"] : $js_default; |
|
| 866 | - } |
|
| 867 | - } |
|
| 850 | + $site_install_date = new DateTime( self::get_site_install_date() ); |
|
| 851 | + $switch_over_date = new DateTime("2024-02-01"); |
|
| 852 | + if ( empty( $db_settings ) && $site_install_date < $switch_over_date ) { |
|
| 853 | + add_action( 'admin_notices', array( $this, 'show_admin_version_notice' ) ); |
|
| 854 | + } |
|
| 868 | 855 | |
| 869 | - /** |
|
| 870 | - * Filter the default settings. |
|
| 871 | - */ |
|
| 872 | - $defaults = apply_filters( 'ayecode-ui-default-settings', array( |
|
| 873 | - 'css' => 'compatibility', // core, compatibility |
|
| 874 | - 'js' => $js_default, // js to load, core-popper, popper |
|
| 875 | - 'html_font_size' => '16', // js to load, core-popper, popper |
|
| 876 | - 'css_backend' => 'compatibility', // core, compatibility |
|
| 877 | - 'js_backend' => $js_default_backend, // js to load, core-popper, popper |
|
| 878 | - 'disable_admin' => '', // URL snippets to disable loading on admin |
|
| 856 | + $js_default = 'core-popper'; |
|
| 857 | + $js_default_backend = $js_default; |
|
| 858 | + |
|
| 859 | + // maybe set defaults (if no settings set) |
|
| 860 | + if(empty($db_settings)){ |
|
| 861 | + $active_theme = strtolower( get_template() ); // active parent theme. |
|
| 862 | + $theme_js_settings = self::theme_js_settings(); |
|
| 863 | + if(isset($theme_js_settings[$active_theme])){ |
|
| 864 | + $js_default = $theme_js_settings[$active_theme]; |
|
| 865 | + $js_default_backend = isset($theme_js_settings[$active_theme."_backend"]) ? $theme_js_settings[$active_theme."_backend"] : $js_default; |
|
| 866 | + } |
|
| 867 | + } |
|
| 868 | + |
|
| 869 | + /** |
|
| 870 | + * Filter the default settings. |
|
| 871 | + */ |
|
| 872 | + $defaults = apply_filters( 'ayecode-ui-default-settings', array( |
|
| 873 | + 'css' => 'compatibility', // core, compatibility |
|
| 874 | + 'js' => $js_default, // js to load, core-popper, popper |
|
| 875 | + 'html_font_size' => '16', // js to load, core-popper, popper |
|
| 876 | + 'css_backend' => 'compatibility', // core, compatibility |
|
| 877 | + 'js_backend' => $js_default_backend, // js to load, core-popper, popper |
|
| 878 | + 'disable_admin' => '', // URL snippets to disable loading on admin |
|
| 879 | 879 | 'bs_ver' => '5', // The default bootstrap version to sue by default |
| 880 | - ), $db_settings ); |
|
| 880 | + ), $db_settings ); |
|
| 881 | 881 | |
| 882 | - $settings = wp_parse_args( $db_settings, $defaults ); |
|
| 882 | + $settings = wp_parse_args( $db_settings, $defaults ); |
|
| 883 | 883 | |
| 884 | - /** |
|
| 885 | - * Filter the Bootstrap settings. |
|
| 886 | - * |
|
| 887 | - * @todo if we add this filer people might use it and then it defeats the purpose of this class :/ |
|
| 888 | - */ |
|
| 889 | - return $this->settings = apply_filters( 'ayecode-ui-settings', $settings, $db_settings, $defaults ); |
|
| 890 | - } |
|
| 884 | + /** |
|
| 885 | + * Filter the Bootstrap settings. |
|
| 886 | + * |
|
| 887 | + * @todo if we add this filer people might use it and then it defeats the purpose of this class :/ |
|
| 888 | + */ |
|
| 889 | + return $this->settings = apply_filters( 'ayecode-ui-settings', $settings, $db_settings, $defaults ); |
|
| 890 | + } |
|
| 891 | 891 | |
| 892 | 892 | |
| 893 | - /** |
|
| 894 | - * The settings page html output. |
|
| 895 | - */ |
|
| 896 | - public function settings_page() { |
|
| 897 | - if ( ! current_user_can( 'manage_options' ) ) { |
|
| 898 | - wp_die( esc_attr__( 'You do not have sufficient permissions to access this page.', 'ayecode-connect' ) ); |
|
| 899 | - } |
|
| 893 | + /** |
|
| 894 | + * The settings page html output. |
|
| 895 | + */ |
|
| 896 | + public function settings_page() { |
|
| 897 | + if ( ! current_user_can( 'manage_options' ) ) { |
|
| 898 | + wp_die( esc_attr__( 'You do not have sufficient permissions to access this page.', 'ayecode-connect' ) ); |
|
| 899 | + } |
|
| 900 | 900 | $overrides = apply_filters( 'ayecode-ui-settings', array(), array(), array() ); |
| 901 | 901 | |
| 902 | - ?> |
|
| 902 | + ?> |
|
| 903 | 903 | <div class="wrap"> |
| 904 | 904 | <h1><?php echo esc_attr( $this->name ); ?></h1> |
| 905 | 905 | <p><?php echo esc_html( apply_filters( 'ayecode-ui-settings-message', __("Here you can adjust settings if you are having compatibility issues.", 'ayecode-connect' ) ) );?></p> |
| 906 | 906 | <form method="post" action="options.php"> |
| 907 | 907 | <?php |
| 908 | - settings_fields( 'ayecode-ui-settings' ); |
|
| 909 | - do_settings_sections( 'ayecode-ui-settings' ); |
|
| 910 | - ?> |
|
| 908 | + settings_fields( 'ayecode-ui-settings' ); |
|
| 909 | + do_settings_sections( 'ayecode-ui-settings' ); |
|
| 910 | + ?> |
|
| 911 | 911 | |
| 912 | 912 | <h2><?php esc_html_e( 'BootStrap Version', 'ayecode-connect' ); ?></h2> |
| 913 | 913 | <p><?php echo esc_html( apply_filters( 'ayecode-ui-version-settings-message', __("V5 is recommended, however if you have another plugin installed using v4, you may need to use v4 also.", 'ayecode-connect' ) ) );?></p> |
| 914 | 914 | <div class="bsui"><?php |
| 915 | - if ( ! empty( $overrides ) ) { |
|
| 916 | - echo aui()->alert(array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 917 | - 'type'=> 'info', |
|
| 918 | - 'content'=> esc_attr__("Some options are disabled as your current theme is overriding them.", 'ayecode-connect' ) |
|
| 919 | - )); |
|
| 920 | - } |
|
| 921 | - ?> |
|
| 915 | + if ( ! empty( $overrides ) ) { |
|
| 916 | + echo aui()->alert(array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 917 | + 'type'=> 'info', |
|
| 918 | + 'content'=> esc_attr__("Some options are disabled as your current theme is overriding them.", 'ayecode-connect' ) |
|
| 919 | + )); |
|
| 920 | + } |
|
| 921 | + ?> |
|
| 922 | 922 | </div> |
| 923 | 923 | <table class="form-table wpbs-table-version-settings"> |
| 924 | 924 | <tr valign="top"> |
@@ -1002,77 +1002,77 @@ discard block |
||
| 1002 | 1002 | </table> |
| 1003 | 1003 | |
| 1004 | 1004 | <?php |
| 1005 | - submit_button(); |
|
| 1006 | - ?> |
|
| 1005 | + submit_button(); |
|
| 1006 | + ?> |
|
| 1007 | 1007 | </form> |
| 1008 | 1008 | <div id="wpbs-version" data-aui-source="<?php echo esc_attr( $this->get_load_source() ); ?>"><?php echo esc_html( $this->version ); ?></div> |
| 1009 | 1009 | </div> |
| 1010 | 1010 | <?php |
| 1011 | - } |
|
| 1011 | + } |
|
| 1012 | 1012 | |
| 1013 | 1013 | public function get_load_source(){ |
| 1014 | - $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) ); |
|
| 1015 | - $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) ); |
|
| 1016 | - |
|
| 1017 | - // Find source plugin/theme of SD |
|
| 1018 | - $source = array(); |
|
| 1019 | - if ( strpos( $file, $plugins_dir ) !== false ) { |
|
| 1020 | - $source = explode( "/", plugin_basename( $file ) ); |
|
| 1021 | - } else if ( function_exists( 'get_theme_root' ) ) { |
|
| 1022 | - $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) ); |
|
| 1023 | - |
|
| 1024 | - if ( strpos( $file, $themes_dir ) !== false ) { |
|
| 1025 | - $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) ); |
|
| 1026 | - } |
|
| 1027 | - } |
|
| 1014 | + $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) ); |
|
| 1015 | + $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) ); |
|
| 1016 | + |
|
| 1017 | + // Find source plugin/theme of SD |
|
| 1018 | + $source = array(); |
|
| 1019 | + if ( strpos( $file, $plugins_dir ) !== false ) { |
|
| 1020 | + $source = explode( "/", plugin_basename( $file ) ); |
|
| 1021 | + } else if ( function_exists( 'get_theme_root' ) ) { |
|
| 1022 | + $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) ); |
|
| 1023 | + |
|
| 1024 | + if ( strpos( $file, $themes_dir ) !== false ) { |
|
| 1025 | + $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) ); |
|
| 1026 | + } |
|
| 1027 | + } |
|
| 1028 | 1028 | |
| 1029 | 1029 | return isset($source[0]) ? esc_attr($source[0]) : ''; |
| 1030 | 1030 | } |
| 1031 | 1031 | |
| 1032 | - public function customizer_settings($wp_customize){ |
|
| 1033 | - $wp_customize->add_section('aui_settings', array( |
|
| 1034 | - 'title' => __('AyeCode UI', 'ayecode-connect' ), |
|
| 1035 | - 'priority' => 120, |
|
| 1036 | - )); |
|
| 1037 | - |
|
| 1038 | - // ============================= |
|
| 1039 | - // = Color Picker = |
|
| 1040 | - // ============================= |
|
| 1041 | - $wp_customize->add_setting('aui_options[color_primary]', array( |
|
| 1042 | - 'default' => AUI_PRIMARY_COLOR, |
|
| 1043 | - 'sanitize_callback' => 'sanitize_hex_color', |
|
| 1044 | - 'capability' => 'edit_theme_options', |
|
| 1045 | - 'type' => 'option', |
|
| 1046 | - 'transport' => 'refresh', |
|
| 1047 | - )); |
|
| 1048 | - $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_primary', array( |
|
| 1049 | - 'label' => __('Primary Color', 'ayecode-connect' ), |
|
| 1050 | - 'section' => 'aui_settings', |
|
| 1051 | - 'settings' => 'aui_options[color_primary]', |
|
| 1052 | - ))); |
|
| 1053 | - |
|
| 1054 | - $wp_customize->add_setting('aui_options[color_secondary]', array( |
|
| 1055 | - 'default' => '#6c757d', |
|
| 1056 | - 'sanitize_callback' => 'sanitize_hex_color', |
|
| 1057 | - 'capability' => 'edit_theme_options', |
|
| 1058 | - 'type' => 'option', |
|
| 1059 | - 'transport' => 'refresh', |
|
| 1060 | - )); |
|
| 1061 | - $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_secondary', array( |
|
| 1062 | - 'label' => __('Secondary Color', 'ayecode-connect' ), |
|
| 1063 | - 'section' => 'aui_settings', |
|
| 1064 | - 'settings' => 'aui_options[color_secondary]', |
|
| 1065 | - ))); |
|
| 1066 | - } |
|
| 1067 | - |
|
| 1068 | - /** |
|
| 1069 | - * CSS to help with conflict issues with other plugins and themes using bootstrap v3. |
|
| 1070 | - * |
|
| 1071 | - * @return mixed |
|
| 1072 | - */ |
|
| 1073 | - public static function bs3_compat_css() { |
|
| 1074 | - ob_start(); |
|
| 1075 | - ?> |
|
| 1032 | + public function customizer_settings($wp_customize){ |
|
| 1033 | + $wp_customize->add_section('aui_settings', array( |
|
| 1034 | + 'title' => __('AyeCode UI', 'ayecode-connect' ), |
|
| 1035 | + 'priority' => 120, |
|
| 1036 | + )); |
|
| 1037 | + |
|
| 1038 | + // ============================= |
|
| 1039 | + // = Color Picker = |
|
| 1040 | + // ============================= |
|
| 1041 | + $wp_customize->add_setting('aui_options[color_primary]', array( |
|
| 1042 | + 'default' => AUI_PRIMARY_COLOR, |
|
| 1043 | + 'sanitize_callback' => 'sanitize_hex_color', |
|
| 1044 | + 'capability' => 'edit_theme_options', |
|
| 1045 | + 'type' => 'option', |
|
| 1046 | + 'transport' => 'refresh', |
|
| 1047 | + )); |
|
| 1048 | + $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_primary', array( |
|
| 1049 | + 'label' => __('Primary Color', 'ayecode-connect' ), |
|
| 1050 | + 'section' => 'aui_settings', |
|
| 1051 | + 'settings' => 'aui_options[color_primary]', |
|
| 1052 | + ))); |
|
| 1053 | + |
|
| 1054 | + $wp_customize->add_setting('aui_options[color_secondary]', array( |
|
| 1055 | + 'default' => '#6c757d', |
|
| 1056 | + 'sanitize_callback' => 'sanitize_hex_color', |
|
| 1057 | + 'capability' => 'edit_theme_options', |
|
| 1058 | + 'type' => 'option', |
|
| 1059 | + 'transport' => 'refresh', |
|
| 1060 | + )); |
|
| 1061 | + $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_secondary', array( |
|
| 1062 | + 'label' => __('Secondary Color', 'ayecode-connect' ), |
|
| 1063 | + 'section' => 'aui_settings', |
|
| 1064 | + 'settings' => 'aui_options[color_secondary]', |
|
| 1065 | + ))); |
|
| 1066 | + } |
|
| 1067 | + |
|
| 1068 | + /** |
|
| 1069 | + * CSS to help with conflict issues with other plugins and themes using bootstrap v3. |
|
| 1070 | + * |
|
| 1071 | + * @return mixed |
|
| 1072 | + */ |
|
| 1073 | + public static function bs3_compat_css() { |
|
| 1074 | + ob_start(); |
|
| 1075 | + ?> |
|
| 1076 | 1076 | <style> |
| 1077 | 1077 | /* Bootstrap 3 compatibility */ |
| 1078 | 1078 | body.modal-open .modal-backdrop.show:not(.in) {opacity:0.5;} |
@@ -1101,368 +1101,368 @@ discard block |
||
| 1101 | 1101 | <?php } ?> |
| 1102 | 1102 | </style> |
| 1103 | 1103 | <?php |
| 1104 | - return str_replace( array( |
|
| 1105 | - '<style>', |
|
| 1106 | - '</style>' |
|
| 1107 | - ), '', self::minify_css( ob_get_clean() ) ); |
|
| 1108 | - } |
|
| 1104 | + return str_replace( array( |
|
| 1105 | + '<style>', |
|
| 1106 | + '</style>' |
|
| 1107 | + ), '', self::minify_css( ob_get_clean() ) ); |
|
| 1108 | + } |
|
| 1109 | 1109 | |
| 1110 | - public static function custom_css( $compatibility = true, $is_fse = false ) { |
|
| 1111 | - global $aui_bs5; |
|
| 1110 | + public static function custom_css( $compatibility = true, $is_fse = false ) { |
|
| 1111 | + global $aui_bs5; |
|
| 1112 | 1112 | |
| 1113 | - $colors = array(); |
|
| 1113 | + $colors = array(); |
|
| 1114 | 1114 | |
| 1115 | - if ( defined( 'BLOCKSTRAP_VERSION' ) ) { |
|
| 1116 | - $setting = wp_get_global_settings(); |
|
| 1115 | + if ( defined( 'BLOCKSTRAP_VERSION' ) ) { |
|
| 1116 | + $setting = wp_get_global_settings(); |
|
| 1117 | 1117 | |
| 1118 | - if ( ! empty( $setting['color']['palette']['theme'] ) ) { |
|
| 1119 | - foreach ( $setting['color']['palette']['theme'] as $color ) { |
|
| 1120 | - $colors[$color['slug']] = esc_attr( $color['color'] ); |
|
| 1121 | - } |
|
| 1122 | - } |
|
| 1118 | + if ( ! empty( $setting['color']['palette']['theme'] ) ) { |
|
| 1119 | + foreach ( $setting['color']['palette']['theme'] as $color ) { |
|
| 1120 | + $colors[$color['slug']] = esc_attr( $color['color'] ); |
|
| 1121 | + } |
|
| 1122 | + } |
|
| 1123 | 1123 | |
| 1124 | - if ( ! empty( $setting['color']['palette']['custom'] ) ) { |
|
| 1125 | - foreach ( $setting['color']['palette']['custom'] as $color ) { |
|
| 1126 | - $colors[$color['slug']] = esc_attr( $color['color'] ); |
|
| 1127 | - } |
|
| 1128 | - } |
|
| 1129 | - } else { |
|
| 1130 | - $settings = get_option( 'aui_options' ); |
|
| 1131 | - |
|
| 1132 | - $colors = array( |
|
| 1133 | - 'primary' => ! empty( $settings['color_primary'] ) ? $settings['color_primary'] : AUI_PRIMARY_COLOR, |
|
| 1134 | - 'secondary' => ! empty( $settings['color_secondary'] ) ? $settings['color_secondary'] : AUI_SECONDARY_COLOR |
|
| 1135 | - ); |
|
| 1136 | - } |
|
| 1137 | - |
|
| 1138 | - ob_start(); |
|
| 1139 | - ?><style><?php |
|
| 1140 | - // BS v3 compat |
|
| 1141 | - if( self::is_bs3_compat() ){ |
|
| 1142 | - echo self::bs3_compat_css(); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 1143 | - } |
|
| 1144 | - |
|
| 1145 | - //$is_fse = false; |
|
| 1146 | - //if ( is_admin() && ( !empty($_REQUEST['postType']) || self::is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) ) ) { |
|
| 1147 | - //$is_fse = true; |
|
| 1148 | - //} |
|
| 1149 | - |
|
| 1150 | - $custom_front = ! is_admin() ? true : apply_filters('ayecode_ui_custom_front', false ); |
|
| 1151 | - $custom_admin = $is_fse || self::is_preview() ? true : apply_filters('ayecode_ui_custom_admin', false ); |
|
| 1124 | + if ( ! empty( $setting['color']['palette']['custom'] ) ) { |
|
| 1125 | + foreach ( $setting['color']['palette']['custom'] as $color ) { |
|
| 1126 | + $colors[$color['slug']] = esc_attr( $color['color'] ); |
|
| 1127 | + } |
|
| 1128 | + } |
|
| 1129 | + } else { |
|
| 1130 | + $settings = get_option( 'aui_options' ); |
|
| 1131 | + |
|
| 1132 | + $colors = array( |
|
| 1133 | + 'primary' => ! empty( $settings['color_primary'] ) ? $settings['color_primary'] : AUI_PRIMARY_COLOR, |
|
| 1134 | + 'secondary' => ! empty( $settings['color_secondary'] ) ? $settings['color_secondary'] : AUI_SECONDARY_COLOR |
|
| 1135 | + ); |
|
| 1136 | + } |
|
| 1137 | + |
|
| 1138 | + ob_start(); |
|
| 1139 | + ?><style><?php |
|
| 1140 | + // BS v3 compat |
|
| 1141 | + if( self::is_bs3_compat() ){ |
|
| 1142 | + echo self::bs3_compat_css(); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 1143 | + } |
|
| 1144 | + |
|
| 1145 | + //$is_fse = false; |
|
| 1146 | + //if ( is_admin() && ( !empty($_REQUEST['postType']) || self::is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) ) ) { |
|
| 1147 | + //$is_fse = true; |
|
| 1148 | + //} |
|
| 1149 | + |
|
| 1150 | + $custom_front = ! is_admin() ? true : apply_filters('ayecode_ui_custom_front', false ); |
|
| 1151 | + $custom_admin = $is_fse || self::is_preview() ? true : apply_filters('ayecode_ui_custom_admin', false ); |
|
| 1152 | 1152 | $bs_custom_css = apply_filters( 'ayecode_ui_bs_custom_css', $custom_admin || $custom_front ); |
| 1153 | - //$bs_custom_css = true; // Force true to fix any color issue. |
|
| 1153 | + //$bs_custom_css = true; // Force true to fix any color issue. |
|
| 1154 | 1154 | |
| 1155 | - $colors_css = ''; |
|
| 1156 | - if ( ! empty( $colors ) && $bs_custom_css ) { |
|
| 1157 | - $d_colors = self::get_colors(true); |
|
| 1155 | + $colors_css = ''; |
|
| 1156 | + if ( ! empty( $colors ) && $bs_custom_css ) { |
|
| 1157 | + $d_colors = self::get_colors(true); |
|
| 1158 | 1158 | |
| 1159 | - foreach ( $colors as $key => $color ) { |
|
| 1160 | - if ( ( empty( $d_colors[$key]) || $d_colors[$key] != $color) || $is_fse ) { |
|
| 1161 | - $var = $is_fse ? "var(--wp--preset--color--$key)" : $color; |
|
| 1162 | - $compat = $is_fse ? '.editor-styles-wrapper' : $compatibility; |
|
| 1159 | + foreach ( $colors as $key => $color ) { |
|
| 1160 | + if ( ( empty( $d_colors[$key]) || $d_colors[$key] != $color) || $is_fse ) { |
|
| 1161 | + $var = $is_fse ? "var(--wp--preset--color--$key)" : $color; |
|
| 1162 | + $compat = $is_fse ? '.editor-styles-wrapper' : $compatibility; |
|
| 1163 | 1163 | |
| 1164 | - $colors_css .= $aui_bs5 ? self::css_overwrite_bs5( $key,$var, $compat, $color ) : self::css_overwrite( $key, $var, $compat, $color ); |
|
| 1165 | - } |
|
| 1166 | - } |
|
| 1167 | - } |
|
| 1164 | + $colors_css .= $aui_bs5 ? self::css_overwrite_bs5( $key,$var, $compat, $color ) : self::css_overwrite( $key, $var, $compat, $color ); |
|
| 1165 | + } |
|
| 1166 | + } |
|
| 1167 | + } |
|
| 1168 | 1168 | |
| 1169 | - if ( $colors_css ) { |
|
| 1170 | - echo $colors_css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 1171 | - } |
|
| 1169 | + if ( $colors_css ) { |
|
| 1170 | + echo $colors_css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 1171 | + } |
|
| 1172 | 1172 | |
| 1173 | - // Set admin bar z-index lower when modal is open. |
|
| 1174 | - echo ' body.modal-open #wpadminbar{z-index:999}.embed-responsive-16by9 .fluid-width-video-wrapper{padding:0 !important;position:initial}'; |
|
| 1173 | + // Set admin bar z-index lower when modal is open. |
|
| 1174 | + echo ' body.modal-open #wpadminbar{z-index:999}.embed-responsive-16by9 .fluid-width-video-wrapper{padding:0 !important;position:initial}'; |
|
| 1175 | 1175 | |
| 1176 | - if ( is_admin() ) { |
|
| 1177 | - echo ' body.modal-open #adminmenuwrap{z-index:999} body.modal-open #wpadminbar{z-index:1025}'; |
|
| 1178 | - } |
|
| 1176 | + if ( is_admin() ) { |
|
| 1177 | + echo ' body.modal-open #adminmenuwrap{z-index:999} body.modal-open #wpadminbar{z-index:1025}'; |
|
| 1178 | + } |
|
| 1179 | 1179 | |
| 1180 | - $custom_css = ''; |
|
| 1180 | + $custom_css = ''; |
|
| 1181 | 1181 | |
| 1182 | - if ( $aui_bs5 && defined( 'BLOCKSTRAP_VERSION' ) && $bs_custom_css ) { |
|
| 1183 | - $css = ''; |
|
| 1184 | - $theme_settings = wp_get_global_styles(); |
|
| 1182 | + if ( $aui_bs5 && defined( 'BLOCKSTRAP_VERSION' ) && $bs_custom_css ) { |
|
| 1183 | + $css = ''; |
|
| 1184 | + $theme_settings = wp_get_global_styles(); |
|
| 1185 | 1185 | |
| 1186 | - // Font face |
|
| 1187 | - if( !empty( $theme_settings['typography']['fontFamily'] ) ){ |
|
| 1188 | - $t_fontface = str_replace( array('var:preset|','font-family|'), array('--wp--preset--','font-family--'), $theme_settings['typography']['fontFamily'] ); //var(--wp--preset--font-family--poppins) |
|
| 1189 | - $css .= '--bs-body-font-family: ' . esc_attr($t_fontface) . ';'; |
|
| 1190 | - } |
|
| 1186 | + // Font face |
|
| 1187 | + if( !empty( $theme_settings['typography']['fontFamily'] ) ){ |
|
| 1188 | + $t_fontface = str_replace( array('var:preset|','font-family|'), array('--wp--preset--','font-family--'), $theme_settings['typography']['fontFamily'] ); //var(--wp--preset--font-family--poppins) |
|
| 1189 | + $css .= '--bs-body-font-family: ' . esc_attr($t_fontface) . ';'; |
|
| 1190 | + } |
|
| 1191 | 1191 | |
| 1192 | - // font size |
|
| 1193 | - if( !empty( $theme_settings['typography']['fontSize'] ) ){ |
|
| 1194 | - $css .= '--bs-body-font-size: ' . esc_attr( $theme_settings['typography']['fontSize'] ) . ' ;'; |
|
| 1195 | - } |
|
| 1192 | + // font size |
|
| 1193 | + if( !empty( $theme_settings['typography']['fontSize'] ) ){ |
|
| 1194 | + $css .= '--bs-body-font-size: ' . esc_attr( $theme_settings['typography']['fontSize'] ) . ' ;'; |
|
| 1195 | + } |
|
| 1196 | 1196 | |
| 1197 | - // line height |
|
| 1198 | - if( !empty( $theme_settings['typography']['lineHeight'] ) ){ |
|
| 1199 | - $css .= '--bs-body-line-height: ' . esc_attr( $theme_settings['typography']['lineHeight'] ) . ';'; |
|
| 1200 | - } |
|
| 1197 | + // line height |
|
| 1198 | + if( !empty( $theme_settings['typography']['lineHeight'] ) ){ |
|
| 1199 | + $css .= '--bs-body-line-height: ' . esc_attr( $theme_settings['typography']['lineHeight'] ) . ';'; |
|
| 1200 | + } |
|
| 1201 | 1201 | |
| 1202 | 1202 | |
| 1203 | - // font weight |
|
| 1204 | - if( !empty( $theme_settings['typography']['fontWeight'] ) ){ |
|
| 1205 | - $css .= '--bs-body-font-weight: ' . esc_attr( $theme_settings['typography']['fontWeight'] ) . ';'; |
|
| 1206 | - } |
|
| 1203 | + // font weight |
|
| 1204 | + if( !empty( $theme_settings['typography']['fontWeight'] ) ){ |
|
| 1205 | + $css .= '--bs-body-font-weight: ' . esc_attr( $theme_settings['typography']['fontWeight'] ) . ';'; |
|
| 1206 | + } |
|
| 1207 | 1207 | |
| 1208 | - // Background |
|
| 1209 | - if( !empty( $theme_settings['color']['background'] ) ){ |
|
| 1210 | - $css .= '--bs-body-bg: ' . esc_attr( $theme_settings['color']['background'] ) . ';'; |
|
| 1211 | - } |
|
| 1208 | + // Background |
|
| 1209 | + if( !empty( $theme_settings['color']['background'] ) ){ |
|
| 1210 | + $css .= '--bs-body-bg: ' . esc_attr( $theme_settings['color']['background'] ) . ';'; |
|
| 1211 | + } |
|
| 1212 | 1212 | |
| 1213 | - // Background Gradient |
|
| 1214 | - if( !empty( $theme_settings['color']['gradient'] ) ){ |
|
| 1215 | - $css .= 'background: ' . esc_attr( $theme_settings['color']['gradient'] ) . ';'; |
|
| 1216 | - } |
|
| 1213 | + // Background Gradient |
|
| 1214 | + if( !empty( $theme_settings['color']['gradient'] ) ){ |
|
| 1215 | + $css .= 'background: ' . esc_attr( $theme_settings['color']['gradient'] ) . ';'; |
|
| 1216 | + } |
|
| 1217 | 1217 | |
| 1218 | - // Background Gradient |
|
| 1219 | - if( !empty( $theme_settings['color']['gradient'] ) ){ |
|
| 1220 | - $css .= 'background: ' . esc_attr( $theme_settings['color']['gradient'] ) . ';'; |
|
| 1221 | - } |
|
| 1218 | + // Background Gradient |
|
| 1219 | + if( !empty( $theme_settings['color']['gradient'] ) ){ |
|
| 1220 | + $css .= 'background: ' . esc_attr( $theme_settings['color']['gradient'] ) . ';'; |
|
| 1221 | + } |
|
| 1222 | 1222 | |
| 1223 | - // text color |
|
| 1224 | - if( !empty( $theme_settings['color']['text'] ) ){ |
|
| 1225 | - $css .= '--bs-body-color: ' . esc_attr( $theme_settings['color']['text'] ) . ';'; |
|
| 1226 | - } |
|
| 1223 | + // text color |
|
| 1224 | + if( !empty( $theme_settings['color']['text'] ) ){ |
|
| 1225 | + $css .= '--bs-body-color: ' . esc_attr( $theme_settings['color']['text'] ) . ';'; |
|
| 1226 | + } |
|
| 1227 | 1227 | |
| 1228 | 1228 | |
| 1229 | - // link colors |
|
| 1230 | - if( !empty( $theme_settings['elements']['link']['color']['text'] ) ){ |
|
| 1231 | - $css .= '--bs-link-color: ' . esc_attr( $theme_settings['elements']['link']['color']['text'] ) . ';'; |
|
| 1232 | - } |
|
| 1233 | - if( !empty( $theme_settings['elements']['link'][':hover']['color']['text'] ) ){ |
|
| 1234 | - $css .= '--bs-link-hover-color: ' . esc_attr( $theme_settings['elements']['link'][':hover']['color']['text'] ) . ';'; |
|
| 1235 | - } |
|
| 1229 | + // link colors |
|
| 1230 | + if( !empty( $theme_settings['elements']['link']['color']['text'] ) ){ |
|
| 1231 | + $css .= '--bs-link-color: ' . esc_attr( $theme_settings['elements']['link']['color']['text'] ) . ';'; |
|
| 1232 | + } |
|
| 1233 | + if( !empty( $theme_settings['elements']['link'][':hover']['color']['text'] ) ){ |
|
| 1234 | + $css .= '--bs-link-hover-color: ' . esc_attr( $theme_settings['elements']['link'][':hover']['color']['text'] ) . ';'; |
|
| 1235 | + } |
|
| 1236 | 1236 | |
| 1237 | - if($css){ |
|
| 1238 | - $custom_css .= $is_fse ? 'body.editor-styles-wrapper{' . esc_attr( $css ) . '}' : 'body{' . esc_attr( $css ) . '}'; |
|
| 1239 | - } |
|
| 1237 | + if($css){ |
|
| 1238 | + $custom_css .= $is_fse ? 'body.editor-styles-wrapper{' . esc_attr( $css ) . '}' : 'body{' . esc_attr( $css ) . '}'; |
|
| 1239 | + } |
|
| 1240 | 1240 | |
| 1241 | - $bep = $is_fse ? 'body.editor-styles-wrapper ' : ''; |
|
| 1241 | + $bep = $is_fse ? 'body.editor-styles-wrapper ' : ''; |
|
| 1242 | 1242 | |
| 1243 | - // Headings |
|
| 1244 | - $headings_css = ''; |
|
| 1245 | - if( !empty( $theme_settings['elements']['heading']['color']['text'] ) ){ |
|
| 1246 | - $headings_css .= "color: " . esc_attr( $theme_settings['elements']['heading']['color']['text'] ) . ";"; |
|
| 1247 | - } |
|
| 1243 | + // Headings |
|
| 1244 | + $headings_css = ''; |
|
| 1245 | + if( !empty( $theme_settings['elements']['heading']['color']['text'] ) ){ |
|
| 1246 | + $headings_css .= "color: " . esc_attr( $theme_settings['elements']['heading']['color']['text'] ) . ";"; |
|
| 1247 | + } |
|
| 1248 | 1248 | |
| 1249 | - // heading background |
|
| 1250 | - if( !empty( $theme_settings['elements']['heading']['color']['background'] ) ){ |
|
| 1251 | - $headings_css .= 'background: ' . esc_attr( $theme_settings['elements']['heading']['color']['background'] ) . ';'; |
|
| 1252 | - } |
|
| 1249 | + // heading background |
|
| 1250 | + if( !empty( $theme_settings['elements']['heading']['color']['background'] ) ){ |
|
| 1251 | + $headings_css .= 'background: ' . esc_attr( $theme_settings['elements']['heading']['color']['background'] ) . ';'; |
|
| 1252 | + } |
|
| 1253 | 1253 | |
| 1254 | - // heading font family |
|
| 1255 | - if( !empty( $theme_settings['elements']['heading']['typography']['fontFamily'] ) ){ |
|
| 1256 | - $headings_css .= 'font-family: ' . esc_attr( $theme_settings['elements']['heading']['typography']['fontFamily'] ) . ';'; |
|
| 1257 | - } |
|
| 1254 | + // heading font family |
|
| 1255 | + if( !empty( $theme_settings['elements']['heading']['typography']['fontFamily'] ) ){ |
|
| 1256 | + $headings_css .= 'font-family: ' . esc_attr( $theme_settings['elements']['heading']['typography']['fontFamily'] ) . ';'; |
|
| 1257 | + } |
|
| 1258 | 1258 | |
| 1259 | - if( $headings_css ){ |
|
| 1260 | - $custom_css .= "$bep h1,$bep h2,$bep h3, $bep h4,$bep h5,$bep h6{ " . esc_attr( $headings_css ) . "}"; |
|
| 1261 | - } |
|
| 1259 | + if( $headings_css ){ |
|
| 1260 | + $custom_css .= "$bep h1,$bep h2,$bep h3, $bep h4,$bep h5,$bep h6{ " . esc_attr( $headings_css ) . "}"; |
|
| 1261 | + } |
|
| 1262 | 1262 | |
| 1263 | - $hs = array('h1','h2','h3','h4','h5','h6'); |
|
| 1263 | + $hs = array('h1','h2','h3','h4','h5','h6'); |
|
| 1264 | 1264 | |
| 1265 | - foreach($hs as $hn){ |
|
| 1266 | - $h_css = ''; |
|
| 1267 | - if( !empty( $theme_settings['elements'][$hn]['color']['text'] ) ){ |
|
| 1268 | - $h_css .= 'color: ' . esc_attr( $theme_settings['elements'][$hn]['color']['text'] ) . ';'; |
|
| 1269 | - } |
|
| 1265 | + foreach($hs as $hn){ |
|
| 1266 | + $h_css = ''; |
|
| 1267 | + if( !empty( $theme_settings['elements'][$hn]['color']['text'] ) ){ |
|
| 1268 | + $h_css .= 'color: ' . esc_attr( $theme_settings['elements'][$hn]['color']['text'] ) . ';'; |
|
| 1269 | + } |
|
| 1270 | 1270 | |
| 1271 | - if( !empty( $theme_settings['elements'][$hn]['typography']['fontSize'] ) ){ |
|
| 1272 | - $h_css .= 'font-size: ' . esc_attr( $theme_settings['elements'][$hn]['typography']['fontSize'] ) . ';'; |
|
| 1273 | - } |
|
| 1271 | + if( !empty( $theme_settings['elements'][$hn]['typography']['fontSize'] ) ){ |
|
| 1272 | + $h_css .= 'font-size: ' . esc_attr( $theme_settings['elements'][$hn]['typography']['fontSize'] ) . ';'; |
|
| 1273 | + } |
|
| 1274 | 1274 | |
| 1275 | - if( !empty( $theme_settings['elements'][$hn]['typography']['fontFamily'] ) ){ |
|
| 1276 | - $h_css .= 'font-family: ' . esc_attr( $theme_settings['elements'][$hn]['typography']['fontFamily'] ) . ';'; |
|
| 1277 | - } |
|
| 1275 | + if( !empty( $theme_settings['elements'][$hn]['typography']['fontFamily'] ) ){ |
|
| 1276 | + $h_css .= 'font-family: ' . esc_attr( $theme_settings['elements'][$hn]['typography']['fontFamily'] ) . ';'; |
|
| 1277 | + } |
|
| 1278 | 1278 | |
| 1279 | - if($h_css){ |
|
| 1280 | - $custom_css .= esc_attr( $bep . $hn ) . '{'.esc_attr( $h_css ).'}'; |
|
| 1281 | - } |
|
| 1282 | - } |
|
| 1283 | - } |
|
| 1279 | + if($h_css){ |
|
| 1280 | + $custom_css .= esc_attr( $bep . $hn ) . '{'.esc_attr( $h_css ).'}'; |
|
| 1281 | + } |
|
| 1282 | + } |
|
| 1283 | + } |
|
| 1284 | 1284 | |
| 1285 | - if ( $custom_css ) { |
|
| 1286 | - echo $custom_css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 1287 | - } |
|
| 1288 | - |
|
| 1289 | - // Pagination on Hello Elementor theme. |
|
| 1290 | - if ( function_exists( 'hello_elementor_setup' ) ) { |
|
| 1291 | - echo '.aui-nav-links .pagination{justify-content:inherit}'; |
|
| 1292 | - } |
|
| 1293 | - ?></style><?php |
|
| 1294 | - $custom_css = ob_get_clean(); |
|
| 1295 | - |
|
| 1296 | - /* |
|
| 1285 | + if ( $custom_css ) { |
|
| 1286 | + echo $custom_css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 1287 | + } |
|
| 1288 | + |
|
| 1289 | + // Pagination on Hello Elementor theme. |
|
| 1290 | + if ( function_exists( 'hello_elementor_setup' ) ) { |
|
| 1291 | + echo '.aui-nav-links .pagination{justify-content:inherit}'; |
|
| 1292 | + } |
|
| 1293 | + ?></style><?php |
|
| 1294 | + $custom_css = ob_get_clean(); |
|
| 1295 | + |
|
| 1296 | + /* |
|
| 1297 | 1297 | * We only add the <script> tags for code highlighting, so we strip them from the output. |
| 1298 | 1298 | */ |
| 1299 | - return str_replace( array( |
|
| 1300 | - '<style>', |
|
| 1301 | - '</style>' |
|
| 1302 | - ), '', self::minify_css( $custom_css ) ); |
|
| 1303 | - } |
|
| 1304 | - |
|
| 1305 | - /** |
|
| 1306 | - * Check if we should add booststrap 3 compatibility changes. |
|
| 1307 | - * |
|
| 1308 | - * @return bool |
|
| 1309 | - */ |
|
| 1310 | - public static function is_bs3_compat(){ |
|
| 1311 | - return defined('AYECODE_UI_BS3_COMPAT') || defined('SVQ_THEME_VERSION') || defined('FUSION_BUILDER_VERSION'); |
|
| 1312 | - } |
|
| 1313 | - |
|
| 1314 | - public static function hex_to_rgb( $hex ) { |
|
| 1315 | - // Remove '#' if present |
|
| 1316 | - $hex = str_replace( '#', '', $hex ); |
|
| 1317 | - |
|
| 1318 | - // Check if input is RGB |
|
| 1319 | - if ( strpos( $hex, 'rgba(' ) === 0 || strpos( $hex, 'rgb(' ) === 0 ) { |
|
| 1320 | - $_rgb = explode( ',', str_replace( array( 'rgba(', 'rgb(', ')' ), '', $hex ) ); |
|
| 1321 | - |
|
| 1322 | - $rgb = ( isset( $_rgb[0] ) ? (int) trim( $_rgb[0] ) : '0' ) . ','; |
|
| 1323 | - $rgb .= ( isset( $_rgb[1] ) ? (int) trim( $_rgb[1] ) : '0' ) . ','; |
|
| 1324 | - $rgb .= ( isset( $_rgb[2] ) ? (int) trim( $_rgb[2] ) : '0' ); |
|
| 1325 | - |
|
| 1326 | - return $rgb; |
|
| 1327 | - } |
|
| 1328 | - |
|
| 1329 | - // Convert 3-digit hex to 6-digit hex |
|
| 1330 | - if ( strlen( $hex ) == 3 ) { |
|
| 1331 | - $hex = str_repeat( substr( $hex, 0, 1 ), 2 ) . str_repeat( substr( $hex, 1, 1 ), 2 ) . str_repeat( substr( $hex, 2, 1 ), 2 ); |
|
| 1332 | - } |
|
| 1333 | - |
|
| 1334 | - // Convert hex to RGB |
|
| 1335 | - $r = hexdec( substr( $hex, 0, 2 ) ); |
|
| 1336 | - $g = hexdec( substr( $hex, 2, 2 ) ); |
|
| 1337 | - $b = hexdec( substr( $hex, 4, 2 ) ); |
|
| 1338 | - |
|
| 1339 | - // Return RGB values as an array |
|
| 1340 | - return $r . ',' . $g . ',' . $b; |
|
| 1341 | - } |
|
| 1342 | - |
|
| 1343 | - /** |
|
| 1344 | - * Build the CSS to overwrite a bootstrap color variable. |
|
| 1345 | - * |
|
| 1346 | - * @param $type |
|
| 1347 | - * @param $color_code |
|
| 1348 | - * @param $compatibility |
|
| 1349 | - * |
|
| 1350 | - * @return string |
|
| 1351 | - */ |
|
| 1352 | - public static function css_overwrite_bs5($type,$color_code,$compatibility, $hex = '' ){ |
|
| 1353 | - global $aui_bs5; |
|
| 1354 | - |
|
| 1355 | - $is_var = false; |
|
| 1356 | - $is_custom = strpos($type, 'custom-') !== false ? true : false; |
|
| 1357 | - if(!$color_code){return '';} |
|
| 1358 | - if(strpos($color_code, 'var') !== false){ |
|
| 1359 | - //if(!sanitize_hex_color($color_code)){ |
|
| 1360 | - $color_code = esc_attr($color_code); |
|
| 1361 | - $is_var = true; |
|
| 1299 | + return str_replace( array( |
|
| 1300 | + '<style>', |
|
| 1301 | + '</style>' |
|
| 1302 | + ), '', self::minify_css( $custom_css ) ); |
|
| 1303 | + } |
|
| 1304 | + |
|
| 1305 | + /** |
|
| 1306 | + * Check if we should add booststrap 3 compatibility changes. |
|
| 1307 | + * |
|
| 1308 | + * @return bool |
|
| 1309 | + */ |
|
| 1310 | + public static function is_bs3_compat(){ |
|
| 1311 | + return defined('AYECODE_UI_BS3_COMPAT') || defined('SVQ_THEME_VERSION') || defined('FUSION_BUILDER_VERSION'); |
|
| 1312 | + } |
|
| 1313 | + |
|
| 1314 | + public static function hex_to_rgb( $hex ) { |
|
| 1315 | + // Remove '#' if present |
|
| 1316 | + $hex = str_replace( '#', '', $hex ); |
|
| 1317 | + |
|
| 1318 | + // Check if input is RGB |
|
| 1319 | + if ( strpos( $hex, 'rgba(' ) === 0 || strpos( $hex, 'rgb(' ) === 0 ) { |
|
| 1320 | + $_rgb = explode( ',', str_replace( array( 'rgba(', 'rgb(', ')' ), '', $hex ) ); |
|
| 1321 | + |
|
| 1322 | + $rgb = ( isset( $_rgb[0] ) ? (int) trim( $_rgb[0] ) : '0' ) . ','; |
|
| 1323 | + $rgb .= ( isset( $_rgb[1] ) ? (int) trim( $_rgb[1] ) : '0' ) . ','; |
|
| 1324 | + $rgb .= ( isset( $_rgb[2] ) ? (int) trim( $_rgb[2] ) : '0' ); |
|
| 1325 | + |
|
| 1326 | + return $rgb; |
|
| 1327 | + } |
|
| 1328 | + |
|
| 1329 | + // Convert 3-digit hex to 6-digit hex |
|
| 1330 | + if ( strlen( $hex ) == 3 ) { |
|
| 1331 | + $hex = str_repeat( substr( $hex, 0, 1 ), 2 ) . str_repeat( substr( $hex, 1, 1 ), 2 ) . str_repeat( substr( $hex, 2, 1 ), 2 ); |
|
| 1332 | + } |
|
| 1333 | + |
|
| 1334 | + // Convert hex to RGB |
|
| 1335 | + $r = hexdec( substr( $hex, 0, 2 ) ); |
|
| 1336 | + $g = hexdec( substr( $hex, 2, 2 ) ); |
|
| 1337 | + $b = hexdec( substr( $hex, 4, 2 ) ); |
|
| 1338 | + |
|
| 1339 | + // Return RGB values as an array |
|
| 1340 | + return $r . ',' . $g . ',' . $b; |
|
| 1341 | + } |
|
| 1342 | + |
|
| 1343 | + /** |
|
| 1344 | + * Build the CSS to overwrite a bootstrap color variable. |
|
| 1345 | + * |
|
| 1346 | + * @param $type |
|
| 1347 | + * @param $color_code |
|
| 1348 | + * @param $compatibility |
|
| 1349 | + * |
|
| 1350 | + * @return string |
|
| 1351 | + */ |
|
| 1352 | + public static function css_overwrite_bs5($type,$color_code,$compatibility, $hex = '' ){ |
|
| 1353 | + global $aui_bs5; |
|
| 1354 | + |
|
| 1355 | + $is_var = false; |
|
| 1356 | + $is_custom = strpos($type, 'custom-') !== false ? true : false; |
|
| 1357 | + if(!$color_code){return '';} |
|
| 1358 | + if(strpos($color_code, 'var') !== false){ |
|
| 1359 | + //if(!sanitize_hex_color($color_code)){ |
|
| 1360 | + $color_code = esc_attr($color_code); |
|
| 1361 | + $is_var = true; |
|
| 1362 | 1362 | // $color_code = "rgba($color_code, 0.5)"; |
| 1363 | 1363 | // echo '###1'.$color_code.'###';//exit; |
| 1364 | - } |
|
| 1364 | + } |
|
| 1365 | 1365 | |
| 1366 | 1366 | // echo '@@@'.$color_code.'==='.self::hex_to_rgb($color_code);exit; |
| 1367 | 1367 | |
| 1368 | - if(!$color_code){return '';} |
|
| 1368 | + if(!$color_code){return '';} |
|
| 1369 | 1369 | |
| 1370 | - $rgb = self::hex_to_rgb($hex); |
|
| 1370 | + $rgb = self::hex_to_rgb($hex); |
|
| 1371 | 1371 | |
| 1372 | - if($compatibility===true || $compatibility===1){ |
|
| 1373 | - $compatibility = '.bsui'; |
|
| 1374 | - }elseif(!$compatibility){ |
|
| 1375 | - $compatibility = ''; |
|
| 1376 | - }else{ |
|
| 1377 | - $compatibility = esc_attr($compatibility); |
|
| 1378 | - } |
|
| 1372 | + if($compatibility===true || $compatibility===1){ |
|
| 1373 | + $compatibility = '.bsui'; |
|
| 1374 | + }elseif(!$compatibility){ |
|
| 1375 | + $compatibility = ''; |
|
| 1376 | + }else{ |
|
| 1377 | + $compatibility = esc_attr($compatibility); |
|
| 1378 | + } |
|
| 1379 | 1379 | |
| 1380 | - $prefix = $compatibility ? $compatibility . " " : ""; |
|
| 1380 | + $prefix = $compatibility ? $compatibility . " " : ""; |
|
| 1381 | 1381 | |
| 1382 | 1382 | |
| 1383 | 1383 | $output = ''; |
| 1384 | 1384 | |
| 1385 | 1385 | // echo '####'.$color_code;exit; |
| 1386 | 1386 | |
| 1387 | - $type = sanitize_html_class($type); |
|
| 1387 | + $type = sanitize_html_class($type); |
|
| 1388 | + |
|
| 1389 | + /** |
|
| 1390 | + * c = color, b = background color, o = border-color, f = fill |
|
| 1391 | + */ |
|
| 1392 | + $selectors = array( |
|
| 1393 | + ".btn-{$type}" => array( 'b', 'o' ), |
|
| 1394 | + ".btn-{$type}.disabled" => array( 'b', 'o' ), |
|
| 1395 | + ".btn-{$type}:disabled" => array( 'b', 'o' ), |
|
| 1396 | + ".btn-outline-{$type}" => array( 'c', 'o' ), |
|
| 1397 | + ".btn-outline-{$type}:hover" => array( 'b', 'o' ), |
|
| 1398 | + ".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ), |
|
| 1399 | + ".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ), |
|
| 1400 | + ".show>.btn-outline-{$type}.dropdown-toggle" => array( 'b', 'o' ), |
|
| 1401 | + ".badge-{$type}" => array( 'b' ), |
|
| 1402 | + ".alert-{$type}" => array( 'b', 'o' ), |
|
| 1403 | + ".bg-{$type}" => array( 'b', 'f' ), |
|
| 1404 | + ".btn-link.btn-{$type}" => array( 'c' ), |
|
| 1405 | + ".text-{$type}" => array( 'c' ), |
|
| 1406 | + ); |
|
| 1407 | + |
|
| 1408 | + if ( $aui_bs5 ) { |
|
| 1409 | + unset($selectors[".alert-{$type}" ]); |
|
| 1410 | + } |
|
| 1388 | 1411 | |
| 1389 | - /** |
|
| 1390 | - * c = color, b = background color, o = border-color, f = fill |
|
| 1391 | - */ |
|
| 1392 | - $selectors = array( |
|
| 1393 | - ".btn-{$type}" => array( 'b', 'o' ), |
|
| 1394 | - ".btn-{$type}.disabled" => array( 'b', 'o' ), |
|
| 1395 | - ".btn-{$type}:disabled" => array( 'b', 'o' ), |
|
| 1396 | - ".btn-outline-{$type}" => array( 'c', 'o' ), |
|
| 1397 | - ".btn-outline-{$type}:hover" => array( 'b', 'o' ), |
|
| 1398 | - ".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ), |
|
| 1399 | - ".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ), |
|
| 1400 | - ".show>.btn-outline-{$type}.dropdown-toggle" => array( 'b', 'o' ), |
|
| 1401 | - ".badge-{$type}" => array( 'b' ), |
|
| 1402 | - ".alert-{$type}" => array( 'b', 'o' ), |
|
| 1403 | - ".bg-{$type}" => array( 'b', 'f' ), |
|
| 1404 | - ".btn-link.btn-{$type}" => array( 'c' ), |
|
| 1405 | - ".text-{$type}" => array( 'c' ), |
|
| 1406 | - ); |
|
| 1407 | - |
|
| 1408 | - if ( $aui_bs5 ) { |
|
| 1409 | - unset($selectors[".alert-{$type}" ]); |
|
| 1410 | - } |
|
| 1411 | - |
|
| 1412 | - if ( $type == 'primary' ) { |
|
| 1413 | - $selectors = $selectors + array( |
|
| 1414 | - 'a' => array( 'c' ), |
|
| 1415 | - '.btn-link' => array( 'c' ), |
|
| 1416 | - '.dropdown-item.active' => array( 'b' ), |
|
| 1417 | - '.custom-control-input:checked~.custom-control-label::before' => array( |
|
| 1418 | - 'b', |
|
| 1419 | - 'o' |
|
| 1420 | - ), |
|
| 1421 | - '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array( |
|
| 1422 | - 'b', |
|
| 1423 | - 'o' |
|
| 1424 | - ), |
|
| 1425 | - '.nav-pills .nav-link.active' => array( 'b' ), |
|
| 1426 | - '.nav-pills .show>.nav-link' => array( 'b' ), |
|
| 1427 | - '.page-link' => array( 'c' ), |
|
| 1428 | - '.page-item.active .page-link' => array( |
|
| 1429 | - 'b', |
|
| 1430 | - 'o' |
|
| 1431 | - ), |
|
| 1432 | - '.progress-bar' => array( 'b' ), |
|
| 1433 | - '.list-group-item.active' => array( |
|
| 1434 | - 'b', |
|
| 1435 | - 'o' |
|
| 1436 | - ), |
|
| 1437 | - '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ), |
|
| 1438 | - ); |
|
| 1439 | - } |
|
| 1412 | + if ( $type == 'primary' ) { |
|
| 1413 | + $selectors = $selectors + array( |
|
| 1414 | + 'a' => array( 'c' ), |
|
| 1415 | + '.btn-link' => array( 'c' ), |
|
| 1416 | + '.dropdown-item.active' => array( 'b' ), |
|
| 1417 | + '.custom-control-input:checked~.custom-control-label::before' => array( |
|
| 1418 | + 'b', |
|
| 1419 | + 'o' |
|
| 1420 | + ), |
|
| 1421 | + '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array( |
|
| 1422 | + 'b', |
|
| 1423 | + 'o' |
|
| 1424 | + ), |
|
| 1425 | + '.nav-pills .nav-link.active' => array( 'b' ), |
|
| 1426 | + '.nav-pills .show>.nav-link' => array( 'b' ), |
|
| 1427 | + '.page-link' => array( 'c' ), |
|
| 1428 | + '.page-item.active .page-link' => array( |
|
| 1429 | + 'b', |
|
| 1430 | + 'o' |
|
| 1431 | + ), |
|
| 1432 | + '.progress-bar' => array( 'b' ), |
|
| 1433 | + '.list-group-item.active' => array( |
|
| 1434 | + 'b', |
|
| 1435 | + 'o' |
|
| 1436 | + ), |
|
| 1437 | + '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ), |
|
| 1438 | + ); |
|
| 1439 | + } |
|
| 1440 | 1440 | |
| 1441 | 1441 | |
| 1442 | 1442 | |
| 1443 | 1443 | // link |
| 1444 | - if ( $type === 'primary' ) { |
|
| 1445 | - $output .= 'html body {--bs-link-hover-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .75); --bs-link-color: var(--bs-'.esc_attr($type).'); }'; |
|
| 1446 | - $output .= $prefix . ' .breadcrumb{--bs-breadcrumb-item-active-color: '.esc_attr($color_code).'; }'; |
|
| 1447 | - $output .= $prefix . ' .navbar { --bs-nav-link-hover-color: '.esc_attr($color_code).'; --bs-navbar-hover-color: '.esc_attr($color_code).'; --bs-navbar-active-color: '.esc_attr($color_code).'; }'; |
|
| 1444 | + if ( $type === 'primary' ) { |
|
| 1445 | + $output .= 'html body {--bs-link-hover-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .75); --bs-link-color: var(--bs-'.esc_attr($type).'); }'; |
|
| 1446 | + $output .= $prefix . ' .breadcrumb{--bs-breadcrumb-item-active-color: '.esc_attr($color_code).'; }'; |
|
| 1447 | + $output .= $prefix . ' .navbar { --bs-nav-link-hover-color: '.esc_attr($color_code).'; --bs-navbar-hover-color: '.esc_attr($color_code).'; --bs-navbar-active-color: '.esc_attr($color_code).'; }'; |
|
| 1448 | 1448 | |
| 1449 | - $output .= $prefix . ' a{color: var(--bs-'.esc_attr($type).');}'; |
|
| 1450 | - $output .= $prefix . ' .text-primary{color: var(--bs-'.esc_attr($type).') !important;}'; |
|
| 1449 | + $output .= $prefix . ' a{color: var(--bs-'.esc_attr($type).');}'; |
|
| 1450 | + $output .= $prefix . ' .text-primary{color: var(--bs-'.esc_attr($type).') !important;}'; |
|
| 1451 | 1451 | |
| 1452 | 1452 | // dropdown |
| 1453 | - $output .= $prefix . ' .dropdown-menu{--bs-dropdown-link-hover-color: var(--bs-'.esc_attr($type).'); --bs-dropdown-link-active-color: var(--bs-'.esc_attr($type).');}'; |
|
| 1453 | + $output .= $prefix . ' .dropdown-menu{--bs-dropdown-link-hover-color: var(--bs-'.esc_attr($type).'); --bs-dropdown-link-active-color: var(--bs-'.esc_attr($type).');}'; |
|
| 1454 | 1454 | |
| 1455 | 1455 | // pagination |
| 1456 | - $output .= $prefix . ' .pagination{--bs-pagination-hover-color: var(--bs-'.esc_attr($type).'); --bs-pagination-active-bg: var(--bs-'.esc_attr($type).');}'; |
|
| 1456 | + $output .= $prefix . ' .pagination{--bs-pagination-hover-color: var(--bs-'.esc_attr($type).'); --bs-pagination-active-bg: var(--bs-'.esc_attr($type).');}'; |
|
| 1457 | 1457 | |
| 1458 | - } |
|
| 1458 | + } |
|
| 1459 | 1459 | |
| 1460 | - $output .= $prefix . ' .link-'.esc_attr($type).' {color: var(--bs-'.esc_attr($type).'-rgb) !important;}'; |
|
| 1461 | - $output .= $prefix . ' .link-'.esc_attr($type).':hover {color: rgba(var(--bs-'.esc_attr($type).'-rgb), .8) !important;}'; |
|
| 1460 | + $output .= $prefix . ' .link-'.esc_attr($type).' {color: var(--bs-'.esc_attr($type).'-rgb) !important;}'; |
|
| 1461 | + $output .= $prefix . ' .link-'.esc_attr($type).':hover {color: rgba(var(--bs-'.esc_attr($type).'-rgb), .8) !important;}'; |
|
| 1462 | 1462 | |
| 1463 | - // buttons |
|
| 1464 | - $output .= $prefix . ' .btn-'.esc_attr($type).'{'; |
|
| 1465 | - $output .= ' |
|
| 1463 | + // buttons |
|
| 1464 | + $output .= $prefix . ' .btn-'.esc_attr($type).'{'; |
|
| 1465 | + $output .= ' |
|
| 1466 | 1466 | --bs-btn-bg: '.esc_attr($color_code).'; |
| 1467 | 1467 | --bs-btn-border-color: '.esc_attr($color_code).'; |
| 1468 | 1468 | --bs-btn-hover-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9); |
@@ -1480,917 +1480,917 @@ discard block |
||
| 1480 | 1480 | // --bs-btn-active-color: #fff; |
| 1481 | 1481 | // --bs-btn-disabled-color: #fff; |
| 1482 | 1482 | // '; |
| 1483 | - $output .= '}'; |
|
| 1483 | + $output .= '}'; |
|
| 1484 | + |
|
| 1485 | + // buttons outline |
|
| 1486 | + $output .= $prefix . ' .btn-outline-'.esc_attr($type).'{'; |
|
| 1487 | + $output .= ' |
|
| 1488 | + --bs-btn-color: '.esc_attr($color_code).'; |
|
| 1489 | + --bs-btn-border-color: '.esc_attr($color_code).'; |
|
| 1490 | + --bs-btn-hover-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9); |
|
| 1491 | + --bs-btn-hover-border-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .9); |
|
| 1492 | + --bs-btn-focus-shadow-rgb: --bs-'.esc_attr($type).'-rgb; |
|
| 1493 | + --bs-btn-active-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9); |
|
| 1494 | + --bs-btn-active-border-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .9); |
|
| 1495 | + --bs-btn-active-shadow: unset; |
|
| 1496 | + --bs-btn-disabled-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .5); |
|
| 1497 | + --bs-btn-disabled-border-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .1); |
|
| 1498 | + '; |
|
| 1499 | +// $output .= ' |
|
| 1500 | +// --bs-btn-color: #fff; |
|
| 1501 | +// --bs-btn-hover-color: #fff; |
|
| 1502 | +// --bs-btn-active-color: #fff; |
|
| 1503 | +// --bs-btn-disabled-color: #fff; |
|
| 1504 | +// '; |
|
| 1505 | + $output .= '}'; |
|
| 1506 | + |
|
| 1507 | + |
|
| 1508 | + // button hover |
|
| 1509 | + $output .= $prefix . ' .btn-'.esc_attr($type).':hover{'; |
|
| 1510 | + $output .= ' |
|
| 1511 | + box-shadow: 0 0.25rem 0.25rem 0.125rem rgb(var(--bs-'.esc_attr($type).'-rgb), .1), 0 0.375rem 0.75rem -0.125rem rgb(var(--bs-'.esc_attr($type).'-rgb) , .4); |
|
| 1512 | + } |
|
| 1513 | + '; |
|
| 1514 | + |
|
| 1515 | + |
|
| 1516 | + if ( $aui_bs5 ) { |
|
| 1517 | +// $output .= $is_var ? 'html body {--bs-'.esc_attr($type).'-rgb: '.$color_code.'; }' : 'html body {--bs-'.esc_attr($type).'-rgb: '.self::hex_to_rgb($color_code).'; }'; |
|
| 1518 | + $output .= 'html body {--bs-'.esc_attr($type).': '.esc_attr($color_code).'; }'; |
|
| 1519 | + $output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }'; |
|
| 1520 | + } |
|
| 1521 | + |
|
| 1522 | + |
|
| 1523 | + if ( $is_custom ) { |
|
| 1524 | + |
|
| 1525 | +// echo '###'.$type;exit; |
|
| 1526 | + |
|
| 1527 | + // build rules into each type |
|
| 1528 | + foreach($selectors as $selector => $types){ |
|
| 1529 | + $selector = $compatibility ? $compatibility . " ".$selector : $selector; |
|
| 1530 | + $types = array_combine($types,$types); |
|
| 1531 | + if(isset($types['c'])){$color[] = $selector;} |
|
| 1532 | + if(isset($types['b'])){$background[] = $selector;} |
|
| 1533 | + if(isset($types['o'])){$border[] = $selector;} |
|
| 1534 | + if(isset($types['f'])){$fill[] = $selector;} |
|
| 1535 | + } |
|
| 1536 | + |
|
| 1537 | +// // build rules into each type |
|
| 1538 | +// foreach($important_selectors as $selector => $types){ |
|
| 1539 | +// $selector = $compatibility ? $compatibility . " ".$selector : $selector; |
|
| 1540 | +// $types = array_combine($types,$types); |
|
| 1541 | +// if(isset($types['c'])){$color_i[] = $selector;} |
|
| 1542 | +// if(isset($types['b'])){$background_i[] = $selector;} |
|
| 1543 | +// if(isset($types['o'])){$border_i[] = $selector;} |
|
| 1544 | +// if(isset($types['f'])){$fill_i[] = $selector;} |
|
| 1545 | +// } |
|
| 1546 | + |
|
| 1547 | + // add any color rules |
|
| 1548 | + if(!empty($color)){ |
|
| 1549 | + $output .= implode(",",$color) . "{color: $color_code;} "; |
|
| 1550 | + } |
|
| 1551 | + if(!empty($color_i)){ |
|
| 1552 | + $output .= implode(",",$color_i) . "{color: $color_code !important;} "; |
|
| 1553 | + } |
|
| 1554 | + |
|
| 1555 | + // add any background color rules |
|
| 1556 | + if(!empty($background)){ |
|
| 1557 | + $output .= implode(",",$background) . "{background-color: $color_code;} "; |
|
| 1558 | + } |
|
| 1559 | + if(!empty($background_i)){ |
|
| 1560 | + $output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} "; |
|
| 1561 | +// $output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} "; |
|
| 1562 | + } |
|
| 1563 | + |
|
| 1564 | + // add any border color rules |
|
| 1565 | + if(!empty($border)){ |
|
| 1566 | + $output .= implode(",",$border) . "{border-color: $color_code;} "; |
|
| 1567 | + } |
|
| 1568 | + if(!empty($border_i)){ |
|
| 1569 | + $output .= implode(",",$border_i) . "{border-color: $color_code !important;} "; |
|
| 1570 | + } |
|
| 1571 | + |
|
| 1572 | + // add any fill color rules |
|
| 1573 | + if(!empty($fill)){ |
|
| 1574 | + $output .= implode(",",$fill) . "{fill: $color_code;} "; |
|
| 1575 | + } |
|
| 1576 | + if(!empty($fill_i)){ |
|
| 1577 | + $output .= implode(",",$fill_i) . "{fill: $color_code !important;} "; |
|
| 1578 | + } |
|
| 1579 | + |
|
| 1580 | + } |
|
| 1581 | + |
|
| 1582 | + |
|
| 1583 | + |
|
| 1584 | + |
|
| 1585 | + $transition = $is_var ? 'transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,filter 0.15s ease-in-out;' : ''; |
|
| 1586 | + // darken |
|
| 1587 | + $darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075"); |
|
| 1588 | + $darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10"); |
|
| 1589 | + $darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125"); |
|
| 1590 | + $darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4"); |
|
| 1591 | + |
|
| 1592 | + // lighten |
|
| 1593 | + $lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25"); |
|
| 1594 | + |
|
| 1595 | + // opacity see https://css-tricks.com/8-digit-hex-codes/ |
|
| 1596 | + $op_25 = $color_code."40"; // 25% opacity |
|
| 1597 | + |
|
| 1598 | + |
|
| 1599 | + // button states |
|
| 1600 | + $output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : ''; |
|
| 1601 | + $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075."; border-color: ".$darker_10.";} "; |
|
| 1602 | +// $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000; border-color: #000;} "; |
|
| 1603 | + $output .= $prefix ." .btn-outline-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-{$type}.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1604 | + $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active, $prefix .btn-{$type}:not(:disabled):not(.disabled).active, .show>$prefix .btn-{$type}.dropdown-toggle{background-color: ".$darker_10."; border-color: ".$darker_125.";} "; |
|
| 1605 | + $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-{$type}.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1606 | + $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled):focus {box-shadow: 0 0.25rem 0.25rem 0.125rem rgba(var(--bs-{$type}-rgb), 0.1), 0 0.375rem 0.75rem -0.125rem rgba(var(--bs-{$type}-rgb), 0.4);} "; |
|
| 1607 | + |
|
| 1608 | + // text |
|
| 1609 | +// $output .= $prefix .".xxx, .text-{$type} {color: var(--bs-".esc_attr($type).");} "; |
|
| 1610 | + |
|
| 1611 | + |
|
| 1612 | +// if ( $type == 'primary' ) { |
|
| 1613 | +// // dropdown's |
|
| 1614 | +// $output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} "; |
|
| 1615 | +// |
|
| 1616 | +// // input states |
|
| 1617 | +// $output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1618 | +// |
|
| 1619 | +// // page link |
|
| 1620 | +// $output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1621 | +// } |
|
| 1622 | + |
|
| 1623 | + // alerts |
|
| 1624 | + if ( $aui_bs5 ) { |
|
| 1625 | +// $output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20; border-color: ".$color_code."30;color:$darker_40} "; |
|
| 1626 | + $output .= $prefix ." .alert-{$type} {--bs-alert-bg: rgba(var(--bs-{$type}-rgb), .1 ) !important;--bs-alert-border-color: rgba(var(--bs-{$type}-rgb), .25 ) !important;--bs-alert-color: rgba(var(--bs-{$type}-rgb), 1 ) !important;} "; |
|
| 1627 | + } |
|
| 1628 | + |
|
| 1629 | + return $output; |
|
| 1630 | + } |
|
| 1631 | + |
|
| 1632 | + /** |
|
| 1633 | + * Build the CSS to overwrite a bootstrap color variable. |
|
| 1634 | + * |
|
| 1635 | + * @param $type |
|
| 1636 | + * @param $color_code |
|
| 1637 | + * @param $compatibility |
|
| 1638 | + * |
|
| 1639 | + * @return string |
|
| 1640 | + */ |
|
| 1641 | + public static function css_overwrite($type,$color_code,$compatibility, $hex = '' ){ |
|
| 1642 | + global $aui_bs5; |
|
| 1643 | + |
|
| 1644 | + $is_var = false; |
|
| 1645 | + if(!$color_code){return '';} |
|
| 1646 | + if(strpos($color_code, 'var') !== false){ |
|
| 1647 | + //if(!sanitize_hex_color($color_code)){ |
|
| 1648 | + $color_code = esc_attr($color_code); |
|
| 1649 | + $is_var = true; |
|
| 1650 | +// $color_code = "rgba($color_code, 0.5)"; |
|
| 1651 | +// echo '###1'.$color_code.'###';//exit; |
|
| 1652 | + } |
|
| 1653 | + |
|
| 1654 | +// echo '@@@'.$color_code.'==='.self::hex_to_rgb($color_code);exit; |
|
| 1655 | + |
|
| 1656 | + if(!$color_code){return '';} |
|
| 1657 | + |
|
| 1658 | + $rgb = self::hex_to_rgb($hex); |
|
| 1659 | + |
|
| 1660 | + if($compatibility===true || $compatibility===1){ |
|
| 1661 | + $compatibility = '.bsui'; |
|
| 1662 | + }elseif(!$compatibility){ |
|
| 1663 | + $compatibility = ''; |
|
| 1664 | + }else{ |
|
| 1665 | + $compatibility = esc_attr($compatibility); |
|
| 1666 | + } |
|
| 1667 | + |
|
| 1668 | + |
|
| 1669 | + |
|
| 1670 | +// echo '####'.$color_code;exit; |
|
| 1671 | + |
|
| 1672 | + $type = sanitize_html_class($type); |
|
| 1673 | + |
|
| 1674 | + /** |
|
| 1675 | + * c = color, b = background color, o = border-color, f = fill |
|
| 1676 | + */ |
|
| 1677 | + $selectors = array( |
|
| 1678 | + ".btn-{$type}" => array( 'b', 'o' ), |
|
| 1679 | + ".btn-{$type}.disabled" => array( 'b', 'o' ), |
|
| 1680 | + ".btn-{$type}:disabled" => array( 'b', 'o' ), |
|
| 1681 | + ".btn-outline-{$type}" => array( 'c', 'o' ), |
|
| 1682 | + ".btn-outline-{$type}:hover" => array( 'b', 'o' ), |
|
| 1683 | + ".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ), |
|
| 1684 | + ".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ), |
|
| 1685 | + ".show>.btn-outline-{$type}.dropdown-toggle" => array( 'b', 'o' ), |
|
| 1686 | + ".badge-{$type}" => array( 'b' ), |
|
| 1687 | + ".alert-{$type}" => array( 'b', 'o' ), |
|
| 1688 | + ".bg-{$type}" => array( 'b', 'f' ), |
|
| 1689 | + ".btn-link.btn-{$type}" => array( 'c' ), |
|
| 1690 | + ); |
|
| 1691 | + |
|
| 1692 | + if ( $aui_bs5 ) { |
|
| 1693 | + unset($selectors[".alert-{$type}" ]); |
|
| 1694 | + } |
|
| 1695 | + |
|
| 1696 | + if ( $type == 'primary' ) { |
|
| 1697 | + $selectors = $selectors + array( |
|
| 1698 | + 'a' => array( 'c' ), |
|
| 1699 | + '.btn-link' => array( 'c' ), |
|
| 1700 | + '.dropdown-item.active' => array( 'b' ), |
|
| 1701 | + '.custom-control-input:checked~.custom-control-label::before' => array( |
|
| 1702 | + 'b', |
|
| 1703 | + 'o' |
|
| 1704 | + ), |
|
| 1705 | + '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array( |
|
| 1706 | + 'b', |
|
| 1707 | + 'o' |
|
| 1708 | + ), |
|
| 1709 | + '.nav-pills .nav-link.active' => array( 'b' ), |
|
| 1710 | + '.nav-pills .show>.nav-link' => array( 'b' ), |
|
| 1711 | + '.page-link' => array( 'c' ), |
|
| 1712 | + '.page-item.active .page-link' => array( |
|
| 1713 | + 'b', |
|
| 1714 | + 'o' |
|
| 1715 | + ), |
|
| 1716 | + '.progress-bar' => array( 'b' ), |
|
| 1717 | + '.list-group-item.active' => array( |
|
| 1718 | + 'b', |
|
| 1719 | + 'o' |
|
| 1720 | + ), |
|
| 1721 | + '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ), |
|
| 1722 | +// '.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules... |
|
| 1723 | +// '.custom-range::-moz-range-thumb' => array('b'), |
|
| 1724 | +// '.custom-range::-ms-thumb' => array('b'), |
|
| 1725 | + ); |
|
| 1726 | + } |
|
| 1727 | + |
|
| 1728 | + $important_selectors = array( |
|
| 1729 | + ".bg-{$type}" => array('b','f'), |
|
| 1730 | + ".border-{$type}" => array('o'), |
|
| 1731 | + ".text-{$type}" => array('c'), |
|
| 1732 | + ); |
|
| 1733 | + |
|
| 1734 | + $color = array(); |
|
| 1735 | + $color_i = array(); |
|
| 1736 | + $background = array(); |
|
| 1737 | + $background_i = array(); |
|
| 1738 | + $border = array(); |
|
| 1739 | + $border_i = array(); |
|
| 1740 | + $fill = array(); |
|
| 1741 | + $fill_i = array(); |
|
| 1742 | + |
|
| 1743 | + $output = ''; |
|
| 1744 | + |
|
| 1745 | + if ( $aui_bs5 ) { |
|
| 1746 | +// $output .= $is_var ? 'html body {--bs-'.esc_attr($type).'-rgb: '.$color_code.'; }' : 'html body {--bs-'.esc_attr($type).'-rgb: '.self::hex_to_rgb($color_code).'; }'; |
|
| 1747 | + $output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }'; |
|
| 1748 | + } |
|
| 1749 | + |
|
| 1750 | + // build rules into each type |
|
| 1751 | + foreach($selectors as $selector => $types){ |
|
| 1752 | + $selector = $compatibility ? $compatibility . " ".$selector : $selector; |
|
| 1753 | + $types = array_combine($types,$types); |
|
| 1754 | + if(isset($types['c'])){$color[] = $selector;} |
|
| 1755 | + if(isset($types['b'])){$background[] = $selector;} |
|
| 1756 | + if(isset($types['o'])){$border[] = $selector;} |
|
| 1757 | + if(isset($types['f'])){$fill[] = $selector;} |
|
| 1758 | + } |
|
| 1759 | + |
|
| 1760 | + // build rules into each type |
|
| 1761 | + foreach($important_selectors as $selector => $types){ |
|
| 1762 | + $selector = $compatibility ? $compatibility . " ".$selector : $selector; |
|
| 1763 | + $types = array_combine($types,$types); |
|
| 1764 | + if(isset($types['c'])){$color_i[] = $selector;} |
|
| 1765 | + if(isset($types['b'])){$background_i[] = $selector;} |
|
| 1766 | + if(isset($types['o'])){$border_i[] = $selector;} |
|
| 1767 | + if(isset($types['f'])){$fill_i[] = $selector;} |
|
| 1768 | + } |
|
| 1769 | + |
|
| 1770 | + // add any color rules |
|
| 1771 | + if(!empty($color)){ |
|
| 1772 | + $output .= implode(",",$color) . "{color: $color_code;} "; |
|
| 1773 | + } |
|
| 1774 | + if(!empty($color_i)){ |
|
| 1775 | + $output .= implode(",",$color_i) . "{color: $color_code !important;} "; |
|
| 1776 | + } |
|
| 1777 | + |
|
| 1778 | + // add any background color rules |
|
| 1779 | + if(!empty($background)){ |
|
| 1780 | + $output .= implode(",",$background) . "{background-color: $color_code;} "; |
|
| 1781 | + } |
|
| 1782 | + if(!empty($background_i)){ |
|
| 1783 | + $output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} "; |
|
| 1784 | +// $output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} "; |
|
| 1785 | + } |
|
| 1786 | + |
|
| 1787 | + // add any border color rules |
|
| 1788 | + if(!empty($border)){ |
|
| 1789 | + $output .= implode(",",$border) . "{border-color: $color_code;} "; |
|
| 1790 | + } |
|
| 1791 | + if(!empty($border_i)){ |
|
| 1792 | + $output .= implode(",",$border_i) . "{border-color: $color_code !important;} "; |
|
| 1793 | + } |
|
| 1794 | + |
|
| 1795 | + // add any fill color rules |
|
| 1796 | + if(!empty($fill)){ |
|
| 1797 | + $output .= implode(",",$fill) . "{fill: $color_code;} "; |
|
| 1798 | + } |
|
| 1799 | + if(!empty($fill_i)){ |
|
| 1800 | + $output .= implode(",",$fill_i) . "{fill: $color_code !important;} "; |
|
| 1801 | + } |
|
| 1802 | + |
|
| 1803 | + |
|
| 1804 | + $prefix = $compatibility ? $compatibility . " " : ""; |
|
| 1805 | + |
|
| 1806 | + $transition = $is_var ? 'transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,filter 0.15s ease-in-out;' : ''; |
|
| 1807 | + // darken |
|
| 1808 | + $darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075"); |
|
| 1809 | + $darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10"); |
|
| 1810 | + $darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125"); |
|
| 1811 | + $darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4"); |
|
| 1812 | + |
|
| 1813 | + // lighten |
|
| 1814 | + $lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25"); |
|
| 1815 | + |
|
| 1816 | + // opacity see https://css-tricks.com/8-digit-hex-codes/ |
|
| 1817 | + $op_25 = $color_code."40"; // 25% opacity |
|
| 1818 | + |
|
| 1819 | + |
|
| 1820 | + // button states |
|
| 1821 | + $output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : ''; |
|
| 1822 | + $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075."; border-color: ".$darker_10.";} "; |
|
| 1823 | +// $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000; border-color: #000;} "; |
|
| 1824 | + $output .= $prefix ." .btn-outline-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-{$type}.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1825 | + $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active, $prefix .btn-{$type}:not(:disabled):not(.disabled).active, .show>$prefix .btn-{$type}.dropdown-toggle{background-color: ".$darker_10."; border-color: ".$darker_125.";} "; |
|
| 1826 | + $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-{$type}.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1827 | + |
|
| 1828 | + if ( $type == 'primary' ) { |
|
| 1829 | + // dropdown's |
|
| 1830 | + $output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} "; |
|
| 1831 | + |
|
| 1832 | + // input states |
|
| 1833 | + $output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1834 | + |
|
| 1835 | + // page link |
|
| 1836 | + $output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1837 | + } |
|
| 1838 | + |
|
| 1839 | + // alerts |
|
| 1840 | + if ( $aui_bs5 ) { |
|
| 1841 | +// $output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20; border-color: ".$color_code."30;color:$darker_40} "; |
|
| 1842 | + $output .= $prefix ." .alert-{$type} {--bs-alert-bg: rgba(var(--bs-{$type}-rgb), .1 ) !important;--bs-alert-border-color: rgba(var(--bs-{$type}-rgb), .25 ) !important;--bs-alert-color: rgba(var(--bs-{$type}-rgb), 1 ) !important;} "; |
|
| 1843 | + } |
|
| 1484 | 1844 | |
| 1485 | - // buttons outline |
|
| 1486 | - $output .= $prefix . ' .btn-outline-'.esc_attr($type).'{'; |
|
| 1487 | - $output .= ' |
|
| 1488 | - --bs-btn-color: '.esc_attr($color_code).'; |
|
| 1489 | - --bs-btn-border-color: '.esc_attr($color_code).'; |
|
| 1490 | - --bs-btn-hover-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9); |
|
| 1491 | - --bs-btn-hover-border-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .9); |
|
| 1492 | - --bs-btn-focus-shadow-rgb: --bs-'.esc_attr($type).'-rgb; |
|
| 1493 | - --bs-btn-active-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9); |
|
| 1494 | - --bs-btn-active-border-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .9); |
|
| 1495 | - --bs-btn-active-shadow: unset; |
|
| 1496 | - --bs-btn-disabled-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .5); |
|
| 1497 | - --bs-btn-disabled-border-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .1); |
|
| 1498 | - '; |
|
| 1499 | -// $output .= ' |
|
| 1500 | -// --bs-btn-color: #fff; |
|
| 1501 | -// --bs-btn-hover-color: #fff; |
|
| 1502 | -// --bs-btn-active-color: #fff; |
|
| 1503 | -// --bs-btn-disabled-color: #fff; |
|
| 1504 | -// '; |
|
| 1505 | - $output .= '}'; |
|
| 1845 | + return $output; |
|
| 1846 | + } |
|
| 1506 | 1847 | |
| 1848 | + /** |
|
| 1849 | + * |
|
| 1850 | + * @deprecated 0.1.76 Use css_overwrite() |
|
| 1851 | + * |
|
| 1852 | + * @param $color_code |
|
| 1853 | + * @param $compatibility |
|
| 1854 | + * @param $use_variable |
|
| 1855 | + * |
|
| 1856 | + * @return string |
|
| 1857 | + */ |
|
| 1858 | + public static function css_primary($color_code,$compatibility, $use_variable = false){ |
|
| 1507 | 1859 | |
| 1508 | - // button hover |
|
| 1509 | - $output .= $prefix . ' .btn-'.esc_attr($type).':hover{'; |
|
| 1510 | - $output .= ' |
|
| 1511 | - box-shadow: 0 0.25rem 0.25rem 0.125rem rgb(var(--bs-'.esc_attr($type).'-rgb), .1), 0 0.375rem 0.75rem -0.125rem rgb(var(--bs-'.esc_attr($type).'-rgb) , .4); |
|
| 1860 | + if(!$use_variable){ |
|
| 1861 | + $color_code = sanitize_hex_color($color_code); |
|
| 1862 | + if(!$color_code){return '';} |
|
| 1512 | 1863 | } |
| 1513 | - '; |
|
| 1514 | 1864 | |
| 1865 | + /** |
|
| 1866 | + * c = color, b = background color, o = border-color, f = fill |
|
| 1867 | + */ |
|
| 1868 | + $selectors = array( |
|
| 1869 | + 'a' => array('c'), |
|
| 1870 | + '.btn-primary' => array('b','o'), |
|
| 1871 | + '.btn-primary.disabled' => array('b','o'), |
|
| 1872 | + '.btn-primary:disabled' => array('b','o'), |
|
| 1873 | + '.btn-outline-primary' => array('c','o'), |
|
| 1874 | + '.btn-outline-primary:hover' => array('b','o'), |
|
| 1875 | + '.btn-outline-primary:not(:disabled):not(.disabled).active' => array('b','o'), |
|
| 1876 | + '.btn-outline-primary:not(:disabled):not(.disabled):active' => array('b','o'), |
|
| 1877 | + '.show>.btn-outline-primary.dropdown-toggle' => array('b','o'), |
|
| 1878 | + '.btn-link' => array('c'), |
|
| 1879 | + '.dropdown-item.active' => array('b'), |
|
| 1880 | + '.custom-control-input:checked~.custom-control-label::before' => array('b','o'), |
|
| 1881 | + '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array('b','o'), |
|
| 1882 | +// '.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules... |
|
| 1883 | +// '.custom-range::-moz-range-thumb' => array('b'), |
|
| 1884 | +// '.custom-range::-ms-thumb' => array('b'), |
|
| 1885 | + '.nav-pills .nav-link.active' => array('b'), |
|
| 1886 | + '.nav-pills .show>.nav-link' => array('b'), |
|
| 1887 | + '.page-link' => array('c'), |
|
| 1888 | + '.page-item.active .page-link' => array('b','o'), |
|
| 1889 | + '.badge-primary' => array('b'), |
|
| 1890 | + '.alert-primary' => array('b','o'), |
|
| 1891 | + '.progress-bar' => array('b'), |
|
| 1892 | + '.list-group-item.active' => array('b','o'), |
|
| 1893 | + '.bg-primary' => array('b','f'), |
|
| 1894 | + '.btn-link.btn-primary' => array('c'), |
|
| 1895 | + '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array('b'), |
|
| 1896 | + ); |
|
| 1897 | + |
|
| 1898 | + $important_selectors = array( |
|
| 1899 | + '.bg-primary' => array('b','f'), |
|
| 1900 | + '.border-primary' => array('o'), |
|
| 1901 | + '.text-primary' => array('c'), |
|
| 1902 | + ); |
|
| 1903 | + |
|
| 1904 | + $color = array(); |
|
| 1905 | + $color_i = array(); |
|
| 1906 | + $background = array(); |
|
| 1907 | + $background_i = array(); |
|
| 1908 | + $border = array(); |
|
| 1909 | + $border_i = array(); |
|
| 1910 | + $fill = array(); |
|
| 1911 | + $fill_i = array(); |
|
| 1515 | 1912 | |
| 1516 | - if ( $aui_bs5 ) { |
|
| 1517 | -// $output .= $is_var ? 'html body {--bs-'.esc_attr($type).'-rgb: '.$color_code.'; }' : 'html body {--bs-'.esc_attr($type).'-rgb: '.self::hex_to_rgb($color_code).'; }'; |
|
| 1518 | - $output .= 'html body {--bs-'.esc_attr($type).': '.esc_attr($color_code).'; }'; |
|
| 1519 | - $output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }'; |
|
| 1520 | - } |
|
| 1913 | + $output = ''; |
|
| 1521 | 1914 | |
| 1915 | + // build rules into each type |
|
| 1916 | + foreach($selectors as $selector => $types){ |
|
| 1917 | + $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 1918 | + $types = array_combine($types,$types); |
|
| 1919 | + if(isset($types['c'])){$color[] = $selector;} |
|
| 1920 | + if(isset($types['b'])){$background[] = $selector;} |
|
| 1921 | + if(isset($types['o'])){$border[] = $selector;} |
|
| 1922 | + if(isset($types['f'])){$fill[] = $selector;} |
|
| 1923 | + } |
|
| 1522 | 1924 | |
| 1523 | - if ( $is_custom ) { |
|
| 1925 | + // build rules into each type |
|
| 1926 | + foreach($important_selectors as $selector => $types){ |
|
| 1927 | + $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 1928 | + $types = array_combine($types,$types); |
|
| 1929 | + if(isset($types['c'])){$color_i[] = $selector;} |
|
| 1930 | + if(isset($types['b'])){$background_i[] = $selector;} |
|
| 1931 | + if(isset($types['o'])){$border_i[] = $selector;} |
|
| 1932 | + if(isset($types['f'])){$fill_i[] = $selector;} |
|
| 1933 | + } |
|
| 1524 | 1934 | |
| 1525 | -// echo '###'.$type;exit; |
|
| 1935 | + // add any color rules |
|
| 1936 | + if(!empty($color)){ |
|
| 1937 | + $output .= implode(",",$color) . "{color: $color_code;} "; |
|
| 1938 | + } |
|
| 1939 | + if(!empty($color_i)){ |
|
| 1940 | + $output .= implode(",",$color_i) . "{color: $color_code !important;} "; |
|
| 1941 | + } |
|
| 1526 | 1942 | |
| 1527 | - // build rules into each type |
|
| 1528 | - foreach($selectors as $selector => $types){ |
|
| 1529 | - $selector = $compatibility ? $compatibility . " ".$selector : $selector; |
|
| 1530 | - $types = array_combine($types,$types); |
|
| 1531 | - if(isset($types['c'])){$color[] = $selector;} |
|
| 1532 | - if(isset($types['b'])){$background[] = $selector;} |
|
| 1533 | - if(isset($types['o'])){$border[] = $selector;} |
|
| 1534 | - if(isset($types['f'])){$fill[] = $selector;} |
|
| 1535 | - } |
|
| 1943 | + // add any background color rules |
|
| 1944 | + if(!empty($background)){ |
|
| 1945 | + $output .= implode(",",$background) . "{background-color: $color_code;} "; |
|
| 1946 | + } |
|
| 1947 | + if(!empty($background_i)){ |
|
| 1948 | + $output .= implode(",",$background_i) . "{background-color: $color_code !important;} "; |
|
| 1949 | + } |
|
| 1536 | 1950 | |
| 1537 | -// // build rules into each type |
|
| 1538 | -// foreach($important_selectors as $selector => $types){ |
|
| 1539 | -// $selector = $compatibility ? $compatibility . " ".$selector : $selector; |
|
| 1540 | -// $types = array_combine($types,$types); |
|
| 1541 | -// if(isset($types['c'])){$color_i[] = $selector;} |
|
| 1542 | -// if(isset($types['b'])){$background_i[] = $selector;} |
|
| 1543 | -// if(isset($types['o'])){$border_i[] = $selector;} |
|
| 1544 | -// if(isset($types['f'])){$fill_i[] = $selector;} |
|
| 1545 | -// } |
|
| 1951 | + // add any border color rules |
|
| 1952 | + if(!empty($border)){ |
|
| 1953 | + $output .= implode(",",$border) . "{border-color: $color_code;} "; |
|
| 1954 | + } |
|
| 1955 | + if(!empty($border_i)){ |
|
| 1956 | + $output .= implode(",",$border_i) . "{border-color: $color_code !important;} "; |
|
| 1957 | + } |
|
| 1546 | 1958 | |
| 1547 | - // add any color rules |
|
| 1548 | - if(!empty($color)){ |
|
| 1549 | - $output .= implode(",",$color) . "{color: $color_code;} "; |
|
| 1550 | - } |
|
| 1551 | - if(!empty($color_i)){ |
|
| 1552 | - $output .= implode(",",$color_i) . "{color: $color_code !important;} "; |
|
| 1553 | - } |
|
| 1959 | + // add any fill color rules |
|
| 1960 | + if(!empty($fill)){ |
|
| 1961 | + $output .= implode(",",$fill) . "{fill: $color_code;} "; |
|
| 1962 | + } |
|
| 1963 | + if(!empty($fill_i)){ |
|
| 1964 | + $output .= implode(",",$fill_i) . "{fill: $color_code !important;} "; |
|
| 1965 | + } |
|
| 1554 | 1966 | |
| 1555 | - // add any background color rules |
|
| 1556 | - if(!empty($background)){ |
|
| 1557 | - $output .= implode(",",$background) . "{background-color: $color_code;} "; |
|
| 1558 | - } |
|
| 1559 | - if(!empty($background_i)){ |
|
| 1560 | - $output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} "; |
|
| 1561 | -// $output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} "; |
|
| 1562 | - } |
|
| 1563 | 1967 | |
| 1564 | - // add any border color rules |
|
| 1565 | - if(!empty($border)){ |
|
| 1566 | - $output .= implode(",",$border) . "{border-color: $color_code;} "; |
|
| 1567 | - } |
|
| 1568 | - if(!empty($border_i)){ |
|
| 1569 | - $output .= implode(",",$border_i) . "{border-color: $color_code !important;} "; |
|
| 1570 | - } |
|
| 1968 | + $prefix = $compatibility ? ".bsui " : ""; |
|
| 1571 | 1969 | |
| 1572 | - // add any fill color rules |
|
| 1573 | - if(!empty($fill)){ |
|
| 1574 | - $output .= implode(",",$fill) . "{fill: $color_code;} "; |
|
| 1575 | - } |
|
| 1576 | - if(!empty($fill_i)){ |
|
| 1577 | - $output .= implode(",",$fill_i) . "{fill: $color_code !important;} "; |
|
| 1578 | - } |
|
| 1970 | + // darken |
|
| 1971 | + $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075"); |
|
| 1972 | + $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10"); |
|
| 1973 | + $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125"); |
|
| 1579 | 1974 | |
| 1580 | - } |
|
| 1975 | + // lighten |
|
| 1976 | + $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25"); |
|
| 1581 | 1977 | |
| 1978 | + // opacity see https://css-tricks.com/8-digit-hex-codes/ |
|
| 1979 | + $op_25 = $color_code."40"; // 25% opacity |
|
| 1582 | 1980 | |
| 1583 | 1981 | |
| 1982 | + // button states |
|
| 1983 | + $output .= $prefix ." .btn-primary:hover, $prefix .btn-primary:focus, $prefix .btn-primary.focus{background-color: ".$darker_075."; border-color: ".$darker_10.";} "; |
|
| 1984 | + $output .= $prefix ." .btn-outline-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-primary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1985 | + $output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active, $prefix .btn-primary:not(:disabled):not(.disabled).active, .show>$prefix .btn-primary.dropdown-toggle{background-color: ".$darker_10."; border-color: ".$darker_125.";} "; |
|
| 1986 | + $output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-primary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1584 | 1987 | |
| 1585 | - $transition = $is_var ? 'transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,filter 0.15s ease-in-out;' : ''; |
|
| 1586 | - // darken |
|
| 1587 | - $darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075"); |
|
| 1588 | - $darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10"); |
|
| 1589 | - $darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125"); |
|
| 1590 | - $darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4"); |
|
| 1591 | 1988 | |
| 1592 | - // lighten |
|
| 1593 | - $lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25"); |
|
| 1989 | + // dropdown's |
|
| 1990 | + $output .= $prefix ." .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} "; |
|
| 1594 | 1991 | |
| 1595 | - // opacity see https://css-tricks.com/8-digit-hex-codes/ |
|
| 1596 | - $op_25 = $color_code."40"; // 25% opacity |
|
| 1597 | 1992 | |
| 1993 | + // input states |
|
| 1994 | + $output .= $prefix ." .form-control:focus{border-color: ".$lighten_25.";box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1598 | 1995 | |
| 1599 | - // button states |
|
| 1600 | - $output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : ''; |
|
| 1601 | - $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075."; border-color: ".$darker_10.";} "; |
|
| 1602 | -// $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000; border-color: #000;} "; |
|
| 1603 | - $output .= $prefix ." .btn-outline-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-{$type}.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1604 | - $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active, $prefix .btn-{$type}:not(:disabled):not(.disabled).active, .show>$prefix .btn-{$type}.dropdown-toggle{background-color: ".$darker_10."; border-color: ".$darker_125.";} "; |
|
| 1605 | - $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-{$type}.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1606 | - $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled):focus {box-shadow: 0 0.25rem 0.25rem 0.125rem rgba(var(--bs-{$type}-rgb), 0.1), 0 0.375rem 0.75rem -0.125rem rgba(var(--bs-{$type}-rgb), 0.4);} "; |
|
| 1996 | + // page link |
|
| 1997 | + $output .= $prefix ." .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1607 | 1998 | |
| 1608 | - // text |
|
| 1609 | -// $output .= $prefix .".xxx, .text-{$type} {color: var(--bs-".esc_attr($type).");} "; |
|
| 1999 | + return $output; |
|
| 2000 | + } |
|
| 1610 | 2001 | |
| 2002 | + /** |
|
| 2003 | + * |
|
| 2004 | + * @deprecated 0.1.76 Use css_overwrite() |
|
| 2005 | + * |
|
| 2006 | + * @param $color_code |
|
| 2007 | + * @param $compatibility |
|
| 2008 | + * |
|
| 2009 | + * @return string |
|
| 2010 | + */ |
|
| 2011 | + public static function css_secondary($color_code,$compatibility){; |
|
| 2012 | + $color_code = sanitize_hex_color($color_code); |
|
| 2013 | + if(!$color_code){return '';} |
|
| 2014 | + /** |
|
| 2015 | + * c = color, b = background color, o = border-color, f = fill |
|
| 2016 | + */ |
|
| 2017 | + $selectors = array( |
|
| 2018 | + '.btn-secondary' => array('b','o'), |
|
| 2019 | + '.btn-secondary.disabled' => array('b','o'), |
|
| 2020 | + '.btn-secondary:disabled' => array('b','o'), |
|
| 2021 | + '.btn-outline-secondary' => array('c','o'), |
|
| 2022 | + '.btn-outline-secondary:hover' => array('b','o'), |
|
| 2023 | + '.btn-outline-secondary.disabled' => array('c'), |
|
| 2024 | + '.btn-outline-secondary:disabled' => array('c'), |
|
| 2025 | + '.btn-outline-secondary:not(:disabled):not(.disabled):active' => array('b','o'), |
|
| 2026 | + '.btn-outline-secondary:not(:disabled):not(.disabled).active' => array('b','o'), |
|
| 2027 | + '.btn-outline-secondary.dropdown-toggle' => array('b','o'), |
|
| 2028 | + '.badge-secondary' => array('b'), |
|
| 2029 | + '.alert-secondary' => array('b','o'), |
|
| 2030 | + '.btn-link.btn-secondary' => array('c'), |
|
| 2031 | + ); |
|
| 2032 | + |
|
| 2033 | + $important_selectors = array( |
|
| 2034 | + '.bg-secondary' => array('b','f'), |
|
| 2035 | + '.border-secondary' => array('o'), |
|
| 2036 | + '.text-secondary' => array('c'), |
|
| 2037 | + ); |
|
| 2038 | + |
|
| 2039 | + $color = array(); |
|
| 2040 | + $color_i = array(); |
|
| 2041 | + $background = array(); |
|
| 2042 | + $background_i = array(); |
|
| 2043 | + $border = array(); |
|
| 2044 | + $border_i = array(); |
|
| 2045 | + $fill = array(); |
|
| 2046 | + $fill_i = array(); |
|
| 1611 | 2047 | |
| 1612 | -// if ( $type == 'primary' ) { |
|
| 1613 | -// // dropdown's |
|
| 1614 | -// $output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} "; |
|
| 1615 | -// |
|
| 1616 | -// // input states |
|
| 1617 | -// $output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1618 | -// |
|
| 1619 | -// // page link |
|
| 1620 | -// $output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1621 | -// } |
|
| 2048 | + $output = ''; |
|
| 1622 | 2049 | |
| 1623 | - // alerts |
|
| 1624 | - if ( $aui_bs5 ) { |
|
| 1625 | -// $output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20; border-color: ".$color_code."30;color:$darker_40} "; |
|
| 1626 | - $output .= $prefix ." .alert-{$type} {--bs-alert-bg: rgba(var(--bs-{$type}-rgb), .1 ) !important;--bs-alert-border-color: rgba(var(--bs-{$type}-rgb), .25 ) !important;--bs-alert-color: rgba(var(--bs-{$type}-rgb), 1 ) !important;} "; |
|
| 1627 | - } |
|
| 1628 | - |
|
| 1629 | - return $output; |
|
| 1630 | - } |
|
| 1631 | - |
|
| 1632 | - /** |
|
| 1633 | - * Build the CSS to overwrite a bootstrap color variable. |
|
| 1634 | - * |
|
| 1635 | - * @param $type |
|
| 1636 | - * @param $color_code |
|
| 1637 | - * @param $compatibility |
|
| 1638 | - * |
|
| 1639 | - * @return string |
|
| 1640 | - */ |
|
| 1641 | - public static function css_overwrite($type,$color_code,$compatibility, $hex = '' ){ |
|
| 1642 | - global $aui_bs5; |
|
| 2050 | + // build rules into each type |
|
| 2051 | + foreach($selectors as $selector => $types){ |
|
| 2052 | + $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 2053 | + $types = array_combine($types,$types); |
|
| 2054 | + if(isset($types['c'])){$color[] = $selector;} |
|
| 2055 | + if(isset($types['b'])){$background[] = $selector;} |
|
| 2056 | + if(isset($types['o'])){$border[] = $selector;} |
|
| 2057 | + if(isset($types['f'])){$fill[] = $selector;} |
|
| 2058 | + } |
|
| 1643 | 2059 | |
| 1644 | - $is_var = false; |
|
| 1645 | - if(!$color_code){return '';} |
|
| 1646 | - if(strpos($color_code, 'var') !== false){ |
|
| 1647 | - //if(!sanitize_hex_color($color_code)){ |
|
| 1648 | - $color_code = esc_attr($color_code); |
|
| 1649 | - $is_var = true; |
|
| 1650 | -// $color_code = "rgba($color_code, 0.5)"; |
|
| 1651 | -// echo '###1'.$color_code.'###';//exit; |
|
| 1652 | - } |
|
| 2060 | + // build rules into each type |
|
| 2061 | + foreach($important_selectors as $selector => $types){ |
|
| 2062 | + $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 2063 | + $types = array_combine($types,$types); |
|
| 2064 | + if(isset($types['c'])){$color_i[] = $selector;} |
|
| 2065 | + if(isset($types['b'])){$background_i[] = $selector;} |
|
| 2066 | + if(isset($types['o'])){$border_i[] = $selector;} |
|
| 2067 | + if(isset($types['f'])){$fill_i[] = $selector;} |
|
| 2068 | + } |
|
| 1653 | 2069 | |
| 1654 | -// echo '@@@'.$color_code.'==='.self::hex_to_rgb($color_code);exit; |
|
| 2070 | + // add any color rules |
|
| 2071 | + if(!empty($color)){ |
|
| 2072 | + $output .= implode(",",$color) . "{color: $color_code;} "; |
|
| 2073 | + } |
|
| 2074 | + if(!empty($color_i)){ |
|
| 2075 | + $output .= implode(",",$color_i) . "{color: $color_code !important;} "; |
|
| 2076 | + } |
|
| 1655 | 2077 | |
| 1656 | - if(!$color_code){return '';} |
|
| 2078 | + // add any background color rules |
|
| 2079 | + if(!empty($background)){ |
|
| 2080 | + $output .= implode(",",$background) . "{background-color: $color_code;} "; |
|
| 2081 | + } |
|
| 2082 | + if(!empty($background_i)){ |
|
| 2083 | + $output .= implode(",",$background_i) . "{background-color: $color_code !important;} "; |
|
| 2084 | + } |
|
| 1657 | 2085 | |
| 1658 | - $rgb = self::hex_to_rgb($hex); |
|
| 2086 | + // add any border color rules |
|
| 2087 | + if(!empty($border)){ |
|
| 2088 | + $output .= implode(",",$border) . "{border-color: $color_code;} "; |
|
| 2089 | + } |
|
| 2090 | + if(!empty($border_i)){ |
|
| 2091 | + $output .= implode(",",$border_i) . "{border-color: $color_code !important;} "; |
|
| 2092 | + } |
|
| 1659 | 2093 | |
| 1660 | - if($compatibility===true || $compatibility===1){ |
|
| 1661 | - $compatibility = '.bsui'; |
|
| 1662 | - }elseif(!$compatibility){ |
|
| 1663 | - $compatibility = ''; |
|
| 1664 | - }else{ |
|
| 1665 | - $compatibility = esc_attr($compatibility); |
|
| 1666 | - } |
|
| 2094 | + // add any fill color rules |
|
| 2095 | + if(!empty($fill)){ |
|
| 2096 | + $output .= implode(",",$fill) . "{fill: $color_code;} "; |
|
| 2097 | + } |
|
| 2098 | + if(!empty($fill_i)){ |
|
| 2099 | + $output .= implode(",",$fill_i) . "{fill: $color_code !important;} "; |
|
| 2100 | + } |
|
| 1667 | 2101 | |
| 1668 | 2102 | |
| 2103 | + $prefix = $compatibility ? ".bsui " : ""; |
|
| 1669 | 2104 | |
| 1670 | -// echo '####'.$color_code;exit; |
|
| 2105 | + // darken |
|
| 2106 | + $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075"); |
|
| 2107 | + $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10"); |
|
| 2108 | + $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125"); |
|
| 1671 | 2109 | |
| 1672 | - $type = sanitize_html_class($type); |
|
| 2110 | + // lighten |
|
| 2111 | + $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25"); |
|
| 2112 | + |
|
| 2113 | + // opacity see https://css-tricks.com/8-digit-hex-codes/ |
|
| 2114 | + $op_25 = $color_code."40"; // 25% opacity |
|
| 1673 | 2115 | |
| 1674 | - /** |
|
| 1675 | - * c = color, b = background color, o = border-color, f = fill |
|
| 1676 | - */ |
|
| 1677 | - $selectors = array( |
|
| 1678 | - ".btn-{$type}" => array( 'b', 'o' ), |
|
| 1679 | - ".btn-{$type}.disabled" => array( 'b', 'o' ), |
|
| 1680 | - ".btn-{$type}:disabled" => array( 'b', 'o' ), |
|
| 1681 | - ".btn-outline-{$type}" => array( 'c', 'o' ), |
|
| 1682 | - ".btn-outline-{$type}:hover" => array( 'b', 'o' ), |
|
| 1683 | - ".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ), |
|
| 1684 | - ".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ), |
|
| 1685 | - ".show>.btn-outline-{$type}.dropdown-toggle" => array( 'b', 'o' ), |
|
| 1686 | - ".badge-{$type}" => array( 'b' ), |
|
| 1687 | - ".alert-{$type}" => array( 'b', 'o' ), |
|
| 1688 | - ".bg-{$type}" => array( 'b', 'f' ), |
|
| 1689 | - ".btn-link.btn-{$type}" => array( 'c' ), |
|
| 1690 | - ); |
|
| 1691 | - |
|
| 1692 | - if ( $aui_bs5 ) { |
|
| 1693 | - unset($selectors[".alert-{$type}" ]); |
|
| 1694 | - } |
|
| 1695 | - |
|
| 1696 | - if ( $type == 'primary' ) { |
|
| 1697 | - $selectors = $selectors + array( |
|
| 1698 | - 'a' => array( 'c' ), |
|
| 1699 | - '.btn-link' => array( 'c' ), |
|
| 1700 | - '.dropdown-item.active' => array( 'b' ), |
|
| 1701 | - '.custom-control-input:checked~.custom-control-label::before' => array( |
|
| 1702 | - 'b', |
|
| 1703 | - 'o' |
|
| 1704 | - ), |
|
| 1705 | - '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array( |
|
| 1706 | - 'b', |
|
| 1707 | - 'o' |
|
| 1708 | - ), |
|
| 1709 | - '.nav-pills .nav-link.active' => array( 'b' ), |
|
| 1710 | - '.nav-pills .show>.nav-link' => array( 'b' ), |
|
| 1711 | - '.page-link' => array( 'c' ), |
|
| 1712 | - '.page-item.active .page-link' => array( |
|
| 1713 | - 'b', |
|
| 1714 | - 'o' |
|
| 1715 | - ), |
|
| 1716 | - '.progress-bar' => array( 'b' ), |
|
| 1717 | - '.list-group-item.active' => array( |
|
| 1718 | - 'b', |
|
| 1719 | - 'o' |
|
| 1720 | - ), |
|
| 1721 | - '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ), |
|
| 1722 | -// '.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules... |
|
| 1723 | -// '.custom-range::-moz-range-thumb' => array('b'), |
|
| 1724 | -// '.custom-range::-ms-thumb' => array('b'), |
|
| 1725 | - ); |
|
| 1726 | - } |
|
| 1727 | - |
|
| 1728 | - $important_selectors = array( |
|
| 1729 | - ".bg-{$type}" => array('b','f'), |
|
| 1730 | - ".border-{$type}" => array('o'), |
|
| 1731 | - ".text-{$type}" => array('c'), |
|
| 1732 | - ); |
|
| 1733 | - |
|
| 1734 | - $color = array(); |
|
| 1735 | - $color_i = array(); |
|
| 1736 | - $background = array(); |
|
| 1737 | - $background_i = array(); |
|
| 1738 | - $border = array(); |
|
| 1739 | - $border_i = array(); |
|
| 1740 | - $fill = array(); |
|
| 1741 | - $fill_i = array(); |
|
| 1742 | - |
|
| 1743 | - $output = ''; |
|
| 1744 | - |
|
| 1745 | - if ( $aui_bs5 ) { |
|
| 1746 | -// $output .= $is_var ? 'html body {--bs-'.esc_attr($type).'-rgb: '.$color_code.'; }' : 'html body {--bs-'.esc_attr($type).'-rgb: '.self::hex_to_rgb($color_code).'; }'; |
|
| 1747 | - $output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }'; |
|
| 1748 | - } |
|
| 1749 | - |
|
| 1750 | - // build rules into each type |
|
| 1751 | - foreach($selectors as $selector => $types){ |
|
| 1752 | - $selector = $compatibility ? $compatibility . " ".$selector : $selector; |
|
| 1753 | - $types = array_combine($types,$types); |
|
| 1754 | - if(isset($types['c'])){$color[] = $selector;} |
|
| 1755 | - if(isset($types['b'])){$background[] = $selector;} |
|
| 1756 | - if(isset($types['o'])){$border[] = $selector;} |
|
| 1757 | - if(isset($types['f'])){$fill[] = $selector;} |
|
| 1758 | - } |
|
| 1759 | - |
|
| 1760 | - // build rules into each type |
|
| 1761 | - foreach($important_selectors as $selector => $types){ |
|
| 1762 | - $selector = $compatibility ? $compatibility . " ".$selector : $selector; |
|
| 1763 | - $types = array_combine($types,$types); |
|
| 1764 | - if(isset($types['c'])){$color_i[] = $selector;} |
|
| 1765 | - if(isset($types['b'])){$background_i[] = $selector;} |
|
| 1766 | - if(isset($types['o'])){$border_i[] = $selector;} |
|
| 1767 | - if(isset($types['f'])){$fill_i[] = $selector;} |
|
| 1768 | - } |
|
| 1769 | - |
|
| 1770 | - // add any color rules |
|
| 1771 | - if(!empty($color)){ |
|
| 1772 | - $output .= implode(",",$color) . "{color: $color_code;} "; |
|
| 1773 | - } |
|
| 1774 | - if(!empty($color_i)){ |
|
| 1775 | - $output .= implode(",",$color_i) . "{color: $color_code !important;} "; |
|
| 1776 | - } |
|
| 1777 | - |
|
| 1778 | - // add any background color rules |
|
| 1779 | - if(!empty($background)){ |
|
| 1780 | - $output .= implode(",",$background) . "{background-color: $color_code;} "; |
|
| 1781 | - } |
|
| 1782 | - if(!empty($background_i)){ |
|
| 1783 | - $output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} "; |
|
| 1784 | -// $output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} "; |
|
| 1785 | - } |
|
| 1786 | 2116 | |
| 1787 | - // add any border color rules |
|
| 1788 | - if(!empty($border)){ |
|
| 1789 | - $output .= implode(",",$border) . "{border-color: $color_code;} "; |
|
| 1790 | - } |
|
| 1791 | - if(!empty($border_i)){ |
|
| 1792 | - $output .= implode(",",$border_i) . "{border-color: $color_code !important;} "; |
|
| 1793 | - } |
|
| 2117 | + // button states |
|
| 2118 | + $output .= $prefix ." .btn-secondary:hover{background-color: ".$darker_075."; border-color: ".$darker_10.";} "; |
|
| 2119 | + $output .= $prefix ." .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-secondary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 2120 | + $output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active, $prefix .btn-secondary:not(:disabled):not(.disabled).active, .show>$prefix .btn-secondary.dropdown-toggle{background-color: ".$darker_10."; border-color: ".$darker_125.";} "; |
|
| 2121 | + $output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-secondary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1794 | 2122 | |
| 1795 | - // add any fill color rules |
|
| 1796 | - if(!empty($fill)){ |
|
| 1797 | - $output .= implode(",",$fill) . "{fill: $color_code;} "; |
|
| 1798 | - } |
|
| 1799 | - if(!empty($fill_i)){ |
|
| 1800 | - $output .= implode(",",$fill_i) . "{fill: $color_code !important;} "; |
|
| 1801 | - } |
|
| 1802 | 2123 | |
| 2124 | + return $output; |
|
| 2125 | + } |
|
| 2126 | + |
|
| 2127 | + /** |
|
| 2128 | + * Increases or decreases the brightness of a color by a percentage of the current brightness. |
|
| 2129 | + * |
|
| 2130 | + * @param string $hexCode Supported formats: `#FFF`, `#FFFFFF`, `FFF`, `FFFFFF` |
|
| 2131 | + * @param float $adjustPercent A number between -1 and 1. E.g. 0.3 = 30% lighter; -0.4 = 40% darker. |
|
| 2132 | + * |
|
| 2133 | + * @return string |
|
| 2134 | + */ |
|
| 2135 | + public static function css_hex_lighten_darken($hexCode, $adjustPercent) { |
|
| 2136 | + $hexCode = ltrim($hexCode, '#'); |
|
| 1803 | 2137 | |
| 1804 | - $prefix = $compatibility ? $compatibility . " " : ""; |
|
| 2138 | + if ( strpos( $hexCode, 'rgba(' ) !== false || strpos( $hexCode, 'rgb(' ) !== false ) { |
|
| 2139 | + return $hexCode; |
|
| 2140 | + } |
|
| 1805 | 2141 | |
| 1806 | - $transition = $is_var ? 'transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,filter 0.15s ease-in-out;' : ''; |
|
| 1807 | - // darken |
|
| 1808 | - $darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075"); |
|
| 1809 | - $darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10"); |
|
| 1810 | - $darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125"); |
|
| 1811 | - $darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4"); |
|
| 2142 | + if (strlen($hexCode) == 3) { |
|
| 2143 | + $hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2]; |
|
| 2144 | + } |
|
| 1812 | 2145 | |
| 1813 | - // lighten |
|
| 1814 | - $lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25"); |
|
| 2146 | + $hexCode = array_map('hexdec', str_split($hexCode, 2)); |
|
| 1815 | 2147 | |
| 1816 | - // opacity see https://css-tricks.com/8-digit-hex-codes/ |
|
| 1817 | - $op_25 = $color_code."40"; // 25% opacity |
|
| 2148 | + foreach ($hexCode as & $color) { |
|
| 2149 | + $adjustableLimit = $adjustPercent < 0 ? $color : 255 - $color; |
|
| 2150 | + $adjustAmount = ceil($adjustableLimit * $adjustPercent); |
|
| 1818 | 2151 | |
| 2152 | + $color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT); |
|
| 2153 | + } |
|
| 1819 | 2154 | |
| 1820 | - // button states |
|
| 1821 | - $output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : ''; |
|
| 1822 | - $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075."; border-color: ".$darker_10.";} "; |
|
| 1823 | -// $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000; border-color: #000;} "; |
|
| 1824 | - $output .= $prefix ." .btn-outline-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-{$type}.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1825 | - $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active, $prefix .btn-{$type}:not(:disabled):not(.disabled).active, .show>$prefix .btn-{$type}.dropdown-toggle{background-color: ".$darker_10."; border-color: ".$darker_125.";} "; |
|
| 1826 | - $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-{$type}.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 2155 | + return '#' . implode($hexCode); |
|
| 2156 | + } |
|
| 1827 | 2157 | |
| 1828 | - if ( $type == 'primary' ) { |
|
| 1829 | - // dropdown's |
|
| 1830 | - $output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} "; |
|
| 2158 | + /** |
|
| 2159 | + * Check if we should display examples. |
|
| 2160 | + */ |
|
| 2161 | + public function maybe_show_examples(){ |
|
| 2162 | + if(current_user_can('manage_options') && isset($_REQUEST['preview-aui'])){ |
|
| 2163 | + echo "<head>"; |
|
| 2164 | + wp_head(); |
|
| 2165 | + echo "</head>"; |
|
| 2166 | + echo "<body>"; |
|
| 2167 | + echo $this->get_examples(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 2168 | + echo "</body>"; |
|
| 2169 | + exit; |
|
| 2170 | + } |
|
| 2171 | + } |
|
| 1831 | 2172 | |
| 1832 | - // input states |
|
| 1833 | - $output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 2173 | + /** |
|
| 2174 | + * Get developer examples. |
|
| 2175 | + * |
|
| 2176 | + * @return string |
|
| 2177 | + */ |
|
| 2178 | + public function get_examples(){ |
|
| 2179 | + $output = ''; |
|
| 1834 | 2180 | |
| 1835 | - // page link |
|
| 1836 | - $output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1837 | - } |
|
| 1838 | 2181 | |
| 1839 | - // alerts |
|
| 1840 | - if ( $aui_bs5 ) { |
|
| 1841 | -// $output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20; border-color: ".$color_code."30;color:$darker_40} "; |
|
| 1842 | - $output .= $prefix ." .alert-{$type} {--bs-alert-bg: rgba(var(--bs-{$type}-rgb), .1 ) !important;--bs-alert-border-color: rgba(var(--bs-{$type}-rgb), .25 ) !important;--bs-alert-color: rgba(var(--bs-{$type}-rgb), 1 ) !important;} "; |
|
| 1843 | - } |
|
| 1844 | - |
|
| 1845 | - return $output; |
|
| 1846 | - } |
|
| 1847 | - |
|
| 1848 | - /** |
|
| 1849 | - * |
|
| 1850 | - * @deprecated 0.1.76 Use css_overwrite() |
|
| 1851 | - * |
|
| 1852 | - * @param $color_code |
|
| 1853 | - * @param $compatibility |
|
| 1854 | - * @param $use_variable |
|
| 1855 | - * |
|
| 1856 | - * @return string |
|
| 1857 | - */ |
|
| 1858 | - public static function css_primary($color_code,$compatibility, $use_variable = false){ |
|
| 1859 | - |
|
| 1860 | - if(!$use_variable){ |
|
| 1861 | - $color_code = sanitize_hex_color($color_code); |
|
| 1862 | - if(!$color_code){return '';} |
|
| 1863 | - } |
|
| 1864 | - |
|
| 1865 | - /** |
|
| 1866 | - * c = color, b = background color, o = border-color, f = fill |
|
| 1867 | - */ |
|
| 1868 | - $selectors = array( |
|
| 1869 | - 'a' => array('c'), |
|
| 1870 | - '.btn-primary' => array('b','o'), |
|
| 1871 | - '.btn-primary.disabled' => array('b','o'), |
|
| 1872 | - '.btn-primary:disabled' => array('b','o'), |
|
| 1873 | - '.btn-outline-primary' => array('c','o'), |
|
| 1874 | - '.btn-outline-primary:hover' => array('b','o'), |
|
| 1875 | - '.btn-outline-primary:not(:disabled):not(.disabled).active' => array('b','o'), |
|
| 1876 | - '.btn-outline-primary:not(:disabled):not(.disabled):active' => array('b','o'), |
|
| 1877 | - '.show>.btn-outline-primary.dropdown-toggle' => array('b','o'), |
|
| 1878 | - '.btn-link' => array('c'), |
|
| 1879 | - '.dropdown-item.active' => array('b'), |
|
| 1880 | - '.custom-control-input:checked~.custom-control-label::before' => array('b','o'), |
|
| 1881 | - '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array('b','o'), |
|
| 1882 | -// '.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules... |
|
| 1883 | -// '.custom-range::-moz-range-thumb' => array('b'), |
|
| 1884 | -// '.custom-range::-ms-thumb' => array('b'), |
|
| 1885 | - '.nav-pills .nav-link.active' => array('b'), |
|
| 1886 | - '.nav-pills .show>.nav-link' => array('b'), |
|
| 1887 | - '.page-link' => array('c'), |
|
| 1888 | - '.page-item.active .page-link' => array('b','o'), |
|
| 1889 | - '.badge-primary' => array('b'), |
|
| 1890 | - '.alert-primary' => array('b','o'), |
|
| 1891 | - '.progress-bar' => array('b'), |
|
| 1892 | - '.list-group-item.active' => array('b','o'), |
|
| 1893 | - '.bg-primary' => array('b','f'), |
|
| 1894 | - '.btn-link.btn-primary' => array('c'), |
|
| 1895 | - '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array('b'), |
|
| 1896 | - ); |
|
| 1897 | - |
|
| 1898 | - $important_selectors = array( |
|
| 1899 | - '.bg-primary' => array('b','f'), |
|
| 1900 | - '.border-primary' => array('o'), |
|
| 1901 | - '.text-primary' => array('c'), |
|
| 1902 | - ); |
|
| 1903 | - |
|
| 1904 | - $color = array(); |
|
| 1905 | - $color_i = array(); |
|
| 1906 | - $background = array(); |
|
| 1907 | - $background_i = array(); |
|
| 1908 | - $border = array(); |
|
| 1909 | - $border_i = array(); |
|
| 1910 | - $fill = array(); |
|
| 1911 | - $fill_i = array(); |
|
| 1912 | - |
|
| 1913 | - $output = ''; |
|
| 1914 | - |
|
| 1915 | - // build rules into each type |
|
| 1916 | - foreach($selectors as $selector => $types){ |
|
| 1917 | - $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 1918 | - $types = array_combine($types,$types); |
|
| 1919 | - if(isset($types['c'])){$color[] = $selector;} |
|
| 1920 | - if(isset($types['b'])){$background[] = $selector;} |
|
| 1921 | - if(isset($types['o'])){$border[] = $selector;} |
|
| 1922 | - if(isset($types['f'])){$fill[] = $selector;} |
|
| 1923 | - } |
|
| 1924 | - |
|
| 1925 | - // build rules into each type |
|
| 1926 | - foreach($important_selectors as $selector => $types){ |
|
| 1927 | - $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 1928 | - $types = array_combine($types,$types); |
|
| 1929 | - if(isset($types['c'])){$color_i[] = $selector;} |
|
| 1930 | - if(isset($types['b'])){$background_i[] = $selector;} |
|
| 1931 | - if(isset($types['o'])){$border_i[] = $selector;} |
|
| 1932 | - if(isset($types['f'])){$fill_i[] = $selector;} |
|
| 1933 | - } |
|
| 1934 | - |
|
| 1935 | - // add any color rules |
|
| 1936 | - if(!empty($color)){ |
|
| 1937 | - $output .= implode(",",$color) . "{color: $color_code;} "; |
|
| 1938 | - } |
|
| 1939 | - if(!empty($color_i)){ |
|
| 1940 | - $output .= implode(",",$color_i) . "{color: $color_code !important;} "; |
|
| 1941 | - } |
|
| 1942 | - |
|
| 1943 | - // add any background color rules |
|
| 1944 | - if(!empty($background)){ |
|
| 1945 | - $output .= implode(",",$background) . "{background-color: $color_code;} "; |
|
| 1946 | - } |
|
| 1947 | - if(!empty($background_i)){ |
|
| 1948 | - $output .= implode(",",$background_i) . "{background-color: $color_code !important;} "; |
|
| 1949 | - } |
|
| 1950 | - |
|
| 1951 | - // add any border color rules |
|
| 1952 | - if(!empty($border)){ |
|
| 1953 | - $output .= implode(",",$border) . "{border-color: $color_code;} "; |
|
| 1954 | - } |
|
| 1955 | - if(!empty($border_i)){ |
|
| 1956 | - $output .= implode(",",$border_i) . "{border-color: $color_code !important;} "; |
|
| 1957 | - } |
|
| 1958 | - |
|
| 1959 | - // add any fill color rules |
|
| 1960 | - if(!empty($fill)){ |
|
| 1961 | - $output .= implode(",",$fill) . "{fill: $color_code;} "; |
|
| 1962 | - } |
|
| 1963 | - if(!empty($fill_i)){ |
|
| 1964 | - $output .= implode(",",$fill_i) . "{fill: $color_code !important;} "; |
|
| 1965 | - } |
|
| 1966 | - |
|
| 1967 | - |
|
| 1968 | - $prefix = $compatibility ? ".bsui " : ""; |
|
| 1969 | - |
|
| 1970 | - // darken |
|
| 1971 | - $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075"); |
|
| 1972 | - $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10"); |
|
| 1973 | - $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125"); |
|
| 1974 | - |
|
| 1975 | - // lighten |
|
| 1976 | - $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25"); |
|
| 1977 | - |
|
| 1978 | - // opacity see https://css-tricks.com/8-digit-hex-codes/ |
|
| 1979 | - $op_25 = $color_code."40"; // 25% opacity |
|
| 1980 | - |
|
| 1981 | - |
|
| 1982 | - // button states |
|
| 1983 | - $output .= $prefix ." .btn-primary:hover, $prefix .btn-primary:focus, $prefix .btn-primary.focus{background-color: ".$darker_075."; border-color: ".$darker_10.";} "; |
|
| 1984 | - $output .= $prefix ." .btn-outline-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-primary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1985 | - $output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active, $prefix .btn-primary:not(:disabled):not(.disabled).active, .show>$prefix .btn-primary.dropdown-toggle{background-color: ".$darker_10."; border-color: ".$darker_125.";} "; |
|
| 1986 | - $output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-primary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1987 | - |
|
| 1988 | - |
|
| 1989 | - // dropdown's |
|
| 1990 | - $output .= $prefix ." .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} "; |
|
| 1991 | - |
|
| 1992 | - |
|
| 1993 | - // input states |
|
| 1994 | - $output .= $prefix ." .form-control:focus{border-color: ".$lighten_25.";box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1995 | - |
|
| 1996 | - // page link |
|
| 1997 | - $output .= $prefix ." .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1998 | - |
|
| 1999 | - return $output; |
|
| 2000 | - } |
|
| 2001 | - |
|
| 2002 | - /** |
|
| 2003 | - * |
|
| 2004 | - * @deprecated 0.1.76 Use css_overwrite() |
|
| 2005 | - * |
|
| 2006 | - * @param $color_code |
|
| 2007 | - * @param $compatibility |
|
| 2008 | - * |
|
| 2009 | - * @return string |
|
| 2010 | - */ |
|
| 2011 | - public static function css_secondary($color_code,$compatibility){; |
|
| 2012 | - $color_code = sanitize_hex_color($color_code); |
|
| 2013 | - if(!$color_code){return '';} |
|
| 2014 | - /** |
|
| 2015 | - * c = color, b = background color, o = border-color, f = fill |
|
| 2016 | - */ |
|
| 2017 | - $selectors = array( |
|
| 2018 | - '.btn-secondary' => array('b','o'), |
|
| 2019 | - '.btn-secondary.disabled' => array('b','o'), |
|
| 2020 | - '.btn-secondary:disabled' => array('b','o'), |
|
| 2021 | - '.btn-outline-secondary' => array('c','o'), |
|
| 2022 | - '.btn-outline-secondary:hover' => array('b','o'), |
|
| 2023 | - '.btn-outline-secondary.disabled' => array('c'), |
|
| 2024 | - '.btn-outline-secondary:disabled' => array('c'), |
|
| 2025 | - '.btn-outline-secondary:not(:disabled):not(.disabled):active' => array('b','o'), |
|
| 2026 | - '.btn-outline-secondary:not(:disabled):not(.disabled).active' => array('b','o'), |
|
| 2027 | - '.btn-outline-secondary.dropdown-toggle' => array('b','o'), |
|
| 2028 | - '.badge-secondary' => array('b'), |
|
| 2029 | - '.alert-secondary' => array('b','o'), |
|
| 2030 | - '.btn-link.btn-secondary' => array('c'), |
|
| 2031 | - ); |
|
| 2032 | - |
|
| 2033 | - $important_selectors = array( |
|
| 2034 | - '.bg-secondary' => array('b','f'), |
|
| 2035 | - '.border-secondary' => array('o'), |
|
| 2036 | - '.text-secondary' => array('c'), |
|
| 2037 | - ); |
|
| 2038 | - |
|
| 2039 | - $color = array(); |
|
| 2040 | - $color_i = array(); |
|
| 2041 | - $background = array(); |
|
| 2042 | - $background_i = array(); |
|
| 2043 | - $border = array(); |
|
| 2044 | - $border_i = array(); |
|
| 2045 | - $fill = array(); |
|
| 2046 | - $fill_i = array(); |
|
| 2047 | - |
|
| 2048 | - $output = ''; |
|
| 2049 | - |
|
| 2050 | - // build rules into each type |
|
| 2051 | - foreach($selectors as $selector => $types){ |
|
| 2052 | - $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 2053 | - $types = array_combine($types,$types); |
|
| 2054 | - if(isset($types['c'])){$color[] = $selector;} |
|
| 2055 | - if(isset($types['b'])){$background[] = $selector;} |
|
| 2056 | - if(isset($types['o'])){$border[] = $selector;} |
|
| 2057 | - if(isset($types['f'])){$fill[] = $selector;} |
|
| 2058 | - } |
|
| 2059 | - |
|
| 2060 | - // build rules into each type |
|
| 2061 | - foreach($important_selectors as $selector => $types){ |
|
| 2062 | - $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 2063 | - $types = array_combine($types,$types); |
|
| 2064 | - if(isset($types['c'])){$color_i[] = $selector;} |
|
| 2065 | - if(isset($types['b'])){$background_i[] = $selector;} |
|
| 2066 | - if(isset($types['o'])){$border_i[] = $selector;} |
|
| 2067 | - if(isset($types['f'])){$fill_i[] = $selector;} |
|
| 2068 | - } |
|
| 2069 | - |
|
| 2070 | - // add any color rules |
|
| 2071 | - if(!empty($color)){ |
|
| 2072 | - $output .= implode(",",$color) . "{color: $color_code;} "; |
|
| 2073 | - } |
|
| 2074 | - if(!empty($color_i)){ |
|
| 2075 | - $output .= implode(",",$color_i) . "{color: $color_code !important;} "; |
|
| 2076 | - } |
|
| 2077 | - |
|
| 2078 | - // add any background color rules |
|
| 2079 | - if(!empty($background)){ |
|
| 2080 | - $output .= implode(",",$background) . "{background-color: $color_code;} "; |
|
| 2081 | - } |
|
| 2082 | - if(!empty($background_i)){ |
|
| 2083 | - $output .= implode(",",$background_i) . "{background-color: $color_code !important;} "; |
|
| 2084 | - } |
|
| 2085 | - |
|
| 2086 | - // add any border color rules |
|
| 2087 | - if(!empty($border)){ |
|
| 2088 | - $output .= implode(",",$border) . "{border-color: $color_code;} "; |
|
| 2089 | - } |
|
| 2090 | - if(!empty($border_i)){ |
|
| 2091 | - $output .= implode(",",$border_i) . "{border-color: $color_code !important;} "; |
|
| 2092 | - } |
|
| 2093 | - |
|
| 2094 | - // add any fill color rules |
|
| 2095 | - if(!empty($fill)){ |
|
| 2096 | - $output .= implode(",",$fill) . "{fill: $color_code;} "; |
|
| 2097 | - } |
|
| 2098 | - if(!empty($fill_i)){ |
|
| 2099 | - $output .= implode(",",$fill_i) . "{fill: $color_code !important;} "; |
|
| 2100 | - } |
|
| 2101 | - |
|
| 2102 | - |
|
| 2103 | - $prefix = $compatibility ? ".bsui " : ""; |
|
| 2104 | - |
|
| 2105 | - // darken |
|
| 2106 | - $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075"); |
|
| 2107 | - $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10"); |
|
| 2108 | - $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125"); |
|
| 2109 | - |
|
| 2110 | - // lighten |
|
| 2111 | - $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25"); |
|
| 2112 | - |
|
| 2113 | - // opacity see https://css-tricks.com/8-digit-hex-codes/ |
|
| 2114 | - $op_25 = $color_code."40"; // 25% opacity |
|
| 2115 | - |
|
| 2116 | - |
|
| 2117 | - // button states |
|
| 2118 | - $output .= $prefix ." .btn-secondary:hover{background-color: ".$darker_075."; border-color: ".$darker_10.";} "; |
|
| 2119 | - $output .= $prefix ." .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-secondary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 2120 | - $output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active, $prefix .btn-secondary:not(:disabled):not(.disabled).active, .show>$prefix .btn-secondary.dropdown-toggle{background-color: ".$darker_10."; border-color: ".$darker_125.";} "; |
|
| 2121 | - $output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-secondary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 2122 | - |
|
| 2123 | - |
|
| 2124 | - return $output; |
|
| 2125 | - } |
|
| 2126 | - |
|
| 2127 | - /** |
|
| 2128 | - * Increases or decreases the brightness of a color by a percentage of the current brightness. |
|
| 2129 | - * |
|
| 2130 | - * @param string $hexCode Supported formats: `#FFF`, `#FFFFFF`, `FFF`, `FFFFFF` |
|
| 2131 | - * @param float $adjustPercent A number between -1 and 1. E.g. 0.3 = 30% lighter; -0.4 = 40% darker. |
|
| 2132 | - * |
|
| 2133 | - * @return string |
|
| 2134 | - */ |
|
| 2135 | - public static function css_hex_lighten_darken($hexCode, $adjustPercent) { |
|
| 2136 | - $hexCode = ltrim($hexCode, '#'); |
|
| 2137 | - |
|
| 2138 | - if ( strpos( $hexCode, 'rgba(' ) !== false || strpos( $hexCode, 'rgb(' ) !== false ) { |
|
| 2139 | - return $hexCode; |
|
| 2140 | - } |
|
| 2141 | - |
|
| 2142 | - if (strlen($hexCode) == 3) { |
|
| 2143 | - $hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2]; |
|
| 2144 | - } |
|
| 2145 | - |
|
| 2146 | - $hexCode = array_map('hexdec', str_split($hexCode, 2)); |
|
| 2147 | - |
|
| 2148 | - foreach ($hexCode as & $color) { |
|
| 2149 | - $adjustableLimit = $adjustPercent < 0 ? $color : 255 - $color; |
|
| 2150 | - $adjustAmount = ceil($adjustableLimit * $adjustPercent); |
|
| 2151 | - |
|
| 2152 | - $color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT); |
|
| 2153 | - } |
|
| 2154 | - |
|
| 2155 | - return '#' . implode($hexCode); |
|
| 2156 | - } |
|
| 2157 | - |
|
| 2158 | - /** |
|
| 2159 | - * Check if we should display examples. |
|
| 2160 | - */ |
|
| 2161 | - public function maybe_show_examples(){ |
|
| 2162 | - if(current_user_can('manage_options') && isset($_REQUEST['preview-aui'])){ |
|
| 2163 | - echo "<head>"; |
|
| 2164 | - wp_head(); |
|
| 2165 | - echo "</head>"; |
|
| 2166 | - echo "<body>"; |
|
| 2167 | - echo $this->get_examples(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 2168 | - echo "</body>"; |
|
| 2169 | - exit; |
|
| 2170 | - } |
|
| 2171 | - } |
|
| 2172 | - |
|
| 2173 | - /** |
|
| 2174 | - * Get developer examples. |
|
| 2175 | - * |
|
| 2176 | - * @return string |
|
| 2177 | - */ |
|
| 2178 | - public function get_examples(){ |
|
| 2179 | - $output = ''; |
|
| 2180 | - |
|
| 2181 | - |
|
| 2182 | - // open form |
|
| 2183 | - $output .= "<form class='p-5 m-5 border rounded'>"; |
|
| 2184 | - |
|
| 2185 | - // input example |
|
| 2186 | - $output .= aui()->input(array( |
|
| 2187 | - 'type' => 'text', |
|
| 2188 | - 'id' => 'text-example', |
|
| 2189 | - 'name' => 'text-example', |
|
| 2190 | - 'placeholder' => 'text placeholder', |
|
| 2191 | - 'title' => 'Text input example', |
|
| 2192 | - 'value' => '', |
|
| 2193 | - 'required' => false, |
|
| 2194 | - 'help_text' => 'help text', |
|
| 2195 | - 'label' => 'Text input example label' |
|
| 2196 | - )); |
|
| 2197 | - |
|
| 2198 | - // input example |
|
| 2199 | - $output .= aui()->input(array( |
|
| 2200 | - 'type' => 'url', |
|
| 2201 | - 'id' => 'text-example2', |
|
| 2202 | - 'name' => 'text-example', |
|
| 2203 | - 'placeholder' => 'url placeholder', |
|
| 2204 | - 'title' => 'Text input example', |
|
| 2205 | - 'value' => '', |
|
| 2206 | - 'required' => false, |
|
| 2207 | - 'help_text' => 'help text', |
|
| 2208 | - 'label' => 'Text input example label' |
|
| 2209 | - )); |
|
| 2210 | - |
|
| 2211 | - // checkbox example |
|
| 2212 | - $output .= aui()->input(array( |
|
| 2213 | - 'type' => 'checkbox', |
|
| 2214 | - 'id' => 'checkbox-example', |
|
| 2215 | - 'name' => 'checkbox-example', |
|
| 2216 | - 'placeholder' => 'checkbox-example', |
|
| 2217 | - 'title' => 'Checkbox example', |
|
| 2218 | - 'value' => '1', |
|
| 2219 | - 'checked' => true, |
|
| 2220 | - 'required' => false, |
|
| 2221 | - 'help_text' => 'help text', |
|
| 2222 | - 'label' => 'Checkbox checked' |
|
| 2223 | - )); |
|
| 2224 | - |
|
| 2225 | - // checkbox example |
|
| 2226 | - $output .= aui()->input(array( |
|
| 2227 | - 'type' => 'checkbox', |
|
| 2228 | - 'id' => 'checkbox-example2', |
|
| 2229 | - 'name' => 'checkbox-example2', |
|
| 2230 | - 'placeholder' => 'checkbox-example', |
|
| 2231 | - 'title' => 'Checkbox example', |
|
| 2232 | - 'value' => '1', |
|
| 2233 | - 'checked' => false, |
|
| 2234 | - 'required' => false, |
|
| 2235 | - 'help_text' => 'help text', |
|
| 2236 | - 'label' => 'Checkbox un-checked' |
|
| 2237 | - )); |
|
| 2238 | - |
|
| 2239 | - // switch example |
|
| 2240 | - $output .= aui()->input(array( |
|
| 2241 | - 'type' => 'checkbox', |
|
| 2242 | - 'id' => 'switch-example', |
|
| 2243 | - 'name' => 'switch-example', |
|
| 2244 | - 'placeholder' => 'checkbox-example', |
|
| 2245 | - 'title' => 'Switch example', |
|
| 2246 | - 'value' => '1', |
|
| 2247 | - 'checked' => true, |
|
| 2248 | - 'switch' => true, |
|
| 2249 | - 'required' => false, |
|
| 2250 | - 'help_text' => 'help text', |
|
| 2251 | - 'label' => 'Switch on' |
|
| 2252 | - )); |
|
| 2253 | - |
|
| 2254 | - // switch example |
|
| 2255 | - $output .= aui()->input(array( |
|
| 2256 | - 'type' => 'checkbox', |
|
| 2257 | - 'id' => 'switch-example2', |
|
| 2258 | - 'name' => 'switch-example2', |
|
| 2259 | - 'placeholder' => 'checkbox-example', |
|
| 2260 | - 'title' => 'Switch example', |
|
| 2261 | - 'value' => '1', |
|
| 2262 | - 'checked' => false, |
|
| 2263 | - 'switch' => true, |
|
| 2264 | - 'required' => false, |
|
| 2265 | - 'help_text' => 'help text', |
|
| 2266 | - 'label' => 'Switch off' |
|
| 2267 | - )); |
|
| 2268 | - |
|
| 2269 | - // close form |
|
| 2270 | - $output .= "</form>"; |
|
| 2271 | - |
|
| 2272 | - return $output; |
|
| 2273 | - } |
|
| 2274 | - |
|
| 2275 | - /** |
|
| 2276 | - * Calendar params. |
|
| 2277 | - * |
|
| 2278 | - * @since 0.1.44 |
|
| 2279 | - * |
|
| 2280 | - * @return array Calendar params. |
|
| 2281 | - */ |
|
| 2282 | - public static function calendar_params() { |
|
| 2283 | - $params = array( |
|
| 2284 | - 'month_long_1' => __( 'January', 'ayecode-connect' ), |
|
| 2285 | - 'month_long_2' => __( 'February', 'ayecode-connect' ), |
|
| 2286 | - 'month_long_3' => __( 'March', 'ayecode-connect' ), |
|
| 2287 | - 'month_long_4' => __( 'April', 'ayecode-connect' ), |
|
| 2288 | - 'month_long_5' => __( 'May', 'ayecode-connect' ), |
|
| 2289 | - 'month_long_6' => __( 'June', 'ayecode-connect' ), |
|
| 2290 | - 'month_long_7' => __( 'July', 'ayecode-connect' ), |
|
| 2291 | - 'month_long_8' => __( 'August', 'ayecode-connect' ), |
|
| 2292 | - 'month_long_9' => __( 'September', 'ayecode-connect' ), |
|
| 2293 | - 'month_long_10' => __( 'October', 'ayecode-connect' ), |
|
| 2294 | - 'month_long_11' => __( 'November', 'ayecode-connect' ), |
|
| 2295 | - 'month_long_12' => __( 'December', 'ayecode-connect' ), |
|
| 2296 | - 'month_s_1' => _x( 'Jan', 'January abbreviation', 'ayecode-connect' ), |
|
| 2297 | - 'month_s_2' => _x( 'Feb', 'February abbreviation', 'ayecode-connect' ), |
|
| 2298 | - 'month_s_3' => _x( 'Mar', 'March abbreviation', 'ayecode-connect' ), |
|
| 2299 | - 'month_s_4' => _x( 'Apr', 'April abbreviation', 'ayecode-connect' ), |
|
| 2300 | - 'month_s_5' => _x( 'May', 'May abbreviation', 'ayecode-connect' ), |
|
| 2301 | - 'month_s_6' => _x( 'Jun', 'June abbreviation', 'ayecode-connect' ), |
|
| 2302 | - 'month_s_7' => _x( 'Jul', 'July abbreviation', 'ayecode-connect' ), |
|
| 2303 | - 'month_s_8' => _x( 'Aug', 'August abbreviation', 'ayecode-connect' ), |
|
| 2304 | - 'month_s_9' => _x( 'Sep', 'September abbreviation', 'ayecode-connect' ), |
|
| 2305 | - 'month_s_10' => _x( 'Oct', 'October abbreviation', 'ayecode-connect' ), |
|
| 2306 | - 'month_s_11' => _x( 'Nov', 'November abbreviation', 'ayecode-connect' ), |
|
| 2307 | - 'month_s_12' => _x( 'Dec', 'December abbreviation', 'ayecode-connect' ), |
|
| 2308 | - 'day_s1_1' => _x( 'S', 'Sunday initial', 'ayecode-connect' ), |
|
| 2309 | - 'day_s1_2' => _x( 'M', 'Monday initial', 'ayecode-connect' ), |
|
| 2310 | - 'day_s1_3' => _x( 'T', 'Tuesday initial', 'ayecode-connect' ), |
|
| 2311 | - 'day_s1_4' => _x( 'W', 'Wednesday initial', 'ayecode-connect' ), |
|
| 2312 | - 'day_s1_5' => _x( 'T', 'Friday initial', 'ayecode-connect' ), |
|
| 2313 | - 'day_s1_6' => _x( 'F', 'Thursday initial', 'ayecode-connect' ), |
|
| 2314 | - 'day_s1_7' => _x( 'S', 'Saturday initial', 'ayecode-connect' ), |
|
| 2315 | - 'day_s2_1' => __( 'Su', 'ayecode-connect' ), |
|
| 2316 | - 'day_s2_2' => __( 'Mo', 'ayecode-connect' ), |
|
| 2317 | - 'day_s2_3' => __( 'Tu', 'ayecode-connect' ), |
|
| 2318 | - 'day_s2_4' => __( 'We', 'ayecode-connect' ), |
|
| 2319 | - 'day_s2_5' => __( 'Th', 'ayecode-connect' ), |
|
| 2320 | - 'day_s2_6' => __( 'Fr', 'ayecode-connect' ), |
|
| 2321 | - 'day_s2_7' => __( 'Sa', 'ayecode-connect' ), |
|
| 2322 | - 'day_s3_1' => __( 'Sun', 'ayecode-connect' ), |
|
| 2323 | - 'day_s3_2' => __( 'Mon', 'ayecode-connect' ), |
|
| 2324 | - 'day_s3_3' => __( 'Tue', 'ayecode-connect' ), |
|
| 2325 | - 'day_s3_4' => __( 'Wed', 'ayecode-connect' ), |
|
| 2326 | - 'day_s3_5' => __( 'Thu', 'ayecode-connect' ), |
|
| 2327 | - 'day_s3_6' => __( 'Fri', 'ayecode-connect' ), |
|
| 2328 | - 'day_s3_7' => __( 'Sat', 'ayecode-connect' ), |
|
| 2329 | - 'day_s5_1' => __( 'Sunday', 'ayecode-connect' ), |
|
| 2330 | - 'day_s5_2' => __( 'Monday', 'ayecode-connect' ), |
|
| 2331 | - 'day_s5_3' => __( 'Tuesday', 'ayecode-connect' ), |
|
| 2332 | - 'day_s5_4' => __( 'Wednesday', 'ayecode-connect' ), |
|
| 2333 | - 'day_s5_5' => __( 'Thursday', 'ayecode-connect' ), |
|
| 2334 | - 'day_s5_6' => __( 'Friday', 'ayecode-connect' ), |
|
| 2335 | - 'day_s5_7' => __( 'Saturday', 'ayecode-connect' ), |
|
| 2336 | - 'am_lower' => __( 'am', 'ayecode-connect' ), |
|
| 2337 | - 'pm_lower' => __( 'pm', 'ayecode-connect' ), |
|
| 2338 | - 'am_upper' => __( 'AM', 'ayecode-connect' ), |
|
| 2339 | - 'pm_upper' => __( 'PM', 'ayecode-connect' ), |
|
| 2340 | - 'firstDayOfWeek' => (int) get_option( 'start_of_week' ), |
|
| 2341 | - 'time_24hr' => false, |
|
| 2342 | - 'year' => __( 'Year', 'ayecode-connect' ), |
|
| 2343 | - 'hour' => __( 'Hour', 'ayecode-connect' ), |
|
| 2344 | - 'minute' => __( 'Minute', 'ayecode-connect' ), |
|
| 2345 | - 'weekAbbreviation' => __( 'Wk', 'ayecode-connect' ), |
|
| 2346 | - 'rangeSeparator' => __( ' to ', 'ayecode-connect' ), |
|
| 2347 | - 'scrollTitle' => __( 'Scroll to increment', 'ayecode-connect' ), |
|
| 2348 | - 'toggleTitle' => __( 'Click to toggle', 'ayecode-connect' ) |
|
| 2349 | - ); |
|
| 2350 | - |
|
| 2351 | - return apply_filters( 'ayecode_ui_calendar_params', $params ); |
|
| 2352 | - } |
|
| 2353 | - |
|
| 2354 | - /** |
|
| 2355 | - * Flatpickr calendar localize. |
|
| 2356 | - * |
|
| 2357 | - * @since 0.1.44 |
|
| 2358 | - * |
|
| 2359 | - * @return string Calendar locale. |
|
| 2360 | - */ |
|
| 2361 | - public static function flatpickr_locale() { |
|
| 2362 | - $params = self::calendar_params(); |
|
| 2363 | - |
|
| 2364 | - if ( is_string( $params ) ) { |
|
| 2365 | - $params = html_entity_decode( $params, ENT_QUOTES, 'UTF-8' ); |
|
| 2366 | - } else { |
|
| 2367 | - foreach ( (array) $params as $key => $value ) { |
|
| 2368 | - if ( ! is_scalar( $value ) ) { |
|
| 2369 | - continue; |
|
| 2370 | - } |
|
| 2371 | - |
|
| 2372 | - $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); |
|
| 2373 | - } |
|
| 2374 | - } |
|
| 2182 | + // open form |
|
| 2183 | + $output .= "<form class='p-5 m-5 border rounded'>"; |
|
| 2184 | + |
|
| 2185 | + // input example |
|
| 2186 | + $output .= aui()->input(array( |
|
| 2187 | + 'type' => 'text', |
|
| 2188 | + 'id' => 'text-example', |
|
| 2189 | + 'name' => 'text-example', |
|
| 2190 | + 'placeholder' => 'text placeholder', |
|
| 2191 | + 'title' => 'Text input example', |
|
| 2192 | + 'value' => '', |
|
| 2193 | + 'required' => false, |
|
| 2194 | + 'help_text' => 'help text', |
|
| 2195 | + 'label' => 'Text input example label' |
|
| 2196 | + )); |
|
| 2197 | + |
|
| 2198 | + // input example |
|
| 2199 | + $output .= aui()->input(array( |
|
| 2200 | + 'type' => 'url', |
|
| 2201 | + 'id' => 'text-example2', |
|
| 2202 | + 'name' => 'text-example', |
|
| 2203 | + 'placeholder' => 'url placeholder', |
|
| 2204 | + 'title' => 'Text input example', |
|
| 2205 | + 'value' => '', |
|
| 2206 | + 'required' => false, |
|
| 2207 | + 'help_text' => 'help text', |
|
| 2208 | + 'label' => 'Text input example label' |
|
| 2209 | + )); |
|
| 2210 | + |
|
| 2211 | + // checkbox example |
|
| 2212 | + $output .= aui()->input(array( |
|
| 2213 | + 'type' => 'checkbox', |
|
| 2214 | + 'id' => 'checkbox-example', |
|
| 2215 | + 'name' => 'checkbox-example', |
|
| 2216 | + 'placeholder' => 'checkbox-example', |
|
| 2217 | + 'title' => 'Checkbox example', |
|
| 2218 | + 'value' => '1', |
|
| 2219 | + 'checked' => true, |
|
| 2220 | + 'required' => false, |
|
| 2221 | + 'help_text' => 'help text', |
|
| 2222 | + 'label' => 'Checkbox checked' |
|
| 2223 | + )); |
|
| 2224 | + |
|
| 2225 | + // checkbox example |
|
| 2226 | + $output .= aui()->input(array( |
|
| 2227 | + 'type' => 'checkbox', |
|
| 2228 | + 'id' => 'checkbox-example2', |
|
| 2229 | + 'name' => 'checkbox-example2', |
|
| 2230 | + 'placeholder' => 'checkbox-example', |
|
| 2231 | + 'title' => 'Checkbox example', |
|
| 2232 | + 'value' => '1', |
|
| 2233 | + 'checked' => false, |
|
| 2234 | + 'required' => false, |
|
| 2235 | + 'help_text' => 'help text', |
|
| 2236 | + 'label' => 'Checkbox un-checked' |
|
| 2237 | + )); |
|
| 2238 | + |
|
| 2239 | + // switch example |
|
| 2240 | + $output .= aui()->input(array( |
|
| 2241 | + 'type' => 'checkbox', |
|
| 2242 | + 'id' => 'switch-example', |
|
| 2243 | + 'name' => 'switch-example', |
|
| 2244 | + 'placeholder' => 'checkbox-example', |
|
| 2245 | + 'title' => 'Switch example', |
|
| 2246 | + 'value' => '1', |
|
| 2247 | + 'checked' => true, |
|
| 2248 | + 'switch' => true, |
|
| 2249 | + 'required' => false, |
|
| 2250 | + 'help_text' => 'help text', |
|
| 2251 | + 'label' => 'Switch on' |
|
| 2252 | + )); |
|
| 2253 | + |
|
| 2254 | + // switch example |
|
| 2255 | + $output .= aui()->input(array( |
|
| 2256 | + 'type' => 'checkbox', |
|
| 2257 | + 'id' => 'switch-example2', |
|
| 2258 | + 'name' => 'switch-example2', |
|
| 2259 | + 'placeholder' => 'checkbox-example', |
|
| 2260 | + 'title' => 'Switch example', |
|
| 2261 | + 'value' => '1', |
|
| 2262 | + 'checked' => false, |
|
| 2263 | + 'switch' => true, |
|
| 2264 | + 'required' => false, |
|
| 2265 | + 'help_text' => 'help text', |
|
| 2266 | + 'label' => 'Switch off' |
|
| 2267 | + )); |
|
| 2268 | + |
|
| 2269 | + // close form |
|
| 2270 | + $output .= "</form>"; |
|
| 2271 | + |
|
| 2272 | + return $output; |
|
| 2273 | + } |
|
| 2274 | + |
|
| 2275 | + /** |
|
| 2276 | + * Calendar params. |
|
| 2277 | + * |
|
| 2278 | + * @since 0.1.44 |
|
| 2279 | + * |
|
| 2280 | + * @return array Calendar params. |
|
| 2281 | + */ |
|
| 2282 | + public static function calendar_params() { |
|
| 2283 | + $params = array( |
|
| 2284 | + 'month_long_1' => __( 'January', 'ayecode-connect' ), |
|
| 2285 | + 'month_long_2' => __( 'February', 'ayecode-connect' ), |
|
| 2286 | + 'month_long_3' => __( 'March', 'ayecode-connect' ), |
|
| 2287 | + 'month_long_4' => __( 'April', 'ayecode-connect' ), |
|
| 2288 | + 'month_long_5' => __( 'May', 'ayecode-connect' ), |
|
| 2289 | + 'month_long_6' => __( 'June', 'ayecode-connect' ), |
|
| 2290 | + 'month_long_7' => __( 'July', 'ayecode-connect' ), |
|
| 2291 | + 'month_long_8' => __( 'August', 'ayecode-connect' ), |
|
| 2292 | + 'month_long_9' => __( 'September', 'ayecode-connect' ), |
|
| 2293 | + 'month_long_10' => __( 'October', 'ayecode-connect' ), |
|
| 2294 | + 'month_long_11' => __( 'November', 'ayecode-connect' ), |
|
| 2295 | + 'month_long_12' => __( 'December', 'ayecode-connect' ), |
|
| 2296 | + 'month_s_1' => _x( 'Jan', 'January abbreviation', 'ayecode-connect' ), |
|
| 2297 | + 'month_s_2' => _x( 'Feb', 'February abbreviation', 'ayecode-connect' ), |
|
| 2298 | + 'month_s_3' => _x( 'Mar', 'March abbreviation', 'ayecode-connect' ), |
|
| 2299 | + 'month_s_4' => _x( 'Apr', 'April abbreviation', 'ayecode-connect' ), |
|
| 2300 | + 'month_s_5' => _x( 'May', 'May abbreviation', 'ayecode-connect' ), |
|
| 2301 | + 'month_s_6' => _x( 'Jun', 'June abbreviation', 'ayecode-connect' ), |
|
| 2302 | + 'month_s_7' => _x( 'Jul', 'July abbreviation', 'ayecode-connect' ), |
|
| 2303 | + 'month_s_8' => _x( 'Aug', 'August abbreviation', 'ayecode-connect' ), |
|
| 2304 | + 'month_s_9' => _x( 'Sep', 'September abbreviation', 'ayecode-connect' ), |
|
| 2305 | + 'month_s_10' => _x( 'Oct', 'October abbreviation', 'ayecode-connect' ), |
|
| 2306 | + 'month_s_11' => _x( 'Nov', 'November abbreviation', 'ayecode-connect' ), |
|
| 2307 | + 'month_s_12' => _x( 'Dec', 'December abbreviation', 'ayecode-connect' ), |
|
| 2308 | + 'day_s1_1' => _x( 'S', 'Sunday initial', 'ayecode-connect' ), |
|
| 2309 | + 'day_s1_2' => _x( 'M', 'Monday initial', 'ayecode-connect' ), |
|
| 2310 | + 'day_s1_3' => _x( 'T', 'Tuesday initial', 'ayecode-connect' ), |
|
| 2311 | + 'day_s1_4' => _x( 'W', 'Wednesday initial', 'ayecode-connect' ), |
|
| 2312 | + 'day_s1_5' => _x( 'T', 'Friday initial', 'ayecode-connect' ), |
|
| 2313 | + 'day_s1_6' => _x( 'F', 'Thursday initial', 'ayecode-connect' ), |
|
| 2314 | + 'day_s1_7' => _x( 'S', 'Saturday initial', 'ayecode-connect' ), |
|
| 2315 | + 'day_s2_1' => __( 'Su', 'ayecode-connect' ), |
|
| 2316 | + 'day_s2_2' => __( 'Mo', 'ayecode-connect' ), |
|
| 2317 | + 'day_s2_3' => __( 'Tu', 'ayecode-connect' ), |
|
| 2318 | + 'day_s2_4' => __( 'We', 'ayecode-connect' ), |
|
| 2319 | + 'day_s2_5' => __( 'Th', 'ayecode-connect' ), |
|
| 2320 | + 'day_s2_6' => __( 'Fr', 'ayecode-connect' ), |
|
| 2321 | + 'day_s2_7' => __( 'Sa', 'ayecode-connect' ), |
|
| 2322 | + 'day_s3_1' => __( 'Sun', 'ayecode-connect' ), |
|
| 2323 | + 'day_s3_2' => __( 'Mon', 'ayecode-connect' ), |
|
| 2324 | + 'day_s3_3' => __( 'Tue', 'ayecode-connect' ), |
|
| 2325 | + 'day_s3_4' => __( 'Wed', 'ayecode-connect' ), |
|
| 2326 | + 'day_s3_5' => __( 'Thu', 'ayecode-connect' ), |
|
| 2327 | + 'day_s3_6' => __( 'Fri', 'ayecode-connect' ), |
|
| 2328 | + 'day_s3_7' => __( 'Sat', 'ayecode-connect' ), |
|
| 2329 | + 'day_s5_1' => __( 'Sunday', 'ayecode-connect' ), |
|
| 2330 | + 'day_s5_2' => __( 'Monday', 'ayecode-connect' ), |
|
| 2331 | + 'day_s5_3' => __( 'Tuesday', 'ayecode-connect' ), |
|
| 2332 | + 'day_s5_4' => __( 'Wednesday', 'ayecode-connect' ), |
|
| 2333 | + 'day_s5_5' => __( 'Thursday', 'ayecode-connect' ), |
|
| 2334 | + 'day_s5_6' => __( 'Friday', 'ayecode-connect' ), |
|
| 2335 | + 'day_s5_7' => __( 'Saturday', 'ayecode-connect' ), |
|
| 2336 | + 'am_lower' => __( 'am', 'ayecode-connect' ), |
|
| 2337 | + 'pm_lower' => __( 'pm', 'ayecode-connect' ), |
|
| 2338 | + 'am_upper' => __( 'AM', 'ayecode-connect' ), |
|
| 2339 | + 'pm_upper' => __( 'PM', 'ayecode-connect' ), |
|
| 2340 | + 'firstDayOfWeek' => (int) get_option( 'start_of_week' ), |
|
| 2341 | + 'time_24hr' => false, |
|
| 2342 | + 'year' => __( 'Year', 'ayecode-connect' ), |
|
| 2343 | + 'hour' => __( 'Hour', 'ayecode-connect' ), |
|
| 2344 | + 'minute' => __( 'Minute', 'ayecode-connect' ), |
|
| 2345 | + 'weekAbbreviation' => __( 'Wk', 'ayecode-connect' ), |
|
| 2346 | + 'rangeSeparator' => __( ' to ', 'ayecode-connect' ), |
|
| 2347 | + 'scrollTitle' => __( 'Scroll to increment', 'ayecode-connect' ), |
|
| 2348 | + 'toggleTitle' => __( 'Click to toggle', 'ayecode-connect' ) |
|
| 2349 | + ); |
|
| 2350 | + |
|
| 2351 | + return apply_filters( 'ayecode_ui_calendar_params', $params ); |
|
| 2352 | + } |
|
| 2353 | + |
|
| 2354 | + /** |
|
| 2355 | + * Flatpickr calendar localize. |
|
| 2356 | + * |
|
| 2357 | + * @since 0.1.44 |
|
| 2358 | + * |
|
| 2359 | + * @return string Calendar locale. |
|
| 2360 | + */ |
|
| 2361 | + public static function flatpickr_locale() { |
|
| 2362 | + $params = self::calendar_params(); |
|
| 2363 | + |
|
| 2364 | + if ( is_string( $params ) ) { |
|
| 2365 | + $params = html_entity_decode( $params, ENT_QUOTES, 'UTF-8' ); |
|
| 2366 | + } else { |
|
| 2367 | + foreach ( (array) $params as $key => $value ) { |
|
| 2368 | + if ( ! is_scalar( $value ) ) { |
|
| 2369 | + continue; |
|
| 2370 | + } |
|
| 2371 | + |
|
| 2372 | + $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); |
|
| 2373 | + } |
|
| 2374 | + } |
|
| 2375 | 2375 | |
| 2376 | - $day_s3 = array(); |
|
| 2377 | - $day_s5 = array(); |
|
| 2376 | + $day_s3 = array(); |
|
| 2377 | + $day_s5 = array(); |
|
| 2378 | 2378 | |
| 2379 | - for ( $i = 1; $i <= 7; $i ++ ) { |
|
| 2380 | - $day_s3[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 2381 | - $day_s5[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 2382 | - } |
|
| 2379 | + for ( $i = 1; $i <= 7; $i ++ ) { |
|
| 2380 | + $day_s3[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 2381 | + $day_s5[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 2382 | + } |
|
| 2383 | 2383 | |
| 2384 | - $month_s = array(); |
|
| 2385 | - $month_long = array(); |
|
| 2384 | + $month_s = array(); |
|
| 2385 | + $month_long = array(); |
|
| 2386 | 2386 | |
| 2387 | - for ( $i = 1; $i <= 12; $i ++ ) { |
|
| 2388 | - $month_s[] = addslashes( $params[ 'month_s_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 2389 | - $month_long[] = addslashes( $params[ 'month_long_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 2390 | - } |
|
| 2387 | + for ( $i = 1; $i <= 12; $i ++ ) { |
|
| 2388 | + $month_s[] = addslashes( $params[ 'month_s_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 2389 | + $month_long[] = addslashes( $params[ 'month_long_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped |
|
| 2390 | + } |
|
| 2391 | 2391 | |
| 2392 | - ob_start(); |
|
| 2393 | - if ( 0 ) { ?><script><?php } ?> |
|
| 2392 | + ob_start(); |
|
| 2393 | + if ( 0 ) { ?><script><?php } ?> |
|
| 2394 | 2394 | { |
| 2395 | 2395 | weekdays: { |
| 2396 | 2396 | shorthand: ['<?php echo implode( "','", $day_s3 ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>'], |
@@ -2429,189 +2429,189 @@ discard block |
||
| 2429 | 2429 | } |
| 2430 | 2430 | <?php if ( 0 ) { ?></script><?php } ?> |
| 2431 | 2431 | <?php |
| 2432 | - $locale = ob_get_clean(); |
|
| 2433 | - |
|
| 2434 | - return apply_filters( 'ayecode_ui_flatpickr_locale', trim( $locale ) ); |
|
| 2435 | - } |
|
| 2436 | - |
|
| 2437 | - /** |
|
| 2438 | - * Select2 JS params. |
|
| 2439 | - * |
|
| 2440 | - * @since 0.1.44 |
|
| 2441 | - * |
|
| 2442 | - * @return array Select2 JS params. |
|
| 2443 | - */ |
|
| 2444 | - public static function select2_params() { |
|
| 2445 | - $params = array( |
|
| 2446 | - 'i18n_select_state_text' => esc_attr__( 'Select an option…', 'ayecode-connect' ), |
|
| 2447 | - 'i18n_no_matches' => _x( 'No matches found', 'enhanced select', 'ayecode-connect' ), |
|
| 2448 | - 'i18n_ajax_error' => _x( 'Loading failed', 'enhanced select', 'ayecode-connect' ), |
|
| 2449 | - 'i18n_input_too_short_1' => _x( 'Please enter 1 or more characters', 'enhanced select', 'ayecode-connect' ), |
|
| 2450 | - 'i18n_input_too_short_n' => _x( 'Please enter %item% or more characters', 'enhanced select', 'ayecode-connect' ), |
|
| 2451 | - 'i18n_input_too_long_1' => _x( 'Please delete 1 character', 'enhanced select', 'ayecode-connect' ), |
|
| 2452 | - 'i18n_input_too_long_n' => _x( 'Please delete %item% characters', 'enhanced select', 'ayecode-connect' ), |
|
| 2453 | - 'i18n_selection_too_long_1' => _x( 'You can only select 1 item', 'enhanced select', 'ayecode-connect' ), |
|
| 2454 | - 'i18n_selection_too_long_n' => _x( 'You can only select %item% items', 'enhanced select', 'ayecode-connect' ), |
|
| 2455 | - 'i18n_load_more' => _x( 'Loading more results…', 'enhanced select', 'ayecode-connect' ), |
|
| 2456 | - 'i18n_searching' => _x( 'Searching…', 'enhanced select', 'ayecode-connect' ) |
|
| 2457 | - ); |
|
| 2458 | - |
|
| 2459 | - return apply_filters( 'ayecode_ui_select2_params', $params ); |
|
| 2460 | - } |
|
| 2461 | - |
|
| 2462 | - /** |
|
| 2463 | - * Select2 JS localize. |
|
| 2464 | - * |
|
| 2465 | - * @since 0.1.44 |
|
| 2466 | - * |
|
| 2467 | - * @return string Select2 JS locale. |
|
| 2468 | - */ |
|
| 2469 | - public static function select2_locale() { |
|
| 2470 | - $params = self::select2_params(); |
|
| 2471 | - |
|
| 2472 | - foreach ( (array) $params as $key => $value ) { |
|
| 2473 | - if ( ! is_scalar( $value ) ) { |
|
| 2474 | - continue; |
|
| 2475 | - } |
|
| 2432 | + $locale = ob_get_clean(); |
|
| 2476 | 2433 | |
| 2477 | - $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); |
|
| 2478 | - } |
|
| 2479 | - |
|
| 2480 | - $locale = json_encode( $params ); |
|
| 2481 | - |
|
| 2482 | - return apply_filters( 'ayecode_ui_select2_locale', trim( $locale ) ); |
|
| 2483 | - } |
|
| 2484 | - |
|
| 2485 | - /** |
|
| 2486 | - * Time ago JS localize. |
|
| 2487 | - * |
|
| 2488 | - * @since 0.1.47 |
|
| 2489 | - * |
|
| 2490 | - * @return string Time ago JS locale. |
|
| 2491 | - */ |
|
| 2492 | - public static function timeago_locale() { |
|
| 2493 | - $params = array( |
|
| 2494 | - 'prefix_ago' => '', |
|
| 2495 | - 'suffix_ago' => ' ' . _x( 'ago', 'time ago', 'ayecode-connect' ), |
|
| 2496 | - 'prefix_after' => _x( 'after', 'time ago', 'ayecode-connect' ) . ' ', |
|
| 2497 | - 'suffix_after' => '', |
|
| 2498 | - 'seconds' => _x( 'less than a minute', 'time ago', 'ayecode-connect' ), |
|
| 2499 | - 'minute' => _x( 'about a minute', 'time ago', 'ayecode-connect' ), |
|
| 2500 | - 'minutes' => _x( '%d minutes', 'time ago', 'ayecode-connect' ), |
|
| 2501 | - 'hour' => _x( 'about an hour', 'time ago', 'ayecode-connect' ), |
|
| 2502 | - 'hours' => _x( 'about %d hours', 'time ago', 'ayecode-connect' ), |
|
| 2503 | - 'day' => _x( 'a day', 'time ago', 'ayecode-connect' ), |
|
| 2504 | - 'days' => _x( '%d days', 'time ago', 'ayecode-connect' ), |
|
| 2505 | - 'month' => _x( 'about a month', 'time ago', 'ayecode-connect' ), |
|
| 2506 | - 'months' => _x( '%d months', 'time ago', 'ayecode-connect' ), |
|
| 2507 | - 'year' => _x( 'about a year', 'time ago', 'ayecode-connect' ), |
|
| 2508 | - 'years' => _x( '%d years', 'time ago', 'ayecode-connect' ), |
|
| 2509 | - ); |
|
| 2510 | - |
|
| 2511 | - $params = apply_filters( 'ayecode_ui_timeago_params', $params ); |
|
| 2512 | - |
|
| 2513 | - foreach ( (array) $params as $key => $value ) { |
|
| 2514 | - if ( ! is_scalar( $value ) ) { |
|
| 2515 | - continue; |
|
| 2516 | - } |
|
| 2434 | + return apply_filters( 'ayecode_ui_flatpickr_locale', trim( $locale ) ); |
|
| 2435 | + } |
|
| 2436 | + |
|
| 2437 | + /** |
|
| 2438 | + * Select2 JS params. |
|
| 2439 | + * |
|
| 2440 | + * @since 0.1.44 |
|
| 2441 | + * |
|
| 2442 | + * @return array Select2 JS params. |
|
| 2443 | + */ |
|
| 2444 | + public static function select2_params() { |
|
| 2445 | + $params = array( |
|
| 2446 | + 'i18n_select_state_text' => esc_attr__( 'Select an option…', 'ayecode-connect' ), |
|
| 2447 | + 'i18n_no_matches' => _x( 'No matches found', 'enhanced select', 'ayecode-connect' ), |
|
| 2448 | + 'i18n_ajax_error' => _x( 'Loading failed', 'enhanced select', 'ayecode-connect' ), |
|
| 2449 | + 'i18n_input_too_short_1' => _x( 'Please enter 1 or more characters', 'enhanced select', 'ayecode-connect' ), |
|
| 2450 | + 'i18n_input_too_short_n' => _x( 'Please enter %item% or more characters', 'enhanced select', 'ayecode-connect' ), |
|
| 2451 | + 'i18n_input_too_long_1' => _x( 'Please delete 1 character', 'enhanced select', 'ayecode-connect' ), |
|
| 2452 | + 'i18n_input_too_long_n' => _x( 'Please delete %item% characters', 'enhanced select', 'ayecode-connect' ), |
|
| 2453 | + 'i18n_selection_too_long_1' => _x( 'You can only select 1 item', 'enhanced select', 'ayecode-connect' ), |
|
| 2454 | + 'i18n_selection_too_long_n' => _x( 'You can only select %item% items', 'enhanced select', 'ayecode-connect' ), |
|
| 2455 | + 'i18n_load_more' => _x( 'Loading more results…', 'enhanced select', 'ayecode-connect' ), |
|
| 2456 | + 'i18n_searching' => _x( 'Searching…', 'enhanced select', 'ayecode-connect' ) |
|
| 2457 | + ); |
|
| 2458 | + |
|
| 2459 | + return apply_filters( 'ayecode_ui_select2_params', $params ); |
|
| 2460 | + } |
|
| 2461 | + |
|
| 2462 | + /** |
|
| 2463 | + * Select2 JS localize. |
|
| 2464 | + * |
|
| 2465 | + * @since 0.1.44 |
|
| 2466 | + * |
|
| 2467 | + * @return string Select2 JS locale. |
|
| 2468 | + */ |
|
| 2469 | + public static function select2_locale() { |
|
| 2470 | + $params = self::select2_params(); |
|
| 2471 | + |
|
| 2472 | + foreach ( (array) $params as $key => $value ) { |
|
| 2473 | + if ( ! is_scalar( $value ) ) { |
|
| 2474 | + continue; |
|
| 2475 | + } |
|
| 2476 | + |
|
| 2477 | + $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); |
|
| 2478 | + } |
|
| 2479 | + |
|
| 2480 | + $locale = json_encode( $params ); |
|
| 2481 | + |
|
| 2482 | + return apply_filters( 'ayecode_ui_select2_locale', trim( $locale ) ); |
|
| 2483 | + } |
|
| 2484 | + |
|
| 2485 | + /** |
|
| 2486 | + * Time ago JS localize. |
|
| 2487 | + * |
|
| 2488 | + * @since 0.1.47 |
|
| 2489 | + * |
|
| 2490 | + * @return string Time ago JS locale. |
|
| 2491 | + */ |
|
| 2492 | + public static function timeago_locale() { |
|
| 2493 | + $params = array( |
|
| 2494 | + 'prefix_ago' => '', |
|
| 2495 | + 'suffix_ago' => ' ' . _x( 'ago', 'time ago', 'ayecode-connect' ), |
|
| 2496 | + 'prefix_after' => _x( 'after', 'time ago', 'ayecode-connect' ) . ' ', |
|
| 2497 | + 'suffix_after' => '', |
|
| 2498 | + 'seconds' => _x( 'less than a minute', 'time ago', 'ayecode-connect' ), |
|
| 2499 | + 'minute' => _x( 'about a minute', 'time ago', 'ayecode-connect' ), |
|
| 2500 | + 'minutes' => _x( '%d minutes', 'time ago', 'ayecode-connect' ), |
|
| 2501 | + 'hour' => _x( 'about an hour', 'time ago', 'ayecode-connect' ), |
|
| 2502 | + 'hours' => _x( 'about %d hours', 'time ago', 'ayecode-connect' ), |
|
| 2503 | + 'day' => _x( 'a day', 'time ago', 'ayecode-connect' ), |
|
| 2504 | + 'days' => _x( '%d days', 'time ago', 'ayecode-connect' ), |
|
| 2505 | + 'month' => _x( 'about a month', 'time ago', 'ayecode-connect' ), |
|
| 2506 | + 'months' => _x( '%d months', 'time ago', 'ayecode-connect' ), |
|
| 2507 | + 'year' => _x( 'about a year', 'time ago', 'ayecode-connect' ), |
|
| 2508 | + 'years' => _x( '%d years', 'time ago', 'ayecode-connect' ), |
|
| 2509 | + ); |
|
| 2510 | + |
|
| 2511 | + $params = apply_filters( 'ayecode_ui_timeago_params', $params ); |
|
| 2512 | + |
|
| 2513 | + foreach ( (array) $params as $key => $value ) { |
|
| 2514 | + if ( ! is_scalar( $value ) ) { |
|
| 2515 | + continue; |
|
| 2516 | + } |
|
| 2517 | + |
|
| 2518 | + $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); |
|
| 2519 | + } |
|
| 2520 | + |
|
| 2521 | + $locale = json_encode( $params ); |
|
| 2522 | + |
|
| 2523 | + return apply_filters( 'ayecode_ui_timeago_locale', trim( $locale ) ); |
|
| 2524 | + } |
|
| 2525 | + |
|
| 2526 | + /** |
|
| 2527 | + * JavaScript Minifier |
|
| 2528 | + * |
|
| 2529 | + * @param $input |
|
| 2530 | + * |
|
| 2531 | + * @return mixed |
|
| 2532 | + */ |
|
| 2533 | + public static function minify_js($input) { |
|
| 2534 | + if(trim($input) === "") return $input; |
|
| 2535 | + return preg_replace( |
|
| 2536 | + array( |
|
| 2537 | + // Remove comment(s) |
|
| 2538 | + '#\s*("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')\s*|\s*\/\*(?!\!|@cc_on)(?>[\s\S]*?\*\/)\s*|\s*(?<![\:\=])\/\/.*(?=[\n\r]|$)|^\s*|\s*$#', |
|
| 2539 | + // Remove white-space(s) outside the string and regex |
|
| 2540 | + '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/)|\/(?!\/)[^\n\r]*?\/(?=[\s.,;]|[gimuy]|$))|\s*([!%&*\(\)\-=+\[\]\{\}|;:,.<>?\/])\s*#s', |
|
| 2541 | + // Remove the last semicolon |
|
| 2542 | + '#;+\}#', |
|
| 2543 | + // Minify object attribute(s) except JSON attribute(s). From `{'foo':'bar'}` to `{foo:'bar'}` |
|
| 2544 | + '#([\{,])([\'])(\d+|[a-z_][a-z0-9_]*)\2(?=\:)#i', |
|
| 2545 | + // --ibid. From `foo['bar']` to `foo.bar` |
|
| 2546 | + '#([a-z0-9_\)\]])\[([\'"])([a-z_][a-z0-9_]*)\2\]#i' |
|
| 2547 | + ), |
|
| 2548 | + array( |
|
| 2549 | + '$1', |
|
| 2550 | + '$1$2', |
|
| 2551 | + '}', |
|
| 2552 | + '$1$3', |
|
| 2553 | + '$1.$3' |
|
| 2554 | + ), |
|
| 2555 | + $input); |
|
| 2556 | + } |
|
| 2517 | 2557 | |
| 2518 | - $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); |
|
| 2519 | - } |
|
| 2520 | - |
|
| 2521 | - $locale = json_encode( $params ); |
|
| 2522 | - |
|
| 2523 | - return apply_filters( 'ayecode_ui_timeago_locale', trim( $locale ) ); |
|
| 2524 | - } |
|
| 2525 | - |
|
| 2526 | - /** |
|
| 2527 | - * JavaScript Minifier |
|
| 2528 | - * |
|
| 2529 | - * @param $input |
|
| 2530 | - * |
|
| 2531 | - * @return mixed |
|
| 2532 | - */ |
|
| 2533 | - public static function minify_js($input) { |
|
| 2534 | - if(trim($input) === "") return $input; |
|
| 2535 | - return preg_replace( |
|
| 2536 | - array( |
|
| 2537 | - // Remove comment(s) |
|
| 2538 | - '#\s*("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')\s*|\s*\/\*(?!\!|@cc_on)(?>[\s\S]*?\*\/)\s*|\s*(?<![\:\=])\/\/.*(?=[\n\r]|$)|^\s*|\s*$#', |
|
| 2539 | - // Remove white-space(s) outside the string and regex |
|
| 2540 | - '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/)|\/(?!\/)[^\n\r]*?\/(?=[\s.,;]|[gimuy]|$))|\s*([!%&*\(\)\-=+\[\]\{\}|;:,.<>?\/])\s*#s', |
|
| 2541 | - // Remove the last semicolon |
|
| 2542 | - '#;+\}#', |
|
| 2543 | - // Minify object attribute(s) except JSON attribute(s). From `{'foo':'bar'}` to `{foo:'bar'}` |
|
| 2544 | - '#([\{,])([\'])(\d+|[a-z_][a-z0-9_]*)\2(?=\:)#i', |
|
| 2545 | - // --ibid. From `foo['bar']` to `foo.bar` |
|
| 2546 | - '#([a-z0-9_\)\]])\[([\'"])([a-z_][a-z0-9_]*)\2\]#i' |
|
| 2547 | - ), |
|
| 2548 | - array( |
|
| 2549 | - '$1', |
|
| 2550 | - '$1$2', |
|
| 2551 | - '}', |
|
| 2552 | - '$1$3', |
|
| 2553 | - '$1.$3' |
|
| 2554 | - ), |
|
| 2555 | - $input); |
|
| 2556 | - } |
|
| 2557 | - |
|
| 2558 | - /** |
|
| 2559 | - * Minify CSS |
|
| 2560 | - * |
|
| 2561 | - * @param $input |
|
| 2562 | - * |
|
| 2563 | - * @return mixed |
|
| 2564 | - */ |
|
| 2565 | - public static function minify_css($input) { |
|
| 2566 | - if(trim($input) === "") return $input; |
|
| 2567 | - return preg_replace( |
|
| 2568 | - array( |
|
| 2569 | - // Remove comment(s) |
|
| 2570 | - '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')|\/\*(?!\!)(?>.*?\*\/)|^\s*|\s*$#s', |
|
| 2571 | - // Remove unused white-space(s) |
|
| 2572 | - '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/))|\s*+;\s*+(})\s*+|\s*+([*$~^|]?+=|[{};,>~]|\s(?![0-9\.])|!important\b)\s*+|([[(:])\s++|\s++([])])|\s++(:)\s*+(?!(?>[^{}"\']++|"(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')*+{)|^\s++|\s++\z|(\s)\s+#si', |
|
| 2573 | - // Replace `0(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)` with `0` |
|
| 2574 | - '#(?<=[\s:])(0)(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)#si', |
|
| 2575 | - // Replace `:0 0 0 0` with `:0` |
|
| 2576 | - '#:(0\s+0|0\s+0\s+0\s+0)(?=[;\}]|\!important)#i', |
|
| 2577 | - // Replace `background-position:0` with `background-position:0 0` |
|
| 2578 | - '#(background-position):0(?=[;\}])#si', |
|
| 2579 | - // Replace `0.6` with `.6`, but only when preceded by `:`, `,`, `-` or a white-space |
|
| 2580 | - '#(?<=[\s:,\-])0+\.(\d+)#s', |
|
| 2581 | - // Minify string value |
|
| 2582 | - '#(\/\*(?>.*?\*\/))|(?<!content\:)([\'"])([a-z_][a-z0-9\-_]*?)\2(?=[\s\{\}\];,])#si', |
|
| 2583 | - '#(\/\*(?>.*?\*\/))|(\burl\()([\'"])([^\s]+?)\3(\))#si', |
|
| 2584 | - // Minify HEX color code |
|
| 2585 | - '#(?<=[\s:,\-]\#)([a-f0-6]+)\1([a-f0-6]+)\2([a-f0-6]+)\3#i', |
|
| 2586 | - // Replace `(border|outline):none` with `(border|outline):0` |
|
| 2587 | - '#(?<=[\{;])(border|outline):none(?=[;\}\!])#', |
|
| 2588 | - // Remove empty selector(s) |
|
| 2589 | - '#(\/\*(?>.*?\*\/))|(^|[\{\}])(?:[^\s\{\}]+)\{\}#s' |
|
| 2590 | - ), |
|
| 2591 | - array( |
|
| 2592 | - '$1', |
|
| 2593 | - '$1$2$3$4$5$6$7', |
|
| 2594 | - '$1', |
|
| 2595 | - ':0', |
|
| 2596 | - '$1:0 0', |
|
| 2597 | - '.$1', |
|
| 2598 | - '$1$3', |
|
| 2599 | - '$1$2$4$5', |
|
| 2600 | - '$1$2$3', |
|
| 2601 | - '$1:0', |
|
| 2602 | - '$1$2' |
|
| 2603 | - ), |
|
| 2604 | - $input); |
|
| 2605 | - } |
|
| 2606 | - |
|
| 2607 | - /** |
|
| 2608 | - * Get the conditional fields JavaScript. |
|
| 2609 | - * |
|
| 2610 | - * @return mixed |
|
| 2611 | - */ |
|
| 2612 | - public function conditional_fields_js() { |
|
| 2613 | - ob_start(); |
|
| 2614 | - ?> |
|
| 2558 | + /** |
|
| 2559 | + * Minify CSS |
|
| 2560 | + * |
|
| 2561 | + * @param $input |
|
| 2562 | + * |
|
| 2563 | + * @return mixed |
|
| 2564 | + */ |
|
| 2565 | + public static function minify_css($input) { |
|
| 2566 | + if(trim($input) === "") return $input; |
|
| 2567 | + return preg_replace( |
|
| 2568 | + array( |
|
| 2569 | + // Remove comment(s) |
|
| 2570 | + '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')|\/\*(?!\!)(?>.*?\*\/)|^\s*|\s*$#s', |
|
| 2571 | + // Remove unused white-space(s) |
|
| 2572 | + '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/))|\s*+;\s*+(})\s*+|\s*+([*$~^|]?+=|[{};,>~]|\s(?![0-9\.])|!important\b)\s*+|([[(:])\s++|\s++([])])|\s++(:)\s*+(?!(?>[^{}"\']++|"(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')*+{)|^\s++|\s++\z|(\s)\s+#si', |
|
| 2573 | + // Replace `0(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)` with `0` |
|
| 2574 | + '#(?<=[\s:])(0)(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)#si', |
|
| 2575 | + // Replace `:0 0 0 0` with `:0` |
|
| 2576 | + '#:(0\s+0|0\s+0\s+0\s+0)(?=[;\}]|\!important)#i', |
|
| 2577 | + // Replace `background-position:0` with `background-position:0 0` |
|
| 2578 | + '#(background-position):0(?=[;\}])#si', |
|
| 2579 | + // Replace `0.6` with `.6`, but only when preceded by `:`, `,`, `-` or a white-space |
|
| 2580 | + '#(?<=[\s:,\-])0+\.(\d+)#s', |
|
| 2581 | + // Minify string value |
|
| 2582 | + '#(\/\*(?>.*?\*\/))|(?<!content\:)([\'"])([a-z_][a-z0-9\-_]*?)\2(?=[\s\{\}\];,])#si', |
|
| 2583 | + '#(\/\*(?>.*?\*\/))|(\burl\()([\'"])([^\s]+?)\3(\))#si', |
|
| 2584 | + // Minify HEX color code |
|
| 2585 | + '#(?<=[\s:,\-]\#)([a-f0-6]+)\1([a-f0-6]+)\2([a-f0-6]+)\3#i', |
|
| 2586 | + // Replace `(border|outline):none` with `(border|outline):0` |
|
| 2587 | + '#(?<=[\{;])(border|outline):none(?=[;\}\!])#', |
|
| 2588 | + // Remove empty selector(s) |
|
| 2589 | + '#(\/\*(?>.*?\*\/))|(^|[\{\}])(?:[^\s\{\}]+)\{\}#s' |
|
| 2590 | + ), |
|
| 2591 | + array( |
|
| 2592 | + '$1', |
|
| 2593 | + '$1$2$3$4$5$6$7', |
|
| 2594 | + '$1', |
|
| 2595 | + ':0', |
|
| 2596 | + '$1:0 0', |
|
| 2597 | + '.$1', |
|
| 2598 | + '$1$3', |
|
| 2599 | + '$1$2$4$5', |
|
| 2600 | + '$1$2$3', |
|
| 2601 | + '$1:0', |
|
| 2602 | + '$1$2' |
|
| 2603 | + ), |
|
| 2604 | + $input); |
|
| 2605 | + } |
|
| 2606 | + |
|
| 2607 | + /** |
|
| 2608 | + * Get the conditional fields JavaScript. |
|
| 2609 | + * |
|
| 2610 | + * @return mixed |
|
| 2611 | + */ |
|
| 2612 | + public function conditional_fields_js() { |
|
| 2613 | + ob_start(); |
|
| 2614 | + ?> |
|
| 2615 | 2615 | <script> |
| 2616 | 2616 | /** |
| 2617 | 2617 | * Conditional Fields |
@@ -3146,237 +3146,237 @@ discard block |
||
| 3146 | 3146 | <?php do_action( 'aui_conditional_fields_js', $this ); ?> |
| 3147 | 3147 | </script> |
| 3148 | 3148 | <?php |
| 3149 | - $output = ob_get_clean(); |
|
| 3150 | - |
|
| 3151 | - return str_replace( array( '<script>', '</script>' ), '', self::minify_js( $output ) ); |
|
| 3152 | - } |
|
| 3153 | - |
|
| 3154 | - /** |
|
| 3155 | - * Check if block editor page. |
|
| 3156 | - * |
|
| 3157 | - * @since 0.2.27 |
|
| 3158 | - * |
|
| 3159 | - * @return bool |
|
| 3160 | - */ |
|
| 3161 | - public static function is_block_editor() { |
|
| 3162 | - if ( is_admin() ) { |
|
| 3163 | - $current_screen = function_exists('get_current_screen' ) ? get_current_screen() : array(); |
|
| 3164 | - |
|
| 3165 | - if ( ! empty( $current_screen ) && $current_screen->is_block_editor() ) { |
|
| 3166 | - return true; |
|
| 3167 | - } |
|
| 3168 | - } |
|
| 3169 | - |
|
| 3170 | - return false; |
|
| 3171 | - } |
|
| 3172 | - |
|
| 3173 | - /** |
|
| 3174 | - * Checks if the current call is a ajax call to get the block content. |
|
| 3175 | - * |
|
| 3176 | - * This can be used in your widget to return different content as the block content. |
|
| 3177 | - * |
|
| 3178 | - * @since 0.2.27 |
|
| 3179 | - * |
|
| 3180 | - * @return bool |
|
| 3181 | - */ |
|
| 3182 | - public static function is_block_content_call() { |
|
| 3183 | - $result = false; |
|
| 3184 | - if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) { |
|
| 3185 | - $result = true; |
|
| 3186 | - } |
|
| 3187 | - |
|
| 3188 | - return $result; |
|
| 3189 | - } |
|
| 3190 | - |
|
| 3191 | - /** |
|
| 3192 | - * Tests if the current output is inside a Divi preview. |
|
| 3193 | - * |
|
| 3194 | - * @since 0.2.27 |
|
| 3195 | - * |
|
| 3196 | - * @return bool |
|
| 3197 | - */ |
|
| 3198 | - public static function is_divi_preview() { |
|
| 3199 | - $result = false; |
|
| 3200 | - if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) { |
|
| 3201 | - $result = true; |
|
| 3202 | - } |
|
| 3203 | - |
|
| 3204 | - return $result; |
|
| 3205 | - } |
|
| 3206 | - |
|
| 3207 | - /** |
|
| 3208 | - * Tests if the current output is inside a elementor preview. |
|
| 3209 | - * |
|
| 3210 | - * |
|
| 3211 | - * @since 0.2.27 |
|
| 3212 | - * |
|
| 3213 | - * @return bool |
|
| 3214 | - */ |
|
| 3215 | - public static function is_elementor_preview() { |
|
| 3216 | - $result = false; |
|
| 3217 | - if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) { |
|
| 3218 | - $result = true; |
|
| 3219 | - } |
|
| 3220 | - |
|
| 3221 | - return $result; |
|
| 3222 | - } |
|
| 3223 | - |
|
| 3224 | - /** |
|
| 3225 | - * Tests if the current output is inside a Beaver builder preview. |
|
| 3226 | - * |
|
| 3227 | - * @since 0.2.27 |
|
| 3228 | - * |
|
| 3229 | - * @return bool |
|
| 3230 | - */ |
|
| 3231 | - public static function is_beaver_preview() { |
|
| 3232 | - $result = false; |
|
| 3233 | - if ( isset( $_REQUEST['fl_builder'] ) ) { |
|
| 3234 | - $result = true; |
|
| 3235 | - } |
|
| 3236 | - |
|
| 3237 | - return $result; |
|
| 3238 | - } |
|
| 3239 | - |
|
| 3240 | - /** |
|
| 3241 | - * Tests if the current output is inside a siteorigin builder preview. |
|
| 3242 | - * |
|
| 3243 | - * @since 0.2.27 |
|
| 3244 | - * |
|
| 3245 | - * @return bool |
|
| 3246 | - */ |
|
| 3247 | - public static function is_siteorigin_preview() { |
|
| 3248 | - $result = false; |
|
| 3249 | - if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) { |
|
| 3250 | - $result = true; |
|
| 3251 | - } |
|
| 3252 | - |
|
| 3253 | - return $result; |
|
| 3254 | - } |
|
| 3255 | - |
|
| 3256 | - /** |
|
| 3257 | - * Tests if the current output is inside a cornerstone builder preview. |
|
| 3258 | - * |
|
| 3259 | - * @since 0.2.27 |
|
| 3260 | - * |
|
| 3261 | - * @return bool |
|
| 3262 | - */ |
|
| 3263 | - public static function is_cornerstone_preview() { |
|
| 3264 | - $result = false; |
|
| 3265 | - if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) { |
|
| 3266 | - $result = true; |
|
| 3267 | - } |
|
| 3268 | - |
|
| 3269 | - return $result; |
|
| 3270 | - } |
|
| 3271 | - |
|
| 3272 | - /** |
|
| 3273 | - * Tests if the current output is inside a fusion builder preview. |
|
| 3274 | - * |
|
| 3275 | - * @return bool |
|
| 3276 | - *@since 1.1.0 |
|
| 3277 | - */ |
|
| 3278 | - public static function is_fusion_preview() { |
|
| 3279 | - $result = false; |
|
| 3280 | - if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) { |
|
| 3281 | - $result = true; |
|
| 3282 | - } |
|
| 3283 | - |
|
| 3284 | - return $result; |
|
| 3285 | - } |
|
| 3286 | - |
|
| 3287 | - /** |
|
| 3288 | - * Tests if the current output is inside a Oxygen builder preview. |
|
| 3289 | - * |
|
| 3290 | - * @return bool |
|
| 3291 | - *@since 1.0.18 |
|
| 3292 | - */ |
|
| 3293 | - public static function is_oxygen_preview() { |
|
| 3294 | - $result = false; |
|
| 3295 | - if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) { |
|
| 3296 | - $result = true; |
|
| 3297 | - } |
|
| 3298 | - |
|
| 3299 | - return $result; |
|
| 3300 | - } |
|
| 3301 | - |
|
| 3302 | - /** |
|
| 3303 | - * Check for Kallyas theme Zion builder preview. |
|
| 3304 | - * |
|
| 3305 | - * @since 0.2.27 |
|
| 3306 | - * |
|
| 3307 | - * @return bool |
|
| 3308 | - */ |
|
| 3309 | - public static function is_kallyas_zion_preview() { |
|
| 3310 | - $result = false; |
|
| 3311 | - |
|
| 3312 | - if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) { |
|
| 3313 | - $result = true; |
|
| 3314 | - } |
|
| 3315 | - |
|
| 3316 | - return $result; |
|
| 3317 | - } |
|
| 3318 | - |
|
| 3319 | - /** |
|
| 3320 | - * Check for Bricks theme builder preview. |
|
| 3321 | - * |
|
| 3322 | - * @since 0.2.27 |
|
| 3323 | - * |
|
| 3324 | - * @return bool |
|
| 3325 | - */ |
|
| 3326 | - public static function is_bricks_preview() { |
|
| 3327 | - $result = false; |
|
| 3328 | - |
|
| 3329 | - if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) { |
|
| 3330 | - $result = true; |
|
| 3331 | - } |
|
| 3332 | - |
|
| 3333 | - return $result; |
|
| 3334 | - } |
|
| 3335 | - |
|
| 3336 | - /** |
|
| 3337 | - * General function to check if we are in a preview situation. |
|
| 3338 | - * |
|
| 3339 | - * @since 0.2.27 |
|
| 3340 | - * |
|
| 3341 | - * @return bool |
|
| 3342 | - */ |
|
| 3343 | - public static function is_preview() { |
|
| 3344 | - $preview = false; |
|
| 3345 | - |
|
| 3346 | - if ( self::is_block_editor() ) { |
|
| 3347 | - return true; |
|
| 3348 | - } |
|
| 3349 | - |
|
| 3350 | - if( self::is_block_content_call() ) { |
|
| 3351 | - $preview = true; |
|
| 3352 | - } elseif ( self::is_divi_preview() ) { |
|
| 3353 | - $preview = true; |
|
| 3354 | - } elseif ( self::is_elementor_preview() ) { |
|
| 3355 | - $preview = true; |
|
| 3356 | - } elseif ( self::is_beaver_preview() ) { |
|
| 3357 | - $preview = true; |
|
| 3358 | - } elseif ( self::is_siteorigin_preview() ) { |
|
| 3359 | - $preview = true; |
|
| 3360 | - } elseif ( self::is_cornerstone_preview() ) { |
|
| 3361 | - $preview = true; |
|
| 3362 | - } elseif ( self::is_fusion_preview() ) { |
|
| 3363 | - $preview = true; |
|
| 3364 | - } elseif ( self::is_oxygen_preview() ) { |
|
| 3365 | - $preview = true; |
|
| 3366 | - } elseif( self::is_kallyas_zion_preview() ) { |
|
| 3367 | - $preview = true; |
|
| 3368 | - } elseif( self::is_bricks_preview() ) { |
|
| 3369 | - $preview = true; |
|
| 3370 | - } |
|
| 3371 | - |
|
| 3372 | - return $preview; |
|
| 3373 | - } |
|
| 3374 | - } |
|
| 3375 | - |
|
| 3376 | - global $ayecode_ui_settings; |
|
| 3377 | - |
|
| 3378 | - /** |
|
| 3379 | - * Run the class if found. |
|
| 3380 | - */ |
|
| 3381 | - $ayecode_ui_settings = AyeCode_UI_Settings::instance(); |
|
| 3149 | + $output = ob_get_clean(); |
|
| 3150 | + |
|
| 3151 | + return str_replace( array( '<script>', '</script>' ), '', self::minify_js( $output ) ); |
|
| 3152 | + } |
|
| 3153 | + |
|
| 3154 | + /** |
|
| 3155 | + * Check if block editor page. |
|
| 3156 | + * |
|
| 3157 | + * @since 0.2.27 |
|
| 3158 | + * |
|
| 3159 | + * @return bool |
|
| 3160 | + */ |
|
| 3161 | + public static function is_block_editor() { |
|
| 3162 | + if ( is_admin() ) { |
|
| 3163 | + $current_screen = function_exists('get_current_screen' ) ? get_current_screen() : array(); |
|
| 3164 | + |
|
| 3165 | + if ( ! empty( $current_screen ) && $current_screen->is_block_editor() ) { |
|
| 3166 | + return true; |
|
| 3167 | + } |
|
| 3168 | + } |
|
| 3169 | + |
|
| 3170 | + return false; |
|
| 3171 | + } |
|
| 3172 | + |
|
| 3173 | + /** |
|
| 3174 | + * Checks if the current call is a ajax call to get the block content. |
|
| 3175 | + * |
|
| 3176 | + * This can be used in your widget to return different content as the block content. |
|
| 3177 | + * |
|
| 3178 | + * @since 0.2.27 |
|
| 3179 | + * |
|
| 3180 | + * @return bool |
|
| 3181 | + */ |
|
| 3182 | + public static function is_block_content_call() { |
|
| 3183 | + $result = false; |
|
| 3184 | + if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) { |
|
| 3185 | + $result = true; |
|
| 3186 | + } |
|
| 3187 | + |
|
| 3188 | + return $result; |
|
| 3189 | + } |
|
| 3190 | + |
|
| 3191 | + /** |
|
| 3192 | + * Tests if the current output is inside a Divi preview. |
|
| 3193 | + * |
|
| 3194 | + * @since 0.2.27 |
|
| 3195 | + * |
|
| 3196 | + * @return bool |
|
| 3197 | + */ |
|
| 3198 | + public static function is_divi_preview() { |
|
| 3199 | + $result = false; |
|
| 3200 | + if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) { |
|
| 3201 | + $result = true; |
|
| 3202 | + } |
|
| 3203 | + |
|
| 3204 | + return $result; |
|
| 3205 | + } |
|
| 3206 | + |
|
| 3207 | + /** |
|
| 3208 | + * Tests if the current output is inside a elementor preview. |
|
| 3209 | + * |
|
| 3210 | + * |
|
| 3211 | + * @since 0.2.27 |
|
| 3212 | + * |
|
| 3213 | + * @return bool |
|
| 3214 | + */ |
|
| 3215 | + public static function is_elementor_preview() { |
|
| 3216 | + $result = false; |
|
| 3217 | + if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) { |
|
| 3218 | + $result = true; |
|
| 3219 | + } |
|
| 3220 | + |
|
| 3221 | + return $result; |
|
| 3222 | + } |
|
| 3223 | + |
|
| 3224 | + /** |
|
| 3225 | + * Tests if the current output is inside a Beaver builder preview. |
|
| 3226 | + * |
|
| 3227 | + * @since 0.2.27 |
|
| 3228 | + * |
|
| 3229 | + * @return bool |
|
| 3230 | + */ |
|
| 3231 | + public static function is_beaver_preview() { |
|
| 3232 | + $result = false; |
|
| 3233 | + if ( isset( $_REQUEST['fl_builder'] ) ) { |
|
| 3234 | + $result = true; |
|
| 3235 | + } |
|
| 3236 | + |
|
| 3237 | + return $result; |
|
| 3238 | + } |
|
| 3239 | + |
|
| 3240 | + /** |
|
| 3241 | + * Tests if the current output is inside a siteorigin builder preview. |
|
| 3242 | + * |
|
| 3243 | + * @since 0.2.27 |
|
| 3244 | + * |
|
| 3245 | + * @return bool |
|
| 3246 | + */ |
|
| 3247 | + public static function is_siteorigin_preview() { |
|
| 3248 | + $result = false; |
|
| 3249 | + if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) { |
|
| 3250 | + $result = true; |
|
| 3251 | + } |
|
| 3252 | + |
|
| 3253 | + return $result; |
|
| 3254 | + } |
|
| 3255 | + |
|
| 3256 | + /** |
|
| 3257 | + * Tests if the current output is inside a cornerstone builder preview. |
|
| 3258 | + * |
|
| 3259 | + * @since 0.2.27 |
|
| 3260 | + * |
|
| 3261 | + * @return bool |
|
| 3262 | + */ |
|
| 3263 | + public static function is_cornerstone_preview() { |
|
| 3264 | + $result = false; |
|
| 3265 | + if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) { |
|
| 3266 | + $result = true; |
|
| 3267 | + } |
|
| 3268 | + |
|
| 3269 | + return $result; |
|
| 3270 | + } |
|
| 3271 | + |
|
| 3272 | + /** |
|
| 3273 | + * Tests if the current output is inside a fusion builder preview. |
|
| 3274 | + * |
|
| 3275 | + * @return bool |
|
| 3276 | + *@since 1.1.0 |
|
| 3277 | + */ |
|
| 3278 | + public static function is_fusion_preview() { |
|
| 3279 | + $result = false; |
|
| 3280 | + if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) { |
|
| 3281 | + $result = true; |
|
| 3282 | + } |
|
| 3283 | + |
|
| 3284 | + return $result; |
|
| 3285 | + } |
|
| 3286 | + |
|
| 3287 | + /** |
|
| 3288 | + * Tests if the current output is inside a Oxygen builder preview. |
|
| 3289 | + * |
|
| 3290 | + * @return bool |
|
| 3291 | + *@since 1.0.18 |
|
| 3292 | + */ |
|
| 3293 | + public static function is_oxygen_preview() { |
|
| 3294 | + $result = false; |
|
| 3295 | + if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) { |
|
| 3296 | + $result = true; |
|
| 3297 | + } |
|
| 3298 | + |
|
| 3299 | + return $result; |
|
| 3300 | + } |
|
| 3301 | + |
|
| 3302 | + /** |
|
| 3303 | + * Check for Kallyas theme Zion builder preview. |
|
| 3304 | + * |
|
| 3305 | + * @since 0.2.27 |
|
| 3306 | + * |
|
| 3307 | + * @return bool |
|
| 3308 | + */ |
|
| 3309 | + public static function is_kallyas_zion_preview() { |
|
| 3310 | + $result = false; |
|
| 3311 | + |
|
| 3312 | + if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) { |
|
| 3313 | + $result = true; |
|
| 3314 | + } |
|
| 3315 | + |
|
| 3316 | + return $result; |
|
| 3317 | + } |
|
| 3318 | + |
|
| 3319 | + /** |
|
| 3320 | + * Check for Bricks theme builder preview. |
|
| 3321 | + * |
|
| 3322 | + * @since 0.2.27 |
|
| 3323 | + * |
|
| 3324 | + * @return bool |
|
| 3325 | + */ |
|
| 3326 | + public static function is_bricks_preview() { |
|
| 3327 | + $result = false; |
|
| 3328 | + |
|
| 3329 | + if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) { |
|
| 3330 | + $result = true; |
|
| 3331 | + } |
|
| 3332 | + |
|
| 3333 | + return $result; |
|
| 3334 | + } |
|
| 3335 | + |
|
| 3336 | + /** |
|
| 3337 | + * General function to check if we are in a preview situation. |
|
| 3338 | + * |
|
| 3339 | + * @since 0.2.27 |
|
| 3340 | + * |
|
| 3341 | + * @return bool |
|
| 3342 | + */ |
|
| 3343 | + public static function is_preview() { |
|
| 3344 | + $preview = false; |
|
| 3345 | + |
|
| 3346 | + if ( self::is_block_editor() ) { |
|
| 3347 | + return true; |
|
| 3348 | + } |
|
| 3349 | + |
|
| 3350 | + if( self::is_block_content_call() ) { |
|
| 3351 | + $preview = true; |
|
| 3352 | + } elseif ( self::is_divi_preview() ) { |
|
| 3353 | + $preview = true; |
|
| 3354 | + } elseif ( self::is_elementor_preview() ) { |
|
| 3355 | + $preview = true; |
|
| 3356 | + } elseif ( self::is_beaver_preview() ) { |
|
| 3357 | + $preview = true; |
|
| 3358 | + } elseif ( self::is_siteorigin_preview() ) { |
|
| 3359 | + $preview = true; |
|
| 3360 | + } elseif ( self::is_cornerstone_preview() ) { |
|
| 3361 | + $preview = true; |
|
| 3362 | + } elseif ( self::is_fusion_preview() ) { |
|
| 3363 | + $preview = true; |
|
| 3364 | + } elseif ( self::is_oxygen_preview() ) { |
|
| 3365 | + $preview = true; |
|
| 3366 | + } elseif( self::is_kallyas_zion_preview() ) { |
|
| 3367 | + $preview = true; |
|
| 3368 | + } elseif( self::is_bricks_preview() ) { |
|
| 3369 | + $preview = true; |
|
| 3370 | + } |
|
| 3371 | + |
|
| 3372 | + return $preview; |
|
| 3373 | + } |
|
| 3374 | + } |
|
| 3375 | + |
|
| 3376 | + global $ayecode_ui_settings; |
|
| 3377 | + |
|
| 3378 | + /** |
|
| 3379 | + * Run the class if found. |
|
| 3380 | + */ |
|
| 3381 | + $ayecode_ui_settings = AyeCode_UI_Settings::instance(); |
|
| 3382 | 3382 | } |
| 3383 | 3383 | \ No newline at end of file |
@@ -7,40 +7,40 @@ |
||
| 7 | 7 | * Bail if we are not in WP. |
| 8 | 8 | */ |
| 9 | 9 | if ( ! defined( 'ABSPATH' ) ) { |
| 10 | - exit; |
|
| 10 | + exit; |
|
| 11 | 11 | } |
| 12 | 12 | |
| 13 | 13 | /** |
| 14 | 14 | * Set the version only if its the current newest while loading. |
| 15 | 15 | */ |
| 16 | 16 | add_action('after_setup_theme', function () { |
| 17 | - global $ayecode_ui_version,$ayecode_ui_file_key; |
|
| 18 | - $this_version = "0.2.30"; |
|
| 19 | - if(empty($ayecode_ui_version) || version_compare($this_version , $ayecode_ui_version, '>')){ |
|
| 20 | - $ayecode_ui_version = $this_version ; |
|
| 21 | - $ayecode_ui_file_key = wp_hash( __FILE__ ); |
|
| 22 | - } |
|
| 17 | + global $ayecode_ui_version,$ayecode_ui_file_key; |
|
| 18 | + $this_version = "0.2.30"; |
|
| 19 | + if(empty($ayecode_ui_version) || version_compare($this_version , $ayecode_ui_version, '>')){ |
|
| 20 | + $ayecode_ui_version = $this_version ; |
|
| 21 | + $ayecode_ui_file_key = wp_hash( __FILE__ ); |
|
| 22 | + } |
|
| 23 | 23 | },0); |
| 24 | 24 | |
| 25 | 25 | /** |
| 26 | 26 | * Load this version of WP Bootstrap Settings only if the file hash is the current one. |
| 27 | 27 | */ |
| 28 | 28 | add_action('after_setup_theme', function () { |
| 29 | - global $ayecode_ui_file_key; |
|
| 30 | - if($ayecode_ui_file_key && $ayecode_ui_file_key == wp_hash( __FILE__ )){ |
|
| 31 | - include_once( dirname( __FILE__ ) . '/includes/class-aui.php' ); |
|
| 32 | - include_once( dirname( __FILE__ ) . '/includes/ayecode-ui-settings.php' ); |
|
| 33 | - } |
|
| 29 | + global $ayecode_ui_file_key; |
|
| 30 | + if($ayecode_ui_file_key && $ayecode_ui_file_key == wp_hash( __FILE__ )){ |
|
| 31 | + include_once( dirname( __FILE__ ) . '/includes/class-aui.php' ); |
|
| 32 | + include_once( dirname( __FILE__ ) . '/includes/ayecode-ui-settings.php' ); |
|
| 33 | + } |
|
| 34 | 34 | },1); |
| 35 | 35 | |
| 36 | 36 | /** |
| 37 | 37 | * Add the function that calls the class. |
| 38 | 38 | */ |
| 39 | 39 | if(!function_exists('aui')){ |
| 40 | - function aui(){ |
|
| 41 | - if(!class_exists("AUI",false)){ |
|
| 42 | - return false; |
|
| 43 | - } |
|
| 44 | - return AUI::instance(); |
|
| 45 | - } |
|
| 40 | + function aui(){ |
|
| 41 | + if(!class_exists("AUI",false)){ |
|
| 42 | + return false; |
|
| 43 | + } |
|
| 44 | + return AUI::instance(); |
|
| 45 | + } |
|
| 46 | 46 | } |
@@ -6,246 +6,246 @@ discard block |
||
| 6 | 6 | |
| 7 | 7 | class Super_Duper_Bricks_Element extends \Bricks\Element { |
| 8 | 8 | |
| 9 | - public $widget; |
|
| 10 | - |
|
| 11 | - public function __construct( $element = null ) { |
|
| 12 | - |
|
| 13 | - |
|
| 14 | - $block_icon = !empty($this->widget->options['block-icon']) ? $this->widget->options['block-icon'] : ''; |
|
| 15 | - |
|
| 16 | - |
|
| 17 | - $this->category = !empty($this->widget->options['textdomain']) ? esc_attr( $this->widget->options['textdomain'] ) : 'Super Duper'; |
|
| 18 | - $this->name = $this->widget->id_base; |
|
| 19 | - $this->icon = (strpos($block_icon, 'fa') === 0) ? esc_attr($this->widget->options['block-icon']) : 'fas fa-globe-americas'; |
|
| 20 | - |
|
| 21 | - parent::__construct($element); |
|
| 22 | - } |
|
| 23 | - |
|
| 24 | - /** |
|
| 25 | - * Set the element name. |
|
| 26 | - * |
|
| 27 | - * @return array|string|string[]|null |
|
| 28 | - */ |
|
| 29 | - public function get_label() { |
|
| 30 | - $escaped_text = esc_attr( $this->widget->name ); |
|
| 31 | - return str_replace( ' > ', ' > ', $escaped_text ); // keep our > but have it safe |
|
| 32 | - } |
|
| 33 | - |
|
| 34 | - /** |
|
| 35 | - * Bricks function to set the controls |
|
| 36 | - * |
|
| 37 | - * @return void |
|
| 38 | - */ |
|
| 39 | - public function set_controls() { |
|
| 40 | - $args = $this->sd_convert_arguments($this->widget); |
|
| 41 | - |
|
| 42 | - if (!empty($args)) { |
|
| 43 | - $this->controls = $this->controls + $args; |
|
| 44 | - } |
|
| 45 | - |
|
| 46 | - } |
|
| 47 | - |
|
| 48 | - /** |
|
| 49 | - * Set the bricks control groups from the GD ones. |
|
| 50 | - * |
|
| 51 | - * @return void |
|
| 52 | - */ |
|
| 53 | - public function set_control_groups() { |
|
| 54 | - $args = $this->sd_get_arguments(); |
|
| 55 | - |
|
| 56 | - $groups = array(); |
|
| 57 | - if(!empty($args)) { |
|
| 58 | - foreach ($args as $k => $v) { |
|
| 59 | - $g_slug = !empty($v['group']) ? sanitize_title( $v['group'] ) : ''; |
|
| 60 | - if($g_slug && empty($groups[$g_slug])) { |
|
| 61 | - $groups[$g_slug] = array( |
|
| 62 | - 'title' => esc_html( $v['group'] ), |
|
| 63 | - 'tab' => 'content', |
|
| 64 | - ); |
|
| 65 | - } |
|
| 66 | - } |
|
| 67 | - } |
|
| 68 | - |
|
| 69 | - if(!empty($groups)) { |
|
| 70 | - $this->control_groups = $this->control_groups + $groups; |
|
| 71 | - } |
|
| 72 | - |
|
| 73 | - } |
|
| 74 | - |
|
| 75 | - /** |
|
| 76 | - * Get the setting input arguments. |
|
| 77 | - * |
|
| 78 | - * @return mixed |
|
| 79 | - */ |
|
| 80 | - public function sd_get_arguments() { |
|
| 81 | - $args = $this->widget->set_arguments(); |
|
| 82 | - $arg_keys_subtract = $this->sd_remove_arguments(); |
|
| 83 | - |
|
| 84 | - if ( ! empty( $arg_keys_subtract ) ) { |
|
| 85 | - foreach($arg_keys_subtract as $key ){ |
|
| 86 | - unset($args[$key]); |
|
| 87 | - } |
|
| 88 | - } |
|
| 89 | - |
|
| 90 | - return $args; |
|
| 91 | - } |
|
| 92 | - |
|
| 93 | - |
|
| 94 | - /** |
|
| 95 | - * Simply use our own render function for the output. |
|
| 96 | - * |
|
| 97 | - * @return void |
|
| 98 | - */ |
|
| 99 | - public function render() { |
|
| 100 | - $settings = $this->sd_maybe_convert_values( $this->settings ); |
|
| 101 | - |
|
| 102 | - |
|
| 103 | - // set the AyeCode UI calss on the wrapper |
|
| 104 | - $this->set_attribute( '_root', 'class', 'bsui' ); |
|
| 105 | - |
|
| 106 | - // we might need to add a placeholder here for previews. |
|
| 107 | - |
|
| 108 | - // add the bricks attributes to wrapper |
|
| 109 | - echo "<div {$this->render_attributes( '_root' )}>"; |
|
| 110 | - echo $this->widget->output($settings); |
|
| 111 | - echo '</div>'; |
|
| 112 | - } |
|
| 113 | - |
|
| 114 | - /** |
|
| 115 | - * Values can never be arrays so convert if bricks setting make it an array. |
|
| 116 | - * |
|
| 117 | - * @param $settings |
|
| 118 | - * @return mixed |
|
| 119 | - */ |
|
| 120 | - public function sd_maybe_convert_values( $settings ) { |
|
| 121 | - |
|
| 122 | - |
|
| 123 | - if (!empty($settings)) { |
|
| 124 | - foreach( $settings as $k => $v ) { |
|
| 125 | - if(is_array($v)) { |
|
| 126 | - $value = ''; |
|
| 127 | - // is color |
|
| 128 | - if (isset($v['hex'])) { |
|
| 129 | - $value = $v['hex']; |
|
| 130 | - } elseif (isset($v['icon'])) { |
|
| 131 | - $value = $v['icon']; |
|
| 132 | - } |
|
| 133 | - |
|
| 134 | - |
|
| 135 | - // set the value |
|
| 136 | - $settings[$k] = $value; |
|
| 137 | - } |
|
| 138 | - |
|
| 139 | - } |
|
| 140 | - } |
|
| 141 | - |
|
| 142 | - return $settings; |
|
| 143 | - } |
|
| 144 | - |
|
| 145 | - /** |
|
| 146 | - * Convert SD arguments to Bricks arguments. |
|
| 147 | - * |
|
| 148 | - * @param $widget |
|
| 149 | - * |
|
| 150 | - * @return array |
|
| 151 | - */ |
|
| 152 | - public function sd_convert_arguments() |
|
| 153 | - { |
|
| 154 | - $bricks_args = array(); |
|
| 155 | - |
|
| 156 | - $args = $this->sd_get_arguments(); |
|
| 157 | - |
|
| 158 | - if (!empty($args)) { |
|
| 159 | - foreach ($args as $key => $arg) { |
|
| 160 | - |
|
| 161 | - // convert title |
|
| 162 | - if (!empty($arg['title'])) { |
|
| 163 | - $arg['label'] = $arg['title']; |
|
| 164 | - unset($arg['title']); |
|
| 165 | - } |
|
| 166 | - |
|
| 167 | - // set fields not to use dynamic data |
|
| 168 | - $arg['hasDynamicData'] = false; |
|
| 169 | - |
|
| 170 | - if (!empty($arg['group'])) { |
|
| 171 | - $arg['group'] = sanitize_title($arg['group']); |
|
| 172 | - } |
|
| 173 | - |
|
| 174 | - $arg['rerender'] = true; |
|
| 175 | - |
|
| 176 | - // required |
|
| 177 | - if(!empty($arg['element_require'])) { |
|
| 178 | - $arg['required'] = $this->sd_convert_required($arg['element_require']); |
|
| 179 | - unset($arg['element_require']); |
|
| 180 | - } |
|
| 181 | - |
|
| 182 | - // icons |
|
| 183 | - if ('icon' === $key) { |
|
| 184 | - $arg['type'] = 'icon'; |
|
| 185 | - } |
|
| 186 | - |
|
| 187 | - $bricks_args[$key] = $arg; |
|
| 188 | - |
|
| 189 | - } |
|
| 190 | - |
|
| 191 | - } |
|
| 192 | - |
|
| 193 | - return $bricks_args; |
|
| 194 | - |
|
| 195 | - } |
|
| 196 | - |
|
| 197 | - /** |
|
| 198 | - * Convert the SD element_required to the Bricks required syntax. |
|
| 199 | - * |
|
| 200 | - * @param $element_require |
|
| 201 | - * @return array |
|
| 202 | - */ |
|
| 203 | - public function sd_convert_required($element_require) { |
|
| 204 | - $bricks_required = []; |
|
| 205 | - |
|
| 206 | - // Handle logical OR (||) for multiple values |
|
| 207 | - if (strpos($element_require, '||') !== false) { |
|
| 208 | - preg_match('/\[%(.+?)%\] *== *"(.*?)"/', $element_require, $matches); |
|
| 209 | - if ($matches) { |
|
| 210 | - $control_id = $matches[1]; |
|
| 211 | - preg_match_all('/\[%.*?%\] *== *"(.*?)"/', $element_require, $value_matches); |
|
| 212 | - $values = $value_matches[1]; |
|
| 213 | - $bricks_required[] = [$control_id, '=', $values]; |
|
| 214 | - } |
|
| 215 | - return $bricks_required; |
|
| 216 | - } |
|
| 217 | - |
|
| 218 | - // Match individual conditions |
|
| 219 | - preg_match_all('/(!)?\[%(.*?)%\](?:\s*([!=<>]=?)\s*(".*?"|\'.*?\'|\d+))?/', $element_require, $matches, PREG_SET_ORDER); |
|
| 220 | - |
|
| 221 | - foreach ($matches as $match) { |
|
| 222 | - $is_negation = isset($match[1]) && $match[1] === '!'; |
|
| 223 | - $control_id = $match[2]; |
|
| 224 | - $operator = isset($match[3]) ? str_replace('==', '=', $match[3]) : ($is_negation ? '=' : '!='); |
|
| 225 | - $value = isset($match[4]) ? trim($match[4], '"\'') : ($is_negation ? '' : ''); |
|
| 226 | - |
|
| 227 | - // Adjust for negation without explicit operator |
|
| 228 | - if ($is_negation && !isset($match[3])) { |
|
| 229 | - $operator = '='; |
|
| 230 | - $value = ''; |
|
| 231 | - } |
|
| 232 | - |
|
| 233 | - $bricks_required[] = [$control_id, $operator, $value]; |
|
| 234 | - } |
|
| 235 | - |
|
| 236 | - return $bricks_required; |
|
| 237 | - } |
|
| 238 | - |
|
| 239 | - |
|
| 240 | - /** |
|
| 241 | - * A way to remove some settings by keys. |
|
| 242 | - * |
|
| 243 | - * @return array |
|
| 244 | - */ |
|
| 245 | - public function sd_remove_arguments() |
|
| 246 | - { |
|
| 247 | - return array(); |
|
| 248 | - } |
|
| 9 | + public $widget; |
|
| 10 | + |
|
| 11 | + public function __construct( $element = null ) { |
|
| 12 | + |
|
| 13 | + |
|
| 14 | + $block_icon = !empty($this->widget->options['block-icon']) ? $this->widget->options['block-icon'] : ''; |
|
| 15 | + |
|
| 16 | + |
|
| 17 | + $this->category = !empty($this->widget->options['textdomain']) ? esc_attr( $this->widget->options['textdomain'] ) : 'Super Duper'; |
|
| 18 | + $this->name = $this->widget->id_base; |
|
| 19 | + $this->icon = (strpos($block_icon, 'fa') === 0) ? esc_attr($this->widget->options['block-icon']) : 'fas fa-globe-americas'; |
|
| 20 | + |
|
| 21 | + parent::__construct($element); |
|
| 22 | + } |
|
| 23 | + |
|
| 24 | + /** |
|
| 25 | + * Set the element name. |
|
| 26 | + * |
|
| 27 | + * @return array|string|string[]|null |
|
| 28 | + */ |
|
| 29 | + public function get_label() { |
|
| 30 | + $escaped_text = esc_attr( $this->widget->name ); |
|
| 31 | + return str_replace( ' > ', ' > ', $escaped_text ); // keep our > but have it safe |
|
| 32 | + } |
|
| 33 | + |
|
| 34 | + /** |
|
| 35 | + * Bricks function to set the controls |
|
| 36 | + * |
|
| 37 | + * @return void |
|
| 38 | + */ |
|
| 39 | + public function set_controls() { |
|
| 40 | + $args = $this->sd_convert_arguments($this->widget); |
|
| 41 | + |
|
| 42 | + if (!empty($args)) { |
|
| 43 | + $this->controls = $this->controls + $args; |
|
| 44 | + } |
|
| 45 | + |
|
| 46 | + } |
|
| 47 | + |
|
| 48 | + /** |
|
| 49 | + * Set the bricks control groups from the GD ones. |
|
| 50 | + * |
|
| 51 | + * @return void |
|
| 52 | + */ |
|
| 53 | + public function set_control_groups() { |
|
| 54 | + $args = $this->sd_get_arguments(); |
|
| 55 | + |
|
| 56 | + $groups = array(); |
|
| 57 | + if(!empty($args)) { |
|
| 58 | + foreach ($args as $k => $v) { |
|
| 59 | + $g_slug = !empty($v['group']) ? sanitize_title( $v['group'] ) : ''; |
|
| 60 | + if($g_slug && empty($groups[$g_slug])) { |
|
| 61 | + $groups[$g_slug] = array( |
|
| 62 | + 'title' => esc_html( $v['group'] ), |
|
| 63 | + 'tab' => 'content', |
|
| 64 | + ); |
|
| 65 | + } |
|
| 66 | + } |
|
| 67 | + } |
|
| 68 | + |
|
| 69 | + if(!empty($groups)) { |
|
| 70 | + $this->control_groups = $this->control_groups + $groups; |
|
| 71 | + } |
|
| 72 | + |
|
| 73 | + } |
|
| 74 | + |
|
| 75 | + /** |
|
| 76 | + * Get the setting input arguments. |
|
| 77 | + * |
|
| 78 | + * @return mixed |
|
| 79 | + */ |
|
| 80 | + public function sd_get_arguments() { |
|
| 81 | + $args = $this->widget->set_arguments(); |
|
| 82 | + $arg_keys_subtract = $this->sd_remove_arguments(); |
|
| 83 | + |
|
| 84 | + if ( ! empty( $arg_keys_subtract ) ) { |
|
| 85 | + foreach($arg_keys_subtract as $key ){ |
|
| 86 | + unset($args[$key]); |
|
| 87 | + } |
|
| 88 | + } |
|
| 89 | + |
|
| 90 | + return $args; |
|
| 91 | + } |
|
| 92 | + |
|
| 93 | + |
|
| 94 | + /** |
|
| 95 | + * Simply use our own render function for the output. |
|
| 96 | + * |
|
| 97 | + * @return void |
|
| 98 | + */ |
|
| 99 | + public function render() { |
|
| 100 | + $settings = $this->sd_maybe_convert_values( $this->settings ); |
|
| 101 | + |
|
| 102 | + |
|
| 103 | + // set the AyeCode UI calss on the wrapper |
|
| 104 | + $this->set_attribute( '_root', 'class', 'bsui' ); |
|
| 105 | + |
|
| 106 | + // we might need to add a placeholder here for previews. |
|
| 107 | + |
|
| 108 | + // add the bricks attributes to wrapper |
|
| 109 | + echo "<div {$this->render_attributes( '_root' )}>"; |
|
| 110 | + echo $this->widget->output($settings); |
|
| 111 | + echo '</div>'; |
|
| 112 | + } |
|
| 113 | + |
|
| 114 | + /** |
|
| 115 | + * Values can never be arrays so convert if bricks setting make it an array. |
|
| 116 | + * |
|
| 117 | + * @param $settings |
|
| 118 | + * @return mixed |
|
| 119 | + */ |
|
| 120 | + public function sd_maybe_convert_values( $settings ) { |
|
| 121 | + |
|
| 122 | + |
|
| 123 | + if (!empty($settings)) { |
|
| 124 | + foreach( $settings as $k => $v ) { |
|
| 125 | + if(is_array($v)) { |
|
| 126 | + $value = ''; |
|
| 127 | + // is color |
|
| 128 | + if (isset($v['hex'])) { |
|
| 129 | + $value = $v['hex']; |
|
| 130 | + } elseif (isset($v['icon'])) { |
|
| 131 | + $value = $v['icon']; |
|
| 132 | + } |
|
| 133 | + |
|
| 134 | + |
|
| 135 | + // set the value |
|
| 136 | + $settings[$k] = $value; |
|
| 137 | + } |
|
| 138 | + |
|
| 139 | + } |
|
| 140 | + } |
|
| 141 | + |
|
| 142 | + return $settings; |
|
| 143 | + } |
|
| 144 | + |
|
| 145 | + /** |
|
| 146 | + * Convert SD arguments to Bricks arguments. |
|
| 147 | + * |
|
| 148 | + * @param $widget |
|
| 149 | + * |
|
| 150 | + * @return array |
|
| 151 | + */ |
|
| 152 | + public function sd_convert_arguments() |
|
| 153 | + { |
|
| 154 | + $bricks_args = array(); |
|
| 155 | + |
|
| 156 | + $args = $this->sd_get_arguments(); |
|
| 157 | + |
|
| 158 | + if (!empty($args)) { |
|
| 159 | + foreach ($args as $key => $arg) { |
|
| 160 | + |
|
| 161 | + // convert title |
|
| 162 | + if (!empty($arg['title'])) { |
|
| 163 | + $arg['label'] = $arg['title']; |
|
| 164 | + unset($arg['title']); |
|
| 165 | + } |
|
| 166 | + |
|
| 167 | + // set fields not to use dynamic data |
|
| 168 | + $arg['hasDynamicData'] = false; |
|
| 169 | + |
|
| 170 | + if (!empty($arg['group'])) { |
|
| 171 | + $arg['group'] = sanitize_title($arg['group']); |
|
| 172 | + } |
|
| 173 | + |
|
| 174 | + $arg['rerender'] = true; |
|
| 175 | + |
|
| 176 | + // required |
|
| 177 | + if(!empty($arg['element_require'])) { |
|
| 178 | + $arg['required'] = $this->sd_convert_required($arg['element_require']); |
|
| 179 | + unset($arg['element_require']); |
|
| 180 | + } |
|
| 181 | + |
|
| 182 | + // icons |
|
| 183 | + if ('icon' === $key) { |
|
| 184 | + $arg['type'] = 'icon'; |
|
| 185 | + } |
|
| 186 | + |
|
| 187 | + $bricks_args[$key] = $arg; |
|
| 188 | + |
|
| 189 | + } |
|
| 190 | + |
|
| 191 | + } |
|
| 192 | + |
|
| 193 | + return $bricks_args; |
|
| 194 | + |
|
| 195 | + } |
|
| 196 | + |
|
| 197 | + /** |
|
| 198 | + * Convert the SD element_required to the Bricks required syntax. |
|
| 199 | + * |
|
| 200 | + * @param $element_require |
|
| 201 | + * @return array |
|
| 202 | + */ |
|
| 203 | + public function sd_convert_required($element_require) { |
|
| 204 | + $bricks_required = []; |
|
| 205 | + |
|
| 206 | + // Handle logical OR (||) for multiple values |
|
| 207 | + if (strpos($element_require, '||') !== false) { |
|
| 208 | + preg_match('/\[%(.+?)%\] *== *"(.*?)"/', $element_require, $matches); |
|
| 209 | + if ($matches) { |
|
| 210 | + $control_id = $matches[1]; |
|
| 211 | + preg_match_all('/\[%.*?%\] *== *"(.*?)"/', $element_require, $value_matches); |
|
| 212 | + $values = $value_matches[1]; |
|
| 213 | + $bricks_required[] = [$control_id, '=', $values]; |
|
| 214 | + } |
|
| 215 | + return $bricks_required; |
|
| 216 | + } |
|
| 217 | + |
|
| 218 | + // Match individual conditions |
|
| 219 | + preg_match_all('/(!)?\[%(.*?)%\](?:\s*([!=<>]=?)\s*(".*?"|\'.*?\'|\d+))?/', $element_require, $matches, PREG_SET_ORDER); |
|
| 220 | + |
|
| 221 | + foreach ($matches as $match) { |
|
| 222 | + $is_negation = isset($match[1]) && $match[1] === '!'; |
|
| 223 | + $control_id = $match[2]; |
|
| 224 | + $operator = isset($match[3]) ? str_replace('==', '=', $match[3]) : ($is_negation ? '=' : '!='); |
|
| 225 | + $value = isset($match[4]) ? trim($match[4], '"\'') : ($is_negation ? '' : ''); |
|
| 226 | + |
|
| 227 | + // Adjust for negation without explicit operator |
|
| 228 | + if ($is_negation && !isset($match[3])) { |
|
| 229 | + $operator = '='; |
|
| 230 | + $value = ''; |
|
| 231 | + } |
|
| 232 | + |
|
| 233 | + $bricks_required[] = [$control_id, $operator, $value]; |
|
| 234 | + } |
|
| 235 | + |
|
| 236 | + return $bricks_required; |
|
| 237 | + } |
|
| 238 | + |
|
| 239 | + |
|
| 240 | + /** |
|
| 241 | + * A way to remove some settings by keys. |
|
| 242 | + * |
|
| 243 | + * @return array |
|
| 244 | + */ |
|
| 245 | + public function sd_remove_arguments() |
|
| 246 | + { |
|
| 247 | + return array(); |
|
| 248 | + } |
|
| 249 | 249 | |
| 250 | 250 | } |
| 251 | 251 | |
@@ -255,12 +255,12 @@ discard block |
||
| 255 | 255 | */ |
| 256 | 256 | add_action( 'wp_enqueue_scripts', function() { |
| 257 | 257 | |
| 258 | - // Check if we're in the Bricks Editor |
|
| 259 | - if ( isset( $_GET['bricks'] ) && $_GET['bricks'] && bricks_is_builder_main() ) { |
|
| 260 | - // Add inline script to the 'bricks-builder' script |
|
| 261 | - wp_add_inline_script( |
|
| 262 | - 'bricks-builder', |
|
| 263 | - " |
|
| 258 | + // Check if we're in the Bricks Editor |
|
| 259 | + if ( isset( $_GET['bricks'] ) && $_GET['bricks'] && bricks_is_builder_main() ) { |
|
| 260 | + // Add inline script to the 'bricks-builder' script |
|
| 261 | + wp_add_inline_script( |
|
| 262 | + 'bricks-builder', |
|
| 263 | + " |
|
| 264 | 264 | |
| 265 | 265 | (function () { |
| 266 | 266 | // Function to get the current breakpoint from the #bricks-preview class |
@@ -467,6 +467,6 @@ discard block |
||
| 467 | 467 | addIconsToLabels(); |
| 468 | 468 | })(); |
| 469 | 469 | " |
| 470 | - ); |
|
| 471 | - } |
|
| 470 | + ); |
|
| 471 | + } |
|
| 472 | 472 | }); |
@@ -1,147 +1,147 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | if ( ! defined( 'ABSPATH' ) ) { |
| 3 | - exit; |
|
| 3 | + exit; |
|
| 4 | 4 | } |
| 5 | 5 | |
| 6 | 6 | if ( ! class_exists( 'WP_Super_Duper' ) ) { |
| 7 | 7 | |
| 8 | - define( 'SUPER_DUPER_VER', '1.2.16' ); |
|
| 9 | - |
|
| 10 | - /** |
|
| 11 | - * A Class to be able to create a Widget, Shortcode or Block to be able to output content for WordPress. |
|
| 12 | - * |
|
| 13 | - * Should not be called direct but extended instead. |
|
| 14 | - * |
|
| 15 | - * Class WP_Super_Duper |
|
| 16 | - * @since 1.0.16 change log moved to file change-log.txt - CHANGED |
|
| 17 | - * @ver 1.1.1 |
|
| 18 | - */ |
|
| 19 | - class WP_Super_Duper extends WP_Widget { |
|
| 20 | - |
|
| 21 | - public $version = SUPER_DUPER_VER; |
|
| 22 | - public $font_awesome_icon_version = "5.11.2"; |
|
| 23 | - public $block_code; |
|
| 24 | - public $options; |
|
| 25 | - public $base_id; |
|
| 26 | - public $settings_hash; |
|
| 27 | - public $arguments = array(); |
|
| 28 | - public $instance = array(); |
|
| 29 | - private $class_name; |
|
| 30 | - |
|
| 31 | - /** |
|
| 32 | - * The relative url to the current folder. |
|
| 33 | - * |
|
| 34 | - * @var string |
|
| 35 | - */ |
|
| 36 | - public $url = ''; |
|
| 37 | - |
|
| 38 | - /** |
|
| 39 | - * Take the array options and use them to build. |
|
| 40 | - */ |
|
| 41 | - public function __construct( $options ) { |
|
| 42 | - global $sd_widgets; |
|
| 43 | - |
|
| 44 | - $sd_widgets[ $options['base_id'] ] = array( |
|
| 45 | - 'name' => $options['name'], |
|
| 46 | - 'class_name' => $options['class_name'], |
|
| 47 | - 'output_types' => !empty($options['output_types']) ? $options['output_types'] : array() |
|
| 48 | - ); |
|
| 49 | - $this->base_id = $options['base_id']; |
|
| 50 | - // lets filter the options before we do anything |
|
| 51 | - $options = apply_filters( "wp_super_duper_options", $options ); |
|
| 52 | - $options = apply_filters( "wp_super_duper_options_{$this->base_id}", $options ); |
|
| 53 | - $options = $this->add_name_from_key( $options ); |
|
| 54 | - $this->options = $options; |
|
| 55 | - |
|
| 56 | - $this->base_id = $options['base_id']; |
|
| 57 | - $this->arguments = isset( $options['arguments'] ) ? $options['arguments'] : array(); |
|
| 58 | - |
|
| 59 | - // nested blocks can't work as a widget |
|
| 60 | - if(!empty($this->options['nested-block'])){ |
|
| 61 | - if(empty($this->options['output_types'])){ |
|
| 62 | - $this->options['output_types'] = array('shortcode','block'); |
|
| 63 | - }elseif (($key = array_search('widget', $this->options['output_types'])) !== false) { |
|
| 64 | - unset($this->options['output_types'][$key]); |
|
| 65 | - } |
|
| 66 | - } |
|
| 8 | + define( 'SUPER_DUPER_VER', '1.2.16' ); |
|
| 9 | + |
|
| 10 | + /** |
|
| 11 | + * A Class to be able to create a Widget, Shortcode or Block to be able to output content for WordPress. |
|
| 12 | + * |
|
| 13 | + * Should not be called direct but extended instead. |
|
| 14 | + * |
|
| 15 | + * Class WP_Super_Duper |
|
| 16 | + * @since 1.0.16 change log moved to file change-log.txt - CHANGED |
|
| 17 | + * @ver 1.1.1 |
|
| 18 | + */ |
|
| 19 | + class WP_Super_Duper extends WP_Widget { |
|
| 20 | + |
|
| 21 | + public $version = SUPER_DUPER_VER; |
|
| 22 | + public $font_awesome_icon_version = "5.11.2"; |
|
| 23 | + public $block_code; |
|
| 24 | + public $options; |
|
| 25 | + public $base_id; |
|
| 26 | + public $settings_hash; |
|
| 27 | + public $arguments = array(); |
|
| 28 | + public $instance = array(); |
|
| 29 | + private $class_name; |
|
| 67 | 30 | |
| 68 | - // init parent |
|
| 69 | - if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){ |
|
| 70 | - parent::__construct( $options['base_id'], $options['name'], $options['widget_ops'] ); |
|
| 71 | - } |
|
| 31 | + /** |
|
| 32 | + * The relative url to the current folder. |
|
| 33 | + * |
|
| 34 | + * @var string |
|
| 35 | + */ |
|
| 36 | + public $url = ''; |
|
| 37 | + |
|
| 38 | + /** |
|
| 39 | + * Take the array options and use them to build. |
|
| 40 | + */ |
|
| 41 | + public function __construct( $options ) { |
|
| 42 | + global $sd_widgets; |
|
| 43 | + |
|
| 44 | + $sd_widgets[ $options['base_id'] ] = array( |
|
| 45 | + 'name' => $options['name'], |
|
| 46 | + 'class_name' => $options['class_name'], |
|
| 47 | + 'output_types' => !empty($options['output_types']) ? $options['output_types'] : array() |
|
| 48 | + ); |
|
| 49 | + $this->base_id = $options['base_id']; |
|
| 50 | + // lets filter the options before we do anything |
|
| 51 | + $options = apply_filters( "wp_super_duper_options", $options ); |
|
| 52 | + $options = apply_filters( "wp_super_duper_options_{$this->base_id}", $options ); |
|
| 53 | + $options = $this->add_name_from_key( $options ); |
|
| 54 | + $this->options = $options; |
|
| 55 | + |
|
| 56 | + $this->base_id = $options['base_id']; |
|
| 57 | + $this->arguments = isset( $options['arguments'] ) ? $options['arguments'] : array(); |
|
| 58 | + |
|
| 59 | + // nested blocks can't work as a widget |
|
| 60 | + if(!empty($this->options['nested-block'])){ |
|
| 61 | + if(empty($this->options['output_types'])){ |
|
| 62 | + $this->options['output_types'] = array('shortcode','block'); |
|
| 63 | + }elseif (($key = array_search('widget', $this->options['output_types'])) !== false) { |
|
| 64 | + unset($this->options['output_types'][$key]); |
|
| 65 | + } |
|
| 66 | + } |
|
| 72 | 67 | |
| 68 | + // init parent |
|
| 69 | + if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){ |
|
| 70 | + parent::__construct( $options['base_id'], $options['name'], $options['widget_ops'] ); |
|
| 71 | + } |
|
| 73 | 72 | |
| 74 | - if ( isset( $options['class_name'] ) ) { |
|
| 75 | - // register widget |
|
| 76 | - $this->class_name = $options['class_name']; |
|
| 77 | 73 | |
| 78 | - // register shortcode, this needs to be done even for blocks and widgets |
|
| 79 | - $this->register_shortcode(); |
|
| 74 | + if ( isset( $options['class_name'] ) ) { |
|
| 75 | + // register widget |
|
| 76 | + $this->class_name = $options['class_name']; |
|
| 80 | 77 | |
| 78 | + // register shortcode, this needs to be done even for blocks and widgets |
|
| 79 | + $this->register_shortcode(); |
|
| 81 | 80 | |
| 82 | - // Fusion Builder (avada) support |
|
| 83 | - if ( function_exists( 'fusion_builder_map' ) ) { |
|
| 84 | - add_action( 'init', array( $this, 'register_fusion_element' ) ); |
|
| 85 | - } |
|
| 81 | + |
|
| 82 | + // Fusion Builder (avada) support |
|
| 83 | + if ( function_exists( 'fusion_builder_map' ) ) { |
|
| 84 | + add_action( 'init', array( $this, 'register_fusion_element' ) ); |
|
| 85 | + } |
|
| 86 | 86 | |
| 87 | 87 | // maybe load the Bricks transformer class |
| 88 | 88 | if( class_exists('\Bricks\Elements', false) ){ |
| 89 | - add_action( 'init', array( $this, 'load_bricks_element_class' ) ); |
|
| 89 | + add_action( 'init', array( $this, 'load_bricks_element_class' ) ); |
|
| 90 | 90 | } |
| 91 | 91 | |
| 92 | - // register block |
|
| 93 | - if(empty($this->options['output_types']) || in_array('block',$this->options['output_types'])){ |
|
| 94 | - add_action( 'admin_enqueue_scripts', array( $this, 'register_block' ) ); |
|
| 95 | - } |
|
| 96 | - } |
|
| 92 | + // register block |
|
| 93 | + if(empty($this->options['output_types']) || in_array('block',$this->options['output_types'])){ |
|
| 94 | + add_action( 'admin_enqueue_scripts', array( $this, 'register_block' ) ); |
|
| 95 | + } |
|
| 96 | + } |
|
| 97 | 97 | |
| 98 | - // add the CSS and JS we need ONCE |
|
| 99 | - global $sd_widget_scripts; |
|
| 98 | + // add the CSS and JS we need ONCE |
|
| 99 | + global $sd_widget_scripts; |
|
| 100 | 100 | |
| 101 | - if ( ! $sd_widget_scripts ) { |
|
| 102 | - wp_add_inline_script( 'admin-widgets', $this->widget_js() ); |
|
| 103 | - wp_add_inline_script( 'customize-controls', $this->widget_js() ); |
|
| 104 | - wp_add_inline_style( 'widgets', $this->widget_css() ); |
|
| 101 | + if ( ! $sd_widget_scripts ) { |
|
| 102 | + wp_add_inline_script( 'admin-widgets', $this->widget_js() ); |
|
| 103 | + wp_add_inline_script( 'customize-controls', $this->widget_js() ); |
|
| 104 | + wp_add_inline_style( 'widgets', $this->widget_css() ); |
|
| 105 | 105 | |
| 106 | - // maybe add elementor editor styles |
|
| 107 | - add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'elementor_editor_styles' ) ); |
|
| 106 | + // maybe add elementor editor styles |
|
| 107 | + add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'elementor_editor_styles' ) ); |
|
| 108 | 108 | |
| 109 | - $sd_widget_scripts = true; |
|
| 109 | + $sd_widget_scripts = true; |
|
| 110 | 110 | |
| 111 | - // add shortcode insert button once |
|
| 112 | - add_action( 'media_buttons', array( $this, 'wp_media_buttons' ), 1 ); |
|
| 113 | - add_action( 'media_buttons', array( $this, 'shortcode_insert_button' ) ); |
|
| 114 | - // generatepress theme sections compatibility |
|
| 115 | - if ( function_exists( 'generate_sections_sections_metabox' ) ) { |
|
| 116 | - add_action( 'generate_sections_metabox', array( $this, 'shortcode_insert_button_script' ) ); |
|
| 117 | - } |
|
| 118 | - /* Load script on Divi theme builder page */ |
|
| 119 | - if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) { |
|
| 120 | - add_thickbox(); |
|
| 121 | - add_action( 'admin_footer', array( $this, 'shortcode_insert_button_script' ) ); |
|
| 122 | - } |
|
| 111 | + // add shortcode insert button once |
|
| 112 | + add_action( 'media_buttons', array( $this, 'wp_media_buttons' ), 1 ); |
|
| 113 | + add_action( 'media_buttons', array( $this, 'shortcode_insert_button' ) ); |
|
| 114 | + // generatepress theme sections compatibility |
|
| 115 | + if ( function_exists( 'generate_sections_sections_metabox' ) ) { |
|
| 116 | + add_action( 'generate_sections_metabox', array( $this, 'shortcode_insert_button_script' ) ); |
|
| 117 | + } |
|
| 118 | + /* Load script on Divi theme builder page */ |
|
| 119 | + if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) { |
|
| 120 | + add_thickbox(); |
|
| 121 | + add_action( 'admin_footer', array( $this, 'shortcode_insert_button_script' ) ); |
|
| 122 | + } |
|
| 123 | 123 | |
| 124 | - if ( $this->is_preview() ) { |
|
| 125 | - add_action( 'wp_footer', array( $this, 'shortcode_insert_button_script' ) ); |
|
| 126 | - // this makes the insert button work for elementor |
|
| 127 | - add_action( 'elementor/editor/after_enqueue_scripts', array( |
|
| 128 | - $this, |
|
| 129 | - 'shortcode_insert_button_script' |
|
| 130 | - ) ); // for elementor |
|
| 131 | - } |
|
| 132 | - // this makes the insert button work for cornerstone |
|
| 133 | - add_action( 'wp_print_footer_scripts', array( __CLASS__, 'maybe_cornerstone_builder' ) ); |
|
| 124 | + if ( $this->is_preview() ) { |
|
| 125 | + add_action( 'wp_footer', array( $this, 'shortcode_insert_button_script' ) ); |
|
| 126 | + // this makes the insert button work for elementor |
|
| 127 | + add_action( 'elementor/editor/after_enqueue_scripts', array( |
|
| 128 | + $this, |
|
| 129 | + 'shortcode_insert_button_script' |
|
| 130 | + ) ); // for elementor |
|
| 131 | + } |
|
| 132 | + // this makes the insert button work for cornerstone |
|
| 133 | + add_action( 'wp_print_footer_scripts', array( __CLASS__, 'maybe_cornerstone_builder' ) ); |
|
| 134 | 134 | |
| 135 | - add_action( 'wp_ajax_super_duper_get_widget_settings', array( __CLASS__, 'get_widget_settings' ) ); |
|
| 136 | - add_action( 'wp_ajax_super_duper_get_picker', array( __CLASS__, 'get_picker' ) ); |
|
| 135 | + add_action( 'wp_ajax_super_duper_get_widget_settings', array( __CLASS__, 'get_widget_settings' ) ); |
|
| 136 | + add_action( 'wp_ajax_super_duper_get_picker', array( __CLASS__, 'get_picker' ) ); |
|
| 137 | 137 | |
| 138 | - // add generator text to head |
|
| 139 | - add_action( 'admin_head', array( $this, 'generator' ), 99 ); |
|
| 140 | - add_action( 'wp_head', array( $this, 'generator' ), 99 ); |
|
| 141 | - } |
|
| 138 | + // add generator text to head |
|
| 139 | + add_action( 'admin_head', array( $this, 'generator' ), 99 ); |
|
| 140 | + add_action( 'wp_head', array( $this, 'generator' ), 99 ); |
|
| 141 | + } |
|
| 142 | 142 | |
| 143 | - do_action( 'wp_super_duper_widget_init', $options, $this ); |
|
| 144 | - } |
|
| 143 | + do_action( 'wp_super_duper_widget_init', $options, $this ); |
|
| 144 | + } |
|
| 145 | 145 | |
| 146 | 146 | /** |
| 147 | 147 | * Load the Bricks conversion class if we are running Bricks. |
@@ -151,163 +151,163 @@ discard block |
||
| 151 | 151 | include_once __DIR__ . '/includes/class-super-duper-bricks-element.php'; |
| 152 | 152 | } |
| 153 | 153 | |
| 154 | - /** |
|
| 155 | - * The register widget function |
|
| 156 | - * @return void |
|
| 157 | - */ |
|
| 158 | - public function _register() { |
|
| 159 | - if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){ |
|
| 160 | - parent::_register(); |
|
| 161 | - } |
|
| 162 | - } |
|
| 163 | - |
|
| 164 | - /** |
|
| 165 | - * Add our widget CSS to elementor editor. |
|
| 166 | - */ |
|
| 167 | - public function elementor_editor_styles() { |
|
| 168 | - wp_add_inline_style( 'elementor-editor', $this->widget_css( false ) ); |
|
| 169 | - } |
|
| 170 | - |
|
| 171 | - public function register_fusion_element() { |
|
| 172 | - |
|
| 173 | - $options = $this->options; |
|
| 174 | - |
|
| 175 | - if ( $this->base_id ) { |
|
| 176 | - |
|
| 177 | - $params = $this->get_fusion_params(); |
|
| 178 | - |
|
| 179 | - $args = array( |
|
| 180 | - 'name' => $options['name'], |
|
| 181 | - 'shortcode' => $this->base_id, |
|
| 182 | - 'icon' => $options['block-icon'] ? $options['block-icon'] : 'far fa-square', |
|
| 183 | - 'allow_generator' => true, |
|
| 184 | - ); |
|
| 185 | - |
|
| 186 | - if ( ! empty( $params ) ) { |
|
| 187 | - $args['params'] = $params; |
|
| 188 | - } |
|
| 189 | - |
|
| 190 | - fusion_builder_map( $args ); |
|
| 191 | - } |
|
| 154 | + /** |
|
| 155 | + * The register widget function |
|
| 156 | + * @return void |
|
| 157 | + */ |
|
| 158 | + public function _register() { |
|
| 159 | + if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){ |
|
| 160 | + parent::_register(); |
|
| 161 | + } |
|
| 162 | + } |
|
| 192 | 163 | |
| 193 | - } |
|
| 164 | + /** |
|
| 165 | + * Add our widget CSS to elementor editor. |
|
| 166 | + */ |
|
| 167 | + public function elementor_editor_styles() { |
|
| 168 | + wp_add_inline_style( 'elementor-editor', $this->widget_css( false ) ); |
|
| 169 | + } |
|
| 194 | 170 | |
| 195 | - public function get_fusion_params() { |
|
| 196 | - $params = array(); |
|
| 197 | - $arguments = $this->get_arguments(); |
|
| 198 | - |
|
| 199 | - if ( ! empty( $arguments ) ) { |
|
| 200 | - foreach ( $arguments as $key => $val ) { |
|
| 201 | - $param = array(); |
|
| 202 | - // type |
|
| 203 | - $param['type'] = str_replace( |
|
| 204 | - array( |
|
| 205 | - "text", |
|
| 206 | - "number", |
|
| 207 | - "email", |
|
| 208 | - "color", |
|
| 209 | - "checkbox" |
|
| 210 | - ), |
|
| 211 | - array( |
|
| 212 | - "textfield", |
|
| 213 | - "textfield", |
|
| 214 | - "textfield", |
|
| 215 | - "colorpicker", |
|
| 216 | - "select", |
|
| 171 | + public function register_fusion_element() { |
|
| 217 | 172 | |
| 218 | - ), |
|
| 219 | - $val['type'] ); |
|
| 173 | + $options = $this->options; |
|
| 220 | 174 | |
| 221 | - // multiselect |
|
| 222 | - if ( $val['type'] == 'multiselect' || ( ( $param['type'] == 'select' || $val['type'] == 'select' ) && ! empty( $val['multiple'] ) ) ) { |
|
| 223 | - $param['type'] = 'multiple_select'; |
|
| 224 | - $param['multiple'] = true; |
|
| 225 | - } |
|
| 175 | + if ( $this->base_id ) { |
|
| 226 | 176 | |
| 227 | - // heading |
|
| 228 | - $param['heading'] = isset( $val['title'] ) ? $val['title'] : ''; |
|
| 177 | + $params = $this->get_fusion_params(); |
|
| 229 | 178 | |
| 230 | - // description |
|
| 231 | - $param['description'] = isset( $val['desc'] ) ? $val['desc'] : ''; |
|
| 179 | + $args = array( |
|
| 180 | + 'name' => $options['name'], |
|
| 181 | + 'shortcode' => $this->base_id, |
|
| 182 | + 'icon' => $options['block-icon'] ? $options['block-icon'] : 'far fa-square', |
|
| 183 | + 'allow_generator' => true, |
|
| 184 | + ); |
|
| 232 | 185 | |
| 233 | - // param_name |
|
| 234 | - $param['param_name'] = $key; |
|
| 186 | + if ( ! empty( $params ) ) { |
|
| 187 | + $args['params'] = $params; |
|
| 188 | + } |
|
| 235 | 189 | |
| 236 | - // Default |
|
| 237 | - $param['default'] = isset( $val['default'] ) ? $val['default'] : ''; |
|
| 190 | + fusion_builder_map( $args ); |
|
| 191 | + } |
|
| 238 | 192 | |
| 239 | - // Group |
|
| 240 | - if ( isset( $val['group'] ) ) { |
|
| 241 | - $param['group'] = $val['group']; |
|
| 242 | - } |
|
| 193 | + } |
|
| 243 | 194 | |
| 244 | - // value |
|
| 245 | - if ( $val['type'] == 'checkbox' ) { |
|
| 246 | - if ( isset( $val['default'] ) && $val['default'] == '0' ) { |
|
| 247 | - unset( $param['default'] ); |
|
| 248 | - } |
|
| 249 | - $param['value'] = array( '0' => __( "No", 'ayecode-connect' ), '1' => __( "Yes", 'ayecode-connect' ) ); |
|
| 250 | - } elseif ( $param['type'] == 'select' || $param['type'] == 'multiple_select' ) { |
|
| 251 | - $param['value'] = isset( $val['options'] ) ? $val['options'] : array(); |
|
| 252 | - } else { |
|
| 253 | - $param['value'] = isset( $val['default'] ) ? $val['default'] : ''; |
|
| 254 | - } |
|
| 195 | + public function get_fusion_params() { |
|
| 196 | + $params = array(); |
|
| 197 | + $arguments = $this->get_arguments(); |
|
| 198 | + |
|
| 199 | + if ( ! empty( $arguments ) ) { |
|
| 200 | + foreach ( $arguments as $key => $val ) { |
|
| 201 | + $param = array(); |
|
| 202 | + // type |
|
| 203 | + $param['type'] = str_replace( |
|
| 204 | + array( |
|
| 205 | + "text", |
|
| 206 | + "number", |
|
| 207 | + "email", |
|
| 208 | + "color", |
|
| 209 | + "checkbox" |
|
| 210 | + ), |
|
| 211 | + array( |
|
| 212 | + "textfield", |
|
| 213 | + "textfield", |
|
| 214 | + "textfield", |
|
| 215 | + "colorpicker", |
|
| 216 | + "select", |
|
| 217 | + |
|
| 218 | + ), |
|
| 219 | + $val['type'] ); |
|
| 220 | + |
|
| 221 | + // multiselect |
|
| 222 | + if ( $val['type'] == 'multiselect' || ( ( $param['type'] == 'select' || $val['type'] == 'select' ) && ! empty( $val['multiple'] ) ) ) { |
|
| 223 | + $param['type'] = 'multiple_select'; |
|
| 224 | + $param['multiple'] = true; |
|
| 225 | + } |
|
| 226 | + |
|
| 227 | + // heading |
|
| 228 | + $param['heading'] = isset( $val['title'] ) ? $val['title'] : ''; |
|
| 229 | + |
|
| 230 | + // description |
|
| 231 | + $param['description'] = isset( $val['desc'] ) ? $val['desc'] : ''; |
|
| 232 | + |
|
| 233 | + // param_name |
|
| 234 | + $param['param_name'] = $key; |
|
| 235 | + |
|
| 236 | + // Default |
|
| 237 | + $param['default'] = isset( $val['default'] ) ? $val['default'] : ''; |
|
| 238 | + |
|
| 239 | + // Group |
|
| 240 | + if ( isset( $val['group'] ) ) { |
|
| 241 | + $param['group'] = $val['group']; |
|
| 242 | + } |
|
| 243 | + |
|
| 244 | + // value |
|
| 245 | + if ( $val['type'] == 'checkbox' ) { |
|
| 246 | + if ( isset( $val['default'] ) && $val['default'] == '0' ) { |
|
| 247 | + unset( $param['default'] ); |
|
| 248 | + } |
|
| 249 | + $param['value'] = array( '0' => __( "No", 'ayecode-connect' ), '1' => __( "Yes", 'ayecode-connect' ) ); |
|
| 250 | + } elseif ( $param['type'] == 'select' || $param['type'] == 'multiple_select' ) { |
|
| 251 | + $param['value'] = isset( $val['options'] ) ? $val['options'] : array(); |
|
| 252 | + } else { |
|
| 253 | + $param['value'] = isset( $val['default'] ) ? $val['default'] : ''; |
|
| 254 | + } |
|
| 255 | + |
|
| 256 | + // setup the param |
|
| 257 | + $params[] = $param; |
|
| 255 | 258 | |
| 256 | - // setup the param |
|
| 257 | - $params[] = $param; |
|
| 259 | + } |
|
| 260 | + } |
|
| 258 | 261 | |
| 259 | - } |
|
| 260 | - } |
|
| 261 | 262 | |
| 263 | + return $params; |
|
| 264 | + } |
|
| 262 | 265 | |
| 263 | - return $params; |
|
| 264 | - } |
|
| 266 | + /** |
|
| 267 | + * Maybe insert the shortcode inserter button in the footer if we are in the cornerstone builder |
|
| 268 | + */ |
|
| 269 | + public static function maybe_cornerstone_builder() { |
|
| 270 | + if ( did_action( 'cornerstone_before_boot_app' ) ) { |
|
| 271 | + self::shortcode_insert_button_script(); |
|
| 272 | + } |
|
| 273 | + } |
|
| 265 | 274 | |
| 266 | - /** |
|
| 267 | - * Maybe insert the shortcode inserter button in the footer if we are in the cornerstone builder |
|
| 268 | - */ |
|
| 269 | - public static function maybe_cornerstone_builder() { |
|
| 270 | - if ( did_action( 'cornerstone_before_boot_app' ) ) { |
|
| 271 | - self::shortcode_insert_button_script(); |
|
| 272 | - } |
|
| 273 | - } |
|
| 275 | + /** |
|
| 276 | + * A function to ge the shortcode builder picker html. |
|
| 277 | + * |
|
| 278 | + * @param string $editor_id |
|
| 279 | + * |
|
| 280 | + * @return string |
|
| 281 | + */ |
|
| 282 | + public static function get_picker( $editor_id = '' ) { |
|
| 274 | 283 | |
| 275 | - /** |
|
| 276 | - * A function to ge the shortcode builder picker html. |
|
| 277 | - * |
|
| 278 | - * @param string $editor_id |
|
| 279 | - * |
|
| 280 | - * @return string |
|
| 281 | - */ |
|
| 282 | - public static function get_picker( $editor_id = '' ) { |
|
| 283 | - |
|
| 284 | - ob_start(); |
|
| 285 | - if ( isset( $_POST['editor_id'] ) ) { |
|
| 286 | - $editor_id = esc_attr( $_POST['editor_id'] ); |
|
| 287 | - } elseif ( isset( $_REQUEST['et_fb'] ) ) { |
|
| 288 | - $editor_id = 'main_content_content_vb_tiny_mce'; |
|
| 289 | - } |
|
| 284 | + ob_start(); |
|
| 285 | + if ( isset( $_POST['editor_id'] ) ) { |
|
| 286 | + $editor_id = esc_attr( $_POST['editor_id'] ); |
|
| 287 | + } elseif ( isset( $_REQUEST['et_fb'] ) ) { |
|
| 288 | + $editor_id = 'main_content_content_vb_tiny_mce'; |
|
| 289 | + } |
|
| 290 | 290 | |
| 291 | - global $sd_widgets; |
|
| 291 | + global $sd_widgets; |
|
| 292 | 292 | |
| 293 | 293 | // print_r($sd_widgets);exit; |
| 294 | - ?> |
|
| 294 | + ?> |
|
| 295 | 295 | |
| 296 | 296 | <div class="sd-shortcode-left-wrap"> |
| 297 | 297 | <?php |
| 298 | - ksort( $sd_widgets ); |
|
| 299 | - // print_r($sd_widgets);exit; |
|
| 300 | - if ( ! empty( $sd_widgets ) ) { |
|
| 301 | - echo '<select class="widefat" onchange="sd_get_shortcode_options(this);">'; |
|
| 302 | - echo "<option>" . __( 'Select shortcode', 'ayecode-connect' ) . "</option>"; |
|
| 303 | - foreach ( $sd_widgets as $shortcode => $class ) { |
|
| 304 | - if(!empty($class['output_types']) && !in_array('shortcode', $class['output_types'])){ continue; } |
|
| 305 | - echo "<option value='" . esc_attr( $shortcode ) . "'>" . esc_attr( $shortcode ) . " (" . esc_attr( $class['name'] ) . ")</option>"; |
|
| 306 | - } |
|
| 307 | - echo "</select>"; |
|
| 298 | + ksort( $sd_widgets ); |
|
| 299 | + // print_r($sd_widgets);exit; |
|
| 300 | + if ( ! empty( $sd_widgets ) ) { |
|
| 301 | + echo '<select class="widefat" onchange="sd_get_shortcode_options(this);">'; |
|
| 302 | + echo "<option>" . __( 'Select shortcode', 'ayecode-connect' ) . "</option>"; |
|
| 303 | + foreach ( $sd_widgets as $shortcode => $class ) { |
|
| 304 | + if(!empty($class['output_types']) && !in_array('shortcode', $class['output_types'])){ continue; } |
|
| 305 | + echo "<option value='" . esc_attr( $shortcode ) . "'>" . esc_attr( $shortcode ) . " (" . esc_attr( $class['name'] ) . ")</option>"; |
|
| 306 | + } |
|
| 307 | + echo "</select>"; |
|
| 308 | 308 | |
| 309 | - } |
|
| 310 | - ?> |
|
| 309 | + } |
|
| 310 | + ?> |
|
| 311 | 311 | <div class="sd-shortcode-settings"></div> |
| 312 | 312 | |
| 313 | 313 | </div> |
@@ -318,8 +318,8 @@ discard block |
||
| 318 | 318 | <?php if ( $editor_id != '' ) { ?> |
| 319 | 319 | <button class="button sd-insert-shortcode-button" |
| 320 | 320 | onclick="sd_insert_shortcode(<?php if ( ! empty( $editor_id ) ) { |
| 321 | - echo "'" . $editor_id . "'"; |
|
| 322 | - } ?>)"><?php _e( 'Insert shortcode', 'ayecode-connect' ); ?></button> |
|
| 321 | + echo "'" . $editor_id . "'"; |
|
| 322 | + } ?>)"><?php _e( 'Insert shortcode', 'ayecode-connect' ); ?></button> |
|
| 323 | 323 | <?php } ?> |
| 324 | 324 | <button class="button" |
| 325 | 325 | onclick="sd_copy_to_clipboard()"><?php _e( 'Copy shortcode' ); ?></button> |
@@ -327,150 +327,150 @@ discard block |
||
| 327 | 327 | </div> |
| 328 | 328 | <?php |
| 329 | 329 | |
| 330 | - $html = ob_get_clean(); |
|
| 331 | - |
|
| 332 | - if ( wp_doing_ajax() ) { |
|
| 333 | - echo $html; |
|
| 334 | - $should_die = true; |
|
| 330 | + $html = ob_get_clean(); |
|
| 335 | 331 | |
| 336 | - // some builder get the editor via ajax so we should not die on those occasions |
|
| 337 | - $dont_die = array( |
|
| 338 | - 'parent_tag',// WP Bakery |
|
| 339 | - 'avia_request' // enfold |
|
| 340 | - ); |
|
| 341 | - |
|
| 342 | - foreach ( $dont_die as $request ) { |
|
| 343 | - if ( isset( $_REQUEST[ $request ] ) ) { |
|
| 344 | - $should_die = false; |
|
| 345 | - } |
|
| 346 | - } |
|
| 332 | + if ( wp_doing_ajax() ) { |
|
| 333 | + echo $html; |
|
| 334 | + $should_die = true; |
|
| 347 | 335 | |
| 348 | - if ( $should_die ) { |
|
| 349 | - wp_die(); |
|
| 350 | - } |
|
| 336 | + // some builder get the editor via ajax so we should not die on those occasions |
|
| 337 | + $dont_die = array( |
|
| 338 | + 'parent_tag',// WP Bakery |
|
| 339 | + 'avia_request' // enfold |
|
| 340 | + ); |
|
| 351 | 341 | |
| 352 | - } else { |
|
| 353 | - return $html; |
|
| 354 | - } |
|
| 342 | + foreach ( $dont_die as $request ) { |
|
| 343 | + if ( isset( $_REQUEST[ $request ] ) ) { |
|
| 344 | + $should_die = false; |
|
| 345 | + } |
|
| 346 | + } |
|
| 355 | 347 | |
| 356 | - return ''; |
|
| 348 | + if ( $should_die ) { |
|
| 349 | + wp_die(); |
|
| 350 | + } |
|
| 357 | 351 | |
| 358 | - } |
|
| 352 | + } else { |
|
| 353 | + return $html; |
|
| 354 | + } |
|
| 359 | 355 | |
| 360 | - /** |
|
| 361 | - * Output the version in the header. |
|
| 362 | - */ |
|
| 363 | - public function generator() { |
|
| 364 | - $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) ); |
|
| 365 | - $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) ); |
|
| 366 | - |
|
| 367 | - // Find source plugin/theme of SD |
|
| 368 | - $source = array(); |
|
| 369 | - if ( strpos( $file, $plugins_dir ) !== false ) { |
|
| 370 | - $source = explode( "/", plugin_basename( $file ) ); |
|
| 371 | - } else if ( function_exists( 'get_theme_root' ) ) { |
|
| 372 | - $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) ); |
|
| 373 | - |
|
| 374 | - if ( strpos( $file, $themes_dir ) !== false ) { |
|
| 375 | - $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) ); |
|
| 376 | - } |
|
| 377 | - } |
|
| 356 | + return ''; |
|
| 378 | 357 | |
| 379 | - echo '<meta name="generator" content="WP Super Duper v' . esc_attr( $this->version ) . '"' . ( ! empty( $source[0] ) ? ' data-sd-source="' . esc_attr( $source[0] ) . '"' : '' ) . ' />'; |
|
| 380 | - } |
|
| 358 | + } |
|
| 381 | 359 | |
| 382 | - /** |
|
| 383 | - * Get widget settings. |
|
| 384 | - * |
|
| 385 | - * @since 1.0.0 |
|
| 386 | - */ |
|
| 387 | - public static function get_widget_settings() { |
|
| 388 | - global $sd_widgets; |
|
| 389 | - |
|
| 390 | - $shortcode = isset( $_REQUEST['shortcode'] ) && $_REQUEST['shortcode'] ? sanitize_title_with_dashes( $_REQUEST['shortcode'] ) : ''; |
|
| 391 | - if ( ! $shortcode ) { |
|
| 392 | - wp_die(); |
|
| 393 | - } |
|
| 394 | - $widget_args = isset( $sd_widgets[ $shortcode ] ) ? $sd_widgets[ $shortcode ] : ''; |
|
| 395 | - if ( ! $widget_args ) { |
|
| 396 | - wp_die(); |
|
| 397 | - } |
|
| 398 | - $class_name = isset( $widget_args['class_name'] ) && $widget_args['class_name'] ? $widget_args['class_name'] : ''; |
|
| 399 | - if ( ! $class_name ) { |
|
| 400 | - wp_die(); |
|
| 401 | - } |
|
| 360 | + /** |
|
| 361 | + * Output the version in the header. |
|
| 362 | + */ |
|
| 363 | + public function generator() { |
|
| 364 | + $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) ); |
|
| 365 | + $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) ); |
|
| 366 | + |
|
| 367 | + // Find source plugin/theme of SD |
|
| 368 | + $source = array(); |
|
| 369 | + if ( strpos( $file, $plugins_dir ) !== false ) { |
|
| 370 | + $source = explode( "/", plugin_basename( $file ) ); |
|
| 371 | + } else if ( function_exists( 'get_theme_root' ) ) { |
|
| 372 | + $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) ); |
|
| 373 | + |
|
| 374 | + if ( strpos( $file, $themes_dir ) !== false ) { |
|
| 375 | + $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) ); |
|
| 376 | + } |
|
| 377 | + } |
|
| 402 | 378 | |
| 403 | - // invoke an instance method |
|
| 404 | - $widget = new $class_name; |
|
| 379 | + echo '<meta name="generator" content="WP Super Duper v' . esc_attr( $this->version ) . '"' . ( ! empty( $source[0] ) ? ' data-sd-source="' . esc_attr( $source[0] ) . '"' : '' ) . ' />'; |
|
| 380 | + } |
|
| 405 | 381 | |
| 406 | - ob_start(); |
|
| 407 | - $widget->form( array() ); |
|
| 408 | - $form = ob_get_clean(); |
|
| 409 | - echo "<form id='$shortcode'>" . $form . "<div class=\"widget-control-save\"></div></form>"; |
|
| 410 | - echo "<style>" . $widget->widget_css() . "</style>"; |
|
| 411 | - echo "<script>" . $widget->widget_js() . "</script>"; |
|
| 412 | - ?> |
|
| 382 | + /** |
|
| 383 | + * Get widget settings. |
|
| 384 | + * |
|
| 385 | + * @since 1.0.0 |
|
| 386 | + */ |
|
| 387 | + public static function get_widget_settings() { |
|
| 388 | + global $sd_widgets; |
|
| 389 | + |
|
| 390 | + $shortcode = isset( $_REQUEST['shortcode'] ) && $_REQUEST['shortcode'] ? sanitize_title_with_dashes( $_REQUEST['shortcode'] ) : ''; |
|
| 391 | + if ( ! $shortcode ) { |
|
| 392 | + wp_die(); |
|
| 393 | + } |
|
| 394 | + $widget_args = isset( $sd_widgets[ $shortcode ] ) ? $sd_widgets[ $shortcode ] : ''; |
|
| 395 | + if ( ! $widget_args ) { |
|
| 396 | + wp_die(); |
|
| 397 | + } |
|
| 398 | + $class_name = isset( $widget_args['class_name'] ) && $widget_args['class_name'] ? $widget_args['class_name'] : ''; |
|
| 399 | + if ( ! $class_name ) { |
|
| 400 | + wp_die(); |
|
| 401 | + } |
|
| 402 | + |
|
| 403 | + // invoke an instance method |
|
| 404 | + $widget = new $class_name; |
|
| 405 | + |
|
| 406 | + ob_start(); |
|
| 407 | + $widget->form( array() ); |
|
| 408 | + $form = ob_get_clean(); |
|
| 409 | + echo "<form id='$shortcode'>" . $form . "<div class=\"widget-control-save\"></div></form>"; |
|
| 410 | + echo "<style>" . $widget->widget_css() . "</style>"; |
|
| 411 | + echo "<script>" . $widget->widget_js() . "</script>"; |
|
| 412 | + ?> |
|
| 413 | 413 | <?php |
| 414 | - wp_die(); |
|
| 415 | - } |
|
| 416 | - |
|
| 417 | - /** |
|
| 418 | - * Insert shortcode builder button to classic editor (not inside Gutenberg, not needed). |
|
| 419 | - * |
|
| 420 | - * @param string $editor_id Optional. Shortcode editor id. Default null. |
|
| 421 | - * @param string $insert_shortcode_function Optional. Insert shortcode function. Default null. |
|
| 422 | - * |
|
| 423 | - *@since 1.0.0 |
|
| 424 | - * |
|
| 425 | - */ |
|
| 426 | - public static function shortcode_insert_button( $editor_id = '', $insert_shortcode_function = '' ) { |
|
| 427 | - global $sd_widgets, $shortcode_insert_button_once; |
|
| 428 | - if ( $shortcode_insert_button_once ) { |
|
| 429 | - return; |
|
| 430 | - } |
|
| 431 | - add_thickbox(); |
|
| 432 | - |
|
| 433 | - |
|
| 434 | - /** |
|
| 435 | - * Cornerstone makes us play dirty tricks :/ |
|
| 436 | - * All media_buttons are removed via JS unless they are two specific id's so we wrap our content in this ID so it is not removed. |
|
| 437 | - */ |
|
| 438 | - if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) { |
|
| 439 | - echo '<span id="insert-media-button">'; |
|
| 440 | - } |
|
| 441 | - |
|
| 442 | - echo self::shortcode_button( 'this', 'true' ); |
|
| 443 | - |
|
| 444 | - // see opening note |
|
| 445 | - if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) { |
|
| 446 | - echo '</span>'; // end #insert-media-button |
|
| 447 | - } |
|
| 448 | - |
|
| 449 | - // Add separate script for generatepress theme sections |
|
| 450 | - if ( function_exists( 'generate_sections_sections_metabox' ) && did_action( 'generate_sections_metabox' ) ) { |
|
| 451 | - } else { |
|
| 452 | - self::shortcode_insert_button_script( $editor_id, $insert_shortcode_function ); |
|
| 453 | - } |
|
| 414 | + wp_die(); |
|
| 415 | + } |
|
| 454 | 416 | |
| 455 | - $shortcode_insert_button_once = true; |
|
| 456 | - } |
|
| 417 | + /** |
|
| 418 | + * Insert shortcode builder button to classic editor (not inside Gutenberg, not needed). |
|
| 419 | + * |
|
| 420 | + * @param string $editor_id Optional. Shortcode editor id. Default null. |
|
| 421 | + * @param string $insert_shortcode_function Optional. Insert shortcode function. Default null. |
|
| 422 | + * |
|
| 423 | + *@since 1.0.0 |
|
| 424 | + * |
|
| 425 | + */ |
|
| 426 | + public static function shortcode_insert_button( $editor_id = '', $insert_shortcode_function = '' ) { |
|
| 427 | + global $sd_widgets, $shortcode_insert_button_once; |
|
| 428 | + if ( $shortcode_insert_button_once ) { |
|
| 429 | + return; |
|
| 430 | + } |
|
| 431 | + add_thickbox(); |
|
| 432 | + |
|
| 433 | + |
|
| 434 | + /** |
|
| 435 | + * Cornerstone makes us play dirty tricks :/ |
|
| 436 | + * All media_buttons are removed via JS unless they are two specific id's so we wrap our content in this ID so it is not removed. |
|
| 437 | + */ |
|
| 438 | + if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) { |
|
| 439 | + echo '<span id="insert-media-button">'; |
|
| 440 | + } |
|
| 441 | + |
|
| 442 | + echo self::shortcode_button( 'this', 'true' ); |
|
| 443 | + |
|
| 444 | + // see opening note |
|
| 445 | + if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) { |
|
| 446 | + echo '</span>'; // end #insert-media-button |
|
| 447 | + } |
|
| 448 | + |
|
| 449 | + // Add separate script for generatepress theme sections |
|
| 450 | + if ( function_exists( 'generate_sections_sections_metabox' ) && did_action( 'generate_sections_metabox' ) ) { |
|
| 451 | + } else { |
|
| 452 | + self::shortcode_insert_button_script( $editor_id, $insert_shortcode_function ); |
|
| 453 | + } |
|
| 454 | + |
|
| 455 | + $shortcode_insert_button_once = true; |
|
| 456 | + } |
|
| 457 | 457 | |
| 458 | - /** |
|
| 459 | - * Gets the shortcode insert button html. |
|
| 460 | - * |
|
| 461 | - * @param string $id |
|
| 462 | - * @param string $search_for_id |
|
| 463 | - * |
|
| 464 | - * @return mixed |
|
| 465 | - */ |
|
| 466 | - public static function shortcode_button( $id = '', $search_for_id = '' ) { |
|
| 467 | - ob_start(); |
|
| 468 | - ?> |
|
| 458 | + /** |
|
| 459 | + * Gets the shortcode insert button html. |
|
| 460 | + * |
|
| 461 | + * @param string $id |
|
| 462 | + * @param string $search_for_id |
|
| 463 | + * |
|
| 464 | + * @return mixed |
|
| 465 | + */ |
|
| 466 | + public static function shortcode_button( $id = '', $search_for_id = '' ) { |
|
| 467 | + ob_start(); |
|
| 468 | + ?> |
|
| 469 | 469 | <span class="sd-lable-shortcode-inserter"> |
| 470 | 470 | <a onclick="sd_ajax_get_picker(<?php echo $id; |
| 471 | - if ( $search_for_id ) { |
|
| 472 | - echo "," . $search_for_id; |
|
| 473 | - } ?>);" href="#TB_inline?width=100%&height=550&inlineId=super-duper-content-ajaxed" |
|
| 471 | + if ( $search_for_id ) { |
|
| 472 | + echo "," . $search_for_id; |
|
| 473 | + } ?>);" href="#TB_inline?width=100%&height=550&inlineId=super-duper-content-ajaxed" |
|
| 474 | 474 | class="thickbox button super-duper-content-open" title="Add Shortcode"> |
| 475 | 475 | <span style="vertical-align: middle;line-height: 18px;font-size: 20px;" |
| 476 | 476 | class="dashicons dashicons-screenoptions"></span> |
@@ -481,21 +481,21 @@ discard block |
||
| 481 | 481 | </span> |
| 482 | 482 | |
| 483 | 483 | <?php |
| 484 | - $html = ob_get_clean(); |
|
| 484 | + $html = ob_get_clean(); |
|
| 485 | 485 | |
| 486 | - // remove line breaks so we can use it in js |
|
| 487 | - return preg_replace( "/\r|\n/", "", trim( $html ) ); |
|
| 488 | - } |
|
| 486 | + // remove line breaks so we can use it in js |
|
| 487 | + return preg_replace( "/\r|\n/", "", trim( $html ) ); |
|
| 488 | + } |
|
| 489 | 489 | |
| 490 | - /** |
|
| 491 | - * Makes SD work with the siteOrigin page builder. |
|
| 492 | - * |
|
| 493 | - * @return mixed |
|
| 494 | - *@since 1.0.6 |
|
| 495 | - */ |
|
| 496 | - public static function siteorigin_js() { |
|
| 497 | - ob_start(); |
|
| 498 | - ?> |
|
| 490 | + /** |
|
| 491 | + * Makes SD work with the siteOrigin page builder. |
|
| 492 | + * |
|
| 493 | + * @return mixed |
|
| 494 | + *@since 1.0.6 |
|
| 495 | + */ |
|
| 496 | + public static function siteorigin_js() { |
|
| 497 | + ob_start(); |
|
| 498 | + ?> |
|
| 499 | 499 | <script> |
| 500 | 500 | /** |
| 501 | 501 | * Check a form to see what items should be shown or hidden. |
@@ -571,29 +571,29 @@ discard block |
||
| 571 | 571 | }); |
| 572 | 572 | </script> |
| 573 | 573 | <?php |
| 574 | - $output = ob_get_clean(); |
|
| 574 | + $output = ob_get_clean(); |
|
| 575 | 575 | |
| 576 | - /* |
|
| 576 | + /* |
|
| 577 | 577 | * We only add the <script> tags for code highlighting, so we strip them from the output. |
| 578 | 578 | */ |
| 579 | 579 | |
| 580 | - return str_replace( array( |
|
| 581 | - '<script>', |
|
| 582 | - '</script>' |
|
| 583 | - ), '', $output ); |
|
| 584 | - } |
|
| 580 | + return str_replace( array( |
|
| 581 | + '<script>', |
|
| 582 | + '</script>' |
|
| 583 | + ), '', $output ); |
|
| 584 | + } |
|
| 585 | 585 | |
| 586 | - /** |
|
| 587 | - * Output the JS and CSS for the shortcode insert button. |
|
| 588 | - * |
|
| 589 | - * @param string $editor_id |
|
| 590 | - * @param string $insert_shortcode_function |
|
| 591 | - * |
|
| 592 | - *@since 1.0.6 |
|
| 593 | - * |
|
| 594 | - */ |
|
| 595 | - public static function shortcode_insert_button_script( $editor_id = '', $insert_shortcode_function = '' ) { |
|
| 596 | - ?> |
|
| 586 | + /** |
|
| 587 | + * Output the JS and CSS for the shortcode insert button. |
|
| 588 | + * |
|
| 589 | + * @param string $editor_id |
|
| 590 | + * @param string $insert_shortcode_function |
|
| 591 | + * |
|
| 592 | + *@since 1.0.6 |
|
| 593 | + * |
|
| 594 | + */ |
|
| 595 | + public static function shortcode_insert_button_script( $editor_id = '', $insert_shortcode_function = '' ) { |
|
| 596 | + ?> |
|
| 597 | 597 | <style> |
| 598 | 598 | .sd-shortcode-left-wrap { |
| 599 | 599 | float: left; |
@@ -721,35 +721,35 @@ discard block |
||
| 721 | 721 | <?php } ?> |
| 722 | 722 | </style> |
| 723 | 723 | <?php |
| 724 | - if ( class_exists( 'SiteOrigin_Panels' ) ) { |
|
| 725 | - echo "<script>" . self::siteorigin_js() . "</script>"; |
|
| 726 | - } |
|
| 727 | - ?> |
|
| 724 | + if ( class_exists( 'SiteOrigin_Panels' ) ) { |
|
| 725 | + echo "<script>" . self::siteorigin_js() . "</script>"; |
|
| 726 | + } |
|
| 727 | + ?> |
|
| 728 | 728 | <script> |
| 729 | 729 | <?php |
| 730 | - if(! empty( $insert_shortcode_function )){ |
|
| 731 | - echo $insert_shortcode_function; |
|
| 732 | - }else{ |
|
| 733 | - |
|
| 734 | - /** |
|
| 735 | - * Function for super duper insert shortcode. |
|
| 736 | - * |
|
| 737 | - * @since 1.0.0 |
|
| 738 | - */ |
|
| 739 | - ?> |
|
| 730 | + if(! empty( $insert_shortcode_function )){ |
|
| 731 | + echo $insert_shortcode_function; |
|
| 732 | + }else{ |
|
| 733 | + |
|
| 734 | + /** |
|
| 735 | + * Function for super duper insert shortcode. |
|
| 736 | + * |
|
| 737 | + * @since 1.0.0 |
|
| 738 | + */ |
|
| 739 | + ?> |
|
| 740 | 740 | function sd_insert_shortcode($editor_id) { |
| 741 | 741 | $shortcode = jQuery('#TB_ajaxContent #sd-shortcode-output').val(); |
| 742 | 742 | if ($shortcode) { |
| 743 | 743 | if (!$editor_id) { |
| 744 | 744 | <?php |
| 745 | - if ( isset( $_REQUEST['et_fb'] ) ) { |
|
| 746 | - echo '$editor_id = "#main_content_content_vb_tiny_mce";'; |
|
| 747 | - } elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) { |
|
| 748 | - echo '$editor_id = "#elementor-controls .wp-editor-container textarea";'; |
|
| 749 | - } else { |
|
| 750 | - echo '$editor_id = "#wp-content-editor-container textarea";'; |
|
| 751 | - } |
|
| 752 | - ?> |
|
| 745 | + if ( isset( $_REQUEST['et_fb'] ) ) { |
|
| 746 | + echo '$editor_id = "#main_content_content_vb_tiny_mce";'; |
|
| 747 | + } elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) { |
|
| 748 | + echo '$editor_id = "#elementor-controls .wp-editor-container textarea";'; |
|
| 749 | + } else { |
|
| 750 | + echo '$editor_id = "#wp-content-editor-container textarea";'; |
|
| 751 | + } |
|
| 752 | + ?> |
|
| 753 | 753 | } else { |
| 754 | 754 | $editor_id = '#' + $editor_id; |
| 755 | 755 | } |
@@ -1063,18 +1063,18 @@ discard block |
||
| 1063 | 1063 | } |
| 1064 | 1064 | </script> |
| 1065 | 1065 | <?php |
| 1066 | - } |
|
| 1066 | + } |
|
| 1067 | 1067 | |
| 1068 | - /** |
|
| 1069 | - * Gets some CSS for the widgets screen. |
|
| 1070 | - * |
|
| 1071 | - * @param bool $advanced If we should include advanced CSS. |
|
| 1072 | - * |
|
| 1073 | - * @return mixed |
|
| 1074 | - */ |
|
| 1075 | - public function widget_css( $advanced = true ) { |
|
| 1076 | - ob_start(); |
|
| 1077 | - ?> |
|
| 1068 | + /** |
|
| 1069 | + * Gets some CSS for the widgets screen. |
|
| 1070 | + * |
|
| 1071 | + * @param bool $advanced If we should include advanced CSS. |
|
| 1072 | + * |
|
| 1073 | + * @return mixed |
|
| 1074 | + */ |
|
| 1075 | + public function widget_css( $advanced = true ) { |
|
| 1076 | + ob_start(); |
|
| 1077 | + ?> |
|
| 1078 | 1078 | <style> |
| 1079 | 1079 | <?php if( $advanced ){ ?> |
| 1080 | 1080 | .sd-advanced-setting { |
@@ -1114,26 +1114,26 @@ discard block |
||
| 1114 | 1114 | .elementor-control .sd-argument select[multiple] option{padding:3px} |
| 1115 | 1115 | </style> |
| 1116 | 1116 | <?php |
| 1117 | - $output = ob_get_clean(); |
|
| 1117 | + $output = ob_get_clean(); |
|
| 1118 | 1118 | |
| 1119 | - /* |
|
| 1119 | + /* |
|
| 1120 | 1120 | * We only add the <script> tags for code highlighting, so we strip them from the output. |
| 1121 | 1121 | */ |
| 1122 | 1122 | |
| 1123 | - return str_replace( array( |
|
| 1124 | - '<style>', |
|
| 1125 | - '</style>' |
|
| 1126 | - ), '', $output ); |
|
| 1127 | - } |
|
| 1123 | + return str_replace( array( |
|
| 1124 | + '<style>', |
|
| 1125 | + '</style>' |
|
| 1126 | + ), '', $output ); |
|
| 1127 | + } |
|
| 1128 | 1128 | |
| 1129 | - /** |
|
| 1130 | - * Gets some JS for the widgets screen. |
|
| 1131 | - * |
|
| 1132 | - * @return mixed |
|
| 1133 | - */ |
|
| 1134 | - public function widget_js() { |
|
| 1135 | - ob_start(); |
|
| 1136 | - ?> |
|
| 1129 | + /** |
|
| 1130 | + * Gets some JS for the widgets screen. |
|
| 1131 | + * |
|
| 1132 | + * @return mixed |
|
| 1133 | + */ |
|
| 1134 | + public function widget_js() { |
|
| 1135 | + ob_start(); |
|
| 1136 | + ?> |
|
| 1137 | 1137 | <script> |
| 1138 | 1138 | |
| 1139 | 1139 | /** |
@@ -1284,513 +1284,513 @@ discard block |
||
| 1284 | 1284 | <?php do_action( 'wp_super_duper_widget_js', $this ); ?> |
| 1285 | 1285 | </script> |
| 1286 | 1286 | <?php |
| 1287 | - $output = ob_get_clean(); |
|
| 1287 | + $output = ob_get_clean(); |
|
| 1288 | 1288 | |
| 1289 | - /* |
|
| 1289 | + /* |
|
| 1290 | 1290 | * We only add the <script> tags for code highlighting, so we strip them from the output. |
| 1291 | 1291 | */ |
| 1292 | 1292 | |
| 1293 | - return str_replace( array( |
|
| 1294 | - '<script>', |
|
| 1295 | - '</script>' |
|
| 1296 | - ), '', $output ); |
|
| 1297 | - } |
|
| 1293 | + return str_replace( array( |
|
| 1294 | + '<script>', |
|
| 1295 | + '</script>' |
|
| 1296 | + ), '', $output ); |
|
| 1297 | + } |
|
| 1298 | 1298 | |
| 1299 | 1299 | |
| 1300 | - /** |
|
| 1301 | - * Set the name from the argument key. |
|
| 1302 | - * |
|
| 1303 | - * @param $options |
|
| 1304 | - * |
|
| 1305 | - * @return mixed |
|
| 1306 | - */ |
|
| 1307 | - private function add_name_from_key( $options, $arguments = false ) { |
|
| 1308 | - if ( ! empty( $options['arguments'] ) ) { |
|
| 1309 | - foreach ( $options['arguments'] as $key => $val ) { |
|
| 1310 | - $options['arguments'][ $key ]['name'] = $key; |
|
| 1311 | - } |
|
| 1312 | - } elseif ( $arguments && is_array( $options ) && ! empty( $options ) ) { |
|
| 1313 | - foreach ( $options as $key => $val ) { |
|
| 1314 | - $options[ $key ]['name'] = $key; |
|
| 1315 | - } |
|
| 1316 | - } |
|
| 1300 | + /** |
|
| 1301 | + * Set the name from the argument key. |
|
| 1302 | + * |
|
| 1303 | + * @param $options |
|
| 1304 | + * |
|
| 1305 | + * @return mixed |
|
| 1306 | + */ |
|
| 1307 | + private function add_name_from_key( $options, $arguments = false ) { |
|
| 1308 | + if ( ! empty( $options['arguments'] ) ) { |
|
| 1309 | + foreach ( $options['arguments'] as $key => $val ) { |
|
| 1310 | + $options['arguments'][ $key ]['name'] = $key; |
|
| 1311 | + } |
|
| 1312 | + } elseif ( $arguments && is_array( $options ) && ! empty( $options ) ) { |
|
| 1313 | + foreach ( $options as $key => $val ) { |
|
| 1314 | + $options[ $key ]['name'] = $key; |
|
| 1315 | + } |
|
| 1316 | + } |
|
| 1317 | 1317 | |
| 1318 | - return $options; |
|
| 1319 | - } |
|
| 1318 | + return $options; |
|
| 1319 | + } |
|
| 1320 | 1320 | |
| 1321 | - /** |
|
| 1322 | - * Register the parent shortcode. |
|
| 1323 | - * |
|
| 1324 | - * @since 1.0.0 |
|
| 1325 | - */ |
|
| 1326 | - public function register_shortcode() { |
|
| 1327 | - add_shortcode( $this->base_id, array( $this, 'shortcode_output' ) ); |
|
| 1328 | - add_action( 'wp_ajax_super_duper_output_shortcode', array( $this, 'render_shortcode' ) ); |
|
| 1329 | - } |
|
| 1321 | + /** |
|
| 1322 | + * Register the parent shortcode. |
|
| 1323 | + * |
|
| 1324 | + * @since 1.0.0 |
|
| 1325 | + */ |
|
| 1326 | + public function register_shortcode() { |
|
| 1327 | + add_shortcode( $this->base_id, array( $this, 'shortcode_output' ) ); |
|
| 1328 | + add_action( 'wp_ajax_super_duper_output_shortcode', array( $this, 'render_shortcode' ) ); |
|
| 1329 | + } |
|
| 1330 | 1330 | |
| 1331 | - /** |
|
| 1332 | - * Render the shortcode via ajax so we can return it to Gutenberg. |
|
| 1333 | - * |
|
| 1334 | - * @since 1.0.0 |
|
| 1335 | - */ |
|
| 1336 | - public function render_shortcode() { |
|
| 1337 | - check_ajax_referer( 'super_duper_output_shortcode', '_ajax_nonce', true ); |
|
| 1338 | - if ( ! current_user_can( 'manage_options' ) ) { |
|
| 1339 | - wp_die(); |
|
| 1340 | - } |
|
| 1331 | + /** |
|
| 1332 | + * Render the shortcode via ajax so we can return it to Gutenberg. |
|
| 1333 | + * |
|
| 1334 | + * @since 1.0.0 |
|
| 1335 | + */ |
|
| 1336 | + public function render_shortcode() { |
|
| 1337 | + check_ajax_referer( 'super_duper_output_shortcode', '_ajax_nonce', true ); |
|
| 1338 | + if ( ! current_user_can( 'manage_options' ) ) { |
|
| 1339 | + wp_die(); |
|
| 1340 | + } |
|
| 1341 | + |
|
| 1342 | + // we might need the $post value here so lets set it. |
|
| 1343 | + if ( isset( $_POST['post_id'] ) && $_POST['post_id'] ) { |
|
| 1344 | + $post_obj = get_post( absint( $_POST['post_id'] ) ); |
|
| 1345 | + if ( ! empty( $post_obj ) && empty( $post ) ) { |
|
| 1346 | + global $post; |
|
| 1347 | + $post = $post_obj; |
|
| 1348 | + } |
|
| 1349 | + } |
|
| 1350 | + |
|
| 1351 | + if ( isset( $_POST['shortcode'] ) && $_POST['shortcode'] ) { |
|
| 1352 | + $is_preview = $this->is_preview(); |
|
| 1353 | + $shortcode_name = sanitize_title_with_dashes( $_POST['shortcode'] ); |
|
| 1354 | + $attributes_array = isset( $_POST['attributes'] ) && $_POST['attributes'] ? $_POST['attributes'] : array(); |
|
| 1355 | + $attributes = ''; |
|
| 1356 | + if ( ! empty( $attributes_array ) ) { |
|
| 1357 | + foreach ( $attributes_array as $key => $value ) { |
|
| 1358 | + if ( is_array( $value ) ) { |
|
| 1359 | + $value = implode( ",", $value ); |
|
| 1360 | + } |
|
| 1361 | + |
|
| 1362 | + if ( ! empty( $value ) ) { |
|
| 1363 | + $value = wp_unslash( $value ); |
|
| 1364 | + |
|
| 1365 | + // Encode [ and ]. |
|
| 1366 | + if ( $is_preview ) { |
|
| 1367 | + $value = $this->encode_shortcodes( $value ); |
|
| 1368 | + } |
|
| 1369 | + } |
|
| 1370 | + $attributes .= " " . esc_attr( sanitize_title_with_dashes( $key ) ) . "='" . esc_attr( $value ) . "' "; |
|
| 1371 | + } |
|
| 1372 | + } |
|
| 1341 | 1373 | |
| 1342 | - // we might need the $post value here so lets set it. |
|
| 1343 | - if ( isset( $_POST['post_id'] ) && $_POST['post_id'] ) { |
|
| 1344 | - $post_obj = get_post( absint( $_POST['post_id'] ) ); |
|
| 1345 | - if ( ! empty( $post_obj ) && empty( $post ) ) { |
|
| 1346 | - global $post; |
|
| 1347 | - $post = $post_obj; |
|
| 1348 | - } |
|
| 1349 | - } |
|
| 1374 | + $shortcode = "[" . esc_attr( $shortcode_name ) . " " . $attributes . "]"; |
|
| 1350 | 1375 | |
| 1351 | - if ( isset( $_POST['shortcode'] ) && $_POST['shortcode'] ) { |
|
| 1352 | - $is_preview = $this->is_preview(); |
|
| 1353 | - $shortcode_name = sanitize_title_with_dashes( $_POST['shortcode'] ); |
|
| 1354 | - $attributes_array = isset( $_POST['attributes'] ) && $_POST['attributes'] ? $_POST['attributes'] : array(); |
|
| 1355 | - $attributes = ''; |
|
| 1356 | - if ( ! empty( $attributes_array ) ) { |
|
| 1357 | - foreach ( $attributes_array as $key => $value ) { |
|
| 1358 | - if ( is_array( $value ) ) { |
|
| 1359 | - $value = implode( ",", $value ); |
|
| 1360 | - } |
|
| 1376 | + $content = do_shortcode( $shortcode ); |
|
| 1361 | 1377 | |
| 1362 | - if ( ! empty( $value ) ) { |
|
| 1363 | - $value = wp_unslash( $value ); |
|
| 1378 | + // Decode [ and ]. |
|
| 1379 | + if ( ! empty( $content ) && $is_preview ) { |
|
| 1380 | + $content = $this->decode_shortcodes( $content ); |
|
| 1381 | + } |
|
| 1364 | 1382 | |
| 1365 | - // Encode [ and ]. |
|
| 1366 | - if ( $is_preview ) { |
|
| 1367 | - $value = $this->encode_shortcodes( $value ); |
|
| 1368 | - } |
|
| 1369 | - } |
|
| 1370 | - $attributes .= " " . esc_attr( sanitize_title_with_dashes( $key ) ) . "='" . esc_attr( $value ) . "' "; |
|
| 1371 | - } |
|
| 1372 | - } |
|
| 1383 | + echo $content; |
|
| 1384 | + } |
|
| 1385 | + wp_die(); |
|
| 1386 | + } |
|
| 1373 | 1387 | |
| 1374 | - $shortcode = "[" . esc_attr( $shortcode_name ) . " " . $attributes . "]"; |
|
| 1388 | + /** |
|
| 1389 | + * Output the shortcode. |
|
| 1390 | + * |
|
| 1391 | + * @param array $args |
|
| 1392 | + * @param string $content |
|
| 1393 | + * |
|
| 1394 | + * @return string |
|
| 1395 | + */ |
|
| 1396 | + public function shortcode_output( $args = array(), $content = '' ) { |
|
| 1397 | + $_instance = $args; |
|
| 1398 | + |
|
| 1399 | + $args = $this->argument_values( $args ); |
|
| 1400 | + |
|
| 1401 | + // add extra argument so we know its a output to gutenberg |
|
| 1402 | + //$args |
|
| 1403 | + $args = $this->string_to_bool( $args ); |
|
| 1404 | + |
|
| 1405 | + // if we have a enclosed shortcode we add it to the special `html` argument |
|
| 1406 | + if ( ! empty( $content ) ) { |
|
| 1407 | + $args['html'] = $content; |
|
| 1408 | + } |
|
| 1409 | + |
|
| 1410 | + if ( ! $this->is_preview() ) { |
|
| 1411 | + /** |
|
| 1412 | + * Filters the settings for a particular widget args. |
|
| 1413 | + * |
|
| 1414 | + * @param array $args The current widget instance's settings. |
|
| 1415 | + * @param WP_Super_Duper $widget The current widget settings. |
|
| 1416 | + * @param array $_instance An array of default widget arguments. |
|
| 1417 | + * |
|
| 1418 | + *@since 1.0.28 |
|
| 1419 | + * |
|
| 1420 | + */ |
|
| 1421 | + $args = apply_filters( 'wp_super_duper_widget_display_callback', $args, $this, $_instance ); |
|
| 1422 | + |
|
| 1423 | + if ( ! is_array( $args ) ) { |
|
| 1424 | + return $args; |
|
| 1425 | + } |
|
| 1426 | + } |
|
| 1427 | + |
|
| 1428 | + $class = isset( $this->options['widget_ops']['classname'] ) ? esc_attr( $this->options['widget_ops']['classname'] ) : ''; |
|
| 1429 | + $class .= " sdel-".$this->get_instance_hash(); |
|
| 1430 | + |
|
| 1431 | + $class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this ); |
|
| 1432 | + $class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this ); |
|
| 1433 | + |
|
| 1434 | + $attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this ); |
|
| 1435 | + $attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this ); |
|
| 1436 | + |
|
| 1437 | + $shortcode_args = array(); |
|
| 1438 | + $output = ''; |
|
| 1439 | + $no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false; |
|
| 1440 | + if ( isset( $args['no_wrap'] ) && $args['no_wrap'] ) { |
|
| 1441 | + $no_wrap = true; |
|
| 1442 | + } |
|
| 1443 | + $main_content = $this->output( $args, $shortcode_args, $content ); |
|
| 1444 | + if ( $main_content && ! $no_wrap ) { |
|
| 1445 | + // wrap the shortcode in a div with the same class as the widget |
|
| 1446 | + $output .= '<div class="' . $class . '" ' . $attrs . '>'; |
|
| 1447 | + if ( ! empty( $args['title'] ) ) { |
|
| 1448 | + // if its a shortcode and there is a title try to grab the title wrappers |
|
| 1449 | + $shortcode_args = array( 'before_title' => '', 'after_title' => '' ); |
|
| 1450 | + if ( empty( $instance ) ) { |
|
| 1451 | + global $wp_registered_sidebars; |
|
| 1452 | + if ( ! empty( $wp_registered_sidebars ) ) { |
|
| 1453 | + foreach ( $wp_registered_sidebars as $sidebar ) { |
|
| 1454 | + if ( ! empty( $sidebar['before_title'] ) ) { |
|
| 1455 | + $shortcode_args['before_title'] = $sidebar['before_title']; |
|
| 1456 | + $shortcode_args['after_title'] = $sidebar['after_title']; |
|
| 1457 | + break; |
|
| 1458 | + } |
|
| 1459 | + } |
|
| 1460 | + } |
|
| 1461 | + } |
|
| 1462 | + $output .= $this->output_title( $shortcode_args, $args ); |
|
| 1463 | + } |
|
| 1464 | + $output .= $main_content; |
|
| 1465 | + $output .= '</div>'; |
|
| 1466 | + } elseif ( $main_content && $no_wrap ) { |
|
| 1467 | + $output .= $main_content; |
|
| 1468 | + } |
|
| 1469 | + |
|
| 1470 | + // if preview show a placeholder if empty |
|
| 1471 | + if ( $this->is_preview() && $output == '' ) { |
|
| 1472 | + $output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" ); |
|
| 1473 | + } |
|
| 1474 | + |
|
| 1475 | + return apply_filters( 'wp_super_duper_widget_output', $output, $args, $shortcode_args, $this ); |
|
| 1476 | + } |
|
| 1375 | 1477 | |
| 1376 | - $content = do_shortcode( $shortcode ); |
|
| 1478 | + /** |
|
| 1479 | + * Placeholder text to show if output is empty and we are on a preview/builder page. |
|
| 1480 | + * |
|
| 1481 | + * @param string $name |
|
| 1482 | + * |
|
| 1483 | + * @return string |
|
| 1484 | + */ |
|
| 1485 | + public function preview_placeholder_text( $name = '' ) { |
|
| 1486 | + return "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" . wp_sprintf( __( 'Placeholder for: %s', 'ayecode-connect' ), $name ) . "</div>"; |
|
| 1487 | + } |
|
| 1377 | 1488 | |
| 1378 | - // Decode [ and ]. |
|
| 1379 | - if ( ! empty( $content ) && $is_preview ) { |
|
| 1380 | - $content = $this->decode_shortcodes( $content ); |
|
| 1381 | - } |
|
| 1489 | + /** |
|
| 1490 | + * Sometimes booleans values can be turned to strings, so we fix that. |
|
| 1491 | + * |
|
| 1492 | + * @param $options |
|
| 1493 | + * |
|
| 1494 | + * @return mixed |
|
| 1495 | + */ |
|
| 1496 | + public function string_to_bool( $options ) { |
|
| 1497 | + // convert bool strings to booleans |
|
| 1498 | + foreach ( $options as $key => $val ) { |
|
| 1499 | + if ( $val == 'false' ) { |
|
| 1500 | + $options[ $key ] = false; |
|
| 1501 | + } elseif ( $val == 'true' ) { |
|
| 1502 | + $options[ $key ] = true; |
|
| 1503 | + } |
|
| 1504 | + } |
|
| 1382 | 1505 | |
| 1383 | - echo $content; |
|
| 1384 | - } |
|
| 1385 | - wp_die(); |
|
| 1386 | - } |
|
| 1506 | + return $options; |
|
| 1507 | + } |
|
| 1387 | 1508 | |
| 1388 | - /** |
|
| 1389 | - * Output the shortcode. |
|
| 1390 | - * |
|
| 1391 | - * @param array $args |
|
| 1392 | - * @param string $content |
|
| 1393 | - * |
|
| 1394 | - * @return string |
|
| 1395 | - */ |
|
| 1396 | - public function shortcode_output( $args = array(), $content = '' ) { |
|
| 1397 | - $_instance = $args; |
|
| 1398 | - |
|
| 1399 | - $args = $this->argument_values( $args ); |
|
| 1400 | - |
|
| 1401 | - // add extra argument so we know its a output to gutenberg |
|
| 1402 | - //$args |
|
| 1403 | - $args = $this->string_to_bool( $args ); |
|
| 1404 | - |
|
| 1405 | - // if we have a enclosed shortcode we add it to the special `html` argument |
|
| 1406 | - if ( ! empty( $content ) ) { |
|
| 1407 | - $args['html'] = $content; |
|
| 1408 | - } |
|
| 1509 | + /** |
|
| 1510 | + * Get the argument values that are also filterable. |
|
| 1511 | + * |
|
| 1512 | + * @param $instance |
|
| 1513 | + * |
|
| 1514 | + * @return array |
|
| 1515 | + *@since 1.0.12 Don't set checkbox default value if the value is empty. |
|
| 1516 | + * |
|
| 1517 | + */ |
|
| 1518 | + public function argument_values( $instance ) { |
|
| 1519 | + $argument_values = array(); |
|
| 1520 | + |
|
| 1521 | + // set widget instance |
|
| 1522 | + $this->instance = $instance; |
|
| 1523 | + |
|
| 1524 | + if ( empty( $this->arguments ) ) { |
|
| 1525 | + $this->arguments = $this->get_arguments(); |
|
| 1526 | + } |
|
| 1527 | + |
|
| 1528 | + if ( ! empty( $this->arguments ) ) { |
|
| 1529 | + foreach ( $this->arguments as $key => $args ) { |
|
| 1530 | + // set the input name from the key |
|
| 1531 | + $args['name'] = $key; |
|
| 1532 | + // |
|
| 1533 | + $argument_values[ $key ] = isset( $instance[ $key ] ) ? $instance[ $key ] : ''; |
|
| 1534 | + if ( $args['type'] == 'checkbox' && $argument_values[ $key ] == '' ) { |
|
| 1535 | + // don't set default for an empty checkbox |
|
| 1536 | + } elseif ( $argument_values[ $key ] == '' && isset( $args['default'] ) ) { |
|
| 1537 | + $argument_values[ $key ] = $args['default']; |
|
| 1538 | + } |
|
| 1539 | + } |
|
| 1540 | + } |
|
| 1409 | 1541 | |
| 1410 | - if ( ! $this->is_preview() ) { |
|
| 1411 | - /** |
|
| 1412 | - * Filters the settings for a particular widget args. |
|
| 1413 | - * |
|
| 1414 | - * @param array $args The current widget instance's settings. |
|
| 1415 | - * @param WP_Super_Duper $widget The current widget settings. |
|
| 1416 | - * @param array $_instance An array of default widget arguments. |
|
| 1417 | - * |
|
| 1418 | - *@since 1.0.28 |
|
| 1419 | - * |
|
| 1420 | - */ |
|
| 1421 | - $args = apply_filters( 'wp_super_duper_widget_display_callback', $args, $this, $_instance ); |
|
| 1542 | + return $argument_values; |
|
| 1543 | + } |
|
| 1422 | 1544 | |
| 1423 | - if ( ! is_array( $args ) ) { |
|
| 1424 | - return $args; |
|
| 1425 | - } |
|
| 1426 | - } |
|
| 1545 | + /** |
|
| 1546 | + * Set arguments in super duper. |
|
| 1547 | + * |
|
| 1548 | + * @return array Set arguments. |
|
| 1549 | + *@since 1.0.0 |
|
| 1550 | + * |
|
| 1551 | + */ |
|
| 1552 | + public function set_arguments() { |
|
| 1553 | + return $this->arguments; |
|
| 1554 | + } |
|
| 1427 | 1555 | |
| 1428 | - $class = isset( $this->options['widget_ops']['classname'] ) ? esc_attr( $this->options['widget_ops']['classname'] ) : ''; |
|
| 1429 | - $class .= " sdel-".$this->get_instance_hash(); |
|
| 1556 | + /** |
|
| 1557 | + * Get arguments in super duper. |
|
| 1558 | + * |
|
| 1559 | + * @return array Get arguments. |
|
| 1560 | + *@since 1.0.0 |
|
| 1561 | + * |
|
| 1562 | + */ |
|
| 1563 | + public function get_arguments() { |
|
| 1564 | + if ( empty( $this->arguments ) ) { |
|
| 1565 | + $this->arguments = $this->set_arguments(); |
|
| 1566 | + } |
|
| 1430 | 1567 | |
| 1431 | - $class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this ); |
|
| 1432 | - $class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this ); |
|
| 1568 | + $this->arguments = apply_filters( 'wp_super_duper_arguments', $this->arguments, $this->options, $this->instance ); |
|
| 1569 | + $this->arguments = $this->add_name_from_key( $this->arguments, true ); |
|
| 1433 | 1570 | |
| 1434 | - $attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this ); |
|
| 1435 | - $attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this ); |
|
| 1571 | + return $this->arguments; |
|
| 1572 | + } |
|
| 1436 | 1573 | |
| 1437 | - $shortcode_args = array(); |
|
| 1438 | - $output = ''; |
|
| 1439 | - $no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false; |
|
| 1440 | - if ( isset( $args['no_wrap'] ) && $args['no_wrap'] ) { |
|
| 1441 | - $no_wrap = true; |
|
| 1442 | - } |
|
| 1443 | - $main_content = $this->output( $args, $shortcode_args, $content ); |
|
| 1444 | - if ( $main_content && ! $no_wrap ) { |
|
| 1445 | - // wrap the shortcode in a div with the same class as the widget |
|
| 1446 | - $output .= '<div class="' . $class . '" ' . $attrs . '>'; |
|
| 1447 | - if ( ! empty( $args['title'] ) ) { |
|
| 1448 | - // if its a shortcode and there is a title try to grab the title wrappers |
|
| 1449 | - $shortcode_args = array( 'before_title' => '', 'after_title' => '' ); |
|
| 1450 | - if ( empty( $instance ) ) { |
|
| 1451 | - global $wp_registered_sidebars; |
|
| 1452 | - if ( ! empty( $wp_registered_sidebars ) ) { |
|
| 1453 | - foreach ( $wp_registered_sidebars as $sidebar ) { |
|
| 1454 | - if ( ! empty( $sidebar['before_title'] ) ) { |
|
| 1455 | - $shortcode_args['before_title'] = $sidebar['before_title']; |
|
| 1456 | - $shortcode_args['after_title'] = $sidebar['after_title']; |
|
| 1457 | - break; |
|
| 1458 | - } |
|
| 1459 | - } |
|
| 1460 | - } |
|
| 1461 | - } |
|
| 1462 | - $output .= $this->output_title( $shortcode_args, $args ); |
|
| 1463 | - } |
|
| 1464 | - $output .= $main_content; |
|
| 1465 | - $output .= '</div>'; |
|
| 1466 | - } elseif ( $main_content && $no_wrap ) { |
|
| 1467 | - $output .= $main_content; |
|
| 1468 | - } |
|
| 1574 | + /** |
|
| 1575 | + * This is the main output class for all 3 items, widget, shortcode and block, it is extended in the calling class. |
|
| 1576 | + * |
|
| 1577 | + * @param array $args |
|
| 1578 | + * @param array $widget_args |
|
| 1579 | + * @param string $content |
|
| 1580 | + */ |
|
| 1581 | + public function output( $args = array(), $widget_args = array(), $content = '' ) { |
|
| 1469 | 1582 | |
| 1470 | - // if preview show a placeholder if empty |
|
| 1471 | - if ( $this->is_preview() && $output == '' ) { |
|
| 1472 | - $output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" ); |
|
| 1473 | - } |
|
| 1583 | + } |
|
| 1474 | 1584 | |
| 1475 | - return apply_filters( 'wp_super_duper_widget_output', $output, $args, $shortcode_args, $this ); |
|
| 1476 | - } |
|
| 1585 | + /** |
|
| 1586 | + * Add the dynamic block code inline when the wp-block in enqueued. |
|
| 1587 | + */ |
|
| 1588 | + public function register_block() { |
|
| 1589 | + wp_add_inline_script( 'wp-blocks', $this->block() ); |
|
| 1590 | + if ( class_exists( 'SiteOrigin_Panels' ) ) { |
|
| 1591 | + wp_add_inline_script( 'wp-blocks', $this->siteorigin_js() ); |
|
| 1592 | + } |
|
| 1593 | + } |
|
| 1477 | 1594 | |
| 1478 | - /** |
|
| 1479 | - * Placeholder text to show if output is empty and we are on a preview/builder page. |
|
| 1480 | - * |
|
| 1481 | - * @param string $name |
|
| 1482 | - * |
|
| 1483 | - * @return string |
|
| 1484 | - */ |
|
| 1485 | - public function preview_placeholder_text( $name = '' ) { |
|
| 1486 | - return "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" . wp_sprintf( __( 'Placeholder for: %s', 'ayecode-connect' ), $name ) . "</div>"; |
|
| 1487 | - } |
|
| 1595 | + /** |
|
| 1596 | + * Check if we need to show advanced options. |
|
| 1597 | + * |
|
| 1598 | + * @return bool |
|
| 1599 | + */ |
|
| 1600 | + public function block_show_advanced() { |
|
| 1488 | 1601 | |
| 1489 | - /** |
|
| 1490 | - * Sometimes booleans values can be turned to strings, so we fix that. |
|
| 1491 | - * |
|
| 1492 | - * @param $options |
|
| 1493 | - * |
|
| 1494 | - * @return mixed |
|
| 1495 | - */ |
|
| 1496 | - public function string_to_bool( $options ) { |
|
| 1497 | - // convert bool strings to booleans |
|
| 1498 | - foreach ( $options as $key => $val ) { |
|
| 1499 | - if ( $val == 'false' ) { |
|
| 1500 | - $options[ $key ] = false; |
|
| 1501 | - } elseif ( $val == 'true' ) { |
|
| 1502 | - $options[ $key ] = true; |
|
| 1503 | - } |
|
| 1504 | - } |
|
| 1602 | + $show = false; |
|
| 1603 | + $arguments = $this->get_arguments(); |
|
| 1505 | 1604 | |
| 1506 | - return $options; |
|
| 1507 | - } |
|
| 1605 | + if ( ! empty( $arguments ) ) { |
|
| 1606 | + foreach ( $arguments as $argument ) { |
|
| 1607 | + if ( isset( $argument['advanced'] ) && $argument['advanced'] ) { |
|
| 1608 | + $show = true; |
|
| 1609 | + break; // no need to continue if we know we have it |
|
| 1610 | + } |
|
| 1611 | + } |
|
| 1612 | + } |
|
| 1508 | 1613 | |
| 1509 | - /** |
|
| 1510 | - * Get the argument values that are also filterable. |
|
| 1511 | - * |
|
| 1512 | - * @param $instance |
|
| 1513 | - * |
|
| 1514 | - * @return array |
|
| 1515 | - *@since 1.0.12 Don't set checkbox default value if the value is empty. |
|
| 1516 | - * |
|
| 1517 | - */ |
|
| 1518 | - public function argument_values( $instance ) { |
|
| 1519 | - $argument_values = array(); |
|
| 1520 | - |
|
| 1521 | - // set widget instance |
|
| 1522 | - $this->instance = $instance; |
|
| 1523 | - |
|
| 1524 | - if ( empty( $this->arguments ) ) { |
|
| 1525 | - $this->arguments = $this->get_arguments(); |
|
| 1526 | - } |
|
| 1614 | + return $show; |
|
| 1615 | + } |
|
| 1527 | 1616 | |
| 1528 | - if ( ! empty( $this->arguments ) ) { |
|
| 1529 | - foreach ( $this->arguments as $key => $args ) { |
|
| 1530 | - // set the input name from the key |
|
| 1531 | - $args['name'] = $key; |
|
| 1532 | - // |
|
| 1533 | - $argument_values[ $key ] = isset( $instance[ $key ] ) ? $instance[ $key ] : ''; |
|
| 1534 | - if ( $args['type'] == 'checkbox' && $argument_values[ $key ] == '' ) { |
|
| 1535 | - // don't set default for an empty checkbox |
|
| 1536 | - } elseif ( $argument_values[ $key ] == '' && isset( $args['default'] ) ) { |
|
| 1537 | - $argument_values[ $key ] = $args['default']; |
|
| 1538 | - } |
|
| 1539 | - } |
|
| 1540 | - } |
|
| 1617 | + /** |
|
| 1618 | + * Get the url path to the current folder. |
|
| 1619 | + * |
|
| 1620 | + * @return string |
|
| 1621 | + */ |
|
| 1622 | + public function get_url() { |
|
| 1623 | + $url = $this->url; |
|
| 1541 | 1624 | |
| 1542 | - return $argument_values; |
|
| 1543 | - } |
|
| 1625 | + if ( ! $url ) { |
|
| 1626 | + $content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) ); |
|
| 1627 | + $content_url = untrailingslashit( WP_CONTENT_URL ); |
|
| 1544 | 1628 | |
| 1545 | - /** |
|
| 1546 | - * Set arguments in super duper. |
|
| 1547 | - * |
|
| 1548 | - * @return array Set arguments. |
|
| 1549 | - *@since 1.0.0 |
|
| 1550 | - * |
|
| 1551 | - */ |
|
| 1552 | - public function set_arguments() { |
|
| 1553 | - return $this->arguments; |
|
| 1554 | - } |
|
| 1629 | + // Replace http:// to https://. |
|
| 1630 | + if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) { |
|
| 1631 | + $content_url = str_replace( 'http://', 'https://', $content_url ); |
|
| 1632 | + } |
|
| 1555 | 1633 | |
| 1556 | - /** |
|
| 1557 | - * Get arguments in super duper. |
|
| 1558 | - * |
|
| 1559 | - * @return array Get arguments. |
|
| 1560 | - *@since 1.0.0 |
|
| 1561 | - * |
|
| 1562 | - */ |
|
| 1563 | - public function get_arguments() { |
|
| 1564 | - if ( empty( $this->arguments ) ) { |
|
| 1565 | - $this->arguments = $this->set_arguments(); |
|
| 1566 | - } |
|
| 1634 | + // Check if we are inside a plugin |
|
| 1635 | + $file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) ); |
|
| 1636 | + $url = str_replace( $content_dir, $content_url, $file_dir ); |
|
| 1637 | + $url = trailingslashit( $url ); |
|
| 1638 | + $this->url = $url; |
|
| 1639 | + } |
|
| 1567 | 1640 | |
| 1568 | - $this->arguments = apply_filters( 'wp_super_duper_arguments', $this->arguments, $this->options, $this->instance ); |
|
| 1569 | - $this->arguments = $this->add_name_from_key( $this->arguments, true ); |
|
| 1641 | + return $url; |
|
| 1642 | + } |
|
| 1570 | 1643 | |
| 1571 | - return $this->arguments; |
|
| 1572 | - } |
|
| 1644 | + /** |
|
| 1645 | + * Get the url path to the current folder. |
|
| 1646 | + * |
|
| 1647 | + * @return string |
|
| 1648 | + */ |
|
| 1649 | + public function get_url_old() { |
|
| 1573 | 1650 | |
| 1574 | - /** |
|
| 1575 | - * This is the main output class for all 3 items, widget, shortcode and block, it is extended in the calling class. |
|
| 1576 | - * |
|
| 1577 | - * @param array $args |
|
| 1578 | - * @param array $widget_args |
|
| 1579 | - * @param string $content |
|
| 1580 | - */ |
|
| 1581 | - public function output( $args = array(), $widget_args = array(), $content = '' ) { |
|
| 1651 | + $url = $this->url; |
|
| 1582 | 1652 | |
| 1583 | - } |
|
| 1653 | + if ( ! $url ) { |
|
| 1654 | + // check if we are inside a plugin |
|
| 1655 | + $file_dir = str_replace( "/includes", "", dirname( __FILE__ ) ); |
|
| 1584 | 1656 | |
| 1585 | - /** |
|
| 1586 | - * Add the dynamic block code inline when the wp-block in enqueued. |
|
| 1587 | - */ |
|
| 1588 | - public function register_block() { |
|
| 1589 | - wp_add_inline_script( 'wp-blocks', $this->block() ); |
|
| 1590 | - if ( class_exists( 'SiteOrigin_Panels' ) ) { |
|
| 1591 | - wp_add_inline_script( 'wp-blocks', $this->siteorigin_js() ); |
|
| 1592 | - } |
|
| 1593 | - } |
|
| 1657 | + $dir_parts = explode( "/wp-content/", $file_dir ); |
|
| 1658 | + $url_parts = explode( "/wp-content/", plugins_url() ); |
|
| 1594 | 1659 | |
| 1595 | - /** |
|
| 1596 | - * Check if we need to show advanced options. |
|
| 1597 | - * |
|
| 1598 | - * @return bool |
|
| 1599 | - */ |
|
| 1600 | - public function block_show_advanced() { |
|
| 1601 | - |
|
| 1602 | - $show = false; |
|
| 1603 | - $arguments = $this->get_arguments(); |
|
| 1604 | - |
|
| 1605 | - if ( ! empty( $arguments ) ) { |
|
| 1606 | - foreach ( $arguments as $argument ) { |
|
| 1607 | - if ( isset( $argument['advanced'] ) && $argument['advanced'] ) { |
|
| 1608 | - $show = true; |
|
| 1609 | - break; // no need to continue if we know we have it |
|
| 1610 | - } |
|
| 1611 | - } |
|
| 1612 | - } |
|
| 1660 | + if ( ! empty( $url_parts[0] ) && ! empty( $dir_parts[1] ) ) { |
|
| 1661 | + $url = trailingslashit( $url_parts[0] . "/wp-content/" . $dir_parts[1] ); |
|
| 1662 | + $this->url = $url; |
|
| 1663 | + } |
|
| 1664 | + } |
|
| 1613 | 1665 | |
| 1614 | - return $show; |
|
| 1615 | - } |
|
| 1616 | 1666 | |
| 1617 | - /** |
|
| 1618 | - * Get the url path to the current folder. |
|
| 1619 | - * |
|
| 1620 | - * @return string |
|
| 1621 | - */ |
|
| 1622 | - public function get_url() { |
|
| 1623 | - $url = $this->url; |
|
| 1624 | - |
|
| 1625 | - if ( ! $url ) { |
|
| 1626 | - $content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) ); |
|
| 1627 | - $content_url = untrailingslashit( WP_CONTENT_URL ); |
|
| 1628 | - |
|
| 1629 | - // Replace http:// to https://. |
|
| 1630 | - if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) { |
|
| 1631 | - $content_url = str_replace( 'http://', 'https://', $content_url ); |
|
| 1632 | - } |
|
| 1667 | + return $url; |
|
| 1668 | + } |
|
| 1633 | 1669 | |
| 1634 | - // Check if we are inside a plugin |
|
| 1635 | - $file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) ); |
|
| 1636 | - $url = str_replace( $content_dir, $content_url, $file_dir ); |
|
| 1637 | - $url = trailingslashit( $url ); |
|
| 1638 | - $this->url = $url; |
|
| 1639 | - } |
|
| 1670 | + /** |
|
| 1671 | + * Generate the block icon. |
|
| 1672 | + * |
|
| 1673 | + * Enables the use of Font Awesome icons. |
|
| 1674 | + * |
|
| 1675 | + * @note xlink:href is actually deprecated but href is not supported by all so we use both. |
|
| 1676 | + * |
|
| 1677 | + * @param $icon |
|
| 1678 | + * |
|
| 1679 | + * @return string |
|
| 1680 | + *@since 1.1.0 |
|
| 1681 | + */ |
|
| 1682 | + public function get_block_icon( $icon ) { |
|
| 1683 | + |
|
| 1684 | + // check if we have a Font Awesome icon |
|
| 1685 | + $fa_type = ''; |
|
| 1686 | + if ( substr( $icon, 0, 7 ) === "fas fa-" ) { |
|
| 1687 | + $fa_type = 'solid'; |
|
| 1688 | + } elseif ( substr( $icon, 0, 7 ) === "far fa-" ) { |
|
| 1689 | + $fa_type = 'regular'; |
|
| 1690 | + } elseif ( substr( $icon, 0, 7 ) === "fab fa-" ) { |
|
| 1691 | + $fa_type = 'brands'; |
|
| 1692 | + } else { |
|
| 1693 | + $icon = "'" . $icon . "'"; |
|
| 1694 | + } |
|
| 1695 | + |
|
| 1696 | + // set the icon if we found one |
|
| 1697 | + if ( $fa_type ) { |
|
| 1698 | + $fa_icon = str_replace( array( "fas fa-", "far fa-", "fab fa-" ), "", $icon ); |
|
| 1699 | + $icon = "el('svg',{width: 20, height: 20, viewBox: '0 0 20 20'},el('use', {'xlink:href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "','href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "'}))"; |
|
| 1700 | + } |
|
| 1701 | + |
|
| 1702 | + return $icon; |
|
| 1703 | + } |
|
| 1640 | 1704 | |
| 1641 | - return $url; |
|
| 1642 | - } |
|
| 1705 | + public function group_arguments( $arguments ) { |
|
| 1706 | + if ( ! empty( $arguments ) ) { |
|
| 1707 | + $temp_arguments = array(); |
|
| 1708 | + $general = __( "General", 'ayecode-connect' ); |
|
| 1709 | + $add_sections = false; |
|
| 1710 | + foreach ( $arguments as $key => $args ) { |
|
| 1711 | + if ( isset( $args['group'] ) ) { |
|
| 1712 | + $temp_arguments[ $args['group'] ][ $key ] = $args; |
|
| 1713 | + $add_sections = true; |
|
| 1714 | + } else { |
|
| 1715 | + $temp_arguments[ $general ][ $key ] = $args; |
|
| 1716 | + } |
|
| 1717 | + } |
|
| 1643 | 1718 | |
| 1644 | - /** |
|
| 1645 | - * Get the url path to the current folder. |
|
| 1646 | - * |
|
| 1647 | - * @return string |
|
| 1648 | - */ |
|
| 1649 | - public function get_url_old() { |
|
| 1650 | - |
|
| 1651 | - $url = $this->url; |
|
| 1652 | - |
|
| 1653 | - if ( ! $url ) { |
|
| 1654 | - // check if we are inside a plugin |
|
| 1655 | - $file_dir = str_replace( "/includes", "", dirname( __FILE__ ) ); |
|
| 1656 | - |
|
| 1657 | - $dir_parts = explode( "/wp-content/", $file_dir ); |
|
| 1658 | - $url_parts = explode( "/wp-content/", plugins_url() ); |
|
| 1659 | - |
|
| 1660 | - if ( ! empty( $url_parts[0] ) && ! empty( $dir_parts[1] ) ) { |
|
| 1661 | - $url = trailingslashit( $url_parts[0] . "/wp-content/" . $dir_parts[1] ); |
|
| 1662 | - $this->url = $url; |
|
| 1663 | - } |
|
| 1664 | - } |
|
| 1665 | - |
|
| 1666 | - |
|
| 1667 | - return $url; |
|
| 1668 | - } |
|
| 1669 | - |
|
| 1670 | - /** |
|
| 1671 | - * Generate the block icon. |
|
| 1672 | - * |
|
| 1673 | - * Enables the use of Font Awesome icons. |
|
| 1674 | - * |
|
| 1675 | - * @note xlink:href is actually deprecated but href is not supported by all so we use both. |
|
| 1676 | - * |
|
| 1677 | - * @param $icon |
|
| 1678 | - * |
|
| 1679 | - * @return string |
|
| 1680 | - *@since 1.1.0 |
|
| 1681 | - */ |
|
| 1682 | - public function get_block_icon( $icon ) { |
|
| 1683 | - |
|
| 1684 | - // check if we have a Font Awesome icon |
|
| 1685 | - $fa_type = ''; |
|
| 1686 | - if ( substr( $icon, 0, 7 ) === "fas fa-" ) { |
|
| 1687 | - $fa_type = 'solid'; |
|
| 1688 | - } elseif ( substr( $icon, 0, 7 ) === "far fa-" ) { |
|
| 1689 | - $fa_type = 'regular'; |
|
| 1690 | - } elseif ( substr( $icon, 0, 7 ) === "fab fa-" ) { |
|
| 1691 | - $fa_type = 'brands'; |
|
| 1692 | - } else { |
|
| 1693 | - $icon = "'" . $icon . "'"; |
|
| 1694 | - } |
|
| 1695 | - |
|
| 1696 | - // set the icon if we found one |
|
| 1697 | - if ( $fa_type ) { |
|
| 1698 | - $fa_icon = str_replace( array( "fas fa-", "far fa-", "fab fa-" ), "", $icon ); |
|
| 1699 | - $icon = "el('svg',{width: 20, height: 20, viewBox: '0 0 20 20'},el('use', {'xlink:href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "','href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "'}))"; |
|
| 1700 | - } |
|
| 1701 | - |
|
| 1702 | - return $icon; |
|
| 1703 | - } |
|
| 1719 | + // only add sections if more than one |
|
| 1720 | + if ( $add_sections ) { |
|
| 1721 | + $arguments = $temp_arguments; |
|
| 1722 | + } |
|
| 1723 | + } |
|
| 1704 | 1724 | |
| 1705 | - public function group_arguments( $arguments ) { |
|
| 1706 | - if ( ! empty( $arguments ) ) { |
|
| 1707 | - $temp_arguments = array(); |
|
| 1708 | - $general = __( "General", 'ayecode-connect' ); |
|
| 1709 | - $add_sections = false; |
|
| 1710 | - foreach ( $arguments as $key => $args ) { |
|
| 1711 | - if ( isset( $args['group'] ) ) { |
|
| 1712 | - $temp_arguments[ $args['group'] ][ $key ] = $args; |
|
| 1713 | - $add_sections = true; |
|
| 1714 | - } else { |
|
| 1715 | - $temp_arguments[ $general ][ $key ] = $args; |
|
| 1716 | - } |
|
| 1717 | - } |
|
| 1725 | + return $arguments; |
|
| 1726 | + } |
|
| 1718 | 1727 | |
| 1719 | - // only add sections if more than one |
|
| 1720 | - if ( $add_sections ) { |
|
| 1721 | - $arguments = $temp_arguments; |
|
| 1722 | - } |
|
| 1723 | - } |
|
| 1728 | + /** |
|
| 1729 | + * Parse used group tabs. |
|
| 1730 | + * |
|
| 1731 | + * @since 1.1.17 |
|
| 1732 | + */ |
|
| 1733 | + public function group_block_tabs( $tabs, $arguments ) { |
|
| 1734 | + if ( ! empty( $tabs ) && ! empty( $arguments ) ) { |
|
| 1735 | + $has_sections = false; |
|
| 1736 | + |
|
| 1737 | + foreach ( $this->arguments as $key => $args ) { |
|
| 1738 | + if ( isset( $args['group'] ) ) { |
|
| 1739 | + $has_sections = true; |
|
| 1740 | + break; |
|
| 1741 | + } |
|
| 1742 | + } |
|
| 1724 | 1743 | |
| 1725 | - return $arguments; |
|
| 1726 | - } |
|
| 1744 | + if ( ! $has_sections ) { |
|
| 1745 | + return $tabs; |
|
| 1746 | + } |
|
| 1727 | 1747 | |
| 1728 | - /** |
|
| 1729 | - * Parse used group tabs. |
|
| 1730 | - * |
|
| 1731 | - * @since 1.1.17 |
|
| 1732 | - */ |
|
| 1733 | - public function group_block_tabs( $tabs, $arguments ) { |
|
| 1734 | - if ( ! empty( $tabs ) && ! empty( $arguments ) ) { |
|
| 1735 | - $has_sections = false; |
|
| 1736 | - |
|
| 1737 | - foreach ( $this->arguments as $key => $args ) { |
|
| 1738 | - if ( isset( $args['group'] ) ) { |
|
| 1739 | - $has_sections = true; |
|
| 1740 | - break; |
|
| 1741 | - } |
|
| 1742 | - } |
|
| 1748 | + $new_tabs = array(); |
|
| 1743 | 1749 | |
| 1744 | - if ( ! $has_sections ) { |
|
| 1745 | - return $tabs; |
|
| 1746 | - } |
|
| 1750 | + foreach ( $tabs as $tab_key => $tab ) { |
|
| 1751 | + $new_groups = array(); |
|
| 1747 | 1752 | |
| 1748 | - $new_tabs = array(); |
|
| 1753 | + if ( ! empty( $tab['groups'] ) && is_array( $tab['groups'] ) ) { |
|
| 1754 | + foreach ( $tab['groups'] as $group ) { |
|
| 1755 | + if ( isset( $arguments[ $group ] ) ) { |
|
| 1756 | + $new_groups[] = $group; |
|
| 1757 | + } |
|
| 1758 | + } |
|
| 1759 | + } |
|
| 1749 | 1760 | |
| 1750 | - foreach ( $tabs as $tab_key => $tab ) { |
|
| 1751 | - $new_groups = array(); |
|
| 1761 | + if ( ! empty( $new_groups ) ) { |
|
| 1762 | + $tab['groups'] = $new_groups; |
|
| 1752 | 1763 | |
| 1753 | - if ( ! empty( $tab['groups'] ) && is_array( $tab['groups'] ) ) { |
|
| 1754 | - foreach ( $tab['groups'] as $group ) { |
|
| 1755 | - if ( isset( $arguments[ $group ] ) ) { |
|
| 1756 | - $new_groups[] = $group; |
|
| 1757 | - } |
|
| 1758 | - } |
|
| 1759 | - } |
|
| 1764 | + $new_tabs[ $tab_key ] = $tab; |
|
| 1765 | + } |
|
| 1766 | + } |
|
| 1760 | 1767 | |
| 1761 | - if ( ! empty( $new_groups ) ) { |
|
| 1762 | - $tab['groups'] = $new_groups; |
|
| 1768 | + $tabs = $new_tabs; |
|
| 1769 | + } |
|
| 1763 | 1770 | |
| 1764 | - $new_tabs[ $tab_key ] = $tab; |
|
| 1765 | - } |
|
| 1766 | - } |
|
| 1771 | + return $tabs; |
|
| 1772 | + } |
|
| 1767 | 1773 | |
| 1768 | - $tabs = $new_tabs; |
|
| 1769 | - } |
|
| 1774 | + /** |
|
| 1775 | + * Output the JS for building the dynamic Guntenberg block. |
|
| 1776 | + * |
|
| 1777 | + * @return mixed |
|
| 1778 | + *@since 1.0.9 Save numbers as numbers and not strings. |
|
| 1779 | + * @since 1.1.0 Font Awesome classes can be used for icons. |
|
| 1780 | + * @since 1.0.4 Added block_wrap property which will set the block wrapping output element ie: div, span, p or empty for no wrap. |
|
| 1781 | + */ |
|
| 1782 | + public function block() { |
|
| 1783 | + global $sd_is_js_functions_loaded, $aui_bs5; |
|
| 1770 | 1784 | |
| 1771 | - return $tabs; |
|
| 1772 | - } |
|
| 1785 | + $show_advanced = $this->block_show_advanced(); |
|
| 1773 | 1786 | |
| 1774 | - /** |
|
| 1775 | - * Output the JS for building the dynamic Guntenberg block. |
|
| 1776 | - * |
|
| 1777 | - * @return mixed |
|
| 1778 | - *@since 1.0.9 Save numbers as numbers and not strings. |
|
| 1779 | - * @since 1.1.0 Font Awesome classes can be used for icons. |
|
| 1780 | - * @since 1.0.4 Added block_wrap property which will set the block wrapping output element ie: div, span, p or empty for no wrap. |
|
| 1781 | - */ |
|
| 1782 | - public function block() { |
|
| 1783 | - global $sd_is_js_functions_loaded, $aui_bs5; |
|
| 1784 | - |
|
| 1785 | - $show_advanced = $this->block_show_advanced(); |
|
| 1786 | - |
|
| 1787 | - ob_start(); |
|
| 1788 | - ?> |
|
| 1787 | + ob_start(); |
|
| 1788 | + ?> |
|
| 1789 | 1789 | <script> |
| 1790 | 1790 | <?php |
| 1791 | - if ( ! $sd_is_js_functions_loaded ) { |
|
| 1792 | - $sd_is_js_functions_loaded = true; |
|
| 1793 | - ?> |
|
| 1791 | + if ( ! $sd_is_js_functions_loaded ) { |
|
| 1792 | + $sd_is_js_functions_loaded = true; |
|
| 1793 | + ?> |
|
| 1794 | 1794 | function sd_show_view_options($this){ |
| 1795 | 1795 | if(jQuery($this).html().length){ |
| 1796 | 1796 | jQuery($this).html(''); |
@@ -2244,8 +2244,8 @@ discard block |
||
| 2244 | 2244 | $classes = []; |
| 2245 | 2245 | |
| 2246 | 2246 | <?php |
| 2247 | - if($aui_bs5){ |
|
| 2248 | - ?> |
|
| 2247 | + if($aui_bs5){ |
|
| 2248 | + ?> |
|
| 2249 | 2249 | $aui_bs5 = true; |
| 2250 | 2250 | $p_ml = 'ms-'; |
| 2251 | 2251 | $p_mr = 'me-'; |
@@ -2253,8 +2253,8 @@ discard block |
||
| 2253 | 2253 | $p_pl = 'ps-'; |
| 2254 | 2254 | $p_pr = 'pe-'; |
| 2255 | 2255 | <?php |
| 2256 | - }else{ |
|
| 2257 | - ?> |
|
| 2256 | + }else{ |
|
| 2257 | + ?> |
|
| 2258 | 2258 | $aui_bs5 = false; |
| 2259 | 2259 | $p_ml = 'ml-'; |
| 2260 | 2260 | $p_mr = 'mr-'; |
@@ -2262,8 +2262,8 @@ discard block |
||
| 2262 | 2262 | $p_pl = 'pl-'; |
| 2263 | 2263 | $p_pr = 'pr-'; |
| 2264 | 2264 | <?php |
| 2265 | - } |
|
| 2266 | - ?> |
|
| 2265 | + } |
|
| 2266 | + ?> |
|
| 2267 | 2267 | |
| 2268 | 2268 | // margins |
| 2269 | 2269 | if ( $args['mt'] !== undefined && $args['mt'] !== '' ) { $classes.push( "mt-" + $args['mt'] ); $mt = $args['mt']; }else{$mt = null;} |
@@ -2447,12 +2447,12 @@ discard block |
||
| 2447 | 2447 | <?php |
| 2448 | 2448 | |
| 2449 | 2449 | |
| 2450 | - } |
|
| 2450 | + } |
|
| 2451 | 2451 | |
| 2452 | - if(method_exists($this,'block_global_js')){ |
|
| 2453 | - echo $this->block_global_js(); |
|
| 2454 | - } |
|
| 2455 | - ?> |
|
| 2452 | + if(method_exists($this,'block_global_js')){ |
|
| 2453 | + echo $this->block_global_js(); |
|
| 2454 | + } |
|
| 2455 | + ?> |
|
| 2456 | 2456 | |
| 2457 | 2457 | jQuery(function() { |
| 2458 | 2458 | |
@@ -2505,13 +2505,13 @@ discard block |
||
| 2505 | 2505 | icon: <?php echo $this->get_block_icon( $this->options['block-icon'] );?>,//'<?php echo isset( $this->options['block-icon'] ) ? esc_attr( $this->options['block-icon'] ) : 'shield-alt';?>', // Block icon from Dashicons → https://developer.wordpress.org/resource/dashicons/. |
| 2506 | 2506 | supports: { |
| 2507 | 2507 | <?php |
| 2508 | - if(!isset($this->options['block-supports']['renaming'])){ |
|
| 2509 | - $this->options['block-supports']['renaming'] = false; |
|
| 2510 | - } |
|
| 2511 | - if ( isset( $this->options['block-supports'] ) ) { |
|
| 2512 | - echo $this->array_to_attributes( $this->options['block-supports'] ); |
|
| 2513 | - } |
|
| 2514 | - ?> |
|
| 2508 | + if(!isset($this->options['block-supports']['renaming'])){ |
|
| 2509 | + $this->options['block-supports']['renaming'] = false; |
|
| 2510 | + } |
|
| 2511 | + if ( isset( $this->options['block-supports'] ) ) { |
|
| 2512 | + echo $this->array_to_attributes( $this->options['block-supports'] ); |
|
| 2513 | + } |
|
| 2514 | + ?> |
|
| 2515 | 2515 | }, |
| 2516 | 2516 | __experimentalLabel( attributes, { context } ) { |
| 2517 | 2517 | var visibility_html = attributes && attributes.visibility_conditions ? ' 👁' : ''; |
@@ -2521,174 +2521,174 @@ discard block |
||
| 2521 | 2521 | }, |
| 2522 | 2522 | category: '<?php echo isset( $this->options['block-category'] ) ? esc_attr( $this->options['block-category'] ) : 'common';?>', // Block category — Group blocks together based on common traits E.g. common, formatting, layout widgets, embed. |
| 2523 | 2523 | <?php if ( isset( $this->options['block-keywords'] ) ) { |
| 2524 | - echo "keywords : " . $this->options['block-keywords'] . ","; |
|
| 2525 | - } |
|
| 2526 | - |
|
| 2527 | - |
|
| 2528 | - // block hover preview. |
|
| 2529 | - $example_args = array(); |
|
| 2530 | - if(!empty($this->arguments)){ |
|
| 2531 | - foreach($this->arguments as $key => $a_args){ |
|
| 2532 | - if(isset($a_args['example'])){ |
|
| 2533 | - $example_args[$key] = $a_args['example']; |
|
| 2534 | - } |
|
| 2535 | - } |
|
| 2536 | - } |
|
| 2537 | - $viewport_width = isset($this->options['example']['viewportWidth']) ? 'viewportWidth: '.absint($this->options['example']['viewportWidth']) : ''; |
|
| 2538 | - $example_inner_blocks = !empty($this->options['example']['innerBlocks']) && is_array($this->options['example']['innerBlocks']) ? 'innerBlocks: ' . wp_json_encode($this->options['example']['innerBlocks']) : ''; |
|
| 2539 | - if( isset( $this->options['example'] ) && $this->options['example'] === false ){ |
|
| 2540 | - // no preview if set to false |
|
| 2541 | - }elseif( !empty( $example_args ) ){ |
|
| 2542 | - echo "example : {attributes:{".$this->array_to_attributes( $example_args )."},$viewport_width},"; |
|
| 2543 | - }elseif( !empty( $this->options['example'] ) ){ |
|
| 2544 | - unset($this->options['example']['viewportWidth']); |
|
| 2545 | - unset($this->options['example']['innerBlocks']); |
|
| 2546 | - $example_atts = $this->array_to_attributes( $this->options['example'] ); |
|
| 2547 | - $example_parts = array(); |
|
| 2548 | - if($example_atts){ |
|
| 2549 | - $example_parts[] = rtrim($example_atts,","); |
|
| 2550 | - } |
|
| 2551 | - if($viewport_width){ |
|
| 2552 | - $example_parts[] = $viewport_width; |
|
| 2553 | - } |
|
| 2554 | - if($example_inner_blocks){ |
|
| 2555 | - $example_parts[] = $example_inner_blocks; |
|
| 2556 | - } |
|
| 2557 | - if(!empty($example_parts)){ |
|
| 2558 | - echo "example : {".implode(',', $example_parts)."},"; |
|
| 2559 | - } |
|
| 2560 | - }else{ |
|
| 2561 | - echo 'example : {viewportWidth: 500},'; |
|
| 2562 | - } |
|
| 2563 | - |
|
| 2564 | - |
|
| 2565 | - |
|
| 2566 | - // limit to parent |
|
| 2567 | - if( !empty( $this->options['parent'] ) ){ |
|
| 2568 | - echo "parent : " . wp_json_encode( $this->options['parent'] ) . ","; |
|
| 2569 | - } |
|
| 2570 | - |
|
| 2571 | - // limit allowed blocks |
|
| 2572 | - if( !empty( $this->options['allowed-blocks'] ) ){ |
|
| 2573 | - echo "allowedBlocks : " . wp_json_encode( $this->options['allowed-blocks'] ) . ","; |
|
| 2574 | - } |
|
| 2575 | - |
|
| 2576 | - // maybe set no_wrap |
|
| 2577 | - $no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false; |
|
| 2578 | - if ( isset( $this->arguments['no_wrap'] ) && $this->arguments['no_wrap'] ) { |
|
| 2579 | - $no_wrap = true; |
|
| 2580 | - } |
|
| 2581 | - if ( $no_wrap ) { |
|
| 2582 | - $this->options['block-wrap'] = ''; |
|
| 2583 | - } |
|
| 2584 | - |
|
| 2585 | - // maybe load the drag/drop functions. |
|
| 2586 | - $img_drag_drop = false; |
|
| 2587 | - |
|
| 2588 | - $show_alignment = false; |
|
| 2589 | - // align feature |
|
| 2590 | - /*echo "supports: {"; |
|
| 2524 | + echo "keywords : " . $this->options['block-keywords'] . ","; |
|
| 2525 | + } |
|
| 2526 | + |
|
| 2527 | + |
|
| 2528 | + // block hover preview. |
|
| 2529 | + $example_args = array(); |
|
| 2530 | + if(!empty($this->arguments)){ |
|
| 2531 | + foreach($this->arguments as $key => $a_args){ |
|
| 2532 | + if(isset($a_args['example'])){ |
|
| 2533 | + $example_args[$key] = $a_args['example']; |
|
| 2534 | + } |
|
| 2535 | + } |
|
| 2536 | + } |
|
| 2537 | + $viewport_width = isset($this->options['example']['viewportWidth']) ? 'viewportWidth: '.absint($this->options['example']['viewportWidth']) : ''; |
|
| 2538 | + $example_inner_blocks = !empty($this->options['example']['innerBlocks']) && is_array($this->options['example']['innerBlocks']) ? 'innerBlocks: ' . wp_json_encode($this->options['example']['innerBlocks']) : ''; |
|
| 2539 | + if( isset( $this->options['example'] ) && $this->options['example'] === false ){ |
|
| 2540 | + // no preview if set to false |
|
| 2541 | + }elseif( !empty( $example_args ) ){ |
|
| 2542 | + echo "example : {attributes:{".$this->array_to_attributes( $example_args )."},$viewport_width},"; |
|
| 2543 | + }elseif( !empty( $this->options['example'] ) ){ |
|
| 2544 | + unset($this->options['example']['viewportWidth']); |
|
| 2545 | + unset($this->options['example']['innerBlocks']); |
|
| 2546 | + $example_atts = $this->array_to_attributes( $this->options['example'] ); |
|
| 2547 | + $example_parts = array(); |
|
| 2548 | + if($example_atts){ |
|
| 2549 | + $example_parts[] = rtrim($example_atts,","); |
|
| 2550 | + } |
|
| 2551 | + if($viewport_width){ |
|
| 2552 | + $example_parts[] = $viewport_width; |
|
| 2553 | + } |
|
| 2554 | + if($example_inner_blocks){ |
|
| 2555 | + $example_parts[] = $example_inner_blocks; |
|
| 2556 | + } |
|
| 2557 | + if(!empty($example_parts)){ |
|
| 2558 | + echo "example : {".implode(',', $example_parts)."},"; |
|
| 2559 | + } |
|
| 2560 | + }else{ |
|
| 2561 | + echo 'example : {viewportWidth: 500},'; |
|
| 2562 | + } |
|
| 2563 | + |
|
| 2564 | + |
|
| 2565 | + |
|
| 2566 | + // limit to parent |
|
| 2567 | + if( !empty( $this->options['parent'] ) ){ |
|
| 2568 | + echo "parent : " . wp_json_encode( $this->options['parent'] ) . ","; |
|
| 2569 | + } |
|
| 2570 | + |
|
| 2571 | + // limit allowed blocks |
|
| 2572 | + if( !empty( $this->options['allowed-blocks'] ) ){ |
|
| 2573 | + echo "allowedBlocks : " . wp_json_encode( $this->options['allowed-blocks'] ) . ","; |
|
| 2574 | + } |
|
| 2575 | + |
|
| 2576 | + // maybe set no_wrap |
|
| 2577 | + $no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false; |
|
| 2578 | + if ( isset( $this->arguments['no_wrap'] ) && $this->arguments['no_wrap'] ) { |
|
| 2579 | + $no_wrap = true; |
|
| 2580 | + } |
|
| 2581 | + if ( $no_wrap ) { |
|
| 2582 | + $this->options['block-wrap'] = ''; |
|
| 2583 | + } |
|
| 2584 | + |
|
| 2585 | + // maybe load the drag/drop functions. |
|
| 2586 | + $img_drag_drop = false; |
|
| 2587 | + |
|
| 2588 | + $show_alignment = false; |
|
| 2589 | + // align feature |
|
| 2590 | + /*echo "supports: {"; |
|
| 2591 | 2591 | echo " align: true,"; |
| 2592 | 2592 | echo " html: false"; |
| 2593 | 2593 | echo "},";*/ |
| 2594 | 2594 | |
| 2595 | 2595 | |
| 2596 | - echo "attributes : {"; |
|
| 2597 | - |
|
| 2598 | - if ( $show_advanced ) { |
|
| 2599 | - echo "show_advanced: {"; |
|
| 2600 | - echo " type: 'boolean',"; |
|
| 2601 | - echo " default: false,"; |
|
| 2602 | - echo "},"; |
|
| 2603 | - } |
|
| 2604 | - |
|
| 2605 | - // block wrap element |
|
| 2606 | - if ( ! empty( $this->options['block-wrap'] ) ) { //@todo we should validate this? |
|
| 2607 | - echo "block_wrap: {"; |
|
| 2608 | - echo " type: 'string',"; |
|
| 2609 | - echo " default: '" . esc_attr( $this->options['block-wrap'] ) . "',"; |
|
| 2610 | - echo "},"; |
|
| 2611 | - } |
|
| 2612 | - |
|
| 2613 | - |
|
| 2614 | - if ( ! empty( $this->arguments ) ) { |
|
| 2615 | - |
|
| 2616 | - foreach ( $this->arguments as $key => $args ) { |
|
| 2617 | - |
|
| 2618 | - if( $args['type'] == 'image' || $args['type'] == 'images' ){ |
|
| 2619 | - $img_drag_drop = true; |
|
| 2620 | - } |
|
| 2621 | - |
|
| 2622 | - // set if we should show alignment |
|
| 2623 | - if ( $key == 'alignment' ) { |
|
| 2624 | - $show_alignment = true; |
|
| 2625 | - } |
|
| 2626 | - |
|
| 2627 | - $extra = ''; |
|
| 2628 | - |
|
| 2629 | - if ( $args['type'] == 'notice' || $args['type'] == 'tab' ) { |
|
| 2630 | - continue; |
|
| 2631 | - } |
|
| 2632 | - elseif ( $args['type'] == 'checkbox' ) { |
|
| 2633 | - $type = 'boolean'; |
|
| 2634 | - $default = isset( $args['default'] ) && $args['default'] ? 'true' : 'false'; |
|
| 2635 | - } elseif ( $args['type'] == 'number' ) { |
|
| 2636 | - $type = 'number'; |
|
| 2637 | - $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''"; |
|
| 2638 | - } elseif ( $args['type'] == 'select' && ! empty( $args['multiple'] ) ) { |
|
| 2639 | - $type = 'array'; |
|
| 2640 | - if ( isset( $args['default'] ) && is_array( $args['default'] ) ) { |
|
| 2641 | - $default = ! empty( $args['default'] ) ? "['" . implode( "','", $args['default'] ) . "']" : "[]"; |
|
| 2642 | - } else { |
|
| 2643 | - $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''"; |
|
| 2644 | - } |
|
| 2645 | - } elseif ( $args['type'] == 'tagselect' ) { |
|
| 2646 | - $type = 'array'; |
|
| 2647 | - $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''"; |
|
| 2648 | - } elseif ( $args['type'] == 'multiselect' ) { |
|
| 2649 | - $type = 'array'; |
|
| 2650 | - $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''"; |
|
| 2651 | - } elseif ( $args['type'] == 'image_xy' ) { |
|
| 2652 | - $type = 'object'; |
|
| 2653 | - $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''"; |
|
| 2654 | - } elseif ( $args['type'] == 'image' ) { |
|
| 2655 | - $type = 'string'; |
|
| 2656 | - $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''"; |
|
| 2657 | - |
|
| 2658 | - // add a field for ID |
|
| 2659 | - // echo $key . "_id : {"; |
|
| 2660 | - // echo "type : 'number',"; |
|
| 2661 | - // echo "},"; |
|
| 2662 | - // echo $key . "_xy : {"; |
|
| 2663 | - // echo "type : 'object',"; |
|
| 2664 | - // echo "},"; |
|
| 2665 | - |
|
| 2666 | - } else { |
|
| 2667 | - $type = !empty($args['hidden_type']) ? esc_attr($args['hidden_type']) : 'string'; |
|
| 2668 | - $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''"; |
|
| 2669 | - |
|
| 2670 | - } |
|
| 2671 | - echo $key . " : {"; |
|
| 2672 | - echo "type : '$type',"; |
|
| 2673 | - echo "default : $default,"; |
|
| 2674 | - echo "},"; |
|
| 2675 | - } |
|
| 2676 | - } |
|
| 2677 | - |
|
| 2678 | - echo "content : {type : 'string',default: 'Please select the attributes in the block settings'},"; |
|
| 2679 | - echo "sd_shortcode : {type : 'string',default: ''},"; |
|
| 2680 | - |
|
| 2681 | - if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){ |
|
| 2682 | - echo "sd_shortcode_close : {type : 'string',default: ''},"; |
|
| 2683 | - } |
|
| 2684 | - |
|
| 2685 | - echo "className: { type: 'string', default: '' },"; |
|
| 2686 | - |
|
| 2687 | - echo "},"; |
|
| 2688 | - |
|
| 2689 | - |
|
| 2690 | - |
|
| 2691 | - ?> |
|
| 2596 | + echo "attributes : {"; |
|
| 2597 | + |
|
| 2598 | + if ( $show_advanced ) { |
|
| 2599 | + echo "show_advanced: {"; |
|
| 2600 | + echo " type: 'boolean',"; |
|
| 2601 | + echo " default: false,"; |
|
| 2602 | + echo "},"; |
|
| 2603 | + } |
|
| 2604 | + |
|
| 2605 | + // block wrap element |
|
| 2606 | + if ( ! empty( $this->options['block-wrap'] ) ) { //@todo we should validate this? |
|
| 2607 | + echo "block_wrap: {"; |
|
| 2608 | + echo " type: 'string',"; |
|
| 2609 | + echo " default: '" . esc_attr( $this->options['block-wrap'] ) . "',"; |
|
| 2610 | + echo "},"; |
|
| 2611 | + } |
|
| 2612 | + |
|
| 2613 | + |
|
| 2614 | + if ( ! empty( $this->arguments ) ) { |
|
| 2615 | + |
|
| 2616 | + foreach ( $this->arguments as $key => $args ) { |
|
| 2617 | + |
|
| 2618 | + if( $args['type'] == 'image' || $args['type'] == 'images' ){ |
|
| 2619 | + $img_drag_drop = true; |
|
| 2620 | + } |
|
| 2621 | + |
|
| 2622 | + // set if we should show alignment |
|
| 2623 | + if ( $key == 'alignment' ) { |
|
| 2624 | + $show_alignment = true; |
|
| 2625 | + } |
|
| 2626 | + |
|
| 2627 | + $extra = ''; |
|
| 2628 | + |
|
| 2629 | + if ( $args['type'] == 'notice' || $args['type'] == 'tab' ) { |
|
| 2630 | + continue; |
|
| 2631 | + } |
|
| 2632 | + elseif ( $args['type'] == 'checkbox' ) { |
|
| 2633 | + $type = 'boolean'; |
|
| 2634 | + $default = isset( $args['default'] ) && $args['default'] ? 'true' : 'false'; |
|
| 2635 | + } elseif ( $args['type'] == 'number' ) { |
|
| 2636 | + $type = 'number'; |
|
| 2637 | + $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''"; |
|
| 2638 | + } elseif ( $args['type'] == 'select' && ! empty( $args['multiple'] ) ) { |
|
| 2639 | + $type = 'array'; |
|
| 2640 | + if ( isset( $args['default'] ) && is_array( $args['default'] ) ) { |
|
| 2641 | + $default = ! empty( $args['default'] ) ? "['" . implode( "','", $args['default'] ) . "']" : "[]"; |
|
| 2642 | + } else { |
|
| 2643 | + $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''"; |
|
| 2644 | + } |
|
| 2645 | + } elseif ( $args['type'] == 'tagselect' ) { |
|
| 2646 | + $type = 'array'; |
|
| 2647 | + $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''"; |
|
| 2648 | + } elseif ( $args['type'] == 'multiselect' ) { |
|
| 2649 | + $type = 'array'; |
|
| 2650 | + $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''"; |
|
| 2651 | + } elseif ( $args['type'] == 'image_xy' ) { |
|
| 2652 | + $type = 'object'; |
|
| 2653 | + $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''"; |
|
| 2654 | + } elseif ( $args['type'] == 'image' ) { |
|
| 2655 | + $type = 'string'; |
|
| 2656 | + $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''"; |
|
| 2657 | + |
|
| 2658 | + // add a field for ID |
|
| 2659 | + // echo $key . "_id : {"; |
|
| 2660 | + // echo "type : 'number',"; |
|
| 2661 | + // echo "},"; |
|
| 2662 | + // echo $key . "_xy : {"; |
|
| 2663 | + // echo "type : 'object',"; |
|
| 2664 | + // echo "},"; |
|
| 2665 | + |
|
| 2666 | + } else { |
|
| 2667 | + $type = !empty($args['hidden_type']) ? esc_attr($args['hidden_type']) : 'string'; |
|
| 2668 | + $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''"; |
|
| 2669 | + |
|
| 2670 | + } |
|
| 2671 | + echo $key . " : {"; |
|
| 2672 | + echo "type : '$type',"; |
|
| 2673 | + echo "default : $default,"; |
|
| 2674 | + echo "},"; |
|
| 2675 | + } |
|
| 2676 | + } |
|
| 2677 | + |
|
| 2678 | + echo "content : {type : 'string',default: 'Please select the attributes in the block settings'},"; |
|
| 2679 | + echo "sd_shortcode : {type : 'string',default: ''},"; |
|
| 2680 | + |
|
| 2681 | + if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){ |
|
| 2682 | + echo "sd_shortcode_close : {type : 'string',default: ''},"; |
|
| 2683 | + } |
|
| 2684 | + |
|
| 2685 | + echo "className: { type: 'string', default: '' },"; |
|
| 2686 | + |
|
| 2687 | + echo "},"; |
|
| 2688 | + |
|
| 2689 | + |
|
| 2690 | + |
|
| 2691 | + ?> |
|
| 2692 | 2692 | |
| 2693 | 2693 | // The "edit" property must be a valid function. |
| 2694 | 2694 | edit: function (props) { |
@@ -2763,10 +2763,10 @@ discard block |
||
| 2763 | 2763 | } |
| 2764 | 2764 | |
| 2765 | 2765 | <?php |
| 2766 | - if(!empty($this->options['block-edit-raw'])) { |
|
| 2767 | - echo $this->options['block-edit-raw']; // strings have to be in single quotes, may cause issues |
|
| 2768 | - }else{ |
|
| 2769 | - ?> |
|
| 2766 | + if(!empty($this->options['block-edit-raw'])) { |
|
| 2767 | + echo $this->options['block-edit-raw']; // strings have to be in single quotes, may cause issues |
|
| 2768 | + }else{ |
|
| 2769 | + ?> |
|
| 2770 | 2770 | |
| 2771 | 2771 | function hasSelectedInnerBlock(props) { |
| 2772 | 2772 | const select = wp.data.select('core/editor'); |
@@ -2788,9 +2788,9 @@ discard block |
||
| 2788 | 2788 | |
| 2789 | 2789 | var $value = ''; |
| 2790 | 2790 | <?php |
| 2791 | - // if we have a post_type and a category then link them |
|
| 2792 | - if( isset($this->arguments['post_type']) && isset($this->arguments['category']) && !empty($this->arguments['category']['post_type_linked']) ){ |
|
| 2793 | - ?> |
|
| 2791 | + // if we have a post_type and a category then link them |
|
| 2792 | + if( isset($this->arguments['post_type']) && isset($this->arguments['category']) && !empty($this->arguments['category']['post_type_linked']) ){ |
|
| 2793 | + ?> |
|
| 2794 | 2794 | if(typeof(prev_attributes[props.clientId]) != 'undefined' && selectedBlock && selectedBlock.clientId === props.clientId){ |
| 2795 | 2795 | $pt = props.attributes.post_type; |
| 2796 | 2796 | if(post_type_rest_slugs.length){ |
@@ -2803,11 +2803,11 @@ discard block |
||
| 2803 | 2803 | term_query_type = $pt; |
| 2804 | 2804 | } |
| 2805 | 2805 | <?php |
| 2806 | - $cat_path = ''; |
|
| 2807 | - if ( ! empty( $this->arguments['post_type']['onchange_rest']['path'] ) ) { |
|
| 2808 | - $cat_path = esc_js( strip_tags( $this->arguments['post_type']['onchange_rest']['path'] ) ); |
|
| 2809 | - $cat_path = str_replace( array( '"', ''' ), array( '"', "'" ), $cat_path ); |
|
| 2810 | - } |
|
| 2806 | + $cat_path = ''; |
|
| 2807 | + if ( ! empty( $this->arguments['post_type']['onchange_rest']['path'] ) ) { |
|
| 2808 | + $cat_path = esc_js( strip_tags( $this->arguments['post_type']['onchange_rest']['path'] ) ); |
|
| 2809 | + $cat_path = str_replace( array( '"', ''' ), array( '"', "'" ), $cat_path ); |
|
| 2810 | + } |
|
| 2811 | 2811 | ?> |
| 2812 | 2812 | /* taxonomies */ |
| 2813 | 2813 | if($value && 'post_type' in prev_attributes[props.clientId] && 'category' in prev_attributes[props.clientId] && run){ |
@@ -2899,7 +2899,7 @@ discard block |
||
| 2899 | 2899 | <?php |
| 2900 | 2900 | $current_screen = function_exists('get_current_screen') ? get_current_screen() : ''; |
| 2901 | 2901 | if(!empty($current_screen->base) && $current_screen->base==='widgets'){ |
| 2902 | - echo 'const { deviceType } = "";'; |
|
| 2902 | + echo 'const { deviceType } = "";'; |
|
| 2903 | 2903 | }else{ |
| 2904 | 2904 | ?> |
| 2905 | 2905 | /** Get device type const. */ |
@@ -2963,8 +2963,8 @@ discard block |
||
| 2963 | 2963 | 'attributes': props.attributes, |
| 2964 | 2964 | 'block_parent_name': parentBlocks.length ? parentBlocks[parentBlocks.length - 1].name : '', |
| 2965 | 2965 | 'post_id': <?php global $post; if ( isset( $post->ID ) ) { |
| 2966 | - echo $post->ID; |
|
| 2967 | - }else{echo '0';}?>, |
|
| 2966 | + echo $post->ID; |
|
| 2967 | + }else{echo '0';}?>, |
|
| 2968 | 2968 | '_ajax_nonce': '<?php echo wp_create_nonce( 'super_duper_output_shortcode' );?>' |
| 2969 | 2969 | }; |
| 2970 | 2970 | |
@@ -2978,20 +2978,20 @@ discard block |
||
| 2978 | 2978 | } |
| 2979 | 2979 | |
| 2980 | 2980 | <?php |
| 2981 | - if(!empty($this->options['nested-block'])){ |
|
| 2982 | - ?> |
|
| 2981 | + if(!empty($this->options['nested-block'])){ |
|
| 2982 | + ?> |
|
| 2983 | 2983 | // props.setAttributes({content: env}); |
| 2984 | 2984 | is_fetching = false; |
| 2985 | 2985 | prev_attributes[props.clientId] = props.attributes; |
| 2986 | 2986 | <?php |
| 2987 | - }else{ |
|
| 2988 | - ?> |
|
| 2987 | + }else{ |
|
| 2988 | + ?> |
|
| 2989 | 2989 | props.setAttributes({content: env}); |
| 2990 | 2990 | is_fetching = false; |
| 2991 | 2991 | prev_attributes[props.clientId] = props.attributes; |
| 2992 | 2992 | <?php |
| 2993 | - } |
|
| 2994 | - ?> |
|
| 2993 | + } |
|
| 2994 | + ?> |
|
| 2995 | 2995 | |
| 2996 | 2996 | |
| 2997 | 2997 | // if AUI is active call the js init function |
@@ -3010,31 +3010,31 @@ discard block |
||
| 3010 | 3010 | } |
| 3011 | 3011 | |
| 3012 | 3012 | <?php |
| 3013 | - if(!empty($this->options['block-edit-js'])) { |
|
| 3014 | - echo $this->options['block-edit-js'] ; // strings have to be in single quotes, may cause issues |
|
| 3015 | - } |
|
| 3013 | + if(!empty($this->options['block-edit-js'])) { |
|
| 3014 | + echo $this->options['block-edit-js'] ; // strings have to be in single quotes, may cause issues |
|
| 3015 | + } |
|
| 3016 | 3016 | |
| 3017 | 3017 | |
| 3018 | 3018 | |
| 3019 | 3019 | |
| 3020 | - if(empty($this->options['block-save-return'])){ |
|
| 3021 | - ?> |
|
| 3020 | + if(empty($this->options['block-save-return'])){ |
|
| 3021 | + ?> |
|
| 3022 | 3022 | /////////////////////////////////////////////////////////////////////// |
| 3023 | 3023 | |
| 3024 | 3024 | // build the shortcode. |
| 3025 | 3025 | shortcode = "[<?php echo $this->options['base_id'];?>"; |
| 3026 | 3026 | <?php |
| 3027 | 3027 | |
| 3028 | - if(! empty( $this->arguments )){ |
|
| 3028 | + if(! empty( $this->arguments )){ |
|
| 3029 | 3029 | |
| 3030 | - foreach($this->arguments as $key => $args){ |
|
| 3031 | - // if($args['type']=='tabs'){continue;} |
|
| 3030 | + foreach($this->arguments as $key => $args){ |
|
| 3031 | + // if($args['type']=='tabs'){continue;} |
|
| 3032 | 3032 | |
| 3033 | - // don't add metadata arguments |
|
| 3034 | - if (substr($key, 0, 9 ) === 'metadata_') { |
|
| 3035 | - continue; |
|
| 3036 | - } |
|
| 3037 | - ?> |
|
| 3033 | + // don't add metadata arguments |
|
| 3034 | + if (substr($key, 0, 9 ) === 'metadata_') { |
|
| 3035 | + continue; |
|
| 3036 | + } |
|
| 3037 | + ?> |
|
| 3038 | 3038 | if (props.attributes.hasOwnProperty("<?php echo esc_attr( $key );?>")) { |
| 3039 | 3039 | if ('<?php echo esc_attr( $key );?>' == 'html') { |
| 3040 | 3040 | } else if ('<?php echo esc_attr( $args['type'] );?>' == 'image_xy') { |
@@ -3045,10 +3045,10 @@ discard block |
||
| 3045 | 3045 | } |
| 3046 | 3046 | } |
| 3047 | 3047 | <?php |
| 3048 | - } |
|
| 3049 | - } |
|
| 3048 | + } |
|
| 3049 | + } |
|
| 3050 | 3050 | |
| 3051 | - ?> |
|
| 3051 | + ?> |
|
| 3052 | 3052 | shortcode += "]"; |
| 3053 | 3053 | |
| 3054 | 3054 | if(shortcode){ |
@@ -3060,17 +3060,17 @@ discard block |
||
| 3060 | 3060 | |
| 3061 | 3061 | |
| 3062 | 3062 | <?php |
| 3063 | - if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){ |
|
| 3064 | - echo "props.setAttributes({sd_shortcode_close: '[/".esc_attr( $this->options['base_id'] )."]'});"; |
|
| 3065 | - } |
|
| 3066 | - ?> |
|
| 3063 | + if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){ |
|
| 3064 | + echo "props.setAttributes({sd_shortcode_close: '[/".esc_attr( $this->options['base_id'] )."]'});"; |
|
| 3065 | + } |
|
| 3066 | + ?> |
|
| 3067 | 3067 | } |
| 3068 | 3068 | |
| 3069 | 3069 | |
| 3070 | 3070 | /////////////////////////////////////////////////////////////////////// |
| 3071 | 3071 | <?php |
| 3072 | - } // end nested block check |
|
| 3073 | - ?> |
|
| 3072 | + } // end nested block check |
|
| 3073 | + ?> |
|
| 3074 | 3074 | |
| 3075 | 3075 | return [ |
| 3076 | 3076 | |
@@ -3094,10 +3094,10 @@ discard block |
||
| 3094 | 3094 | |
| 3095 | 3095 | <?php |
| 3096 | 3096 | |
| 3097 | - if(! empty( $this->arguments )){ |
|
| 3097 | + if(! empty( $this->arguments )){ |
|
| 3098 | 3098 | |
| 3099 | - if ( $show_advanced ) { |
|
| 3100 | - ?> |
|
| 3099 | + if ( $show_advanced ) { |
|
| 3100 | + ?> |
|
| 3101 | 3101 | el('div', { |
| 3102 | 3102 | style: {'padding-left': '16px','padding-right': '16px'} |
| 3103 | 3103 | }, |
@@ -3114,119 +3114,119 @@ discard block |
||
| 3114 | 3114 | ) |
| 3115 | 3115 | , |
| 3116 | 3116 | <?php |
| 3117 | - } |
|
| 3118 | - |
|
| 3119 | - $arguments = $this->group_arguments( $this->arguments ); |
|
| 3120 | - $block_group_tabs = ! empty( $this->options['block_group_tabs'] ) ? $this->group_block_tabs( $this->options['block_group_tabs'], $arguments ) : array(); |
|
| 3121 | - |
|
| 3122 | - // Do we have sections? |
|
| 3123 | - $has_sections = $arguments == $this->arguments ? false : true; |
|
| 3124 | - |
|
| 3125 | - if($has_sections){ |
|
| 3126 | - $panel_count = 0; |
|
| 3127 | - $open_tab = ''; |
|
| 3128 | - |
|
| 3129 | - $open_tab_groups = array(); |
|
| 3130 | - $used_tabs = array(); |
|
| 3131 | - |
|
| 3132 | - foreach ( $arguments as $key => $args ) { |
|
| 3133 | - $close_tab = false; |
|
| 3134 | - $close_tabs = false; |
|
| 3135 | - |
|
| 3136 | - if ( ! empty( $block_group_tabs ) ) { |
|
| 3137 | - foreach ( $block_group_tabs as $tab_name => $tab_args ) { |
|
| 3138 | - if ( in_array( $key, $tab_args['groups'] ) ) { |
|
| 3139 | - $open_tab_groups[] = $key; |
|
| 3140 | - |
|
| 3141 | - if ( $open_tab != $tab_name ) { |
|
| 3142 | - $tab_args['tab']['tabs_open'] = $open_tab == '' ? true : false; |
|
| 3143 | - $tab_args['tab']['open'] = true; |
|
| 3144 | - |
|
| 3145 | - $this->block_tab_start( '', $tab_args ); |
|
| 3146 | - $open_tab = $tab_name; |
|
| 3147 | - $used_tabs[] = $tab_name; |
|
| 3148 | - } |
|
| 3149 | - |
|
| 3150 | - if ( $open_tab_groups == $tab_args['groups'] ) { |
|
| 3151 | - $close_tab = true; |
|
| 3152 | - $open_tab_groups = array(); |
|
| 3153 | - |
|
| 3154 | - if ( $used_tabs == array_keys( $block_group_tabs ) ) { |
|
| 3155 | - $close_tabs = true; |
|
| 3156 | - } |
|
| 3157 | - } |
|
| 3158 | - } |
|
| 3159 | - } |
|
| 3160 | - } |
|
| 3161 | - ?> |
|
| 3117 | + } |
|
| 3118 | + |
|
| 3119 | + $arguments = $this->group_arguments( $this->arguments ); |
|
| 3120 | + $block_group_tabs = ! empty( $this->options['block_group_tabs'] ) ? $this->group_block_tabs( $this->options['block_group_tabs'], $arguments ) : array(); |
|
| 3121 | + |
|
| 3122 | + // Do we have sections? |
|
| 3123 | + $has_sections = $arguments == $this->arguments ? false : true; |
|
| 3124 | + |
|
| 3125 | + if($has_sections){ |
|
| 3126 | + $panel_count = 0; |
|
| 3127 | + $open_tab = ''; |
|
| 3128 | + |
|
| 3129 | + $open_tab_groups = array(); |
|
| 3130 | + $used_tabs = array(); |
|
| 3131 | + |
|
| 3132 | + foreach ( $arguments as $key => $args ) { |
|
| 3133 | + $close_tab = false; |
|
| 3134 | + $close_tabs = false; |
|
| 3135 | + |
|
| 3136 | + if ( ! empty( $block_group_tabs ) ) { |
|
| 3137 | + foreach ( $block_group_tabs as $tab_name => $tab_args ) { |
|
| 3138 | + if ( in_array( $key, $tab_args['groups'] ) ) { |
|
| 3139 | + $open_tab_groups[] = $key; |
|
| 3140 | + |
|
| 3141 | + if ( $open_tab != $tab_name ) { |
|
| 3142 | + $tab_args['tab']['tabs_open'] = $open_tab == '' ? true : false; |
|
| 3143 | + $tab_args['tab']['open'] = true; |
|
| 3144 | + |
|
| 3145 | + $this->block_tab_start( '', $tab_args ); |
|
| 3146 | + $open_tab = $tab_name; |
|
| 3147 | + $used_tabs[] = $tab_name; |
|
| 3148 | + } |
|
| 3149 | + |
|
| 3150 | + if ( $open_tab_groups == $tab_args['groups'] ) { |
|
| 3151 | + $close_tab = true; |
|
| 3152 | + $open_tab_groups = array(); |
|
| 3153 | + |
|
| 3154 | + if ( $used_tabs == array_keys( $block_group_tabs ) ) { |
|
| 3155 | + $close_tabs = true; |
|
| 3156 | + } |
|
| 3157 | + } |
|
| 3158 | + } |
|
| 3159 | + } |
|
| 3160 | + } |
|
| 3161 | + ?> |
|
| 3162 | 3162 | el(wp.components.PanelBody, { |
| 3163 | 3163 | title: '<?php esc_attr_e( $key ); ?>', |
| 3164 | 3164 | initialOpen: <?php if ( $panel_count ) { |
| 3165 | - echo "false"; |
|
| 3166 | - } else { |
|
| 3167 | - echo "true"; |
|
| 3168 | - }?> |
|
| 3165 | + echo "false"; |
|
| 3166 | + } else { |
|
| 3167 | + echo "true"; |
|
| 3168 | + }?> |
|
| 3169 | 3169 | }, |
| 3170 | 3170 | <?php |
| 3171 | - foreach ( $args as $k => $a ) { |
|
| 3172 | - $this->block_tab_start( $k, $a ); |
|
| 3173 | - $this->block_row_start( $k, $a ); |
|
| 3174 | - $this->build_block_arguments( $k, $a ); |
|
| 3175 | - $this->block_row_end( $k, $a ); |
|
| 3176 | - $this->block_tab_end( $k, $a ); |
|
| 3177 | - } |
|
| 3178 | - ?> |
|
| 3171 | + foreach ( $args as $k => $a ) { |
|
| 3172 | + $this->block_tab_start( $k, $a ); |
|
| 3173 | + $this->block_row_start( $k, $a ); |
|
| 3174 | + $this->build_block_arguments( $k, $a ); |
|
| 3175 | + $this->block_row_end( $k, $a ); |
|
| 3176 | + $this->block_tab_end( $k, $a ); |
|
| 3177 | + } |
|
| 3178 | + ?> |
|
| 3179 | 3179 | ), |
| 3180 | 3180 | <?php |
| 3181 | - $panel_count ++; |
|
| 3181 | + $panel_count ++; |
|
| 3182 | 3182 | |
| 3183 | - if($close_tab || $close_tabs){ |
|
| 3184 | - $tab_args = array( |
|
| 3185 | - 'tab' => array( |
|
| 3186 | - 'tabs_close' => $close_tabs, |
|
| 3187 | - 'close' => true, |
|
| 3188 | - ) |
|
| 3183 | + if($close_tab || $close_tabs){ |
|
| 3184 | + $tab_args = array( |
|
| 3185 | + 'tab' => array( |
|
| 3186 | + 'tabs_close' => $close_tabs, |
|
| 3187 | + 'close' => true, |
|
| 3188 | + ) |
|
| 3189 | 3189 | |
| 3190 | - ); |
|
| 3191 | - $this->block_tab_end( '', $tab_args ); |
|
| 3190 | + ); |
|
| 3191 | + $this->block_tab_end( '', $tab_args ); |
|
| 3192 | 3192 | // echo '###close'; print_r($tab_args); |
| 3193 | - $panel_count = 0; |
|
| 3194 | - } |
|
| 3193 | + $panel_count = 0; |
|
| 3194 | + } |
|
| 3195 | 3195 | // |
| 3196 | 3196 | |
| 3197 | - } |
|
| 3198 | - }else { |
|
| 3199 | - ?> |
|
| 3197 | + } |
|
| 3198 | + }else { |
|
| 3199 | + ?> |
|
| 3200 | 3200 | el(wp.components.PanelBody, { |
| 3201 | 3201 | title: '<?php esc_attr_e( "Settings", 'ayecode-connect' ); ?>', |
| 3202 | 3202 | initialOpen: true |
| 3203 | 3203 | }, |
| 3204 | 3204 | <?php |
| 3205 | - foreach ( $this->arguments as $key => $args ) { |
|
| 3206 | - $this->block_row_start( $key, $args ); |
|
| 3207 | - $this->build_block_arguments( $key, $args ); |
|
| 3208 | - $this->block_row_end( $key, $args ); |
|
| 3209 | - } |
|
| 3210 | - ?> |
|
| 3205 | + foreach ( $this->arguments as $key => $args ) { |
|
| 3206 | + $this->block_row_start( $key, $args ); |
|
| 3207 | + $this->build_block_arguments( $key, $args ); |
|
| 3208 | + $this->block_row_end( $key, $args ); |
|
| 3209 | + } |
|
| 3210 | + ?> |
|
| 3211 | 3211 | ), |
| 3212 | 3212 | <?php |
| 3213 | - } |
|
| 3213 | + } |
|
| 3214 | 3214 | |
| 3215 | - } |
|
| 3216 | - ?> |
|
| 3215 | + } |
|
| 3216 | + ?> |
|
| 3217 | 3217 | |
| 3218 | 3218 | ), |
| 3219 | 3219 | |
| 3220 | 3220 | <?php |
| 3221 | - // If the user sets block-output array then build it |
|
| 3222 | - if ( ! empty( $this->options['block-output'] ) ) { |
|
| 3223 | - $this->block_element( $this->options['block-output'] ); |
|
| 3224 | - }elseif(!empty($this->options['block-edit-return'])){ |
|
| 3225 | - echo $this->options['block-edit-return']; |
|
| 3226 | - }else{ |
|
| 3227 | - // if no block-output is set then we try and get the shortcode html output via ajax. |
|
| 3228 | - $block_edit_wrap_tag = !empty($this->options['block_edit_wrap_tag']) ? esc_attr($this->options['block_edit_wrap_tag']) : 'div'; |
|
| 3229 | - ?> |
|
| 3221 | + // If the user sets block-output array then build it |
|
| 3222 | + if ( ! empty( $this->options['block-output'] ) ) { |
|
| 3223 | + $this->block_element( $this->options['block-output'] ); |
|
| 3224 | + }elseif(!empty($this->options['block-edit-return'])){ |
|
| 3225 | + echo $this->options['block-edit-return']; |
|
| 3226 | + }else{ |
|
| 3227 | + // if no block-output is set then we try and get the shortcode html output via ajax. |
|
| 3228 | + $block_edit_wrap_tag = !empty($this->options['block_edit_wrap_tag']) ? esc_attr($this->options['block_edit_wrap_tag']) : 'div'; |
|
| 3229 | + ?> |
|
| 3230 | 3230 | el('<?php echo esc_attr($block_edit_wrap_tag); ?>', wp.blockEditor.useBlockProps({ |
| 3231 | 3231 | dangerouslySetInnerHTML: {__html: onChangeContent()}, |
| 3232 | 3232 | className: props.className, |
@@ -3234,13 +3234,13 @@ discard block |
||
| 3234 | 3234 | style: {'minHeight': '30px'} |
| 3235 | 3235 | })) |
| 3236 | 3236 | <?php |
| 3237 | - } |
|
| 3238 | - ?> |
|
| 3237 | + } |
|
| 3238 | + ?> |
|
| 3239 | 3239 | ]; // end return |
| 3240 | 3240 | |
| 3241 | 3241 | <?php |
| 3242 | - } // end block-edit-raw else |
|
| 3243 | - ?> |
|
| 3242 | + } // end block-edit-raw else |
|
| 3243 | + ?> |
|
| 3244 | 3244 | }, |
| 3245 | 3245 | |
| 3246 | 3246 | // The "save" property must be specified and must be a valid function. |
@@ -3254,16 +3254,16 @@ discard block |
||
| 3254 | 3254 | $html = ''; |
| 3255 | 3255 | <?php |
| 3256 | 3256 | |
| 3257 | - if(! empty( $this->arguments )){ |
|
| 3257 | + if(! empty( $this->arguments )){ |
|
| 3258 | 3258 | |
| 3259 | - foreach($this->arguments as $key => $args){ |
|
| 3260 | - // if($args['type']=='tabs'){continue;} |
|
| 3259 | + foreach($this->arguments as $key => $args){ |
|
| 3260 | + // if($args['type']=='tabs'){continue;} |
|
| 3261 | 3261 | |
| 3262 | - // don't add metadata arguments |
|
| 3263 | - if (substr($key, 0, 9 ) === 'metadata_') { |
|
| 3264 | - continue; |
|
| 3265 | - } |
|
| 3266 | - ?> |
|
| 3262 | + // don't add metadata arguments |
|
| 3263 | + if (substr($key, 0, 9 ) === 'metadata_') { |
|
| 3264 | + continue; |
|
| 3265 | + } |
|
| 3266 | + ?> |
|
| 3267 | 3267 | if (attr.hasOwnProperty("<?php echo esc_attr( $key );?>")) { |
| 3268 | 3268 | if ('<?php echo esc_attr( $key );?>' == 'html') { |
| 3269 | 3269 | $html = attr.<?php echo esc_attr( $key );?>; |
@@ -3274,10 +3274,10 @@ discard block |
||
| 3274 | 3274 | } |
| 3275 | 3275 | } |
| 3276 | 3276 | <?php |
| 3277 | - } |
|
| 3278 | - } |
|
| 3277 | + } |
|
| 3278 | + } |
|
| 3279 | 3279 | |
| 3280 | - ?> |
|
| 3280 | + ?> |
|
| 3281 | 3281 | content += "]"; |
| 3282 | 3282 | content = ''; |
| 3283 | 3283 | |
@@ -3287,7 +3287,7 @@ discard block |
||
| 3287 | 3287 | // $html = 'el( InnerBlocks.Content )'; |
| 3288 | 3288 | // <?php |
| 3289 | 3289 | // } |
| 3290 | - ?> |
|
| 3290 | + ?> |
|
| 3291 | 3291 | // if has html element |
| 3292 | 3292 | if ($html) { |
| 3293 | 3293 | //content += $html + "[/<?php echo $this->options['base_id'];?>]"; |
@@ -3320,12 +3320,12 @@ discard block |
||
| 3320 | 3320 | // <x?php |
| 3321 | 3321 | // }else |
| 3322 | 3322 | |
| 3323 | - if(!empty($this->options['block-output'])){ |
|
| 3323 | + if(!empty($this->options['block-output'])){ |
|
| 3324 | 3324 | // echo "return"; |
| 3325 | 3325 | // $this->block_element( $this->options['block-output'], true ); |
| 3326 | 3326 | // echo ";"; |
| 3327 | 3327 | |
| 3328 | - ?> |
|
| 3328 | + ?> |
|
| 3329 | 3329 | return el( |
| 3330 | 3330 | '', |
| 3331 | 3331 | {}, |
@@ -3335,10 +3335,10 @@ discard block |
||
| 3335 | 3335 | ); |
| 3336 | 3336 | <?php |
| 3337 | 3337 | |
| 3338 | - }elseif(!empty($this->options['block-save-return'])){ |
|
| 3339 | - echo 'return ' . $this->options['block-save-return']; |
|
| 3340 | - }elseif(!empty($this->options['nested-block'])){ |
|
| 3341 | - ?> |
|
| 3338 | + }elseif(!empty($this->options['block-save-return'])){ |
|
| 3339 | + echo 'return ' . $this->options['block-save-return']; |
|
| 3340 | + }elseif(!empty($this->options['nested-block'])){ |
|
| 3341 | + ?> |
|
| 3342 | 3342 | return el( |
| 3343 | 3343 | '', |
| 3344 | 3344 | {}, |
@@ -3347,22 +3347,22 @@ discard block |
||
| 3347 | 3347 | // el('', {dangerouslySetInnerHTML: {__html: "[/<?php echo $this->options['base_id'];?>]"}}) |
| 3348 | 3348 | ); |
| 3349 | 3349 | <?php |
| 3350 | - }elseif(!empty( $this->options['block-save-return'] ) ){ |
|
| 3351 | - echo "return ". $this->options['block-edit-return'].";"; |
|
| 3352 | - }elseif(isset( $this->options['block-wrap'] ) && $this->options['block-wrap'] == ''){ |
|
| 3353 | - ?> |
|
| 3350 | + }elseif(!empty( $this->options['block-save-return'] ) ){ |
|
| 3351 | + echo "return ". $this->options['block-edit-return'].";"; |
|
| 3352 | + }elseif(isset( $this->options['block-wrap'] ) && $this->options['block-wrap'] == ''){ |
|
| 3353 | + ?> |
|
| 3354 | 3354 | return content; |
| 3355 | 3355 | <?php |
| 3356 | - }else{ |
|
| 3357 | - ?> |
|
| 3356 | + }else{ |
|
| 3357 | + ?> |
|
| 3358 | 3358 | var block_wrap = 'div'; |
| 3359 | 3359 | if (attr.hasOwnProperty("block_wrap")) { |
| 3360 | 3360 | block_wrap = attr.block_wrap; |
| 3361 | 3361 | } |
| 3362 | 3362 | return el(block_wrap, wp.blockEditor.useBlockProps.save( {dangerouslySetInnerHTML: {__html: content}, className: align} )); |
| 3363 | 3363 | <?php |
| 3364 | - } |
|
| 3365 | - ?> |
|
| 3364 | + } |
|
| 3365 | + ?> |
|
| 3366 | 3366 | |
| 3367 | 3367 | |
| 3368 | 3368 | } |
@@ -3376,43 +3376,43 @@ discard block |
||
| 3376 | 3376 | }); |
| 3377 | 3377 | </script> |
| 3378 | 3378 | <?php |
| 3379 | - $output = ob_get_clean(); |
|
| 3379 | + $output = ob_get_clean(); |
|
| 3380 | 3380 | |
| 3381 | - /* |
|
| 3381 | + /* |
|
| 3382 | 3382 | * We only add the <script> tags for code highlighting, so we strip them from the output. |
| 3383 | 3383 | */ |
| 3384 | 3384 | |
| 3385 | - return str_replace( array( |
|
| 3386 | - '<script>', |
|
| 3387 | - '</script>' |
|
| 3388 | - ), '', $output ); |
|
| 3389 | - } |
|
| 3385 | + return str_replace( array( |
|
| 3386 | + '<script>', |
|
| 3387 | + '</script>' |
|
| 3388 | + ), '', $output ); |
|
| 3389 | + } |
|
| 3390 | 3390 | |
| 3391 | 3391 | |
| 3392 | 3392 | |
| 3393 | - public function block_row_start($key, $args){ |
|
| 3393 | + public function block_row_start($key, $args){ |
|
| 3394 | 3394 | |
| 3395 | - // check for row |
|
| 3396 | - if(!empty($args['row'])){ |
|
| 3395 | + // check for row |
|
| 3396 | + if(!empty($args['row'])){ |
|
| 3397 | 3397 | |
| 3398 | - if(!empty($args['row']['open'])){ |
|
| 3398 | + if(!empty($args['row']['open'])){ |
|
| 3399 | 3399 | |
| 3400 | - // element require |
|
| 3401 | - $element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : ""; |
|
| 3402 | - $device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : ''; |
|
| 3403 | - $device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : ''; |
|
| 3404 | - $device_type_icon = ''; |
|
| 3405 | - if($device_type=='Desktop'){ |
|
| 3406 | - $device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>'; |
|
| 3407 | - }elseif($device_type=='Tablet'){ |
|
| 3408 | - $device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>'; |
|
| 3409 | - }elseif($device_type=='Mobile'){ |
|
| 3410 | - $device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>'; |
|
| 3411 | - } |
|
| 3412 | - echo $element_require; |
|
| 3413 | - echo $device_type_require; |
|
| 3400 | + // element require |
|
| 3401 | + $element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : ""; |
|
| 3402 | + $device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : ''; |
|
| 3403 | + $device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : ''; |
|
| 3404 | + $device_type_icon = ''; |
|
| 3405 | + if($device_type=='Desktop'){ |
|
| 3406 | + $device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>'; |
|
| 3407 | + }elseif($device_type=='Tablet'){ |
|
| 3408 | + $device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>'; |
|
| 3409 | + }elseif($device_type=='Mobile'){ |
|
| 3410 | + $device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>'; |
|
| 3411 | + } |
|
| 3412 | + echo $element_require; |
|
| 3413 | + echo $device_type_require; |
|
| 3414 | 3414 | |
| 3415 | - if(false){?><script><?php }?> |
|
| 3415 | + if(false){?><script><?php }?> |
|
| 3416 | 3416 | el('div', { |
| 3417 | 3417 | className: 'bsui components-base-control', |
| 3418 | 3418 | }, |
@@ -3425,8 +3425,8 @@ discard block |
||
| 3425 | 3425 | <?php if($device_type_icon){ ?> |
| 3426 | 3426 | deviceType == '<?php echo $device_type;?>' && el('span',{dangerouslySetInnerHTML: {__html: '<?php echo $device_type_icon; ?>'},title: deviceType + ": Set preview mode to change",style: {right:"0",position:"absolute",color:"var(--wp-admin-theme-color)"}}) |
| 3427 | 3427 | <?php |
| 3428 | - } |
|
| 3429 | - ?> |
|
| 3428 | + } |
|
| 3429 | + ?> |
|
| 3430 | 3430 | |
| 3431 | 3431 | |
| 3432 | 3432 | ), |
@@ -3450,51 +3450,51 @@ discard block |
||
| 3450 | 3450 | }, |
| 3451 | 3451 | |
| 3452 | 3452 | <?php |
| 3453 | - if(false){?></script><?php } |
|
| 3454 | - }elseif(!empty($args['row']['close'])){ |
|
| 3455 | - if(false){?><script><?php }?> |
|
| 3453 | + if(false){?></script><?php } |
|
| 3454 | + }elseif(!empty($args['row']['close'])){ |
|
| 3455 | + if(false){?><script><?php }?> |
|
| 3456 | 3456 | el( |
| 3457 | 3457 | 'div', |
| 3458 | 3458 | { |
| 3459 | 3459 | className: 'col pl-0 ps-0', |
| 3460 | 3460 | }, |
| 3461 | 3461 | <?php |
| 3462 | - if(false){?></script><?php } |
|
| 3463 | - }else{ |
|
| 3464 | - if(false){?><script><?php }?> |
|
| 3462 | + if(false){?></script><?php } |
|
| 3463 | + }else{ |
|
| 3464 | + if(false){?><script><?php }?> |
|
| 3465 | 3465 | el( |
| 3466 | 3466 | 'div', |
| 3467 | 3467 | { |
| 3468 | 3468 | className: 'col pl-0 ps-0 pr-2 pe-2', |
| 3469 | 3469 | }, |
| 3470 | 3470 | <?php |
| 3471 | - if(false){?></script><?php } |
|
| 3472 | - } |
|
| 3471 | + if(false){?></script><?php } |
|
| 3472 | + } |
|
| 3473 | 3473 | |
| 3474 | - } |
|
| 3474 | + } |
|
| 3475 | 3475 | |
| 3476 | - } |
|
| 3476 | + } |
|
| 3477 | 3477 | |
| 3478 | - public function block_row_end($key, $args){ |
|
| 3478 | + public function block_row_end($key, $args){ |
|
| 3479 | 3479 | |
| 3480 | - if(!empty($args['row'])){ |
|
| 3481 | - // maybe close |
|
| 3482 | - if(!empty($args['row']['close'])){ |
|
| 3483 | - echo "))"; |
|
| 3484 | - } |
|
| 3480 | + if(!empty($args['row'])){ |
|
| 3481 | + // maybe close |
|
| 3482 | + if(!empty($args['row']['close'])){ |
|
| 3483 | + echo "))"; |
|
| 3484 | + } |
|
| 3485 | 3485 | |
| 3486 | - echo "),"; |
|
| 3487 | - } |
|
| 3488 | - } |
|
| 3486 | + echo "),"; |
|
| 3487 | + } |
|
| 3488 | + } |
|
| 3489 | 3489 | |
| 3490 | - public function block_tab_start($key, $args){ |
|
| 3490 | + public function block_tab_start($key, $args){ |
|
| 3491 | 3491 | |
| 3492 | - // check for row |
|
| 3493 | - if(!empty($args['tab'])){ |
|
| 3492 | + // check for row |
|
| 3493 | + if(!empty($args['tab'])){ |
|
| 3494 | 3494 | |
| 3495 | - if(!empty($args['tab']['tabs_open'])){ |
|
| 3495 | + if(!empty($args['tab']['tabs_open'])){ |
|
| 3496 | 3496 | |
| 3497 | - if(false){?><script><?php }?> |
|
| 3497 | + if(false){?><script><?php }?> |
|
| 3498 | 3498 | |
| 3499 | 3499 | el('div',{className: 'bsui'}, |
| 3500 | 3500 | |
@@ -3507,12 +3507,12 @@ discard block |
||
| 3507 | 3507 | tabs: [ |
| 3508 | 3508 | |
| 3509 | 3509 | <?php |
| 3510 | - if(false){?></script><?php } |
|
| 3511 | - } |
|
| 3510 | + if(false){?></script><?php } |
|
| 3511 | + } |
|
| 3512 | 3512 | |
| 3513 | - if(!empty($args['tab']['open'])){ |
|
| 3513 | + if(!empty($args['tab']['open'])){ |
|
| 3514 | 3514 | |
| 3515 | - if(false){?><script><?php }?> |
|
| 3515 | + if(false){?><script><?php }?> |
|
| 3516 | 3516 | { |
| 3517 | 3517 | name: '<?php echo addslashes( esc_attr( $args['tab']['key']) ); ?>', |
| 3518 | 3518 | title: el('div', {dangerouslySetInnerHTML: {__html: '<?php echo addslashes( esc_attr( $args['tab']['title']) ); ?>'}}), |
@@ -3521,93 +3521,93 @@ discard block |
||
| 3521 | 3521 | className: 'components-base-control__help mb-0', |
| 3522 | 3522 | dangerouslySetInnerHTML: {__html:'<?php echo addslashes( $args['tab']['desc'] ); ?>'} |
| 3523 | 3523 | }),<?php } |
| 3524 | - if(false){?></script><?php } |
|
| 3525 | - } |
|
| 3524 | + if(false){?></script><?php } |
|
| 3525 | + } |
|
| 3526 | 3526 | |
| 3527 | - } |
|
| 3527 | + } |
|
| 3528 | 3528 | |
| 3529 | - } |
|
| 3529 | + } |
|
| 3530 | 3530 | |
| 3531 | - public function block_tab_end($key, $args){ |
|
| 3531 | + public function block_tab_end($key, $args){ |
|
| 3532 | 3532 | |
| 3533 | - if(!empty($args['tab'])){ |
|
| 3534 | - // maybe close |
|
| 3535 | - if(!empty($args['tab']['close'])){ |
|
| 3536 | - echo ")}, /* tab close */"; |
|
| 3537 | - } |
|
| 3533 | + if(!empty($args['tab'])){ |
|
| 3534 | + // maybe close |
|
| 3535 | + if(!empty($args['tab']['close'])){ |
|
| 3536 | + echo ")}, /* tab close */"; |
|
| 3537 | + } |
|
| 3538 | 3538 | |
| 3539 | - if(!empty($args['tab']['tabs_close'])){ |
|
| 3540 | - if(false){?><script><?php }?> |
|
| 3539 | + if(!empty($args['tab']['tabs_close'])){ |
|
| 3540 | + if(false){?><script><?php }?> |
|
| 3541 | 3541 | ]}, ( tab ) => { |
| 3542 | 3542 | return tab.content; |
| 3543 | 3543 | } |
| 3544 | 3544 | )), /* tabs close */ |
| 3545 | 3545 | <?php if(false){ ?></script><?php } |
| 3546 | - } |
|
| 3547 | - } |
|
| 3548 | - } |
|
| 3549 | - |
|
| 3550 | - public function build_block_arguments( $key, $args ) { |
|
| 3551 | - $custom_attributes = ! empty( $args['custom_attributes'] ) ? $this->array_to_attributes( $args['custom_attributes'] ) : ''; |
|
| 3552 | - $options = ''; |
|
| 3553 | - $extra = ''; |
|
| 3554 | - $require = ''; |
|
| 3555 | - $inside_elements = ''; |
|
| 3556 | - $after_elements = ''; |
|
| 3557 | - |
|
| 3558 | - // `content` is a protected and special argument |
|
| 3559 | - if ( $key == 'content' ) { |
|
| 3560 | - return; |
|
| 3561 | - } |
|
| 3562 | - |
|
| 3563 | - $device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : ''; |
|
| 3564 | - $device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : ''; |
|
| 3565 | - $device_type_icon = ''; |
|
| 3566 | - if($device_type=='Desktop'){ |
|
| 3567 | - $device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>'; |
|
| 3568 | - }elseif($device_type=='Tablet'){ |
|
| 3569 | - $device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>'; |
|
| 3570 | - }elseif($device_type=='Mobile'){ |
|
| 3571 | - $device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>'; |
|
| 3572 | - } |
|
| 3573 | - |
|
| 3574 | - // icon |
|
| 3575 | - $icon = ''; |
|
| 3576 | - if( !empty( $args['icon'] ) ){ |
|
| 3577 | - $icon .= "el('div', {"; |
|
| 3578 | - $icon .= "dangerouslySetInnerHTML: {__html: '".self::get_widget_icon( esc_attr($args['icon']))."'},"; |
|
| 3579 | - $icon .= "className: 'text-center',"; |
|
| 3580 | - $icon .= "title: '".addslashes( $args['title'] )."',"; |
|
| 3581 | - $icon .= "}),"; |
|
| 3582 | - |
|
| 3583 | - // blank title as its added to the icon. |
|
| 3584 | - $args['title'] = ''; |
|
| 3585 | - } |
|
| 3586 | - |
|
| 3587 | - // require advanced |
|
| 3588 | - $require_advanced = ! empty( $args['advanced'] ) ? "props.attributes.show_advanced && " : ""; |
|
| 3589 | - |
|
| 3590 | - // element require |
|
| 3591 | - $element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : ""; |
|
| 3592 | - |
|
| 3546 | + } |
|
| 3547 | + } |
|
| 3548 | + } |
|
| 3593 | 3549 | |
| 3594 | - $onchange = "props.setAttributes({ $key: $key } )"; |
|
| 3595 | - $onchangecomplete = ""; |
|
| 3596 | - $value = "props.attributes.$key"; |
|
| 3597 | - $text_type = array( 'text', 'password', 'number', 'email', 'tel', 'url', 'colorx','range' ); |
|
| 3598 | - if ( in_array( $args['type'], $text_type ) ) { |
|
| 3599 | - $type = 'TextControl'; |
|
| 3600 | - // Save numbers as numbers and not strings |
|
| 3601 | - if ( $args['type'] == 'number' ) { |
|
| 3602 | - $onchange = "props.setAttributes({ $key: $key ? Number($key) : '' } )"; |
|
| 3603 | - } |
|
| 3550 | + public function build_block_arguments( $key, $args ) { |
|
| 3551 | + $custom_attributes = ! empty( $args['custom_attributes'] ) ? $this->array_to_attributes( $args['custom_attributes'] ) : ''; |
|
| 3552 | + $options = ''; |
|
| 3553 | + $extra = ''; |
|
| 3554 | + $require = ''; |
|
| 3555 | + $inside_elements = ''; |
|
| 3556 | + $after_elements = ''; |
|
| 3557 | + |
|
| 3558 | + // `content` is a protected and special argument |
|
| 3559 | + if ( $key == 'content' ) { |
|
| 3560 | + return; |
|
| 3561 | + } |
|
| 3562 | + |
|
| 3563 | + $device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : ''; |
|
| 3564 | + $device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : ''; |
|
| 3565 | + $device_type_icon = ''; |
|
| 3566 | + if($device_type=='Desktop'){ |
|
| 3567 | + $device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>'; |
|
| 3568 | + }elseif($device_type=='Tablet'){ |
|
| 3569 | + $device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>'; |
|
| 3570 | + }elseif($device_type=='Mobile'){ |
|
| 3571 | + $device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>'; |
|
| 3572 | + } |
|
| 3573 | + |
|
| 3574 | + // icon |
|
| 3575 | + $icon = ''; |
|
| 3576 | + if( !empty( $args['icon'] ) ){ |
|
| 3577 | + $icon .= "el('div', {"; |
|
| 3578 | + $icon .= "dangerouslySetInnerHTML: {__html: '".self::get_widget_icon( esc_attr($args['icon']))."'},"; |
|
| 3579 | + $icon .= "className: 'text-center',"; |
|
| 3580 | + $icon .= "title: '".addslashes( $args['title'] )."',"; |
|
| 3581 | + $icon .= "}),"; |
|
| 3582 | + |
|
| 3583 | + // blank title as its added to the icon. |
|
| 3584 | + $args['title'] = ''; |
|
| 3585 | + } |
|
| 3586 | + |
|
| 3587 | + // require advanced |
|
| 3588 | + $require_advanced = ! empty( $args['advanced'] ) ? "props.attributes.show_advanced && " : ""; |
|
| 3589 | + |
|
| 3590 | + // element require |
|
| 3591 | + $element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : ""; |
|
| 3592 | + |
|
| 3593 | + |
|
| 3594 | + $onchange = "props.setAttributes({ $key: $key } )"; |
|
| 3595 | + $onchangecomplete = ""; |
|
| 3596 | + $value = "props.attributes.$key"; |
|
| 3597 | + $text_type = array( 'text', 'password', 'number', 'email', 'tel', 'url', 'colorx','range' ); |
|
| 3598 | + if ( in_array( $args['type'], $text_type ) ) { |
|
| 3599 | + $type = 'TextControl'; |
|
| 3600 | + // Save numbers as numbers and not strings |
|
| 3601 | + if ( $args['type'] == 'number' ) { |
|
| 3602 | + $onchange = "props.setAttributes({ $key: $key ? Number($key) : '' } )"; |
|
| 3603 | + } |
|
| 3604 | 3604 | |
| 3605 | - if (substr($key, 0, 9 ) === 'metadata_') { |
|
| 3606 | - $real_key = str_replace('metadata_','', $key ); |
|
| 3607 | - $onchange = "props.setAttributes({ metadata: { $real_key: $key } } )"; |
|
| 3608 | - $value = "props.attributes.metadata && props.attributes.metadata.$real_key ? props.attributes.metadata.$real_key : ''"; |
|
| 3609 | - } |
|
| 3610 | - } |
|
| 3605 | + if (substr($key, 0, 9 ) === 'metadata_') { |
|
| 3606 | + $real_key = str_replace('metadata_','', $key ); |
|
| 3607 | + $onchange = "props.setAttributes({ metadata: { $real_key: $key } } )"; |
|
| 3608 | + $value = "props.attributes.metadata && props.attributes.metadata.$real_key ? props.attributes.metadata.$real_key : ''"; |
|
| 3609 | + } |
|
| 3610 | + } |
|
| 3611 | 3611 | // else if ( $args['type'] == 'popup' ) { |
| 3612 | 3612 | // $type = 'TextControl'; |
| 3613 | 3613 | // $args['type'] == 'text'; |
@@ -3625,21 +3625,21 @@ discard block |
||
| 3625 | 3625 | // |
| 3626 | 3626 | // $value = "props.attributes.$key ? props.attributes.$key : ''"; |
| 3627 | 3627 | // } |
| 3628 | - else if ( $args['type'] == 'styleid' ) { |
|
| 3629 | - $type = 'TextControl'; |
|
| 3630 | - $args['type'] == 'text'; |
|
| 3631 | - // Save numbers as numbers and not strings |
|
| 3632 | - $value = "props.attributes.$key ? props.attributes.$key : ''"; |
|
| 3633 | - }else if ( $args['type'] == 'notice' ) { |
|
| 3634 | - |
|
| 3635 | - $notice_message = !empty($args['desc']) ? addslashes($args['desc']) : ''; |
|
| 3636 | - $notice_status = !empty($args['status']) ? esc_attr($args['status']) : 'info'; |
|
| 3637 | - |
|
| 3638 | - $notice = "el('div',{className:'bsui'},el(wp.components.Notice, {status: '$notice_status',isDismissible: false,className: 'm-0 pr-0 pe-0 mb-3'},el('div',{dangerouslySetInnerHTML: {__html: '$notice_message'}}))),"; |
|
| 3639 | - echo $notice_message ? $element_require . $notice : ''; |
|
| 3640 | - return; |
|
| 3641 | - } |
|
| 3642 | - /* |
|
| 3628 | + else if ( $args['type'] == 'styleid' ) { |
|
| 3629 | + $type = 'TextControl'; |
|
| 3630 | + $args['type'] == 'text'; |
|
| 3631 | + // Save numbers as numbers and not strings |
|
| 3632 | + $value = "props.attributes.$key ? props.attributes.$key : ''"; |
|
| 3633 | + }else if ( $args['type'] == 'notice' ) { |
|
| 3634 | + |
|
| 3635 | + $notice_message = !empty($args['desc']) ? addslashes($args['desc']) : ''; |
|
| 3636 | + $notice_status = !empty($args['status']) ? esc_attr($args['status']) : 'info'; |
|
| 3637 | + |
|
| 3638 | + $notice = "el('div',{className:'bsui'},el(wp.components.Notice, {status: '$notice_status',isDismissible: false,className: 'm-0 pr-0 pe-0 mb-3'},el('div',{dangerouslySetInnerHTML: {__html: '$notice_message'}}))),"; |
|
| 3639 | + echo $notice_message ? $element_require . $notice : ''; |
|
| 3640 | + return; |
|
| 3641 | + } |
|
| 3642 | + /* |
|
| 3643 | 3643 | * https://www.wptricks.com/question/set-current-tab-on-a-gutenberg-tabpanel-component-from-outside-that-component/ es5 layout |
| 3644 | 3644 | elseif($args['type']=='tabs'){ |
| 3645 | 3645 | ?> |
@@ -3692,22 +3692,22 @@ discard block |
||
| 3692 | 3692 | return; |
| 3693 | 3693 | } |
| 3694 | 3694 | */ |
| 3695 | - elseif ( $args['type'] == 'color' ) { |
|
| 3696 | - $type = 'ColorPicker'; |
|
| 3697 | - $onchange = ""; |
|
| 3698 | - $extra = "color: $value,"; |
|
| 3699 | - if(!empty($args['disable_alpha'])){ |
|
| 3700 | - $extra .= "disableAlpha: true,"; |
|
| 3701 | - } |
|
| 3702 | - $onchangecomplete = "onChangeComplete: function($key) { |
|
| 3695 | + elseif ( $args['type'] == 'color' ) { |
|
| 3696 | + $type = 'ColorPicker'; |
|
| 3697 | + $onchange = ""; |
|
| 3698 | + $extra = "color: $value,"; |
|
| 3699 | + if(!empty($args['disable_alpha'])){ |
|
| 3700 | + $extra .= "disableAlpha: true,"; |
|
| 3701 | + } |
|
| 3702 | + $onchangecomplete = "onChangeComplete: function($key) { |
|
| 3703 | 3703 | value = $key.rgb.a && $key.rgb.a < 1 ? \"rgba(\"+$key.rgb.r+\",\"+$key.rgb.g+\",\"+$key.rgb.b+\",\"+$key.rgb.a+\")\" : $key.hex; |
| 3704 | 3704 | props.setAttributes({ |
| 3705 | 3705 | $key: value |
| 3706 | 3706 | }); |
| 3707 | 3707 | },"; |
| 3708 | - }elseif ( $args['type'] == 'gradient' ) { |
|
| 3709 | - $type = 'GradientPicker'; |
|
| 3710 | - $extra .= "gradients: [{ |
|
| 3708 | + }elseif ( $args['type'] == 'gradient' ) { |
|
| 3709 | + $type = 'GradientPicker'; |
|
| 3710 | + $extra .= "gradients: [{ |
|
| 3711 | 3711 | name: 'Vivid cyan blue to vivid purple', |
| 3712 | 3712 | gradient: |
| 3713 | 3713 | 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)', |
@@ -3744,10 +3744,10 @@ discard block |
||
| 3744 | 3744 | slug: 'cool-to-warm-spectrum', |
| 3745 | 3745 | }],"; |
| 3746 | 3746 | |
| 3747 | - }elseif ( $args['type'] == 'image' ) { |
|
| 3747 | + }elseif ( $args['type'] == 'image' ) { |
|
| 3748 | 3748 | // print_r($args); |
| 3749 | 3749 | |
| 3750 | - $img_preview = isset($args['focalpoint']) && !$args['focalpoint'] ? " props.attributes.$key && el('img', { src: props.attributes.$key,style: {maxWidth:'100%',background: '#ccc'}})," : " ( props.attributes.$key || props.attributes.{$key}_use_featured ) && el(wp.components.FocalPointPicker,{ |
|
| 3750 | + $img_preview = isset($args['focalpoint']) && !$args['focalpoint'] ? " props.attributes.$key && el('img', { src: props.attributes.$key,style: {maxWidth:'100%',background: '#ccc'}})," : " ( props.attributes.$key || props.attributes.{$key}_use_featured ) && el(wp.components.FocalPointPicker,{ |
|
| 3751 | 3751 | url: props.attributes.{$key}_use_featured === true ? 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxzdmcgYmFzZVByb2ZpbGU9InRpbnkiIGhlaWdodD0iNDAwIiB2ZXJzaW9uPSIxLjIiIHdpZHRoPSI0MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6ZXY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLWV2ZW50cyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzIC8+PHJlY3QgZmlsbD0iI2QzZDNkMyIgaGVpZ2h0PSI0MDAiIHdpZHRoPSI0MDAiIHg9IjAiIHk9IjAiIC8+PGxpbmUgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgeDE9IjAiIHgyPSI0MDAiIHkxPSIwIiB5Mj0iNDAwIiAvPjxsaW5lIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMTAiIHgxPSIwIiB4Mj0iNDAwIiB5MT0iNDAwIiB5Mj0iMCIgLz48cmVjdCBmaWxsPSIjZDNkM2QzIiBoZWlnaHQ9IjUwIiB3aWR0aD0iMjE4LjAiIHg9IjkxLjAiIHk9IjE3NS4wIiAvPjx0ZXh0IGZpbGw9IndoaXRlIiBmb250LXNpemU9IjMwIiBmb250LXdlaWdodD0iYm9sZCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iMjAwLjAiIHk9IjIwNy41Ij5QTEFDRUhPTERFUjwvdGV4dD48L3N2Zz4=' : props.attributes.$key, |
| 3752 | 3752 | value: props.attributes.{$key}_xy.x !== undefined && props.attributes.{$key}_xy.x >= 0 ? props.attributes.{$key}_xy : {x: 0.5,y: 0.5,}, |
| 3753 | 3753 | // value: props.attributes.{$key}_xy, |
@@ -3768,16 +3768,16 @@ discard block |
||
| 3768 | 3768 | }), "; |
| 3769 | 3769 | |
| 3770 | 3770 | |
| 3771 | - $value = '""'; |
|
| 3772 | - $type = 'MediaUpload'; |
|
| 3773 | - $extra .= "onSelect: function(media){ |
|
| 3771 | + $value = '""'; |
|
| 3772 | + $type = 'MediaUpload'; |
|
| 3773 | + $extra .= "onSelect: function(media){ |
|
| 3774 | 3774 | return props.setAttributes({ |
| 3775 | 3775 | $key: media.url, |
| 3776 | 3776 | {$key}_id: media.id |
| 3777 | 3777 | }); |
| 3778 | 3778 | },"; |
| 3779 | - $extra .= "type: 'image',"; |
|
| 3780 | - $extra .= "render: function (obj) { |
|
| 3779 | + $extra .= "type: 'image',"; |
|
| 3780 | + $extra .= "render: function (obj) { |
|
| 3781 | 3781 | return el( 'div',{}, |
| 3782 | 3782 | ( !props.attributes.$key && !props.attributes.{$key}_use_featured ) && el( wp.components.Button, { |
| 3783 | 3783 | className: 'components-button components-circular-option-picker__clear is-primary is-smallx', |
@@ -3803,11 +3803,11 @@ discard block |
||
| 3803 | 3803 | |
| 3804 | 3804 | |
| 3805 | 3805 | }"; |
| 3806 | - $onchange = ""; |
|
| 3806 | + $onchange = ""; |
|
| 3807 | 3807 | |
| 3808 | - //$inside_elements = ",el('div',{},'file upload')"; |
|
| 3809 | - } else if ( $args['type'] == 'images' ) { |
|
| 3810 | - $img_preview = "props.attributes.$key && (function() { |
|
| 3808 | + //$inside_elements = ",el('div',{},'file upload')"; |
|
| 3809 | + } else if ( $args['type'] == 'images' ) { |
|
| 3810 | + $img_preview = "props.attributes.$key && (function() { |
|
| 3811 | 3811 | let uploads = JSON.parse('['+props.attributes.$key+']'); |
| 3812 | 3812 | let images = []; |
| 3813 | 3813 | uploads.map((upload, index) => ( |
@@ -3834,9 +3834,9 @@ discard block |
||
| 3834 | 3834 | })(),"; |
| 3835 | 3835 | |
| 3836 | 3836 | |
| 3837 | - $value = '""'; |
|
| 3838 | - $type = 'MediaUpload'; |
|
| 3839 | - $extra .= "onSelect: function(media){ |
|
| 3837 | + $value = '""'; |
|
| 3838 | + $type = 'MediaUpload'; |
|
| 3839 | + $extra .= "onSelect: function(media){ |
|
| 3840 | 3840 | let slim_images = props.attributes.$key ? JSON.parse('['+props.attributes.$key+']') : []; |
| 3841 | 3841 | if(media.length){ |
| 3842 | 3842 | for (var i=0; i < media.length; i++) { |
@@ -3849,9 +3849,9 @@ discard block |
||
| 3849 | 3849 | } |
| 3850 | 3850 | return props.setAttributes({ $key: slimImagesV}); |
| 3851 | 3851 | },"; |
| 3852 | - $extra .= "type: 'image',"; |
|
| 3853 | - $extra .= "multiple: true,"; |
|
| 3854 | - $extra .= "render: function (obj) { |
|
| 3852 | + $extra .= "type: 'image',"; |
|
| 3853 | + $extra .= "multiple: true,"; |
|
| 3854 | + $extra .= "render: function (obj) { |
|
| 3855 | 3855 | /* Init the sort */ |
| 3856 | 3856 | enableDragSort('sd-sortable'); |
| 3857 | 3857 | return el( 'div',{}, |
@@ -3878,40 +3878,40 @@ discard block |
||
| 3878 | 3878 | ) |
| 3879 | 3879 | ) |
| 3880 | 3880 | }"; |
| 3881 | - $onchange = ""; |
|
| 3882 | - |
|
| 3883 | - //$inside_elements = ",el('div',{},'file upload')"; |
|
| 3884 | - } |
|
| 3885 | - elseif ( $args['type'] == 'checkbox' ) { |
|
| 3886 | - $type = 'CheckboxControl'; |
|
| 3887 | - $extra .= "checked: props.attributes.$key,"; |
|
| 3888 | - $onchange = "props.setAttributes({ $key: ! props.attributes.$key } )"; |
|
| 3889 | - } elseif ( $args['type'] == 'textarea' ) { |
|
| 3890 | - $type = 'TextareaControl'; |
|
| 3891 | - |
|
| 3892 | - } elseif ( $args['type'] == 'select' || $args['type'] == 'multiselect' ) { |
|
| 3893 | - $type = 'SelectControl'; |
|
| 3894 | - |
|
| 3895 | - if($args['name'] == 'category' && !empty($args['post_type_linked'])){ |
|
| 3896 | - $options .= "options: taxonomies_".str_replace("-","_", $this->id).","; |
|
| 3897 | - }elseif($args['name'] == 'sort_by' && !empty($args['post_type_linked'])){ |
|
| 3898 | - $options .= "options: sort_by_".str_replace("-","_", $this->id).","; |
|
| 3899 | - }else { |
|
| 3900 | - |
|
| 3901 | - if ( ! empty( $args['options'] ) ) { |
|
| 3902 | - $options .= "options: ["; |
|
| 3903 | - foreach ( $args['options'] as $option_val => $option_label ) { |
|
| 3904 | - $options .= "{ value: '" . esc_attr( $option_val ) . "', label: '" . esc_js( addslashes( $option_label ) ) . "' },"; |
|
| 3905 | - } |
|
| 3906 | - $options .= "],"; |
|
| 3907 | - } |
|
| 3908 | - } |
|
| 3909 | - if ( isset( $args['multiple'] ) && $args['multiple'] ) { //@todo multiselect does not work at the moment: https://github.com/WordPress/gutenberg/issues/5550 |
|
| 3910 | - $extra .= ' multiple:true,style:{height:"auto",paddingRight:"8px","overflow-y":"auto"}, '; |
|
| 3911 | - } |
|
| 3881 | + $onchange = ""; |
|
| 3882 | + |
|
| 3883 | + //$inside_elements = ",el('div',{},'file upload')"; |
|
| 3884 | + } |
|
| 3885 | + elseif ( $args['type'] == 'checkbox' ) { |
|
| 3886 | + $type = 'CheckboxControl'; |
|
| 3887 | + $extra .= "checked: props.attributes.$key,"; |
|
| 3888 | + $onchange = "props.setAttributes({ $key: ! props.attributes.$key } )"; |
|
| 3889 | + } elseif ( $args['type'] == 'textarea' ) { |
|
| 3890 | + $type = 'TextareaControl'; |
|
| 3891 | + |
|
| 3892 | + } elseif ( $args['type'] == 'select' || $args['type'] == 'multiselect' ) { |
|
| 3893 | + $type = 'SelectControl'; |
|
| 3894 | + |
|
| 3895 | + if($args['name'] == 'category' && !empty($args['post_type_linked'])){ |
|
| 3896 | + $options .= "options: taxonomies_".str_replace("-","_", $this->id).","; |
|
| 3897 | + }elseif($args['name'] == 'sort_by' && !empty($args['post_type_linked'])){ |
|
| 3898 | + $options .= "options: sort_by_".str_replace("-","_", $this->id).","; |
|
| 3899 | + }else { |
|
| 3900 | + |
|
| 3901 | + if ( ! empty( $args['options'] ) ) { |
|
| 3902 | + $options .= "options: ["; |
|
| 3903 | + foreach ( $args['options'] as $option_val => $option_label ) { |
|
| 3904 | + $options .= "{ value: '" . esc_attr( $option_val ) . "', label: '" . esc_js( addslashes( $option_label ) ) . "' },"; |
|
| 3905 | + } |
|
| 3906 | + $options .= "],"; |
|
| 3907 | + } |
|
| 3908 | + } |
|
| 3909 | + if ( isset( $args['multiple'] ) && $args['multiple'] ) { //@todo multiselect does not work at the moment: https://github.com/WordPress/gutenberg/issues/5550 |
|
| 3910 | + $extra .= ' multiple:true,style:{height:"auto",paddingRight:"8px","overflow-y":"auto"}, '; |
|
| 3911 | + } |
|
| 3912 | 3912 | |
| 3913 | - if($args['type'] == 'multiselect' || ( isset( $args['multiple'] ) && $args['multiple'] ) ){ |
|
| 3914 | - $after_elements .= "props.attributes.$key && el( wp.components.Button, { |
|
| 3913 | + if($args['type'] == 'multiselect' || ( isset( $args['multiple'] ) && $args['multiple'] ) ){ |
|
| 3914 | + $after_elements .= "props.attributes.$key && el( wp.components.Button, { |
|
| 3915 | 3915 | className: 'components-button components-circular-option-picker__clear is-secondary is-small', |
| 3916 | 3916 | style: {margin:'-8px 0 8px 0',display: 'block'}, |
| 3917 | 3917 | onClick: function(){ |
@@ -3922,8 +3922,8 @@ discard block |
||
| 3922 | 3922 | }, |
| 3923 | 3923 | 'Clear' |
| 3924 | 3924 | ),"; |
| 3925 | - } |
|
| 3926 | - } elseif ( $args['type'] == 'tagselect' ) { |
|
| 3925 | + } |
|
| 3926 | + } elseif ( $args['type'] == 'tagselect' ) { |
|
| 3927 | 3927 | // $type = 'FormTokenField'; |
| 3928 | 3928 | // |
| 3929 | 3929 | // if ( ! empty( $args['options'] ) ) { |
@@ -3958,20 +3958,20 @@ discard block |
||
| 3958 | 3958 | // $value = "[]"; |
| 3959 | 3959 | // $extra .= ' __experimentalExpandOnFocus: true,'; |
| 3960 | 3960 | |
| 3961 | - } else if ( $args['type'] == 'alignment' ) { |
|
| 3962 | - $type = 'AlignmentToolbar'; // @todo this does not seem to work but cant find a example |
|
| 3963 | - } else if ( $args['type'] == 'margins' ) { |
|
| 3964 | - |
|
| 3965 | - } else if ( $args['type'] == 'visibility_conditions' && ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) ) { |
|
| 3966 | - $type = 'TextControl'; |
|
| 3967 | - $value = "(props.attributes.$key ? props.attributes.$key : '')"; |
|
| 3968 | - $args['type'] = 'text'; |
|
| 3969 | - $options .= 'disabled:true,'; |
|
| 3970 | - $bsvc_title = esc_attr( addslashes( $args['title'] ) ); |
|
| 3971 | - $bsvc_body = $this->block_visibility_fields( $args ); |
|
| 3972 | - // @TODO reset button |
|
| 3973 | - $bsvc_footer = '<button type="button" class="btn btn-danger d-none">' . __( 'Reset', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-secondary bs-vc-close text-white" data-bs-dismiss="modal">' . __( 'Close', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-primary bs-vc-save">' . __( 'Save Rules', 'ayecode-connect' ) . '</button>'; |
|
| 3974 | - $after_elements .= "el('div', {className: 'components-base-control bs-vc-button-wrap'}, el(wp.components.Button, { |
|
| 3961 | + } else if ( $args['type'] == 'alignment' ) { |
|
| 3962 | + $type = 'AlignmentToolbar'; // @todo this does not seem to work but cant find a example |
|
| 3963 | + } else if ( $args['type'] == 'margins' ) { |
|
| 3964 | + |
|
| 3965 | + } else if ( $args['type'] == 'visibility_conditions' && ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) ) { |
|
| 3966 | + $type = 'TextControl'; |
|
| 3967 | + $value = "(props.attributes.$key ? props.attributes.$key : '')"; |
|
| 3968 | + $args['type'] = 'text'; |
|
| 3969 | + $options .= 'disabled:true,'; |
|
| 3970 | + $bsvc_title = esc_attr( addslashes( $args['title'] ) ); |
|
| 3971 | + $bsvc_body = $this->block_visibility_fields( $args ); |
|
| 3972 | + // @TODO reset button |
|
| 3973 | + $bsvc_footer = '<button type="button" class="btn btn-danger d-none">' . __( 'Reset', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-secondary bs-vc-close text-white" data-bs-dismiss="modal">' . __( 'Close', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-primary bs-vc-save">' . __( 'Save Rules', 'ayecode-connect' ) . '</button>'; |
|
| 3974 | + $after_elements .= "el('div', {className: 'components-base-control bs-vc-button-wrap'}, el(wp.components.Button, { |
|
| 3975 | 3975 | className: 'components-button components-circular-option-picker__clear is-primary is-smallx', |
| 3976 | 3976 | onClick: function() { |
| 3977 | 3977 | var sValue = props.attributes." . $key . "; |
@@ -3997,39 +3997,39 @@ discard block |
||
| 3997 | 3997 | }, |
| 3998 | 3998 | '" . addslashes( ! empty( $args['button_title'] ) ? $args['button_title'] : $args['title'] ) . "' |
| 3999 | 3999 | ) ),"; |
| 4000 | - } else { |
|
| 4001 | - return;// if we have not implemented the control then don't break the JS. |
|
| 4002 | - } |
|
| 4003 | - |
|
| 4004 | - // color input does not show the labels so we add them |
|
| 4005 | - if($args['type']=='color'){ |
|
| 4006 | - // add show only if advanced |
|
| 4007 | - echo $require_advanced; |
|
| 4008 | - // add setting require if defined |
|
| 4009 | - echo $element_require; |
|
| 4010 | - echo "el('div', {style: {'marginBottom': '8px'}}, '".addslashes( $args['title'] )."'),"; |
|
| 4011 | - } |
|
| 4012 | - |
|
| 4013 | - // add show only if advanced |
|
| 4014 | - echo $require_advanced; |
|
| 4015 | - // add setting require if defined |
|
| 4016 | - echo $element_require; |
|
| 4017 | - echo $device_type_require; |
|
| 4018 | - |
|
| 4019 | - // icon |
|
| 4020 | - echo $icon; |
|
| 4021 | - ?> |
|
| 4000 | + } else { |
|
| 4001 | + return;// if we have not implemented the control then don't break the JS. |
|
| 4002 | + } |
|
| 4003 | + |
|
| 4004 | + // color input does not show the labels so we add them |
|
| 4005 | + if($args['type']=='color'){ |
|
| 4006 | + // add show only if advanced |
|
| 4007 | + echo $require_advanced; |
|
| 4008 | + // add setting require if defined |
|
| 4009 | + echo $element_require; |
|
| 4010 | + echo "el('div', {style: {'marginBottom': '8px'}}, '".addslashes( $args['title'] )."'),"; |
|
| 4011 | + } |
|
| 4012 | + |
|
| 4013 | + // add show only if advanced |
|
| 4014 | + echo $require_advanced; |
|
| 4015 | + // add setting require if defined |
|
| 4016 | + echo $element_require; |
|
| 4017 | + echo $device_type_require; |
|
| 4018 | + |
|
| 4019 | + // icon |
|
| 4020 | + echo $icon; |
|
| 4021 | + ?> |
|
| 4022 | 4022 | el( <?php echo $args['type'] == 'image' || $args['type'] == 'images' ? $type : "wp.components.".$type; ?>, { |
| 4023 | 4023 | label: <?php if ( empty( $args['title'] ) ) { echo "''"; } else if ( empty( $args['row'] ) && ! empty( $args['device_type'] ) ) { ?>el('label',{className:'components-base-control__label',style:{width:"100%"}},el('span',{dangerouslySetInnerHTML: {__html: '<?php echo addslashes( $args['title'] ) ?>'}}),<?php if ( $device_type_icon ) { ?>deviceType == '<?php echo $device_type;?>' && el('span',{dangerouslySetInnerHTML: {__html: '<?php echo $device_type_icon; ?>'},title: deviceType + ": Set preview mode to change",style: {right:"0",position:"absolute",color:"var(--wp-admin-theme-color)"}})<?php } ?>)<?php |
| 4024 | - } else { ?>'<?php echo addslashes( trim( esc_html( $args['title'] ) ) ); ?>'<?php } ?>, |
|
| 4024 | + } else { ?>'<?php echo addslashes( trim( esc_html( $args['title'] ) ) ); ?>'<?php } ?>, |
|
| 4025 | 4025 | help: <?php echo ( isset( $args['desc'] ) ? "el('span', {dangerouslySetInnerHTML: {__html: '" . trim( wp_kses_post( addslashes( $args['desc'] ) ) ) . "'}})" : "''" ); ?>, |
| 4026 | 4026 | value: <?php echo $value; ?>, |
| 4027 | 4027 | <?php if ( $type == 'TextControl' && $args['type'] != 'text' ) { |
| 4028 | - echo "type: '" . addslashes( $args['type'] ) . "',"; |
|
| 4029 | - } ?> |
|
| 4028 | + echo "type: '" . addslashes( $args['type'] ) . "',"; |
|
| 4029 | + } ?> |
|
| 4030 | 4030 | <?php if ( ! empty( $args['placeholder'] ) ) { |
| 4031 | - echo "placeholder: '" . esc_js( addslashes( trim( esc_html( $args['placeholder'] ) ) ) ) . "',"; |
|
| 4032 | - } ?> |
|
| 4031 | + echo "placeholder: '" . esc_js( addslashes( trim( esc_html( $args['placeholder'] ) ) ) ) . "',"; |
|
| 4032 | + } ?> |
|
| 4033 | 4033 | <?php echo $options; ?> |
| 4034 | 4034 | <?php echo $extra; ?> |
| 4035 | 4035 | <?php echo $custom_attributes; ?> |
@@ -4041,1266 +4041,1266 @@ discard block |
||
| 4041 | 4041 | <?php } ?> |
| 4042 | 4042 | } <?php echo $inside_elements; ?> ), |
| 4043 | 4043 | <?php |
| 4044 | - echo $after_elements; |
|
| 4045 | - } |
|
| 4044 | + echo $after_elements; |
|
| 4045 | + } |
|
| 4046 | 4046 | |
| 4047 | - /** |
|
| 4048 | - * Convert an array of attributes to block string. |
|
| 4049 | - * |
|
| 4050 | - * @param $custom_attributes |
|
| 4051 | - * |
|
| 4052 | - * @return string |
|
| 4053 | - *@todo there is prob a faster way to do this, also we could add some validation here. |
|
| 4054 | - * |
|
| 4055 | - */ |
|
| 4056 | - public function array_to_attributes( $custom_attributes, $html = false ) { |
|
| 4057 | - $attributes = ''; |
|
| 4058 | - if ( ! empty( $custom_attributes ) ) { |
|
| 4059 | - |
|
| 4060 | - foreach ( $custom_attributes as $key => $val ) { |
|
| 4061 | - if(is_array($val)){ |
|
| 4062 | - $attributes .= $key.': {'.$this->array_to_attributes( $val, $html ).'},'; |
|
| 4063 | - }else{ |
|
| 4064 | - $attributes .= $html ? " $key='$val' " : "'$key': '$val',"; |
|
| 4065 | - } |
|
| 4066 | - } |
|
| 4047 | + /** |
|
| 4048 | + * Convert an array of attributes to block string. |
|
| 4049 | + * |
|
| 4050 | + * @param $custom_attributes |
|
| 4051 | + * |
|
| 4052 | + * @return string |
|
| 4053 | + *@todo there is prob a faster way to do this, also we could add some validation here. |
|
| 4054 | + * |
|
| 4055 | + */ |
|
| 4056 | + public function array_to_attributes( $custom_attributes, $html = false ) { |
|
| 4057 | + $attributes = ''; |
|
| 4058 | + if ( ! empty( $custom_attributes ) ) { |
|
| 4059 | + |
|
| 4060 | + foreach ( $custom_attributes as $key => $val ) { |
|
| 4061 | + if(is_array($val)){ |
|
| 4062 | + $attributes .= $key.': {'.$this->array_to_attributes( $val, $html ).'},'; |
|
| 4063 | + }else{ |
|
| 4064 | + $attributes .= $html ? " $key='$val' " : "'$key': '$val',"; |
|
| 4065 | + } |
|
| 4066 | + } |
|
| 4067 | 4067 | |
| 4068 | - } |
|
| 4068 | + } |
|
| 4069 | 4069 | |
| 4070 | - return $attributes; |
|
| 4071 | - } |
|
| 4070 | + return $attributes; |
|
| 4071 | + } |
|
| 4072 | 4072 | |
| 4073 | 4073 | |
| 4074 | 4074 | |
| 4075 | - /** |
|
| 4076 | - * A self looping function to create the output for JS block elements. |
|
| 4077 | - * |
|
| 4078 | - * This is what is output in the WP Editor visual view. |
|
| 4079 | - * |
|
| 4080 | - * @param $args |
|
| 4081 | - */ |
|
| 4082 | - public function block_element( $args, $save = false ) { |
|
| 4075 | + /** |
|
| 4076 | + * A self looping function to create the output for JS block elements. |
|
| 4077 | + * |
|
| 4078 | + * This is what is output in the WP Editor visual view. |
|
| 4079 | + * |
|
| 4080 | + * @param $args |
|
| 4081 | + */ |
|
| 4082 | + public function block_element( $args, $save = false ) { |
|
| 4083 | 4083 | |
| 4084 | 4084 | // print_r($args);echo '###';exit; |
| 4085 | 4085 | |
| 4086 | - if ( ! empty( $args ) ) { |
|
| 4087 | - foreach ( $args as $element => $new_args ) { |
|
| 4086 | + if ( ! empty( $args ) ) { |
|
| 4087 | + foreach ( $args as $element => $new_args ) { |
|
| 4088 | 4088 | |
| 4089 | - if ( is_array( $new_args ) ) { // its an element |
|
| 4089 | + if ( is_array( $new_args ) ) { // its an element |
|
| 4090 | 4090 | |
| 4091 | 4091 | |
| 4092 | - if ( isset( $new_args['element'] ) ) { |
|
| 4092 | + if ( isset( $new_args['element'] ) ) { |
|
| 4093 | 4093 | |
| 4094 | - if ( isset( $new_args['element_require'] ) ) { |
|
| 4095 | - echo str_replace( array( |
|
| 4096 | - "'+", |
|
| 4097 | - "+'" |
|
| 4098 | - ), '', $this->block_props_replace( $new_args['element_require'] ) ) . " && "; |
|
| 4099 | - unset( $new_args['element_require'] ); |
|
| 4100 | - } |
|
| 4094 | + if ( isset( $new_args['element_require'] ) ) { |
|
| 4095 | + echo str_replace( array( |
|
| 4096 | + "'+", |
|
| 4097 | + "+'" |
|
| 4098 | + ), '', $this->block_props_replace( $new_args['element_require'] ) ) . " && "; |
|
| 4099 | + unset( $new_args['element_require'] ); |
|
| 4100 | + } |
|
| 4101 | 4101 | |
| 4102 | - if($new_args['element']=='InnerBlocks'){ |
|
| 4103 | - echo "\n el( InnerBlocks, {"; |
|
| 4104 | - }elseif($new_args['element']=='innerBlocksProps'){ |
|
| 4105 | - $element = isset($new_args['inner_element']) ? esc_attr($new_args['inner_element']) : 'div'; |
|
| 4106 | - // echo "\n el( 'section', wp.blockEditor.useInnerBlocksProps( blockProps, {"; |
|
| 4102 | + if($new_args['element']=='InnerBlocks'){ |
|
| 4103 | + echo "\n el( InnerBlocks, {"; |
|
| 4104 | + }elseif($new_args['element']=='innerBlocksProps'){ |
|
| 4105 | + $element = isset($new_args['inner_element']) ? esc_attr($new_args['inner_element']) : 'div'; |
|
| 4106 | + // echo "\n el( 'section', wp.blockEditor.useInnerBlocksProps( blockProps, {"; |
|
| 4107 | 4107 | // echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( "; |
| 4108 | - echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( "; |
|
| 4109 | - echo $save ? "wp.blockEditor.useBlockProps.save( {" : "wp.blockEditor.useBlockProps( {"; |
|
| 4110 | - echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : ''; |
|
| 4111 | - |
|
| 4112 | - echo "} ), {"; |
|
| 4113 | - echo !empty($new_args['innerBlocksProps']) && !$save ? $this->block_element( $new_args['innerBlocksProps'],$save ) : ''; |
|
| 4114 | - // echo '###'; |
|
| 4115 | - |
|
| 4116 | - // echo '###'; |
|
| 4117 | - }elseif($new_args['element']=='BlocksProps'){ |
|
| 4118 | - |
|
| 4119 | - if ( isset($new_args['if_inner_element']) ) { |
|
| 4120 | - $element = $new_args['if_inner_element']; |
|
| 4121 | - }else { |
|
| 4122 | - $element = isset($new_args['inner_element']) ? "'".esc_attr($new_args['inner_element'])."'" : "'div'"; |
|
| 4123 | - } |
|
| 4124 | - |
|
| 4125 | - unset($new_args['inner_element']); |
|
| 4126 | - echo $save ? "\n el( $element, wp.blockEditor.useBlockProps.save( {" : "\n el( $element, wp.blockEditor.useBlockProps( {"; |
|
| 4127 | - echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : ''; |
|
| 4128 | - |
|
| 4129 | - |
|
| 4130 | - // echo "} ),"; |
|
| 4131 | - |
|
| 4132 | - }else{ |
|
| 4133 | - echo "\n el( '" . $new_args['element'] . "', {"; |
|
| 4134 | - } |
|
| 4135 | - |
|
| 4136 | - |
|
| 4137 | - // get the attributes |
|
| 4138 | - foreach ( $new_args as $new_key => $new_value ) { |
|
| 4139 | - |
|
| 4140 | - |
|
| 4141 | - if ( $new_key == 'element' || $new_key == 'content'|| $new_key == 'if_content' || $new_key == 'element_require' || $new_key == 'element_repeat' || is_array( $new_value ) ) { |
|
| 4142 | - // do nothing |
|
| 4143 | - } else { |
|
| 4144 | - echo $this->block_element( array( $new_key => $new_value ),$save ); |
|
| 4145 | - } |
|
| 4146 | - } |
|
| 4147 | - |
|
| 4148 | - echo $new_args['element']=='BlocksProps' ? '} ),' : "},";// end attributes |
|
| 4149 | - |
|
| 4150 | - // get the content |
|
| 4151 | - $first_item = 0; |
|
| 4152 | - foreach ( $new_args as $new_key => $new_value ) { |
|
| 4153 | - if ( $new_key === 'content' || $new_key === 'if_content' || is_array( $new_value ) ) { |
|
| 4154 | - |
|
| 4155 | - if ( $new_key === 'content' ) { |
|
| 4156 | - echo "'" . $this->block_props_replace( wp_slash( $new_value ) ) . "'"; |
|
| 4157 | - }else if ( $new_key === 'if_content' ) { |
|
| 4158 | - echo $this->block_props_replace( $new_value ); |
|
| 4159 | - } |
|
| 4160 | - |
|
| 4161 | - if ( is_array( $new_value ) ) { |
|
| 4162 | - |
|
| 4163 | - if ( isset( $new_value['element_require'] ) ) { |
|
| 4164 | - echo str_replace( array( |
|
| 4165 | - "'+", |
|
| 4166 | - "+'" |
|
| 4167 | - ), '', $this->block_props_replace( $new_value['element_require'] ) ) . " && "; |
|
| 4168 | - unset( $new_value['element_require'] ); |
|
| 4169 | - } |
|
| 4170 | - |
|
| 4171 | - if ( isset( $new_value['element_repeat'] ) ) { |
|
| 4172 | - $x = 1; |
|
| 4173 | - while ( $x <= absint( $new_value['element_repeat'] ) ) { |
|
| 4174 | - $this->block_element( array( '' => $new_value ),$save ); |
|
| 4175 | - $x ++; |
|
| 4176 | - } |
|
| 4177 | - } else { |
|
| 4178 | - $this->block_element( array( '' => $new_value ),$save ); |
|
| 4179 | - } |
|
| 4180 | - } |
|
| 4181 | - $first_item ++; |
|
| 4182 | - } |
|
| 4183 | - } |
|
| 4184 | - |
|
| 4185 | - if($new_args['element']=='innerBlocksProps' || $new_args['element']=='xBlocksProps'){ |
|
| 4186 | - echo "))";// end content |
|
| 4187 | - }else{ |
|
| 4188 | - echo ")";// end content |
|
| 4189 | - } |
|
| 4190 | - |
|
| 4191 | - |
|
| 4192 | - echo ", \n"; |
|
| 4193 | - |
|
| 4194 | - } |
|
| 4195 | - } else { |
|
| 4196 | - |
|
| 4197 | - if ( substr( $element, 0, 3 ) === "if_" ) { |
|
| 4198 | - $extra = ''; |
|
| 4199 | - if( strpos($new_args, '[%WrapClass%]') !== false ){ |
|
| 4200 | - $new_args = str_replace('[%WrapClass%]"','" + sd_build_aui_class(props.attributes)',$new_args); |
|
| 4201 | - $new_args = str_replace('[%WrapClass%]','+ sd_build_aui_class(props.attributes)',$new_args); |
|
| 4202 | - } |
|
| 4203 | - echo str_replace( "if_", "", $element ) . ": " . $this->block_props_replace( $new_args, true ) . ","; |
|
| 4204 | - } elseif ( $element == 'style' && strpos($new_args, '[%WrapStyle%]') !== false ) { |
|
| 4205 | - $new_args = str_replace('[%WrapStyle%]','',$new_args); |
|
| 4206 | - echo $element . ": {..." . $this->block_props_replace( $new_args ) . " , ...sd_build_aui_styles(props.attributes) },"; |
|
| 4108 | + echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( "; |
|
| 4109 | + echo $save ? "wp.blockEditor.useBlockProps.save( {" : "wp.blockEditor.useBlockProps( {"; |
|
| 4110 | + echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : ''; |
|
| 4111 | + |
|
| 4112 | + echo "} ), {"; |
|
| 4113 | + echo !empty($new_args['innerBlocksProps']) && !$save ? $this->block_element( $new_args['innerBlocksProps'],$save ) : ''; |
|
| 4114 | + // echo '###'; |
|
| 4115 | + |
|
| 4116 | + // echo '###'; |
|
| 4117 | + }elseif($new_args['element']=='BlocksProps'){ |
|
| 4118 | + |
|
| 4119 | + if ( isset($new_args['if_inner_element']) ) { |
|
| 4120 | + $element = $new_args['if_inner_element']; |
|
| 4121 | + }else { |
|
| 4122 | + $element = isset($new_args['inner_element']) ? "'".esc_attr($new_args['inner_element'])."'" : "'div'"; |
|
| 4123 | + } |
|
| 4124 | + |
|
| 4125 | + unset($new_args['inner_element']); |
|
| 4126 | + echo $save ? "\n el( $element, wp.blockEditor.useBlockProps.save( {" : "\n el( $element, wp.blockEditor.useBlockProps( {"; |
|
| 4127 | + echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : ''; |
|
| 4128 | + |
|
| 4129 | + |
|
| 4130 | + // echo "} ),"; |
|
| 4131 | + |
|
| 4132 | + }else{ |
|
| 4133 | + echo "\n el( '" . $new_args['element'] . "', {"; |
|
| 4134 | + } |
|
| 4135 | + |
|
| 4136 | + |
|
| 4137 | + // get the attributes |
|
| 4138 | + foreach ( $new_args as $new_key => $new_value ) { |
|
| 4139 | + |
|
| 4140 | + |
|
| 4141 | + if ( $new_key == 'element' || $new_key == 'content'|| $new_key == 'if_content' || $new_key == 'element_require' || $new_key == 'element_repeat' || is_array( $new_value ) ) { |
|
| 4142 | + // do nothing |
|
| 4143 | + } else { |
|
| 4144 | + echo $this->block_element( array( $new_key => $new_value ),$save ); |
|
| 4145 | + } |
|
| 4146 | + } |
|
| 4147 | + |
|
| 4148 | + echo $new_args['element']=='BlocksProps' ? '} ),' : "},";// end attributes |
|
| 4149 | + |
|
| 4150 | + // get the content |
|
| 4151 | + $first_item = 0; |
|
| 4152 | + foreach ( $new_args as $new_key => $new_value ) { |
|
| 4153 | + if ( $new_key === 'content' || $new_key === 'if_content' || is_array( $new_value ) ) { |
|
| 4154 | + |
|
| 4155 | + if ( $new_key === 'content' ) { |
|
| 4156 | + echo "'" . $this->block_props_replace( wp_slash( $new_value ) ) . "'"; |
|
| 4157 | + }else if ( $new_key === 'if_content' ) { |
|
| 4158 | + echo $this->block_props_replace( $new_value ); |
|
| 4159 | + } |
|
| 4160 | + |
|
| 4161 | + if ( is_array( $new_value ) ) { |
|
| 4162 | + |
|
| 4163 | + if ( isset( $new_value['element_require'] ) ) { |
|
| 4164 | + echo str_replace( array( |
|
| 4165 | + "'+", |
|
| 4166 | + "+'" |
|
| 4167 | + ), '', $this->block_props_replace( $new_value['element_require'] ) ) . " && "; |
|
| 4168 | + unset( $new_value['element_require'] ); |
|
| 4169 | + } |
|
| 4170 | + |
|
| 4171 | + if ( isset( $new_value['element_repeat'] ) ) { |
|
| 4172 | + $x = 1; |
|
| 4173 | + while ( $x <= absint( $new_value['element_repeat'] ) ) { |
|
| 4174 | + $this->block_element( array( '' => $new_value ),$save ); |
|
| 4175 | + $x ++; |
|
| 4176 | + } |
|
| 4177 | + } else { |
|
| 4178 | + $this->block_element( array( '' => $new_value ),$save ); |
|
| 4179 | + } |
|
| 4180 | + } |
|
| 4181 | + $first_item ++; |
|
| 4182 | + } |
|
| 4183 | + } |
|
| 4184 | + |
|
| 4185 | + if($new_args['element']=='innerBlocksProps' || $new_args['element']=='xBlocksProps'){ |
|
| 4186 | + echo "))";// end content |
|
| 4187 | + }else{ |
|
| 4188 | + echo ")";// end content |
|
| 4189 | + } |
|
| 4190 | + |
|
| 4191 | + |
|
| 4192 | + echo ", \n"; |
|
| 4193 | + |
|
| 4194 | + } |
|
| 4195 | + } else { |
|
| 4196 | + |
|
| 4197 | + if ( substr( $element, 0, 3 ) === "if_" ) { |
|
| 4198 | + $extra = ''; |
|
| 4199 | + if( strpos($new_args, '[%WrapClass%]') !== false ){ |
|
| 4200 | + $new_args = str_replace('[%WrapClass%]"','" + sd_build_aui_class(props.attributes)',$new_args); |
|
| 4201 | + $new_args = str_replace('[%WrapClass%]','+ sd_build_aui_class(props.attributes)',$new_args); |
|
| 4202 | + } |
|
| 4203 | + echo str_replace( "if_", "", $element ) . ": " . $this->block_props_replace( $new_args, true ) . ","; |
|
| 4204 | + } elseif ( $element == 'style' && strpos($new_args, '[%WrapStyle%]') !== false ) { |
|
| 4205 | + $new_args = str_replace('[%WrapStyle%]','',$new_args); |
|
| 4206 | + echo $element . ": {..." . $this->block_props_replace( $new_args ) . " , ...sd_build_aui_styles(props.attributes) },"; |
|
| 4207 | 4207 | // echo $element . ": " . $this->block_props_replace( $new_args ) . ","; |
| 4208 | - } elseif ( $element == 'style' ) { |
|
| 4209 | - echo $element . ": " . $this->block_props_replace( $new_args ) . ","; |
|
| 4210 | - } elseif ( ( $element == 'class' || $element == 'className' ) && strpos($new_args, '[%WrapClass%]') !== false ) { |
|
| 4211 | - $new_args = str_replace('[%WrapClass%]','',$new_args); |
|
| 4212 | - echo $element . ": '" . $this->block_props_replace( $new_args ) . "' + sd_build_aui_class(props.attributes),"; |
|
| 4213 | - } elseif ( $element == 'template' && $new_args ) { |
|
| 4214 | - echo $element . ": $new_args,"; |
|
| 4215 | - } else { |
|
| 4216 | - echo $element . ": '" . $this->block_props_replace( $new_args ) . "',"; |
|
| 4217 | - } |
|
| 4218 | - |
|
| 4219 | - } |
|
| 4220 | - } |
|
| 4221 | - } |
|
| 4222 | - } |
|
| 4223 | - |
|
| 4224 | - /** |
|
| 4225 | - * Replace block attributes placeholders with the proper naming. |
|
| 4226 | - * |
|
| 4227 | - * @param $string |
|
| 4228 | - * |
|
| 4229 | - * @return mixed |
|
| 4230 | - */ |
|
| 4231 | - public function block_props_replace( $string, $no_wrap = false ) { |
|
| 4232 | - if ( $no_wrap ) { |
|
| 4233 | - $string = str_replace( array( "[%", "%]", "%:checked]" ), array( "props.attributes.", "", "" ), $string ); |
|
| 4234 | - } else { |
|
| 4235 | - $string = str_replace( array( "![%", "[%", "%]", "%:checked]" ), array( "'+!props.attributes.", "'+props.attributes.", "+'", "+'" ), $string ); |
|
| 4236 | - } |
|
| 4237 | - |
|
| 4238 | - return $string; |
|
| 4239 | - } |
|
| 4240 | - |
|
| 4241 | - /** |
|
| 4242 | - * Outputs the content of the widget |
|
| 4243 | - * |
|
| 4244 | - * @param array $args |
|
| 4245 | - * @param array $instance |
|
| 4246 | - */ |
|
| 4247 | - public function widget( $args, $instance ) { |
|
| 4248 | - if ( ! is_array( $args ) ) { |
|
| 4249 | - $args = array(); |
|
| 4250 | - } |
|
| 4251 | - |
|
| 4252 | - // Get the filtered values |
|
| 4253 | - $argument_values = $this->argument_values( $instance ); |
|
| 4254 | - $argument_values = $this->string_to_bool( $argument_values ); |
|
| 4255 | - $output = $this->output( $argument_values, $args ); |
|
| 4256 | - |
|
| 4257 | - $no_wrap = false; |
|
| 4258 | - if ( isset( $argument_values['no_wrap'] ) && $argument_values['no_wrap'] ) { |
|
| 4259 | - $no_wrap = true; |
|
| 4260 | - } |
|
| 4261 | - |
|
| 4262 | - ob_start(); |
|
| 4263 | - if ( $output && ! $no_wrap ) { |
|
| 4264 | - |
|
| 4265 | - $class_original = $this->options['widget_ops']['classname']; |
|
| 4266 | - $class = $this->options['widget_ops']['classname']." sdel-".$this->get_instance_hash(); |
|
| 4267 | - |
|
| 4268 | - // Before widget |
|
| 4269 | - $before_widget = ! empty( $args['before_widget'] ) ? $args['before_widget'] : ''; |
|
| 4270 | - $before_widget = $before_widget ? str_replace( $class_original, $class, $before_widget ) : $before_widget; |
|
| 4271 | - $before_widget = apply_filters( 'wp_super_duper_before_widget', $before_widget, $args, $instance, $this ); |
|
| 4272 | - $before_widget = apply_filters( 'wp_super_duper_before_widget_' . $this->base_id, $before_widget, $args, $instance, $this ); |
|
| 4273 | - |
|
| 4274 | - // After widget |
|
| 4275 | - $after_widget = ! empty( $args['after_widget'] ) ? $args['after_widget'] : ''; |
|
| 4276 | - $after_widget = apply_filters( 'wp_super_duper_after_widget', $after_widget, $args, $instance, $this ); |
|
| 4277 | - $after_widget = apply_filters( 'wp_super_duper_after_widget_' . $this->base_id, $after_widget, $args, $instance, $this ); |
|
| 4278 | - |
|
| 4279 | - echo $before_widget; |
|
| 4280 | - // elementor strips the widget wrapping div so we check for and add it back if needed |
|
| 4281 | - if ( $this->is_elementor_widget_output() ) { |
|
| 4282 | - // Filter class & attrs for elementor widget output. |
|
| 4283 | - $class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this ); |
|
| 4284 | - $class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this ); |
|
| 4285 | - |
|
| 4286 | - $attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this ); |
|
| 4287 | - $attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this ); |
|
| 4288 | - |
|
| 4289 | - echo "<span class='" . esc_attr( $class ) . "' " . $attrs . ">"; |
|
| 4290 | - } |
|
| 4291 | - echo $this->output_title( $args, $instance ); |
|
| 4292 | - echo $output; |
|
| 4293 | - if ( $this->is_elementor_widget_output() ) { |
|
| 4294 | - echo "</span>"; |
|
| 4295 | - } |
|
| 4296 | - echo $after_widget; |
|
| 4297 | - } elseif ( $this->is_preview() && $output == '' ) {// if preview show a placeholder if empty |
|
| 4298 | - $output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" ); |
|
| 4299 | - echo $output; |
|
| 4300 | - } elseif ( $output && $no_wrap ) { |
|
| 4301 | - echo $output; |
|
| 4302 | - } |
|
| 4303 | - $output = ob_get_clean(); |
|
| 4304 | - |
|
| 4305 | - $output = apply_filters( 'wp_super_duper_widget_output', $output, $instance, $args, $this ); |
|
| 4208 | + } elseif ( $element == 'style' ) { |
|
| 4209 | + echo $element . ": " . $this->block_props_replace( $new_args ) . ","; |
|
| 4210 | + } elseif ( ( $element == 'class' || $element == 'className' ) && strpos($new_args, '[%WrapClass%]') !== false ) { |
|
| 4211 | + $new_args = str_replace('[%WrapClass%]','',$new_args); |
|
| 4212 | + echo $element . ": '" . $this->block_props_replace( $new_args ) . "' + sd_build_aui_class(props.attributes),"; |
|
| 4213 | + } elseif ( $element == 'template' && $new_args ) { |
|
| 4214 | + echo $element . ": $new_args,"; |
|
| 4215 | + } else { |
|
| 4216 | + echo $element . ": '" . $this->block_props_replace( $new_args ) . "',"; |
|
| 4217 | + } |
|
| 4218 | + |
|
| 4219 | + } |
|
| 4220 | + } |
|
| 4221 | + } |
|
| 4222 | + } |
|
| 4306 | 4223 | |
| 4307 | - echo $output; |
|
| 4308 | - } |
|
| 4224 | + /** |
|
| 4225 | + * Replace block attributes placeholders with the proper naming. |
|
| 4226 | + * |
|
| 4227 | + * @param $string |
|
| 4228 | + * |
|
| 4229 | + * @return mixed |
|
| 4230 | + */ |
|
| 4231 | + public function block_props_replace( $string, $no_wrap = false ) { |
|
| 4232 | + if ( $no_wrap ) { |
|
| 4233 | + $string = str_replace( array( "[%", "%]", "%:checked]" ), array( "props.attributes.", "", "" ), $string ); |
|
| 4234 | + } else { |
|
| 4235 | + $string = str_replace( array( "![%", "[%", "%]", "%:checked]" ), array( "'+!props.attributes.", "'+props.attributes.", "+'", "+'" ), $string ); |
|
| 4236 | + } |
|
| 4237 | + |
|
| 4238 | + return $string; |
|
| 4239 | + } |
|
| 4309 | 4240 | |
| 4310 | - /** |
|
| 4311 | - * Tests if the current output is inside a elementor container. |
|
| 4312 | - * |
|
| 4313 | - * @return bool |
|
| 4314 | - *@since 1.0.4 |
|
| 4315 | - */ |
|
| 4316 | - public function is_elementor_widget_output() { |
|
| 4317 | - $result = false; |
|
| 4318 | - if ( defined( 'ELEMENTOR_VERSION' ) && isset( $this->number ) && $this->number == 'REPLACE_TO_ID' ) { |
|
| 4319 | - $result = true; |
|
| 4320 | - } |
|
| 4241 | + /** |
|
| 4242 | + * Outputs the content of the widget |
|
| 4243 | + * |
|
| 4244 | + * @param array $args |
|
| 4245 | + * @param array $instance |
|
| 4246 | + */ |
|
| 4247 | + public function widget( $args, $instance ) { |
|
| 4248 | + if ( ! is_array( $args ) ) { |
|
| 4249 | + $args = array(); |
|
| 4250 | + } |
|
| 4251 | + |
|
| 4252 | + // Get the filtered values |
|
| 4253 | + $argument_values = $this->argument_values( $instance ); |
|
| 4254 | + $argument_values = $this->string_to_bool( $argument_values ); |
|
| 4255 | + $output = $this->output( $argument_values, $args ); |
|
| 4256 | + |
|
| 4257 | + $no_wrap = false; |
|
| 4258 | + if ( isset( $argument_values['no_wrap'] ) && $argument_values['no_wrap'] ) { |
|
| 4259 | + $no_wrap = true; |
|
| 4260 | + } |
|
| 4261 | + |
|
| 4262 | + ob_start(); |
|
| 4263 | + if ( $output && ! $no_wrap ) { |
|
| 4264 | + |
|
| 4265 | + $class_original = $this->options['widget_ops']['classname']; |
|
| 4266 | + $class = $this->options['widget_ops']['classname']." sdel-".$this->get_instance_hash(); |
|
| 4267 | + |
|
| 4268 | + // Before widget |
|
| 4269 | + $before_widget = ! empty( $args['before_widget'] ) ? $args['before_widget'] : ''; |
|
| 4270 | + $before_widget = $before_widget ? str_replace( $class_original, $class, $before_widget ) : $before_widget; |
|
| 4271 | + $before_widget = apply_filters( 'wp_super_duper_before_widget', $before_widget, $args, $instance, $this ); |
|
| 4272 | + $before_widget = apply_filters( 'wp_super_duper_before_widget_' . $this->base_id, $before_widget, $args, $instance, $this ); |
|
| 4273 | + |
|
| 4274 | + // After widget |
|
| 4275 | + $after_widget = ! empty( $args['after_widget'] ) ? $args['after_widget'] : ''; |
|
| 4276 | + $after_widget = apply_filters( 'wp_super_duper_after_widget', $after_widget, $args, $instance, $this ); |
|
| 4277 | + $after_widget = apply_filters( 'wp_super_duper_after_widget_' . $this->base_id, $after_widget, $args, $instance, $this ); |
|
| 4278 | + |
|
| 4279 | + echo $before_widget; |
|
| 4280 | + // elementor strips the widget wrapping div so we check for and add it back if needed |
|
| 4281 | + if ( $this->is_elementor_widget_output() ) { |
|
| 4282 | + // Filter class & attrs for elementor widget output. |
|
| 4283 | + $class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this ); |
|
| 4284 | + $class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this ); |
|
| 4285 | + |
|
| 4286 | + $attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this ); |
|
| 4287 | + $attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this ); |
|
| 4288 | + |
|
| 4289 | + echo "<span class='" . esc_attr( $class ) . "' " . $attrs . ">"; |
|
| 4290 | + } |
|
| 4291 | + echo $this->output_title( $args, $instance ); |
|
| 4292 | + echo $output; |
|
| 4293 | + if ( $this->is_elementor_widget_output() ) { |
|
| 4294 | + echo "</span>"; |
|
| 4295 | + } |
|
| 4296 | + echo $after_widget; |
|
| 4297 | + } elseif ( $this->is_preview() && $output == '' ) {// if preview show a placeholder if empty |
|
| 4298 | + $output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" ); |
|
| 4299 | + echo $output; |
|
| 4300 | + } elseif ( $output && $no_wrap ) { |
|
| 4301 | + echo $output; |
|
| 4302 | + } |
|
| 4303 | + $output = ob_get_clean(); |
|
| 4304 | + |
|
| 4305 | + $output = apply_filters( 'wp_super_duper_widget_output', $output, $instance, $args, $this ); |
|
| 4306 | + |
|
| 4307 | + echo $output; |
|
| 4308 | + } |
|
| 4321 | 4309 | |
| 4322 | - return $result; |
|
| 4323 | - } |
|
| 4310 | + /** |
|
| 4311 | + * Tests if the current output is inside a elementor container. |
|
| 4312 | + * |
|
| 4313 | + * @return bool |
|
| 4314 | + *@since 1.0.4 |
|
| 4315 | + */ |
|
| 4316 | + public function is_elementor_widget_output() { |
|
| 4317 | + $result = false; |
|
| 4318 | + if ( defined( 'ELEMENTOR_VERSION' ) && isset( $this->number ) && $this->number == 'REPLACE_TO_ID' ) { |
|
| 4319 | + $result = true; |
|
| 4320 | + } |
|
| 4324 | 4321 | |
| 4325 | - /** |
|
| 4326 | - * Tests if the current output is inside a elementor preview. |
|
| 4327 | - * |
|
| 4328 | - * @return bool |
|
| 4329 | - *@since 1.0.4 |
|
| 4330 | - */ |
|
| 4331 | - public function is_elementor_preview() { |
|
| 4332 | - $result = false; |
|
| 4333 | - if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) { |
|
| 4334 | - $result = true; |
|
| 4335 | - } |
|
| 4322 | + return $result; |
|
| 4323 | + } |
|
| 4336 | 4324 | |
| 4337 | - return $result; |
|
| 4338 | - } |
|
| 4325 | + /** |
|
| 4326 | + * Tests if the current output is inside a elementor preview. |
|
| 4327 | + * |
|
| 4328 | + * @return bool |
|
| 4329 | + *@since 1.0.4 |
|
| 4330 | + */ |
|
| 4331 | + public function is_elementor_preview() { |
|
| 4332 | + $result = false; |
|
| 4333 | + if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) { |
|
| 4334 | + $result = true; |
|
| 4335 | + } |
|
| 4339 | 4336 | |
| 4340 | - /** |
|
| 4341 | - * Tests if the current output is inside a Divi preview. |
|
| 4342 | - * |
|
| 4343 | - * @return bool |
|
| 4344 | - *@since 1.0.6 |
|
| 4345 | - */ |
|
| 4346 | - public function is_divi_preview() { |
|
| 4347 | - $result = false; |
|
| 4348 | - if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) { |
|
| 4349 | - $result = true; |
|
| 4350 | - } |
|
| 4337 | + return $result; |
|
| 4338 | + } |
|
| 4351 | 4339 | |
| 4352 | - return $result; |
|
| 4353 | - } |
|
| 4340 | + /** |
|
| 4341 | + * Tests if the current output is inside a Divi preview. |
|
| 4342 | + * |
|
| 4343 | + * @return bool |
|
| 4344 | + *@since 1.0.6 |
|
| 4345 | + */ |
|
| 4346 | + public function is_divi_preview() { |
|
| 4347 | + $result = false; |
|
| 4348 | + if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) { |
|
| 4349 | + $result = true; |
|
| 4350 | + } |
|
| 4354 | 4351 | |
| 4355 | - /** |
|
| 4356 | - * Tests if the current output is inside a Beaver builder preview. |
|
| 4357 | - * |
|
| 4358 | - * @return bool |
|
| 4359 | - *@since 1.0.6 |
|
| 4360 | - */ |
|
| 4361 | - public function is_beaver_preview() { |
|
| 4362 | - $result = false; |
|
| 4363 | - if ( isset( $_REQUEST['fl_builder'] ) ) { |
|
| 4364 | - $result = true; |
|
| 4365 | - } |
|
| 4352 | + return $result; |
|
| 4353 | + } |
|
| 4366 | 4354 | |
| 4367 | - return $result; |
|
| 4368 | - } |
|
| 4355 | + /** |
|
| 4356 | + * Tests if the current output is inside a Beaver builder preview. |
|
| 4357 | + * |
|
| 4358 | + * @return bool |
|
| 4359 | + *@since 1.0.6 |
|
| 4360 | + */ |
|
| 4361 | + public function is_beaver_preview() { |
|
| 4362 | + $result = false; |
|
| 4363 | + if ( isset( $_REQUEST['fl_builder'] ) ) { |
|
| 4364 | + $result = true; |
|
| 4365 | + } |
|
| 4369 | 4366 | |
| 4370 | - /** |
|
| 4371 | - * Tests if the current output is inside a siteorigin builder preview. |
|
| 4372 | - * |
|
| 4373 | - * @return bool |
|
| 4374 | - *@since 1.0.6 |
|
| 4375 | - */ |
|
| 4376 | - public function is_siteorigin_preview() { |
|
| 4377 | - $result = false; |
|
| 4378 | - if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) { |
|
| 4379 | - $result = true; |
|
| 4380 | - } |
|
| 4367 | + return $result; |
|
| 4368 | + } |
|
| 4381 | 4369 | |
| 4382 | - return $result; |
|
| 4383 | - } |
|
| 4370 | + /** |
|
| 4371 | + * Tests if the current output is inside a siteorigin builder preview. |
|
| 4372 | + * |
|
| 4373 | + * @return bool |
|
| 4374 | + *@since 1.0.6 |
|
| 4375 | + */ |
|
| 4376 | + public function is_siteorigin_preview() { |
|
| 4377 | + $result = false; |
|
| 4378 | + if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) { |
|
| 4379 | + $result = true; |
|
| 4380 | + } |
|
| 4384 | 4381 | |
| 4385 | - /** |
|
| 4386 | - * Tests if the current output is inside a cornerstone builder preview. |
|
| 4387 | - * |
|
| 4388 | - * @return bool |
|
| 4389 | - *@since 1.0.8 |
|
| 4390 | - */ |
|
| 4391 | - public function is_cornerstone_preview() { |
|
| 4392 | - $result = false; |
|
| 4393 | - if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) { |
|
| 4394 | - $result = true; |
|
| 4395 | - } |
|
| 4382 | + return $result; |
|
| 4383 | + } |
|
| 4396 | 4384 | |
| 4397 | - return $result; |
|
| 4398 | - } |
|
| 4385 | + /** |
|
| 4386 | + * Tests if the current output is inside a cornerstone builder preview. |
|
| 4387 | + * |
|
| 4388 | + * @return bool |
|
| 4389 | + *@since 1.0.8 |
|
| 4390 | + */ |
|
| 4391 | + public function is_cornerstone_preview() { |
|
| 4392 | + $result = false; |
|
| 4393 | + if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) { |
|
| 4394 | + $result = true; |
|
| 4395 | + } |
|
| 4399 | 4396 | |
| 4400 | - /** |
|
| 4401 | - * Tests if the current output is inside a fusion builder preview. |
|
| 4402 | - * |
|
| 4403 | - * @return bool |
|
| 4404 | - *@since 1.1.0 |
|
| 4405 | - */ |
|
| 4406 | - public function is_fusion_preview() { |
|
| 4407 | - $result = false; |
|
| 4408 | - if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) { |
|
| 4409 | - $result = true; |
|
| 4410 | - } |
|
| 4397 | + return $result; |
|
| 4398 | + } |
|
| 4411 | 4399 | |
| 4412 | - return $result; |
|
| 4413 | - } |
|
| 4400 | + /** |
|
| 4401 | + * Tests if the current output is inside a fusion builder preview. |
|
| 4402 | + * |
|
| 4403 | + * @return bool |
|
| 4404 | + *@since 1.1.0 |
|
| 4405 | + */ |
|
| 4406 | + public function is_fusion_preview() { |
|
| 4407 | + $result = false; |
|
| 4408 | + if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) { |
|
| 4409 | + $result = true; |
|
| 4410 | + } |
|
| 4414 | 4411 | |
| 4415 | - /** |
|
| 4416 | - * Tests if the current output is inside a Oxygen builder preview. |
|
| 4417 | - * |
|
| 4418 | - * @return bool |
|
| 4419 | - *@since 1.0.18 |
|
| 4420 | - */ |
|
| 4421 | - public function is_oxygen_preview() { |
|
| 4422 | - $result = false; |
|
| 4423 | - if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) { |
|
| 4424 | - $result = true; |
|
| 4425 | - } |
|
| 4412 | + return $result; |
|
| 4413 | + } |
|
| 4426 | 4414 | |
| 4427 | - return $result; |
|
| 4428 | - } |
|
| 4415 | + /** |
|
| 4416 | + * Tests if the current output is inside a Oxygen builder preview. |
|
| 4417 | + * |
|
| 4418 | + * @return bool |
|
| 4419 | + *@since 1.0.18 |
|
| 4420 | + */ |
|
| 4421 | + public function is_oxygen_preview() { |
|
| 4422 | + $result = false; |
|
| 4423 | + if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) { |
|
| 4424 | + $result = true; |
|
| 4425 | + } |
|
| 4429 | 4426 | |
| 4430 | - /** |
|
| 4431 | - * Check for Kallyas theme Zion builder preview. |
|
| 4432 | - * |
|
| 4433 | - * @since 1.1.22 |
|
| 4434 | - * |
|
| 4435 | - * @return bool True when preview page otherwise false. |
|
| 4436 | - */ |
|
| 4437 | - public function is_kallyas_zion_preview() { |
|
| 4438 | - $result = false; |
|
| 4439 | - |
|
| 4440 | - if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) { |
|
| 4441 | - $result = true; |
|
| 4442 | - } |
|
| 4427 | + return $result; |
|
| 4428 | + } |
|
| 4443 | 4429 | |
| 4444 | - return $result; |
|
| 4445 | - } |
|
| 4430 | + /** |
|
| 4431 | + * Check for Kallyas theme Zion builder preview. |
|
| 4432 | + * |
|
| 4433 | + * @since 1.1.22 |
|
| 4434 | + * |
|
| 4435 | + * @return bool True when preview page otherwise false. |
|
| 4436 | + */ |
|
| 4437 | + public function is_kallyas_zion_preview() { |
|
| 4438 | + $result = false; |
|
| 4446 | 4439 | |
| 4447 | - /** |
|
| 4448 | - * Check for Bricks theme builder preview. |
|
| 4449 | - * |
|
| 4450 | - * @since 1.1.31 |
|
| 4451 | - * |
|
| 4452 | - * @return bool True when preview page otherwise false. |
|
| 4453 | - */ |
|
| 4454 | - public function is_bricks_preview() { |
|
| 4455 | - $result = false; |
|
| 4456 | - |
|
| 4457 | - if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) { |
|
| 4458 | - $result = true; |
|
| 4459 | - } |
|
| 4440 | + if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) { |
|
| 4441 | + $result = true; |
|
| 4442 | + } |
|
| 4460 | 4443 | |
| 4461 | - return $result; |
|
| 4462 | - } |
|
| 4444 | + return $result; |
|
| 4445 | + } |
|
| 4463 | 4446 | |
| 4464 | - /** |
|
| 4465 | - * General function to check if we are in a preview situation. |
|
| 4466 | - * |
|
| 4467 | - * @return bool |
|
| 4468 | - *@since 1.0.6 |
|
| 4469 | - */ |
|
| 4470 | - public function is_preview() { |
|
| 4471 | - $preview = false; |
|
| 4472 | - if ( $this->is_divi_preview() ) { |
|
| 4473 | - $preview = true; |
|
| 4474 | - } elseif ( $this->is_elementor_preview() ) { |
|
| 4475 | - $preview = true; |
|
| 4476 | - } elseif ( $this->is_beaver_preview() ) { |
|
| 4477 | - $preview = true; |
|
| 4478 | - } elseif ( $this->is_siteorigin_preview() ) { |
|
| 4479 | - $preview = true; |
|
| 4480 | - } elseif ( $this->is_cornerstone_preview() ) { |
|
| 4481 | - $preview = true; |
|
| 4482 | - } elseif ( $this->is_fusion_preview() ) { |
|
| 4483 | - $preview = true; |
|
| 4484 | - } elseif ( $this->is_oxygen_preview() ) { |
|
| 4485 | - $preview = true; |
|
| 4486 | - } elseif( $this->is_kallyas_zion_preview() ) { |
|
| 4487 | - $preview = true; |
|
| 4488 | - } elseif( $this->is_block_content_call() ) { |
|
| 4489 | - $preview = true; |
|
| 4490 | - } elseif( $this->is_bricks_preview() ) { |
|
| 4491 | - $preview = true; |
|
| 4492 | - } |
|
| 4447 | + /** |
|
| 4448 | + * Check for Bricks theme builder preview. |
|
| 4449 | + * |
|
| 4450 | + * @since 1.1.31 |
|
| 4451 | + * |
|
| 4452 | + * @return bool True when preview page otherwise false. |
|
| 4453 | + */ |
|
| 4454 | + public function is_bricks_preview() { |
|
| 4455 | + $result = false; |
|
| 4493 | 4456 | |
| 4494 | - return $preview; |
|
| 4495 | - } |
|
| 4457 | + if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) { |
|
| 4458 | + $result = true; |
|
| 4459 | + } |
|
| 4496 | 4460 | |
| 4497 | - /** |
|
| 4498 | - * Output the super title. |
|
| 4499 | - * |
|
| 4500 | - * @param $args |
|
| 4501 | - * @param array $instance |
|
| 4502 | - * |
|
| 4503 | - * @return string |
|
| 4504 | - */ |
|
| 4505 | - public function output_title( $args, $instance = array() ) { |
|
| 4506 | - $output = ''; |
|
| 4507 | - if ( ! empty( $instance['title'] ) ) { |
|
| 4508 | - /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */ |
|
| 4509 | - $title = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ); |
|
| 4510 | - |
|
| 4511 | - if ( empty( $instance['widget_title_tag'] ) ) { |
|
| 4512 | - if ( ! isset( $args['before_title'] ) ) { |
|
| 4513 | - $args['before_title'] = ''; |
|
| 4514 | - } |
|
| 4461 | + return $result; |
|
| 4462 | + } |
|
| 4515 | 4463 | |
| 4516 | - if ( ! isset( $args['after_title'] ) ) { |
|
| 4517 | - $args['after_title'] = ''; |
|
| 4518 | - } |
|
| 4464 | + /** |
|
| 4465 | + * General function to check if we are in a preview situation. |
|
| 4466 | + * |
|
| 4467 | + * @return bool |
|
| 4468 | + *@since 1.0.6 |
|
| 4469 | + */ |
|
| 4470 | + public function is_preview() { |
|
| 4471 | + $preview = false; |
|
| 4472 | + if ( $this->is_divi_preview() ) { |
|
| 4473 | + $preview = true; |
|
| 4474 | + } elseif ( $this->is_elementor_preview() ) { |
|
| 4475 | + $preview = true; |
|
| 4476 | + } elseif ( $this->is_beaver_preview() ) { |
|
| 4477 | + $preview = true; |
|
| 4478 | + } elseif ( $this->is_siteorigin_preview() ) { |
|
| 4479 | + $preview = true; |
|
| 4480 | + } elseif ( $this->is_cornerstone_preview() ) { |
|
| 4481 | + $preview = true; |
|
| 4482 | + } elseif ( $this->is_fusion_preview() ) { |
|
| 4483 | + $preview = true; |
|
| 4484 | + } elseif ( $this->is_oxygen_preview() ) { |
|
| 4485 | + $preview = true; |
|
| 4486 | + } elseif( $this->is_kallyas_zion_preview() ) { |
|
| 4487 | + $preview = true; |
|
| 4488 | + } elseif( $this->is_block_content_call() ) { |
|
| 4489 | + $preview = true; |
|
| 4490 | + } elseif( $this->is_bricks_preview() ) { |
|
| 4491 | + $preview = true; |
|
| 4492 | + } |
|
| 4493 | + |
|
| 4494 | + return $preview; |
|
| 4495 | + } |
|
| 4519 | 4496 | |
| 4520 | - $output = $args['before_title'] . $title . $args['after_title']; |
|
| 4521 | - } else { |
|
| 4522 | - $tag = esc_attr( $instance['widget_title_tag'] ); |
|
| 4523 | - $allowed_tags = array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'div', 'p' ); |
|
| 4524 | - $title_tag = in_array( $tag, $allowed_tags, true ) ? esc_attr( $tag ) : 'h2'; |
|
| 4525 | - |
|
| 4526 | - // classes |
|
| 4527 | - $title_classes = array(); |
|
| 4528 | - $title_classes[] = !empty( $instance['widget_title_size_class'] ) ? sanitize_html_class( $instance['widget_title_size_class'] ) : ''; |
|
| 4529 | - $title_classes[] = !empty( $instance['widget_title_align_class'] ) ? sanitize_html_class( $instance['widget_title_align_class'] ) : ''; |
|
| 4530 | - $title_classes[] = !empty( $instance['widget_title_color_class'] ) ? "text-".sanitize_html_class( $instance['widget_title_color_class'] ) : ''; |
|
| 4531 | - $title_classes[] = !empty( $instance['widget_title_border_class'] ) ? sanitize_html_class( $instance['widget_title_border_class'] ) : ''; |
|
| 4532 | - $title_classes[] = !empty( $instance['widget_title_border_color_class'] ) ? "border-".sanitize_html_class( $instance['widget_title_border_color_class'] ) : ''; |
|
| 4533 | - $title_classes[] = !empty( $instance['widget_title_mt_class'] ) ? "mt-".absint( $instance['widget_title_mt_class'] ) : ''; |
|
| 4534 | - $title_classes[] = !empty( $instance['widget_title_mr_class'] ) ? "mr-".absint( $instance['widget_title_mr_class'] ) : ''; |
|
| 4535 | - $title_classes[] = !empty( $instance['widget_title_mb_class'] ) ? "mb-".absint( $instance['widget_title_mb_class'] ) : ''; |
|
| 4536 | - $title_classes[] = !empty( $instance['widget_title_ml_class'] ) ? "ml-".absint( $instance['widget_title_ml_class'] ) : ''; |
|
| 4537 | - $title_classes[] = !empty( $instance['widget_title_pt_class'] ) ? "pt-".absint( $instance['widget_title_pt_class'] ) : ''; |
|
| 4538 | - $title_classes[] = !empty( $instance['widget_title_pr_class'] ) ? "pr-".absint( $instance['widget_title_pr_class'] ) : ''; |
|
| 4539 | - $title_classes[] = !empty( $instance['widget_title_pb_class'] ) ? "pb-".absint( $instance['widget_title_pb_class'] ) : ''; |
|
| 4540 | - $title_classes[] = !empty( $instance['widget_title_pl_class'] ) ? "pl-".absint( $instance['widget_title_pl_class'] ) : ''; |
|
| 4541 | - |
|
| 4542 | - $class = !empty( $title_classes ) ? implode(" ",$title_classes) : ''; |
|
| 4543 | - $output = "<$title_tag class='$class' >$title</$title_tag>"; |
|
| 4544 | - } |
|
| 4497 | + /** |
|
| 4498 | + * Output the super title. |
|
| 4499 | + * |
|
| 4500 | + * @param $args |
|
| 4501 | + * @param array $instance |
|
| 4502 | + * |
|
| 4503 | + * @return string |
|
| 4504 | + */ |
|
| 4505 | + public function output_title( $args, $instance = array() ) { |
|
| 4506 | + $output = ''; |
|
| 4507 | + if ( ! empty( $instance['title'] ) ) { |
|
| 4508 | + /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */ |
|
| 4509 | + $title = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ); |
|
| 4510 | + |
|
| 4511 | + if ( empty( $instance['widget_title_tag'] ) ) { |
|
| 4512 | + if ( ! isset( $args['before_title'] ) ) { |
|
| 4513 | + $args['before_title'] = ''; |
|
| 4514 | + } |
|
| 4515 | + |
|
| 4516 | + if ( ! isset( $args['after_title'] ) ) { |
|
| 4517 | + $args['after_title'] = ''; |
|
| 4518 | + } |
|
| 4519 | + |
|
| 4520 | + $output = $args['before_title'] . $title . $args['after_title']; |
|
| 4521 | + } else { |
|
| 4522 | + $tag = esc_attr( $instance['widget_title_tag'] ); |
|
| 4523 | + $allowed_tags = array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'div', 'p' ); |
|
| 4524 | + $title_tag = in_array( $tag, $allowed_tags, true ) ? esc_attr( $tag ) : 'h2'; |
|
| 4525 | + |
|
| 4526 | + // classes |
|
| 4527 | + $title_classes = array(); |
|
| 4528 | + $title_classes[] = !empty( $instance['widget_title_size_class'] ) ? sanitize_html_class( $instance['widget_title_size_class'] ) : ''; |
|
| 4529 | + $title_classes[] = !empty( $instance['widget_title_align_class'] ) ? sanitize_html_class( $instance['widget_title_align_class'] ) : ''; |
|
| 4530 | + $title_classes[] = !empty( $instance['widget_title_color_class'] ) ? "text-".sanitize_html_class( $instance['widget_title_color_class'] ) : ''; |
|
| 4531 | + $title_classes[] = !empty( $instance['widget_title_border_class'] ) ? sanitize_html_class( $instance['widget_title_border_class'] ) : ''; |
|
| 4532 | + $title_classes[] = !empty( $instance['widget_title_border_color_class'] ) ? "border-".sanitize_html_class( $instance['widget_title_border_color_class'] ) : ''; |
|
| 4533 | + $title_classes[] = !empty( $instance['widget_title_mt_class'] ) ? "mt-".absint( $instance['widget_title_mt_class'] ) : ''; |
|
| 4534 | + $title_classes[] = !empty( $instance['widget_title_mr_class'] ) ? "mr-".absint( $instance['widget_title_mr_class'] ) : ''; |
|
| 4535 | + $title_classes[] = !empty( $instance['widget_title_mb_class'] ) ? "mb-".absint( $instance['widget_title_mb_class'] ) : ''; |
|
| 4536 | + $title_classes[] = !empty( $instance['widget_title_ml_class'] ) ? "ml-".absint( $instance['widget_title_ml_class'] ) : ''; |
|
| 4537 | + $title_classes[] = !empty( $instance['widget_title_pt_class'] ) ? "pt-".absint( $instance['widget_title_pt_class'] ) : ''; |
|
| 4538 | + $title_classes[] = !empty( $instance['widget_title_pr_class'] ) ? "pr-".absint( $instance['widget_title_pr_class'] ) : ''; |
|
| 4539 | + $title_classes[] = !empty( $instance['widget_title_pb_class'] ) ? "pb-".absint( $instance['widget_title_pb_class'] ) : ''; |
|
| 4540 | + $title_classes[] = !empty( $instance['widget_title_pl_class'] ) ? "pl-".absint( $instance['widget_title_pl_class'] ) : ''; |
|
| 4541 | + |
|
| 4542 | + $class = !empty( $title_classes ) ? implode(" ",$title_classes) : ''; |
|
| 4543 | + $output = "<$title_tag class='$class' >$title</$title_tag>"; |
|
| 4544 | + } |
|
| 4545 | 4545 | |
| 4546 | - } |
|
| 4546 | + } |
|
| 4547 | 4547 | |
| 4548 | - return $output; |
|
| 4549 | - } |
|
| 4548 | + return $output; |
|
| 4549 | + } |
|
| 4550 | 4550 | |
| 4551 | - /** |
|
| 4552 | - * Outputs the options form inputs for the widget. |
|
| 4553 | - * |
|
| 4554 | - * @param array $instance The widget options. |
|
| 4555 | - */ |
|
| 4556 | - public function form( $instance ) { |
|
| 4551 | + /** |
|
| 4552 | + * Outputs the options form inputs for the widget. |
|
| 4553 | + * |
|
| 4554 | + * @param array $instance The widget options. |
|
| 4555 | + */ |
|
| 4556 | + public function form( $instance ) { |
|
| 4557 | 4557 | |
| 4558 | - // set widget instance |
|
| 4559 | - $this->instance = $instance; |
|
| 4558 | + // set widget instance |
|
| 4559 | + $this->instance = $instance; |
|
| 4560 | 4560 | |
| 4561 | - // set it as a SD widget |
|
| 4562 | - echo $this->widget_advanced_toggle(); |
|
| 4561 | + // set it as a SD widget |
|
| 4562 | + echo $this->widget_advanced_toggle(); |
|
| 4563 | 4563 | |
| 4564 | - echo "<p>" . esc_attr( $this->options['widget_ops']['description'] ) . "</p>"; |
|
| 4565 | - $arguments_raw = $this->get_arguments(); |
|
| 4564 | + echo "<p>" . esc_attr( $this->options['widget_ops']['description'] ) . "</p>"; |
|
| 4565 | + $arguments_raw = $this->get_arguments(); |
|
| 4566 | 4566 | |
| 4567 | - if ( is_array( $arguments_raw ) ) { |
|
| 4567 | + if ( is_array( $arguments_raw ) ) { |
|
| 4568 | 4568 | |
| 4569 | - $arguments = $this->group_arguments( $arguments_raw ); |
|
| 4569 | + $arguments = $this->group_arguments( $arguments_raw ); |
|
| 4570 | 4570 | |
| 4571 | - // Do we have sections? |
|
| 4572 | - $has_sections = $arguments == $arguments_raw ? false : true; |
|
| 4571 | + // Do we have sections? |
|
| 4572 | + $has_sections = $arguments == $arguments_raw ? false : true; |
|
| 4573 | 4573 | |
| 4574 | 4574 | |
| 4575 | - if ( $has_sections ) { |
|
| 4576 | - $panel_count = 0; |
|
| 4577 | - foreach ( $arguments as $key => $args ) { |
|
| 4575 | + if ( $has_sections ) { |
|
| 4576 | + $panel_count = 0; |
|
| 4577 | + foreach ( $arguments as $key => $args ) { |
|
| 4578 | 4578 | |
| 4579 | - ?> |
|
| 4579 | + ?> |
|
| 4580 | 4580 | <script> |
| 4581 | 4581 | // jQuery(this).find("i").toggleClass("fas fa-chevron-up fas fa-chevron-down");jQuery(this).next().toggle(); |
| 4582 | 4582 | </script> |
| 4583 | 4583 | <?php |
| 4584 | 4584 | |
| 4585 | - $hide = $panel_count ? ' style="display:none;" ' : ''; |
|
| 4586 | - $icon_class = $panel_count ? 'fas fa-chevron-up' : 'fas fa-chevron-down'; |
|
| 4587 | - echo "<button onclick='jQuery(this).find(\"i\").toggleClass(\"fas fa-chevron-up fas fa-chevron-down\");jQuery(this).next().slideToggle();' type='button' class='sd-toggle-group-button sd-input-group-toggle" . sanitize_title_with_dashes( $key ) . "'>" . esc_attr( $key ) . " <i style='float:right;' class='" . $icon_class . "'></i></button>"; |
|
| 4588 | - echo "<div class='sd-toggle-group sd-input-group-" . sanitize_title_with_dashes( $key ) . "' $hide>"; |
|
| 4585 | + $hide = $panel_count ? ' style="display:none;" ' : ''; |
|
| 4586 | + $icon_class = $panel_count ? 'fas fa-chevron-up' : 'fas fa-chevron-down'; |
|
| 4587 | + echo "<button onclick='jQuery(this).find(\"i\").toggleClass(\"fas fa-chevron-up fas fa-chevron-down\");jQuery(this).next().slideToggle();' type='button' class='sd-toggle-group-button sd-input-group-toggle" . sanitize_title_with_dashes( $key ) . "'>" . esc_attr( $key ) . " <i style='float:right;' class='" . $icon_class . "'></i></button>"; |
|
| 4588 | + echo "<div class='sd-toggle-group sd-input-group-" . sanitize_title_with_dashes( $key ) . "' $hide>"; |
|
| 4589 | 4589 | |
| 4590 | - foreach ( $args as $k => $a ) { |
|
| 4590 | + foreach ( $args as $k => $a ) { |
|
| 4591 | 4591 | |
| 4592 | - $this->widget_inputs_row_start($k, $a); |
|
| 4593 | - $this->widget_inputs( $a, $instance ); |
|
| 4594 | - $this->widget_inputs_row_end($k, $a); |
|
| 4592 | + $this->widget_inputs_row_start($k, $a); |
|
| 4593 | + $this->widget_inputs( $a, $instance ); |
|
| 4594 | + $this->widget_inputs_row_end($k, $a); |
|
| 4595 | 4595 | |
| 4596 | - } |
|
| 4596 | + } |
|
| 4597 | 4597 | |
| 4598 | - echo "</div>"; |
|
| 4598 | + echo "</div>"; |
|
| 4599 | 4599 | |
| 4600 | - $panel_count ++; |
|
| 4600 | + $panel_count ++; |
|
| 4601 | 4601 | |
| 4602 | - } |
|
| 4603 | - } else { |
|
| 4604 | - foreach ( $arguments as $key => $args ) { |
|
| 4605 | - $this->widget_inputs_row_start($key, $args); |
|
| 4606 | - $this->widget_inputs( $args, $instance ); |
|
| 4607 | - $this->widget_inputs_row_end($key, $args); |
|
| 4608 | - } |
|
| 4609 | - } |
|
| 4602 | + } |
|
| 4603 | + } else { |
|
| 4604 | + foreach ( $arguments as $key => $args ) { |
|
| 4605 | + $this->widget_inputs_row_start($key, $args); |
|
| 4606 | + $this->widget_inputs( $args, $instance ); |
|
| 4607 | + $this->widget_inputs_row_end($key, $args); |
|
| 4608 | + } |
|
| 4609 | + } |
|
| 4610 | 4610 | |
| 4611 | - } |
|
| 4612 | - } |
|
| 4611 | + } |
|
| 4612 | + } |
|
| 4613 | 4613 | |
| 4614 | - public function widget_inputs_row_start( $key, $args ) { |
|
| 4615 | - if ( ! empty( $args['row'] ) ) { |
|
| 4616 | - // Maybe open |
|
| 4617 | - if ( ! empty( $args['row']['open'] ) ) { |
|
| 4618 | - ?> |
|
| 4614 | + public function widget_inputs_row_start( $key, $args ) { |
|
| 4615 | + if ( ! empty( $args['row'] ) ) { |
|
| 4616 | + // Maybe open |
|
| 4617 | + if ( ! empty( $args['row']['open'] ) ) { |
|
| 4618 | + ?> |
|
| 4619 | 4619 | <div class='bsui sd-argument' data-argument='<?php echo esc_attr( $args['row']['key'] ); ?>' data-element_require='<?php echo ( ! empty( $args['row']['element_require'] ) ? $this->convert_element_require( $args['row']['element_require'] ) : '' ); ?>'> |
| 4620 | 4620 | <?php if ( ! empty( $args['row']['title'] ) ) { ?> |
| 4621 | 4621 | <?php |
| 4622 | - if ( isset( $args['row']['icon'] ) ) { |
|
| 4623 | - $args['row']['icon'] = ''; |
|
| 4624 | - } |
|
| 4625 | - |
|
| 4626 | - if ( ! isset( $args['row']['device_type'] ) && isset( $args['device_type'] ) ) { |
|
| 4627 | - $args['row']['device_type'] = $args['device_type']; |
|
| 4628 | - } |
|
| 4629 | - ?> |
|
| 4622 | + if ( isset( $args['row']['icon'] ) ) { |
|
| 4623 | + $args['row']['icon'] = ''; |
|
| 4624 | + } |
|
| 4625 | + |
|
| 4626 | + if ( ! isset( $args['row']['device_type'] ) && isset( $args['device_type'] ) ) { |
|
| 4627 | + $args['row']['device_type'] = $args['device_type']; |
|
| 4628 | + } |
|
| 4629 | + ?> |
|
| 4630 | 4630 | <label class="mb-0"><?php echo $this->widget_field_title( $args['row'] ); ?><?php echo $this->widget_field_desc( $args['row'] ); ?></label> |
| 4631 | 4631 | <?php } ?> |
| 4632 | 4632 | <div class='row<?php echo ( ! empty( $args['row']['class'] ) ? ' ' . esc_attr( $args['row']['class'] ) : '' ); ?>'> |
| 4633 | 4633 | <div class='col pr-2'> |
| 4634 | 4634 | <?php |
| 4635 | - } else if ( ! empty( $args['row']['close'] ) ) { |
|
| 4636 | - echo "<div class='col pl-0 ps-0'>"; |
|
| 4637 | - } else { |
|
| 4638 | - echo "<div class='col pl-0 ps-0 pr-2 pe-2'>"; |
|
| 4639 | - } |
|
| 4640 | - } |
|
| 4641 | - } |
|
| 4642 | - |
|
| 4643 | - public function widget_inputs_row_end( $key, $args ) { |
|
| 4644 | - if ( ! empty( $args['row'] ) ) { |
|
| 4645 | - // Maybe close |
|
| 4646 | - if ( ! empty( $args['row']['close'] ) ) { |
|
| 4647 | - echo "</div></div>"; |
|
| 4648 | - } |
|
| 4649 | - echo "</div>"; |
|
| 4650 | - } |
|
| 4651 | - } |
|
| 4652 | - |
|
| 4653 | - /** |
|
| 4654 | - * Get the hidden input that when added makes the advanced button show on widget settings. |
|
| 4655 | - * |
|
| 4656 | - * @return string |
|
| 4657 | - */ |
|
| 4658 | - public function widget_advanced_toggle() { |
|
| 4659 | - |
|
| 4660 | - $output = ''; |
|
| 4661 | - if ( $this->block_show_advanced() ) { |
|
| 4662 | - $val = 1; |
|
| 4663 | - } else { |
|
| 4664 | - $val = 0; |
|
| 4665 | - } |
|
| 4635 | + } else if ( ! empty( $args['row']['close'] ) ) { |
|
| 4636 | + echo "<div class='col pl-0 ps-0'>"; |
|
| 4637 | + } else { |
|
| 4638 | + echo "<div class='col pl-0 ps-0 pr-2 pe-2'>"; |
|
| 4639 | + } |
|
| 4640 | + } |
|
| 4641 | + } |
|
| 4666 | 4642 | |
| 4667 | - $output .= "<input type='hidden' class='sd-show-advanced' value='$val' />"; |
|
| 4643 | + public function widget_inputs_row_end( $key, $args ) { |
|
| 4644 | + if ( ! empty( $args['row'] ) ) { |
|
| 4645 | + // Maybe close |
|
| 4646 | + if ( ! empty( $args['row']['close'] ) ) { |
|
| 4647 | + echo "</div></div>"; |
|
| 4648 | + } |
|
| 4649 | + echo "</div>"; |
|
| 4650 | + } |
|
| 4651 | + } |
|
| 4668 | 4652 | |
| 4669 | - return $output; |
|
| 4670 | - } |
|
| 4653 | + /** |
|
| 4654 | + * Get the hidden input that when added makes the advanced button show on widget settings. |
|
| 4655 | + * |
|
| 4656 | + * @return string |
|
| 4657 | + */ |
|
| 4658 | + public function widget_advanced_toggle() { |
|
| 4671 | 4659 | |
| 4672 | - /** |
|
| 4673 | - * Convert require element. |
|
| 4674 | - * |
|
| 4675 | - * @param string $input Input element. |
|
| 4676 | - * |
|
| 4677 | - * @return string $output |
|
| 4678 | - *@since 1.0.0 |
|
| 4679 | - * |
|
| 4680 | - */ |
|
| 4681 | - public function convert_element_require( $input ) { |
|
| 4682 | - $input = str_replace( "'", '"', $input );// we only want double quotes |
|
| 4683 | - |
|
| 4684 | - $output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array( |
|
| 4685 | - "jQuery(form).find('[data-argument=\"", |
|
| 4686 | - "\"]').find('input,select,textarea').val()", |
|
| 4687 | - "\"]').find('input:checked').val()" |
|
| 4688 | - ), $input ) ); |
|
| 4689 | - |
|
| 4690 | - return $output; |
|
| 4691 | - } |
|
| 4660 | + $output = ''; |
|
| 4661 | + if ( $this->block_show_advanced() ) { |
|
| 4662 | + $val = 1; |
|
| 4663 | + } else { |
|
| 4664 | + $val = 0; |
|
| 4665 | + } |
|
| 4692 | 4666 | |
| 4693 | - /** |
|
| 4694 | - * Builds the inputs for the widget options. |
|
| 4695 | - * |
|
| 4696 | - * @param $args |
|
| 4697 | - * @param $instance |
|
| 4698 | - */ |
|
| 4699 | - public function widget_inputs( $args, $instance ) { |
|
| 4700 | - |
|
| 4701 | - $class = ""; |
|
| 4702 | - $element_require = ""; |
|
| 4703 | - $custom_attributes = ""; |
|
| 4704 | - |
|
| 4705 | - // get value |
|
| 4706 | - if ( isset( $instance[ $args['name'] ] ) ) { |
|
| 4707 | - $value = $instance[ $args['name'] ]; |
|
| 4708 | - } elseif ( ! isset( $instance[ $args['name'] ] ) && ! empty( $args['default'] ) ) { |
|
| 4709 | - $value = is_array( $args['default'] ) ? array_map( "esc_html", $args['default'] ) : esc_html( $args['default'] ); |
|
| 4710 | - } else { |
|
| 4711 | - $value = ''; |
|
| 4712 | - } |
|
| 4667 | + $output .= "<input type='hidden' class='sd-show-advanced' value='$val' />"; |
|
| 4713 | 4668 | |
| 4714 | - // get placeholder |
|
| 4715 | - if ( ! empty( $args['placeholder'] ) ) { |
|
| 4716 | - $placeholder = "placeholder='" . esc_html( $args['placeholder'] ) . "'"; |
|
| 4717 | - } else { |
|
| 4718 | - $placeholder = ''; |
|
| 4719 | - } |
|
| 4669 | + return $output; |
|
| 4670 | + } |
|
| 4720 | 4671 | |
| 4721 | - // get if advanced |
|
| 4722 | - if ( isset( $args['advanced'] ) && $args['advanced'] ) { |
|
| 4723 | - $class .= " sd-advanced-setting "; |
|
| 4724 | - } |
|
| 4672 | + /** |
|
| 4673 | + * Convert require element. |
|
| 4674 | + * |
|
| 4675 | + * @param string $input Input element. |
|
| 4676 | + * |
|
| 4677 | + * @return string $output |
|
| 4678 | + *@since 1.0.0 |
|
| 4679 | + * |
|
| 4680 | + */ |
|
| 4681 | + public function convert_element_require( $input ) { |
|
| 4682 | + $input = str_replace( "'", '"', $input );// we only want double quotes |
|
| 4725 | 4683 | |
| 4726 | - // element_require |
|
| 4727 | - if ( isset( $args['element_require'] ) && $args['element_require'] ) { |
|
| 4728 | - $element_require = $args['element_require']; |
|
| 4729 | - } |
|
| 4684 | + $output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array( |
|
| 4685 | + "jQuery(form).find('[data-argument=\"", |
|
| 4686 | + "\"]').find('input,select,textarea').val()", |
|
| 4687 | + "\"]').find('input:checked').val()" |
|
| 4688 | + ), $input ) ); |
|
| 4730 | 4689 | |
| 4731 | - // custom_attributes |
|
| 4732 | - if ( isset( $args['custom_attributes'] ) && $args['custom_attributes'] ) { |
|
| 4733 | - $custom_attributes = $this->array_to_attributes( $args['custom_attributes'], true ); |
|
| 4734 | - } |
|
| 4690 | + return $output; |
|
| 4691 | + } |
|
| 4735 | 4692 | |
| 4736 | - // before wrapper |
|
| 4737 | - ?> |
|
| 4693 | + /** |
|
| 4694 | + * Builds the inputs for the widget options. |
|
| 4695 | + * |
|
| 4696 | + * @param $args |
|
| 4697 | + * @param $instance |
|
| 4698 | + */ |
|
| 4699 | + public function widget_inputs( $args, $instance ) { |
|
| 4700 | + |
|
| 4701 | + $class = ""; |
|
| 4702 | + $element_require = ""; |
|
| 4703 | + $custom_attributes = ""; |
|
| 4704 | + |
|
| 4705 | + // get value |
|
| 4706 | + if ( isset( $instance[ $args['name'] ] ) ) { |
|
| 4707 | + $value = $instance[ $args['name'] ]; |
|
| 4708 | + } elseif ( ! isset( $instance[ $args['name'] ] ) && ! empty( $args['default'] ) ) { |
|
| 4709 | + $value = is_array( $args['default'] ) ? array_map( "esc_html", $args['default'] ) : esc_html( $args['default'] ); |
|
| 4710 | + } else { |
|
| 4711 | + $value = ''; |
|
| 4712 | + } |
|
| 4713 | + |
|
| 4714 | + // get placeholder |
|
| 4715 | + if ( ! empty( $args['placeholder'] ) ) { |
|
| 4716 | + $placeholder = "placeholder='" . esc_html( $args['placeholder'] ) . "'"; |
|
| 4717 | + } else { |
|
| 4718 | + $placeholder = ''; |
|
| 4719 | + } |
|
| 4720 | + |
|
| 4721 | + // get if advanced |
|
| 4722 | + if ( isset( $args['advanced'] ) && $args['advanced'] ) { |
|
| 4723 | + $class .= " sd-advanced-setting "; |
|
| 4724 | + } |
|
| 4725 | + |
|
| 4726 | + // element_require |
|
| 4727 | + if ( isset( $args['element_require'] ) && $args['element_require'] ) { |
|
| 4728 | + $element_require = $args['element_require']; |
|
| 4729 | + } |
|
| 4730 | + |
|
| 4731 | + // custom_attributes |
|
| 4732 | + if ( isset( $args['custom_attributes'] ) && $args['custom_attributes'] ) { |
|
| 4733 | + $custom_attributes = $this->array_to_attributes( $args['custom_attributes'], true ); |
|
| 4734 | + } |
|
| 4735 | + |
|
| 4736 | + // before wrapper |
|
| 4737 | + ?> |
|
| 4738 | 4738 | <p class="sd-argument <?php echo esc_attr( $class ); ?>" data-argument='<?php echo esc_attr( $args['name'] ); ?>' data-element_require='<?php if ( $element_require ) { echo $this->convert_element_require( $element_require );} ?>'> |
| 4739 | 4739 | <?php |
| 4740 | - switch ( $args['type'] ) { |
|
| 4741 | - //array('text','password','number','email','tel','url','color') |
|
| 4742 | - case "text": |
|
| 4743 | - case "password": |
|
| 4744 | - case "number": |
|
| 4745 | - case "email": |
|
| 4746 | - case "tel": |
|
| 4747 | - case "url": |
|
| 4748 | - case "color": |
|
| 4749 | - ?> |
|
| 4740 | + switch ( $args['type'] ) { |
|
| 4741 | + //array('text','password','number','email','tel','url','color') |
|
| 4742 | + case "text": |
|
| 4743 | + case "password": |
|
| 4744 | + case "number": |
|
| 4745 | + case "email": |
|
| 4746 | + case "tel": |
|
| 4747 | + case "url": |
|
| 4748 | + case "color": |
|
| 4749 | + ?> |
|
| 4750 | 4750 | <label for="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>"><?php echo $this->widget_field_title( $args );?><?php echo $this->widget_field_desc( $args ); ?></label> |
| 4751 | 4751 | <input <?php echo $placeholder; ?> class="widefat" <?php echo $custom_attributes; ?> id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); ?>" type="<?php echo esc_attr( $args['type'] ); ?>" value="<?php echo esc_attr( $value ); ?>"> |
| 4752 | 4752 | <?php |
| 4753 | 4753 | |
| 4754 | - break; |
|
| 4755 | - case "select": |
|
| 4756 | - $multiple = isset( $args['multiple'] ) && $args['multiple'] ? true : false; |
|
| 4757 | - if ( $multiple ) { |
|
| 4758 | - if ( empty( $value ) ) { |
|
| 4759 | - $value = array(); |
|
| 4760 | - } |
|
| 4761 | - } |
|
| 4762 | - ?> |
|
| 4754 | + break; |
|
| 4755 | + case "select": |
|
| 4756 | + $multiple = isset( $args['multiple'] ) && $args['multiple'] ? true : false; |
|
| 4757 | + if ( $multiple ) { |
|
| 4758 | + if ( empty( $value ) ) { |
|
| 4759 | + $value = array(); |
|
| 4760 | + } |
|
| 4761 | + } |
|
| 4762 | + ?> |
|
| 4763 | 4763 | <label for="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>"><?php echo $this->widget_field_title( $args ); ?><?php echo $this->widget_field_desc( $args ); ?></label> |
| 4764 | 4764 | <select <?php echo $placeholder; ?> class="widefat" <?php echo $custom_attributes; ?> id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); if ( $multiple ) { echo "[]"; } ?>" |
| 4765 | 4765 | <?php if ( $multiple ) { |
| 4766 | - echo "multiple"; |
|
| 4767 | - } //@todo not implemented yet due to gutenberg not supporting it |
|
| 4768 | - ?>> |
|
| 4766 | + echo "multiple"; |
|
| 4767 | + } //@todo not implemented yet due to gutenberg not supporting it |
|
| 4768 | + ?>> |
|
| 4769 | 4769 | <?php |
| 4770 | 4770 | |
| 4771 | - if ( ! empty( $args['options'] ) ) { |
|
| 4772 | - foreach ( $args['options'] as $val => $label ) { |
|
| 4773 | - if ( $multiple ) { |
|
| 4774 | - $selected = in_array( $val, $value ) ? 'selected="selected"' : ''; |
|
| 4775 | - } else { |
|
| 4776 | - $selected = selected( $value, $val, false ); |
|
| 4777 | - } |
|
| 4778 | - echo "<option value='$val' " . $selected . ">$label</option>"; |
|
| 4779 | - } |
|
| 4780 | - } |
|
| 4781 | - ?> |
|
| 4771 | + if ( ! empty( $args['options'] ) ) { |
|
| 4772 | + foreach ( $args['options'] as $val => $label ) { |
|
| 4773 | + if ( $multiple ) { |
|
| 4774 | + $selected = in_array( $val, $value ) ? 'selected="selected"' : ''; |
|
| 4775 | + } else { |
|
| 4776 | + $selected = selected( $value, $val, false ); |
|
| 4777 | + } |
|
| 4778 | + echo "<option value='$val' " . $selected . ">$label</option>"; |
|
| 4779 | + } |
|
| 4780 | + } |
|
| 4781 | + ?> |
|
| 4782 | 4782 | </select> |
| 4783 | 4783 | <?php |
| 4784 | - break; |
|
| 4785 | - case "checkbox": |
|
| 4786 | - ?> |
|
| 4784 | + break; |
|
| 4785 | + case "checkbox": |
|
| 4786 | + ?> |
|
| 4787 | 4787 | <input <?php echo $placeholder; ?> <?php checked( 1, $value, true ) ?> <?php echo $custom_attributes; ?> class="widefat" id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); ?>" type="checkbox" value="1"> |
| 4788 | 4788 | <label for="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>"><?php echo $this->widget_field_title( $args );?><?php echo $this->widget_field_desc( $args ); ?></label> |
| 4789 | 4789 | <?php |
| 4790 | - break; |
|
| 4791 | - case "textarea": |
|
| 4792 | - ?> |
|
| 4790 | + break; |
|
| 4791 | + case "textarea": |
|
| 4792 | + ?> |
|
| 4793 | 4793 | <label for="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>"><?php echo $this->widget_field_title( $args ); ?><?php echo $this->widget_field_desc( $args ); ?></label> |
| 4794 | 4794 | <textarea <?php echo $placeholder; ?> class="widefat" <?php echo $custom_attributes; ?> id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); ?>"><?php echo esc_attr( $value ); ?></textarea> |
| 4795 | 4795 | <?php |
| 4796 | 4796 | |
| 4797 | - break; |
|
| 4798 | - case "hidden": |
|
| 4799 | - ?> |
|
| 4797 | + break; |
|
| 4798 | + case "hidden": |
|
| 4799 | + ?> |
|
| 4800 | 4800 | <input id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); ?>" type="hidden" value="<?php echo esc_attr( $value ); ?>"> |
| 4801 | 4801 | <?php |
| 4802 | - break; |
|
| 4803 | - default: |
|
| 4804 | - echo "No input type found!"; // @todo we need to add more input types. |
|
| 4805 | - } |
|
| 4806 | - // after wrapper |
|
| 4807 | - ?></p><?php |
|
| 4808 | - } |
|
| 4802 | + break; |
|
| 4803 | + default: |
|
| 4804 | + echo "No input type found!"; // @todo we need to add more input types. |
|
| 4805 | + } |
|
| 4806 | + // after wrapper |
|
| 4807 | + ?></p><?php |
|
| 4808 | + } |
|
| 4809 | 4809 | |
| 4810 | - public function get_widget_icon($icon = 'box-top', $title = ''){ |
|
| 4811 | - if($icon=='box-top'){ |
|
| 4812 | - return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1.048" height="9.017" fill="#555D66"></rect><rect x="16.265" y="5.498" width="1.023" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.186" width="8.964" height="2.482" fill="#272B2F"></rect><rect x="5.487" y="16.261" width="9.026" height="1.037" fill="#555D66"></rect></svg>'; |
|
| 4813 | - }elseif($icon=='box-right'){ |
|
| 4814 | - return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1.046" height="9.017" fill="#555D66"></rect><rect x="15.244" y="5.498" width="2.518" height="9.003" fill="#272B2F"></rect><rect x="5.518" y="2.719" width="8.964" height="0.954" fill="#555D66"></rect><rect x="5.487" y="16.308" width="9.026" height="0.99" fill="#555D66"></rect></svg>'; |
|
| 4815 | - }elseif($icon=='box-bottom'){ |
|
| 4816 | - return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1" height="9.017" fill="#555D66"></rect><rect x="16.261" y="5.498" width="1.027" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.719" width="8.964" height="0.968" fill="#555D66"></rect><rect x="5.487" y="15.28" width="9.026" height="2.499" fill="#272B2F"></rect></svg>'; |
|
| 4817 | - }elseif($icon=='box-left'){ |
|
| 4818 | - return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.202" y="5.492" width="2.503" height="9.017" fill="#272B2F"></rect><rect x="16.276" y="5.498" width="1.012" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.719" width="8.964" height="0.966" fill="#555D66"></rect><rect x="5.487" y="16.303" width="9.026" height="0.995" fill="#555D66"></rect></svg>'; |
|
| 4819 | - } |
|
| 4820 | - } |
|
| 4810 | + public function get_widget_icon($icon = 'box-top', $title = ''){ |
|
| 4811 | + if($icon=='box-top'){ |
|
| 4812 | + return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1.048" height="9.017" fill="#555D66"></rect><rect x="16.265" y="5.498" width="1.023" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.186" width="8.964" height="2.482" fill="#272B2F"></rect><rect x="5.487" y="16.261" width="9.026" height="1.037" fill="#555D66"></rect></svg>'; |
|
| 4813 | + }elseif($icon=='box-right'){ |
|
| 4814 | + return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1.046" height="9.017" fill="#555D66"></rect><rect x="15.244" y="5.498" width="2.518" height="9.003" fill="#272B2F"></rect><rect x="5.518" y="2.719" width="8.964" height="0.954" fill="#555D66"></rect><rect x="5.487" y="16.308" width="9.026" height="0.99" fill="#555D66"></rect></svg>'; |
|
| 4815 | + }elseif($icon=='box-bottom'){ |
|
| 4816 | + return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1" height="9.017" fill="#555D66"></rect><rect x="16.261" y="5.498" width="1.027" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.719" width="8.964" height="0.968" fill="#555D66"></rect><rect x="5.487" y="15.28" width="9.026" height="2.499" fill="#272B2F"></rect></svg>'; |
|
| 4817 | + }elseif($icon=='box-left'){ |
|
| 4818 | + return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.202" y="5.492" width="2.503" height="9.017" fill="#272B2F"></rect><rect x="16.276" y="5.498" width="1.012" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.719" width="8.964" height="0.966" fill="#555D66"></rect><rect x="5.487" y="16.303" width="9.026" height="0.995" fill="#555D66"></rect></svg>'; |
|
| 4819 | + } |
|
| 4820 | + } |
|
| 4821 | 4821 | |
| 4822 | - /** |
|
| 4823 | - * Get the widget input description html. |
|
| 4824 | - * |
|
| 4825 | - * @param $args |
|
| 4826 | - * |
|
| 4827 | - * @return string |
|
| 4828 | - * @todo, need to make its own tooltip script |
|
| 4829 | - */ |
|
| 4830 | - public function widget_field_desc( $args ) { |
|
| 4831 | - |
|
| 4832 | - $description = ''; |
|
| 4833 | - if ( isset( $args['desc'] ) && $args['desc'] ) { |
|
| 4834 | - if ( isset( $args['desc_tip'] ) && $args['desc_tip'] ) { |
|
| 4835 | - $description = $this->desc_tip( $args['desc'] ); |
|
| 4836 | - } else { |
|
| 4837 | - $description = '<span class="description">' . wp_kses_post( $args['desc'] ) . '</span>'; |
|
| 4838 | - } |
|
| 4839 | - } |
|
| 4822 | + /** |
|
| 4823 | + * Get the widget input description html. |
|
| 4824 | + * |
|
| 4825 | + * @param $args |
|
| 4826 | + * |
|
| 4827 | + * @return string |
|
| 4828 | + * @todo, need to make its own tooltip script |
|
| 4829 | + */ |
|
| 4830 | + public function widget_field_desc( $args ) { |
|
| 4831 | + |
|
| 4832 | + $description = ''; |
|
| 4833 | + if ( isset( $args['desc'] ) && $args['desc'] ) { |
|
| 4834 | + if ( isset( $args['desc_tip'] ) && $args['desc_tip'] ) { |
|
| 4835 | + $description = $this->desc_tip( $args['desc'] ); |
|
| 4836 | + } else { |
|
| 4837 | + $description = '<span class="description">' . wp_kses_post( $args['desc'] ) . '</span>'; |
|
| 4838 | + } |
|
| 4839 | + } |
|
| 4840 | 4840 | |
| 4841 | - return $description; |
|
| 4842 | - } |
|
| 4841 | + return $description; |
|
| 4842 | + } |
|
| 4843 | 4843 | |
| 4844 | - /** |
|
| 4845 | - * Get the widget input title html. |
|
| 4846 | - * |
|
| 4847 | - * @param $args |
|
| 4848 | - * |
|
| 4849 | - * @return string |
|
| 4850 | - */ |
|
| 4851 | - public function widget_field_title( $args ) { |
|
| 4852 | - $title = ''; |
|
| 4853 | - |
|
| 4854 | - if ( isset( $args['title'] ) && $args['title'] ) { |
|
| 4855 | - if ( ! empty( $args['device_type'] ) ) { |
|
| 4856 | - $args['title'] .= ' (' . $args['device_type'] . ')'; // Append device type to title. |
|
| 4857 | - } |
|
| 4844 | + /** |
|
| 4845 | + * Get the widget input title html. |
|
| 4846 | + * |
|
| 4847 | + * @param $args |
|
| 4848 | + * |
|
| 4849 | + * @return string |
|
| 4850 | + */ |
|
| 4851 | + public function widget_field_title( $args ) { |
|
| 4852 | + $title = ''; |
|
| 4858 | 4853 | |
| 4859 | - if ( isset( $args['icon'] ) && $args['icon'] ) { |
|
| 4860 | - $title = self::get_widget_icon( $args['icon'], $args['title'] ); |
|
| 4861 | - } else { |
|
| 4862 | - $title = esc_attr( $args['title'] ); |
|
| 4863 | - } |
|
| 4864 | - } |
|
| 4854 | + if ( isset( $args['title'] ) && $args['title'] ) { |
|
| 4855 | + if ( ! empty( $args['device_type'] ) ) { |
|
| 4856 | + $args['title'] .= ' (' . $args['device_type'] . ')'; // Append device type to title. |
|
| 4857 | + } |
|
| 4865 | 4858 | |
| 4866 | - return $title; |
|
| 4867 | - } |
|
| 4859 | + if ( isset( $args['icon'] ) && $args['icon'] ) { |
|
| 4860 | + $title = self::get_widget_icon( $args['icon'], $args['title'] ); |
|
| 4861 | + } else { |
|
| 4862 | + $title = esc_attr( $args['title'] ); |
|
| 4863 | + } |
|
| 4864 | + } |
|
| 4868 | 4865 | |
| 4869 | - /** |
|
| 4870 | - * Get the tool tip html. |
|
| 4871 | - * |
|
| 4872 | - * @param $tip |
|
| 4873 | - * @param bool $allow_html |
|
| 4874 | - * |
|
| 4875 | - * @return string |
|
| 4876 | - */ |
|
| 4877 | - function desc_tip( $tip, $allow_html = false ) { |
|
| 4878 | - if ( $allow_html ) { |
|
| 4879 | - $tip = $this->sanitize_tooltip( $tip ); |
|
| 4880 | - } else { |
|
| 4881 | - $tip = esc_attr( $tip ); |
|
| 4882 | - } |
|
| 4866 | + return $title; |
|
| 4867 | + } |
|
| 4883 | 4868 | |
| 4884 | - return '<span class="gd-help-tip dashicons dashicons-editor-help" title="' . $tip . '"></span>'; |
|
| 4885 | - } |
|
| 4869 | + /** |
|
| 4870 | + * Get the tool tip html. |
|
| 4871 | + * |
|
| 4872 | + * @param $tip |
|
| 4873 | + * @param bool $allow_html |
|
| 4874 | + * |
|
| 4875 | + * @return string |
|
| 4876 | + */ |
|
| 4877 | + function desc_tip( $tip, $allow_html = false ) { |
|
| 4878 | + if ( $allow_html ) { |
|
| 4879 | + $tip = $this->sanitize_tooltip( $tip ); |
|
| 4880 | + } else { |
|
| 4881 | + $tip = esc_attr( $tip ); |
|
| 4882 | + } |
|
| 4883 | + |
|
| 4884 | + return '<span class="gd-help-tip dashicons dashicons-editor-help" title="' . $tip . '"></span>'; |
|
| 4885 | + } |
|
| 4886 | 4886 | |
| 4887 | - /** |
|
| 4888 | - * Sanitize a string destined to be a tooltip. |
|
| 4889 | - * |
|
| 4890 | - * @param string $var |
|
| 4891 | - * |
|
| 4892 | - * @return string |
|
| 4893 | - */ |
|
| 4894 | - public function sanitize_tooltip( $var ) { |
|
| 4895 | - return htmlspecialchars( wp_kses( html_entity_decode( $var ), array( |
|
| 4896 | - 'br' => array(), |
|
| 4897 | - 'em' => array(), |
|
| 4898 | - 'strong' => array(), |
|
| 4899 | - 'small' => array(), |
|
| 4900 | - 'span' => array(), |
|
| 4901 | - 'ul' => array(), |
|
| 4902 | - 'li' => array(), |
|
| 4903 | - 'ol' => array(), |
|
| 4904 | - 'p' => array(), |
|
| 4905 | - ) ) ); |
|
| 4906 | - } |
|
| 4887 | + /** |
|
| 4888 | + * Sanitize a string destined to be a tooltip. |
|
| 4889 | + * |
|
| 4890 | + * @param string $var |
|
| 4891 | + * |
|
| 4892 | + * @return string |
|
| 4893 | + */ |
|
| 4894 | + public function sanitize_tooltip( $var ) { |
|
| 4895 | + return htmlspecialchars( wp_kses( html_entity_decode( $var ), array( |
|
| 4896 | + 'br' => array(), |
|
| 4897 | + 'em' => array(), |
|
| 4898 | + 'strong' => array(), |
|
| 4899 | + 'small' => array(), |
|
| 4900 | + 'span' => array(), |
|
| 4901 | + 'ul' => array(), |
|
| 4902 | + 'li' => array(), |
|
| 4903 | + 'ol' => array(), |
|
| 4904 | + 'p' => array(), |
|
| 4905 | + ) ) ); |
|
| 4906 | + } |
|
| 4907 | 4907 | |
| 4908 | - /** |
|
| 4909 | - * Processing widget options on save |
|
| 4910 | - * |
|
| 4911 | - * @param array $new_instance The new options |
|
| 4912 | - * @param array $old_instance The previous options |
|
| 4913 | - * |
|
| 4914 | - * @return array |
|
| 4915 | - * @todo we should add some sanitation here. |
|
| 4916 | - */ |
|
| 4917 | - public function update( $new_instance, $old_instance ) { |
|
| 4918 | - |
|
| 4919 | - //save the widget |
|
| 4920 | - $instance = array_merge( (array) $old_instance, (array) $new_instance ); |
|
| 4921 | - |
|
| 4922 | - // set widget instance |
|
| 4923 | - $this->instance = $instance; |
|
| 4924 | - |
|
| 4925 | - if ( empty( $this->arguments ) ) { |
|
| 4926 | - $this->get_arguments(); |
|
| 4927 | - } |
|
| 4908 | + /** |
|
| 4909 | + * Processing widget options on save |
|
| 4910 | + * |
|
| 4911 | + * @param array $new_instance The new options |
|
| 4912 | + * @param array $old_instance The previous options |
|
| 4913 | + * |
|
| 4914 | + * @return array |
|
| 4915 | + * @todo we should add some sanitation here. |
|
| 4916 | + */ |
|
| 4917 | + public function update( $new_instance, $old_instance ) { |
|
| 4928 | 4918 | |
| 4929 | - // check for checkboxes |
|
| 4930 | - if ( ! empty( $this->arguments ) ) { |
|
| 4931 | - foreach ( $this->arguments as $argument ) { |
|
| 4932 | - if ( isset( $argument['type'] ) && $argument['type'] == 'checkbox' && ! isset( $new_instance[ $argument['name'] ] ) ) { |
|
| 4933 | - $instance[ $argument['name'] ] = '0'; |
|
| 4934 | - } |
|
| 4935 | - } |
|
| 4936 | - } |
|
| 4919 | + //save the widget |
|
| 4920 | + $instance = array_merge( (array) $old_instance, (array) $new_instance ); |
|
| 4937 | 4921 | |
| 4938 | - return $instance; |
|
| 4939 | - } |
|
| 4922 | + // set widget instance |
|
| 4923 | + $this->instance = $instance; |
|
| 4940 | 4924 | |
| 4941 | - /** |
|
| 4942 | - * Checks if the current call is a ajax call to get the block content. |
|
| 4943 | - * |
|
| 4944 | - * This can be used in your widget to return different content as the block content. |
|
| 4945 | - * |
|
| 4946 | - * @return bool |
|
| 4947 | - *@since 1.0.3 |
|
| 4948 | - */ |
|
| 4949 | - public function is_block_content_call() { |
|
| 4950 | - $result = false; |
|
| 4951 | - if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) { |
|
| 4952 | - $result = true; |
|
| 4953 | - } |
|
| 4925 | + if ( empty( $this->arguments ) ) { |
|
| 4926 | + $this->get_arguments(); |
|
| 4927 | + } |
|
| 4954 | 4928 | |
| 4955 | - return $result; |
|
| 4956 | - } |
|
| 4929 | + // check for checkboxes |
|
| 4930 | + if ( ! empty( $this->arguments ) ) { |
|
| 4931 | + foreach ( $this->arguments as $argument ) { |
|
| 4932 | + if ( isset( $argument['type'] ) && $argument['type'] == 'checkbox' && ! isset( $new_instance[ $argument['name'] ] ) ) { |
|
| 4933 | + $instance[ $argument['name'] ] = '0'; |
|
| 4934 | + } |
|
| 4935 | + } |
|
| 4936 | + } |
|
| 4957 | 4937 | |
| 4958 | - /** |
|
| 4959 | - * Get an instance hash that will be unique to the type and settings. |
|
| 4960 | - * |
|
| 4961 | - * @return string |
|
| 4962 | - *@since 1.0.20 |
|
| 4963 | - */ |
|
| 4964 | - public function get_instance_hash(){ |
|
| 4965 | - $instance_string = $this->base_id.serialize($this->instance); |
|
| 4966 | - return hash('crc32b',$instance_string); |
|
| 4967 | - } |
|
| 4938 | + return $instance; |
|
| 4939 | + } |
|
| 4968 | 4940 | |
| 4969 | - /** |
|
| 4970 | - * Generate and return inline styles from CSS rules that will match the unique class of the instance. |
|
| 4971 | - * |
|
| 4972 | - * @param array $rules |
|
| 4973 | - * |
|
| 4974 | - * @return string |
|
| 4975 | - *@since 1.0.20 |
|
| 4976 | - */ |
|
| 4977 | - public function get_instance_style($rules = array()){ |
|
| 4978 | - $css = ''; |
|
| 4979 | - |
|
| 4980 | - if(!empty($rules)){ |
|
| 4981 | - $rules = array_unique($rules); |
|
| 4982 | - $instance_hash = $this->get_instance_hash(); |
|
| 4983 | - $css .= "<style>"; |
|
| 4984 | - foreach($rules as $rule){ |
|
| 4985 | - $css .= ".sdel-$instance_hash $rule"; |
|
| 4986 | - } |
|
| 4987 | - $css .= "</style>"; |
|
| 4988 | - } |
|
| 4941 | + /** |
|
| 4942 | + * Checks if the current call is a ajax call to get the block content. |
|
| 4943 | + * |
|
| 4944 | + * This can be used in your widget to return different content as the block content. |
|
| 4945 | + * |
|
| 4946 | + * @return bool |
|
| 4947 | + *@since 1.0.3 |
|
| 4948 | + */ |
|
| 4949 | + public function is_block_content_call() { |
|
| 4950 | + $result = false; |
|
| 4951 | + if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) { |
|
| 4952 | + $result = true; |
|
| 4953 | + } |
|
| 4989 | 4954 | |
| 4990 | - return $css; |
|
| 4991 | - } |
|
| 4955 | + return $result; |
|
| 4956 | + } |
|
| 4957 | + |
|
| 4958 | + /** |
|
| 4959 | + * Get an instance hash that will be unique to the type and settings. |
|
| 4960 | + * |
|
| 4961 | + * @return string |
|
| 4962 | + *@since 1.0.20 |
|
| 4963 | + */ |
|
| 4964 | + public function get_instance_hash(){ |
|
| 4965 | + $instance_string = $this->base_id.serialize($this->instance); |
|
| 4966 | + return hash('crc32b',$instance_string); |
|
| 4967 | + } |
|
| 4968 | + |
|
| 4969 | + /** |
|
| 4970 | + * Generate and return inline styles from CSS rules that will match the unique class of the instance. |
|
| 4971 | + * |
|
| 4972 | + * @param array $rules |
|
| 4973 | + * |
|
| 4974 | + * @return string |
|
| 4975 | + *@since 1.0.20 |
|
| 4976 | + */ |
|
| 4977 | + public function get_instance_style($rules = array()){ |
|
| 4978 | + $css = ''; |
|
| 4979 | + |
|
| 4980 | + if(!empty($rules)){ |
|
| 4981 | + $rules = array_unique($rules); |
|
| 4982 | + $instance_hash = $this->get_instance_hash(); |
|
| 4983 | + $css .= "<style>"; |
|
| 4984 | + foreach($rules as $rule){ |
|
| 4985 | + $css .= ".sdel-$instance_hash $rule"; |
|
| 4986 | + } |
|
| 4987 | + $css .= "</style>"; |
|
| 4988 | + } |
|
| 4989 | + |
|
| 4990 | + return $css; |
|
| 4991 | + } |
|
| 4992 | 4992 | |
| 4993 | - /** |
|
| 4994 | - * Encode shortcodes tags. |
|
| 4995 | - * |
|
| 4996 | - * @param string $content Content to search for shortcode tags. |
|
| 4997 | - * |
|
| 4993 | + /** |
|
| 4994 | + * Encode shortcodes tags. |
|
| 4995 | + * |
|
| 4996 | + * @param string $content Content to search for shortcode tags. |
|
| 4997 | + * |
|
| 4998 | 4998 | *@return string Content with shortcode tags removed. |
| 4999 | - *@since 1.0.28 |
|
| 5000 | - * |
|
| 5001 | - */ |
|
| 5002 | - public function encode_shortcodes( $content ) { |
|
| 5003 | - // Avoids existing encoded tags. |
|
| 5004 | - $trans = array( |
|
| 5005 | - '[' => '[', |
|
| 5006 | - ']' => ']', |
|
| 5007 | - '&#91;' => '[', |
|
| 5008 | - '&#93;' => ']', |
|
| 5009 | - '<' => '&0lt;', |
|
| 5010 | - '>' => '&0gt;', |
|
| 5011 | - '&lt;' => '&0lt;', |
|
| 5012 | - '&gt;' => '&0gt;', |
|
| 5013 | - ); |
|
| 5014 | - |
|
| 5015 | - $content = strtr( $content, $trans ); |
|
| 5016 | - |
|
| 5017 | - $trans = array( |
|
| 5018 | - '[' => '[', |
|
| 5019 | - ']' => ']', |
|
| 5020 | - '<' => '<', |
|
| 5021 | - '>' => '>', |
|
| 5022 | - '"' => '"', |
|
| 5023 | - "'" => ''', |
|
| 5024 | - ); |
|
| 5025 | - |
|
| 5026 | - $content = strtr( $content, $trans ); |
|
| 5027 | - |
|
| 5028 | - return $content; |
|
| 5029 | - } |
|
| 4999 | + *@since 1.0.28 |
|
| 5000 | + * |
|
| 5001 | + */ |
|
| 5002 | + public function encode_shortcodes( $content ) { |
|
| 5003 | + // Avoids existing encoded tags. |
|
| 5004 | + $trans = array( |
|
| 5005 | + '[' => '[', |
|
| 5006 | + ']' => ']', |
|
| 5007 | + '&#91;' => '[', |
|
| 5008 | + '&#93;' => ']', |
|
| 5009 | + '<' => '&0lt;', |
|
| 5010 | + '>' => '&0gt;', |
|
| 5011 | + '&lt;' => '&0lt;', |
|
| 5012 | + '&gt;' => '&0gt;', |
|
| 5013 | + ); |
|
| 5014 | + |
|
| 5015 | + $content = strtr( $content, $trans ); |
|
| 5016 | + |
|
| 5017 | + $trans = array( |
|
| 5018 | + '[' => '[', |
|
| 5019 | + ']' => ']', |
|
| 5020 | + '<' => '<', |
|
| 5021 | + '>' => '>', |
|
| 5022 | + '"' => '"', |
|
| 5023 | + "'" => ''', |
|
| 5024 | + ); |
|
| 5025 | + |
|
| 5026 | + $content = strtr( $content, $trans ); |
|
| 5027 | + |
|
| 5028 | + return $content; |
|
| 5029 | + } |
|
| 5030 | 5030 | |
| 5031 | - /** |
|
| 5032 | - * Remove encoded shortcod tags. |
|
| 5033 | - * |
|
| 5034 | - * @param string $content Content to search for shortcode tags. |
|
| 5035 | - * |
|
| 5031 | + /** |
|
| 5032 | + * Remove encoded shortcod tags. |
|
| 5033 | + * |
|
| 5034 | + * @param string $content Content to search for shortcode tags. |
|
| 5035 | + * |
|
| 5036 | 5036 | *@return string Content with decoded shortcode tags. |
| 5037 | - *@since 1.0.28 |
|
| 5038 | - * |
|
| 5039 | - */ |
|
| 5040 | - public function decode_shortcodes( $content ) { |
|
| 5041 | - $trans = array( |
|
| 5042 | - '[' => '[', |
|
| 5043 | - ']' => ']', |
|
| 5044 | - '&#91;' => '[', |
|
| 5045 | - '&#93;' => ']', |
|
| 5046 | - '<' => '<', |
|
| 5047 | - '>' => '>', |
|
| 5048 | - '&lt;' => '<', |
|
| 5049 | - '&gt;' => '>', |
|
| 5050 | - '"' => '"', |
|
| 5051 | - ''' => "'", |
|
| 5052 | - ); |
|
| 5053 | - |
|
| 5054 | - $content = strtr( $content, $trans ); |
|
| 5055 | - |
|
| 5056 | - $trans = array( |
|
| 5057 | - '[' => '[', |
|
| 5058 | - ']' => ']', |
|
| 5059 | - '&#091;' => '[', |
|
| 5060 | - '&#093;' => ']', |
|
| 5061 | - '&0lt;' => '<', |
|
| 5062 | - '&0gt;' => '>', |
|
| 5063 | - '&0lt;' => '<', |
|
| 5064 | - '&0gt;' => '>', |
|
| 5065 | - ); |
|
| 5066 | - |
|
| 5067 | - $content = strtr( $content, $trans ); |
|
| 5068 | - |
|
| 5069 | - return $content; |
|
| 5070 | - } |
|
| 5071 | - |
|
| 5072 | - public function block_visibility_fields( $args ) { |
|
| 5073 | - $value = ! empty( $args['value'] ) ? esc_attr( $args['value'] ) : ''; |
|
| 5074 | - $content = '<div class="bs-vc-rule-template d-none">'; |
|
| 5075 | - $content .= '<div class="p-3 pb-0 mb-3 border border-1 rounded-1 position-relative bs-vc-rule" data-bs-index="BSVCINDEX" >'; |
|
| 5076 | - $content .= '<div class="row">'; |
|
| 5077 | - $content .= '<div class="col-sm-12">'; |
|
| 5078 | - $content .= '<div class="bs-rule-action position-absolute top-0 end-0 p-2 zindex-5"><span class="text-danger c-pointer bs-vc-remove-rule" title="' . esc_attr__( 'Remove Rule', 'ayecode-connect' ) . '"><i class="fas fa-circle-minus fs-6"></i></span></div>'; |
|
| 5079 | - $content .= aui()->select( |
|
| 5080 | - array( |
|
| 5081 | - 'id' => 'bsvc_rule_BSVCINDEX', |
|
| 5082 | - 'name' => 'bsvc_rule_BSVCINDEX', |
|
| 5083 | - 'label' => __( 'Rule', 'ayecode-connect' ), |
|
| 5084 | - 'placeholder' => __( 'Select Rule...', 'ayecode-connect' ), |
|
| 5085 | - 'class' => 'bsvc_rule form-select-sm no-select2 mw-100', |
|
| 5086 | - 'options' => sd_visibility_rules_options(), |
|
| 5087 | - 'default' => '', |
|
| 5088 | - 'value' => '', |
|
| 5089 | - 'label_type' => '', |
|
| 5090 | - 'select2' => false, |
|
| 5091 | - 'input_group_left' => __( 'Rule:', 'ayecode-connect' ), |
|
| 5092 | - 'extra_attributes' => array( |
|
| 5093 | - 'data-minimum-results-for-search' => '-1' |
|
| 5094 | - ) |
|
| 5095 | - ) |
|
| 5096 | - ); |
|
| 5097 | - |
|
| 5098 | - $content .= '</div>'; |
|
| 5099 | - |
|
| 5100 | - if ( class_exists( 'GeoDirectory' ) ) { |
|
| 5101 | - $content .= '<div class="col-md-7 col-sm-12">'; |
|
| 5102 | - |
|
| 5103 | - $content .= aui()->select( |
|
| 5104 | - array( |
|
| 5105 | - 'id' => 'bsvc_gd_field_BSVCINDEX', |
|
| 5106 | - 'name' => 'bsvc_gd_field_BSVCINDEX', |
|
| 5107 | - 'label' => __( 'FIELD', 'ayecode-connect' ), |
|
| 5108 | - 'placeholder' => __( 'FIELD', 'ayecode-connect' ), |
|
| 5109 | - 'class' => 'bsvc_gd_field form-select-sm no-select2 mw-100', |
|
| 5110 | - 'options' => sd_visibility_gd_field_options(), |
|
| 5111 | - 'default' => '', |
|
| 5112 | - 'value' => '', |
|
| 5113 | - 'label_type' => '', |
|
| 5114 | - 'select2' => false, |
|
| 5115 | - 'element_require' => '[%bsvc_rule_BSVCINDEX%]=="gd_field"', |
|
| 5116 | - 'extra_attributes' => array( |
|
| 5117 | - 'data-minimum-results-for-search' => '-1' |
|
| 5118 | - ) |
|
| 5119 | - ) |
|
| 5120 | - ); |
|
| 5121 | - |
|
| 5122 | - $content .= '</div>'; |
|
| 5123 | - $content .= '<div class="col-md-5 col-sm-12">'; |
|
| 5124 | - |
|
| 5125 | - $content .= aui()->select( |
|
| 5126 | - array( |
|
| 5127 | - 'id' => 'bsvc_gd_field_condition_BSVCINDEX', |
|
| 5128 | - 'name' => 'bsvc_gd_field_condition_BSVCINDEX', |
|
| 5129 | - 'label' => __( 'CONDITION', 'ayecode-connect' ), |
|
| 5130 | - 'placeholder' => __( 'CONDITION', 'ayecode-connect' ), |
|
| 5131 | - 'class' => 'bsvc_gd_field_condition form-select-sm no-select2 mw-100', |
|
| 5132 | - 'options' => sd_visibility_field_condition_options(), |
|
| 5133 | - 'default' => '', |
|
| 5134 | - 'value' => '', |
|
| 5135 | - 'label_type' => '', |
|
| 5136 | - 'select2' => false, |
|
| 5137 | - 'element_require' => '[%bsvc_rule_BSVCINDEX%]=="gd_field"', |
|
| 5138 | - 'extra_attributes' => array( |
|
| 5139 | - 'data-minimum-results-for-search' => '-1' |
|
| 5140 | - ) |
|
| 5141 | - ) |
|
| 5142 | - ); |
|
| 5143 | - |
|
| 5144 | - $content .= '</div>'; |
|
| 5145 | - $content .= '<div class="col-sm-12">'; |
|
| 5146 | - |
|
| 5147 | - $content .= aui()->input( |
|
| 5148 | - array( |
|
| 5149 | - 'type' => 'text', |
|
| 5150 | - 'id' => 'bsvc_gd_field_search_BSVCINDEX', |
|
| 5151 | - 'name' => 'bsvc_gd_field_search_BSVCINDEX', |
|
| 5152 | - 'label' => __( 'VALUE TO MATCH', 'ayecode-connect' ), |
|
| 5153 | - 'class' => 'bsvc_gd_field_search form-control-sm', |
|
| 5154 | - 'placeholder' => __( 'VALUE TO MATCH', 'ayecode-connect' ), |
|
| 5155 | - 'label_type' => '', |
|
| 5156 | - 'value' => '', |
|
| 5157 | - 'element_require' => '([%bsvc_rule_BSVCINDEX%]=="gd_field" && [%bsvc_gd_field_condition_BSVCINDEX%] && [%bsvc_gd_field_condition_BSVCINDEX%]!="is_empty" && [%bsvc_gd_field_condition_BSVCINDEX%]!="is_not_empty")' |
|
| 5158 | - ) |
|
| 5159 | - ); |
|
| 5037 | + *@since 1.0.28 |
|
| 5038 | + * |
|
| 5039 | + */ |
|
| 5040 | + public function decode_shortcodes( $content ) { |
|
| 5041 | + $trans = array( |
|
| 5042 | + '[' => '[', |
|
| 5043 | + ']' => ']', |
|
| 5044 | + '&#91;' => '[', |
|
| 5045 | + '&#93;' => ']', |
|
| 5046 | + '<' => '<', |
|
| 5047 | + '>' => '>', |
|
| 5048 | + '&lt;' => '<', |
|
| 5049 | + '&gt;' => '>', |
|
| 5050 | + '"' => '"', |
|
| 5051 | + ''' => "'", |
|
| 5052 | + ); |
|
| 5053 | + |
|
| 5054 | + $content = strtr( $content, $trans ); |
|
| 5055 | + |
|
| 5056 | + $trans = array( |
|
| 5057 | + '[' => '[', |
|
| 5058 | + ']' => ']', |
|
| 5059 | + '&#091;' => '[', |
|
| 5060 | + '&#093;' => ']', |
|
| 5061 | + '&0lt;' => '<', |
|
| 5062 | + '&0gt;' => '>', |
|
| 5063 | + '&0lt;' => '<', |
|
| 5064 | + '&0gt;' => '>', |
|
| 5065 | + ); |
|
| 5066 | + |
|
| 5067 | + $content = strtr( $content, $trans ); |
|
| 5068 | + |
|
| 5069 | + return $content; |
|
| 5070 | + } |
|
| 5160 | 5071 | |
| 5161 | - $content .= '</div>'; |
|
| 5162 | - } |
|
| 5072 | + public function block_visibility_fields( $args ) { |
|
| 5073 | + $value = ! empty( $args['value'] ) ? esc_attr( $args['value'] ) : ''; |
|
| 5074 | + $content = '<div class="bs-vc-rule-template d-none">'; |
|
| 5075 | + $content .= '<div class="p-3 pb-0 mb-3 border border-1 rounded-1 position-relative bs-vc-rule" data-bs-index="BSVCINDEX" >'; |
|
| 5076 | + $content .= '<div class="row">'; |
|
| 5077 | + $content .= '<div class="col-sm-12">'; |
|
| 5078 | + $content .= '<div class="bs-rule-action position-absolute top-0 end-0 p-2 zindex-5"><span class="text-danger c-pointer bs-vc-remove-rule" title="' . esc_attr__( 'Remove Rule', 'ayecode-connect' ) . '"><i class="fas fa-circle-minus fs-6"></i></span></div>'; |
|
| 5079 | + $content .= aui()->select( |
|
| 5080 | + array( |
|
| 5081 | + 'id' => 'bsvc_rule_BSVCINDEX', |
|
| 5082 | + 'name' => 'bsvc_rule_BSVCINDEX', |
|
| 5083 | + 'label' => __( 'Rule', 'ayecode-connect' ), |
|
| 5084 | + 'placeholder' => __( 'Select Rule...', 'ayecode-connect' ), |
|
| 5085 | + 'class' => 'bsvc_rule form-select-sm no-select2 mw-100', |
|
| 5086 | + 'options' => sd_visibility_rules_options(), |
|
| 5087 | + 'default' => '', |
|
| 5088 | + 'value' => '', |
|
| 5089 | + 'label_type' => '', |
|
| 5090 | + 'select2' => false, |
|
| 5091 | + 'input_group_left' => __( 'Rule:', 'ayecode-connect' ), |
|
| 5092 | + 'extra_attributes' => array( |
|
| 5093 | + 'data-minimum-results-for-search' => '-1' |
|
| 5094 | + ) |
|
| 5095 | + ) |
|
| 5096 | + ); |
|
| 5097 | + |
|
| 5098 | + $content .= '</div>'; |
|
| 5099 | + |
|
| 5100 | + if ( class_exists( 'GeoDirectory' ) ) { |
|
| 5101 | + $content .= '<div class="col-md-7 col-sm-12">'; |
|
| 5102 | + |
|
| 5103 | + $content .= aui()->select( |
|
| 5104 | + array( |
|
| 5105 | + 'id' => 'bsvc_gd_field_BSVCINDEX', |
|
| 5106 | + 'name' => 'bsvc_gd_field_BSVCINDEX', |
|
| 5107 | + 'label' => __( 'FIELD', 'ayecode-connect' ), |
|
| 5108 | + 'placeholder' => __( 'FIELD', 'ayecode-connect' ), |
|
| 5109 | + 'class' => 'bsvc_gd_field form-select-sm no-select2 mw-100', |
|
| 5110 | + 'options' => sd_visibility_gd_field_options(), |
|
| 5111 | + 'default' => '', |
|
| 5112 | + 'value' => '', |
|
| 5113 | + 'label_type' => '', |
|
| 5114 | + 'select2' => false, |
|
| 5115 | + 'element_require' => '[%bsvc_rule_BSVCINDEX%]=="gd_field"', |
|
| 5116 | + 'extra_attributes' => array( |
|
| 5117 | + 'data-minimum-results-for-search' => '-1' |
|
| 5118 | + ) |
|
| 5119 | + ) |
|
| 5120 | + ); |
|
| 5121 | + |
|
| 5122 | + $content .= '</div>'; |
|
| 5123 | + $content .= '<div class="col-md-5 col-sm-12">'; |
|
| 5124 | + |
|
| 5125 | + $content .= aui()->select( |
|
| 5126 | + array( |
|
| 5127 | + 'id' => 'bsvc_gd_field_condition_BSVCINDEX', |
|
| 5128 | + 'name' => 'bsvc_gd_field_condition_BSVCINDEX', |
|
| 5129 | + 'label' => __( 'CONDITION', 'ayecode-connect' ), |
|
| 5130 | + 'placeholder' => __( 'CONDITION', 'ayecode-connect' ), |
|
| 5131 | + 'class' => 'bsvc_gd_field_condition form-select-sm no-select2 mw-100', |
|
| 5132 | + 'options' => sd_visibility_field_condition_options(), |
|
| 5133 | + 'default' => '', |
|
| 5134 | + 'value' => '', |
|
| 5135 | + 'label_type' => '', |
|
| 5136 | + 'select2' => false, |
|
| 5137 | + 'element_require' => '[%bsvc_rule_BSVCINDEX%]=="gd_field"', |
|
| 5138 | + 'extra_attributes' => array( |
|
| 5139 | + 'data-minimum-results-for-search' => '-1' |
|
| 5140 | + ) |
|
| 5141 | + ) |
|
| 5142 | + ); |
|
| 5143 | + |
|
| 5144 | + $content .= '</div>'; |
|
| 5145 | + $content .= '<div class="col-sm-12">'; |
|
| 5146 | + |
|
| 5147 | + $content .= aui()->input( |
|
| 5148 | + array( |
|
| 5149 | + 'type' => 'text', |
|
| 5150 | + 'id' => 'bsvc_gd_field_search_BSVCINDEX', |
|
| 5151 | + 'name' => 'bsvc_gd_field_search_BSVCINDEX', |
|
| 5152 | + 'label' => __( 'VALUE TO MATCH', 'ayecode-connect' ), |
|
| 5153 | + 'class' => 'bsvc_gd_field_search form-control-sm', |
|
| 5154 | + 'placeholder' => __( 'VALUE TO MATCH', 'ayecode-connect' ), |
|
| 5155 | + 'label_type' => '', |
|
| 5156 | + 'value' => '', |
|
| 5157 | + 'element_require' => '([%bsvc_rule_BSVCINDEX%]=="gd_field" && [%bsvc_gd_field_condition_BSVCINDEX%] && [%bsvc_gd_field_condition_BSVCINDEX%]!="is_empty" && [%bsvc_gd_field_condition_BSVCINDEX%]!="is_not_empty")' |
|
| 5158 | + ) |
|
| 5159 | + ); |
|
| 5160 | + |
|
| 5161 | + $content .= '</div>'; |
|
| 5162 | + } |
|
| 5163 | + |
|
| 5164 | + $content .= '</div>'; |
|
| 5165 | + |
|
| 5166 | + $content .= '<div class="row aui-conditional-field" data-element-require="jQuery(form).find(\'[name=bsvc_rule_BSVCINDEX]\').val()==\'user_roles\'" data-argument="bsvc_user_roles_BSVCINDEX_1"><label for="bsvc_user_roles_BSVCINDEX_1" class="form-label mb-3">' . __( 'Select User Roles:', 'ayecode-connect' ) . '</label>'; |
|
| 5167 | + $role_options = sd_user_roles_options(); |
|
| 5168 | + |
|
| 5169 | + $role_option_i = 0; |
|
| 5170 | + foreach ( $role_options as $role_option_key => $role_option_name ) { |
|
| 5171 | + $role_option_i++; |
|
| 5172 | + |
|
| 5173 | + $content .= '<div class="col-sm-6">'; |
|
| 5174 | + $content .= aui()->input( |
|
| 5175 | + array( |
|
| 5176 | + 'id' => 'bsvc_user_roles_BSVCINDEX_' . $role_option_i, |
|
| 5177 | + 'name' => 'bsvc_user_roles_BSVCINDEX[]', |
|
| 5178 | + 'type' => 'checkbox', |
|
| 5179 | + 'label' => $role_option_name, |
|
| 5180 | + 'label_type' => 'hidden', |
|
| 5181 | + 'class' => 'bsvc_user_roles', |
|
| 5182 | + 'value' => $role_option_key, |
|
| 5183 | + 'switch' => 'md', |
|
| 5184 | + 'no_wrap' => true |
|
| 5185 | + ) |
|
| 5186 | + ); |
|
| 5187 | + $content .= '</div>'; |
|
| 5188 | + } |
|
| 5189 | + $content .= '</div>'; |
|
| 5190 | + $content .= '</div>'; |
|
| 5191 | + $content .= '</div>'; |
|
| 5192 | + $content .= '<form id="bs-vc-modal-form" class="bs-vc-modal-form">'; |
|
| 5193 | + $content .= '<div class="bs-vc-rule-sets"></div>'; |
|
| 5194 | + $content .= '<div class="row"><div class="col-sm-12 text-center pt-1 pb-4"><button type="button" class="btn btn-sm btn-primary d-block w-100 bs-vc-add-rule"><i class="fas fa-plus"></i> ' . __( 'Add Rule', 'ayecode-connect' ) . '</button></div></div>'; |
|
| 5195 | + $content .= '<div class="row"><div class="col-md-6 col-sm-12">'; |
|
| 5196 | + $content .= aui()->select( |
|
| 5197 | + array( |
|
| 5198 | + 'id' => 'bsvc_output', |
|
| 5199 | + 'name' => 'bsvc_output', |
|
| 5200 | + 'label' => __( 'What should happen if rules met.', 'ayecode-connect' ), |
|
| 5201 | + 'placeholder' => __( 'Default Output', 'ayecode-connect' ), |
|
| 5202 | + 'class' => 'bsvc_output form-select-sm no-select2 mw-100', |
|
| 5203 | + 'options' => sd_visibility_output_options(), |
|
| 5204 | + 'default' => '', |
|
| 5205 | + 'value' => '', |
|
| 5206 | + 'label_type' => 'top', |
|
| 5207 | + 'select2' => false, |
|
| 5208 | + 'extra_attributes' => array( |
|
| 5209 | + 'data-minimum-results-for-search' => '-1' |
|
| 5210 | + ) |
|
| 5211 | + ) |
|
| 5212 | + ); |
|
| 5213 | + |
|
| 5214 | + $content .= '</div><div class="col-md-6 col-sm-12">'; |
|
| 5215 | + |
|
| 5216 | + $content .= aui()->select( |
|
| 5217 | + array( |
|
| 5218 | + 'id' => 'bsvc_page', |
|
| 5219 | + 'name' => 'bsvc_page', |
|
| 5220 | + 'label' => __( 'Page Content', 'ayecode-connect' ), |
|
| 5221 | + 'placeholder' => __( 'Select Page ID...', 'ayecode-connect' ), |
|
| 5222 | + 'class' => 'bsvc_page form-select-sm no-select2 mw-100', |
|
| 5223 | + 'options' => sd_template_page_options(), |
|
| 5224 | + 'default' => '', |
|
| 5225 | + 'value' => '', |
|
| 5226 | + 'label_type' => 'top', |
|
| 5227 | + 'select2' => false, |
|
| 5228 | + 'element_require' => '[%bsvc_output%]=="page"' |
|
| 5229 | + ) |
|
| 5230 | + ); |
|
| 5231 | + |
|
| 5232 | + $content .= aui()->select( |
|
| 5233 | + array( |
|
| 5234 | + 'id' => 'bsvc_tmpl_part', |
|
| 5235 | + 'name' => 'bsvc_tmpl_part', |
|
| 5236 | + 'label' => __( 'Template Part', 'ayecode-connect' ), |
|
| 5237 | + 'placeholder' => __( 'Select Template Part...', 'ayecode-connect' ), |
|
| 5238 | + 'class' => 'bsvc_tmpl_part form-select-sm no-select2 mw-100', |
|
| 5239 | + 'options' => sd_template_part_options(), |
|
| 5240 | + 'default' => '', |
|
| 5241 | + 'value' => '', |
|
| 5242 | + 'label_type' => 'top', |
|
| 5243 | + 'select2' => false, |
|
| 5244 | + 'element_require' => '[%bsvc_output%]=="template_part"', |
|
| 5245 | + 'extra_attributes' => array( |
|
| 5246 | + 'data-minimum-results-for-search' => '-1' |
|
| 5247 | + ) |
|
| 5248 | + ) |
|
| 5249 | + ); |
|
| 5250 | + |
|
| 5251 | + $content .= aui()->select( |
|
| 5252 | + array( |
|
| 5253 | + 'id' => 'bsvc_message_type', |
|
| 5254 | + 'name' => 'bsvc_message_type', |
|
| 5255 | + 'label' => __( 'Custom Message Type', 'ayecode-connect' ), |
|
| 5256 | + 'placeholder' => __( 'Default (none)', 'ayecode-connect' ), |
|
| 5257 | + 'class' => 'bsvc_message_type form-select-sm no-select2 mw-100', |
|
| 5258 | + 'options' => sd_aui_colors(), |
|
| 5259 | + 'default' => '', |
|
| 5260 | + 'value' => '', |
|
| 5261 | + 'label_type' => 'top', |
|
| 5262 | + 'select2' => false, |
|
| 5263 | + 'element_require' => '[%bsvc_output%]=="message"', |
|
| 5264 | + 'extra_attributes' => array( |
|
| 5265 | + 'data-minimum-results-for-search' => '-1' |
|
| 5266 | + ) |
|
| 5267 | + ) |
|
| 5268 | + ); |
|
| 5269 | + |
|
| 5270 | + $content .= '</div><div class="col-sm-12">'; |
|
| 5271 | + |
|
| 5272 | + $content .= aui()->input( |
|
| 5273 | + array( |
|
| 5274 | + 'type' => 'text', |
|
| 5275 | + 'id' => 'bsvc_message', |
|
| 5276 | + 'name' => 'bsvc_message', |
|
| 5277 | + 'label' => '', |
|
| 5278 | + 'class' => 'bsvc_message form-control-sm', |
|
| 5279 | + 'placeholder' => __( 'CUSTOM MESSAGE TO SHOW', 'ayecode-connect' ), |
|
| 5280 | + 'label_type' => '', |
|
| 5281 | + 'value' => '', |
|
| 5282 | + 'form_group_class' => ' ', |
|
| 5283 | + 'element_require' => '[%bsvc_output%]=="message"', |
|
| 5284 | + ) |
|
| 5285 | + ); |
|
| 5286 | + |
|
| 5287 | + $content .= '</div></div></form><input type="hidden" id="bsvc_raw_value" name="bsvc_raw_value" value="' . $value . '">'; |
|
| 5288 | + |
|
| 5289 | + return $content; |
|
| 5290 | + } |
|
| 5163 | 5291 | |
| 5164 | - $content .= '</div>'; |
|
| 5165 | - |
|
| 5166 | - $content .= '<div class="row aui-conditional-field" data-element-require="jQuery(form).find(\'[name=bsvc_rule_BSVCINDEX]\').val()==\'user_roles\'" data-argument="bsvc_user_roles_BSVCINDEX_1"><label for="bsvc_user_roles_BSVCINDEX_1" class="form-label mb-3">' . __( 'Select User Roles:', 'ayecode-connect' ) . '</label>'; |
|
| 5167 | - $role_options = sd_user_roles_options(); |
|
| 5168 | - |
|
| 5169 | - $role_option_i = 0; |
|
| 5170 | - foreach ( $role_options as $role_option_key => $role_option_name ) { |
|
| 5171 | - $role_option_i++; |
|
| 5172 | - |
|
| 5173 | - $content .= '<div class="col-sm-6">'; |
|
| 5174 | - $content .= aui()->input( |
|
| 5175 | - array( |
|
| 5176 | - 'id' => 'bsvc_user_roles_BSVCINDEX_' . $role_option_i, |
|
| 5177 | - 'name' => 'bsvc_user_roles_BSVCINDEX[]', |
|
| 5178 | - 'type' => 'checkbox', |
|
| 5179 | - 'label' => $role_option_name, |
|
| 5180 | - 'label_type' => 'hidden', |
|
| 5181 | - 'class' => 'bsvc_user_roles', |
|
| 5182 | - 'value' => $role_option_key, |
|
| 5183 | - 'switch' => 'md', |
|
| 5184 | - 'no_wrap' => true |
|
| 5185 | - ) |
|
| 5186 | - ); |
|
| 5187 | - $content .= '</div>'; |
|
| 5188 | - } |
|
| 5189 | - $content .= '</div>'; |
|
| 5190 | - $content .= '</div>'; |
|
| 5191 | - $content .= '</div>'; |
|
| 5192 | - $content .= '<form id="bs-vc-modal-form" class="bs-vc-modal-form">'; |
|
| 5193 | - $content .= '<div class="bs-vc-rule-sets"></div>'; |
|
| 5194 | - $content .= '<div class="row"><div class="col-sm-12 text-center pt-1 pb-4"><button type="button" class="btn btn-sm btn-primary d-block w-100 bs-vc-add-rule"><i class="fas fa-plus"></i> ' . __( 'Add Rule', 'ayecode-connect' ) . '</button></div></div>'; |
|
| 5195 | - $content .= '<div class="row"><div class="col-md-6 col-sm-12">'; |
|
| 5196 | - $content .= aui()->select( |
|
| 5197 | - array( |
|
| 5198 | - 'id' => 'bsvc_output', |
|
| 5199 | - 'name' => 'bsvc_output', |
|
| 5200 | - 'label' => __( 'What should happen if rules met.', 'ayecode-connect' ), |
|
| 5201 | - 'placeholder' => __( 'Default Output', 'ayecode-connect' ), |
|
| 5202 | - 'class' => 'bsvc_output form-select-sm no-select2 mw-100', |
|
| 5203 | - 'options' => sd_visibility_output_options(), |
|
| 5204 | - 'default' => '', |
|
| 5205 | - 'value' => '', |
|
| 5206 | - 'label_type' => 'top', |
|
| 5207 | - 'select2' => false, |
|
| 5208 | - 'extra_attributes' => array( |
|
| 5209 | - 'data-minimum-results-for-search' => '-1' |
|
| 5210 | - ) |
|
| 5211 | - ) |
|
| 5212 | - ); |
|
| 5213 | - |
|
| 5214 | - $content .= '</div><div class="col-md-6 col-sm-12">'; |
|
| 5215 | - |
|
| 5216 | - $content .= aui()->select( |
|
| 5217 | - array( |
|
| 5218 | - 'id' => 'bsvc_page', |
|
| 5219 | - 'name' => 'bsvc_page', |
|
| 5220 | - 'label' => __( 'Page Content', 'ayecode-connect' ), |
|
| 5221 | - 'placeholder' => __( 'Select Page ID...', 'ayecode-connect' ), |
|
| 5222 | - 'class' => 'bsvc_page form-select-sm no-select2 mw-100', |
|
| 5223 | - 'options' => sd_template_page_options(), |
|
| 5224 | - 'default' => '', |
|
| 5225 | - 'value' => '', |
|
| 5226 | - 'label_type' => 'top', |
|
| 5227 | - 'select2' => false, |
|
| 5228 | - 'element_require' => '[%bsvc_output%]=="page"' |
|
| 5229 | - ) |
|
| 5230 | - ); |
|
| 5231 | - |
|
| 5232 | - $content .= aui()->select( |
|
| 5233 | - array( |
|
| 5234 | - 'id' => 'bsvc_tmpl_part', |
|
| 5235 | - 'name' => 'bsvc_tmpl_part', |
|
| 5236 | - 'label' => __( 'Template Part', 'ayecode-connect' ), |
|
| 5237 | - 'placeholder' => __( 'Select Template Part...', 'ayecode-connect' ), |
|
| 5238 | - 'class' => 'bsvc_tmpl_part form-select-sm no-select2 mw-100', |
|
| 5239 | - 'options' => sd_template_part_options(), |
|
| 5240 | - 'default' => '', |
|
| 5241 | - 'value' => '', |
|
| 5242 | - 'label_type' => 'top', |
|
| 5243 | - 'select2' => false, |
|
| 5244 | - 'element_require' => '[%bsvc_output%]=="template_part"', |
|
| 5245 | - 'extra_attributes' => array( |
|
| 5246 | - 'data-minimum-results-for-search' => '-1' |
|
| 5247 | - ) |
|
| 5248 | - ) |
|
| 5249 | - ); |
|
| 5250 | - |
|
| 5251 | - $content .= aui()->select( |
|
| 5252 | - array( |
|
| 5253 | - 'id' => 'bsvc_message_type', |
|
| 5254 | - 'name' => 'bsvc_message_type', |
|
| 5255 | - 'label' => __( 'Custom Message Type', 'ayecode-connect' ), |
|
| 5256 | - 'placeholder' => __( 'Default (none)', 'ayecode-connect' ), |
|
| 5257 | - 'class' => 'bsvc_message_type form-select-sm no-select2 mw-100', |
|
| 5258 | - 'options' => sd_aui_colors(), |
|
| 5259 | - 'default' => '', |
|
| 5260 | - 'value' => '', |
|
| 5261 | - 'label_type' => 'top', |
|
| 5262 | - 'select2' => false, |
|
| 5263 | - 'element_require' => '[%bsvc_output%]=="message"', |
|
| 5264 | - 'extra_attributes' => array( |
|
| 5265 | - 'data-minimum-results-for-search' => '-1' |
|
| 5266 | - ) |
|
| 5267 | - ) |
|
| 5268 | - ); |
|
| 5269 | - |
|
| 5270 | - $content .= '</div><div class="col-sm-12">'; |
|
| 5271 | - |
|
| 5272 | - $content .= aui()->input( |
|
| 5273 | - array( |
|
| 5274 | - 'type' => 'text', |
|
| 5275 | - 'id' => 'bsvc_message', |
|
| 5276 | - 'name' => 'bsvc_message', |
|
| 5277 | - 'label' => '', |
|
| 5278 | - 'class' => 'bsvc_message form-control-sm', |
|
| 5279 | - 'placeholder' => __( 'CUSTOM MESSAGE TO SHOW', 'ayecode-connect' ), |
|
| 5280 | - 'label_type' => '', |
|
| 5281 | - 'value' => '', |
|
| 5282 | - 'form_group_class' => ' ', |
|
| 5283 | - 'element_require' => '[%bsvc_output%]=="message"', |
|
| 5284 | - ) |
|
| 5285 | - ); |
|
| 5286 | - |
|
| 5287 | - $content .= '</div></div></form><input type="hidden" id="bsvc_raw_value" name="bsvc_raw_value" value="' . $value . '">'; |
|
| 5288 | - |
|
| 5289 | - return $content; |
|
| 5290 | - } |
|
| 5292 | + /** |
|
| 5293 | + * Handle media_buttons hook. |
|
| 5294 | + * |
|
| 5295 | + * @since 1.2.7 |
|
| 5296 | + */ |
|
| 5297 | + public function wp_media_buttons() { |
|
| 5298 | + global $shortcode_insert_button_once; |
|
| 5291 | 5299 | |
| 5292 | - /** |
|
| 5293 | - * Handle media_buttons hook. |
|
| 5294 | - * |
|
| 5295 | - * @since 1.2.7 |
|
| 5296 | - */ |
|
| 5297 | - public function wp_media_buttons() { |
|
| 5298 | - global $shortcode_insert_button_once; |
|
| 5299 | - |
|
| 5300 | - // Fix conflicts with UpSolution Core in header template edit element. |
|
| 5301 | - if ( defined( 'US_CORE_DIR' ) && ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] == 'us_ajax_hb_get_ebuilder_html' ) { |
|
| 5302 | - $shortcode_insert_button_once = true; |
|
| 5303 | - } |
|
| 5304 | - } |
|
| 5305 | - } |
|
| 5300 | + // Fix conflicts with UpSolution Core in header template edit element. |
|
| 5301 | + if ( defined( 'US_CORE_DIR' ) && ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] == 'us_ajax_hb_get_ebuilder_html' ) { |
|
| 5302 | + $shortcode_insert_button_once = true; |
|
| 5303 | + } |
|
| 5304 | + } |
|
| 5305 | + } |
|
| 5306 | 5306 | } |
@@ -19,16 +19,16 @@ discard block |
||
| 19 | 19 | |
| 20 | 20 | // Define constants. |
| 21 | 21 | if ( ! defined( 'WPINV_PLUGIN_FILE' ) ) { |
| 22 | - define( 'WPINV_PLUGIN_FILE', __FILE__ ); |
|
| 22 | + define( 'WPINV_PLUGIN_FILE', __FILE__ ); |
|
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | if ( ! defined( 'WPINV_VERSION' ) ) { |
| 26 | - define( 'WPINV_VERSION', '2.8.20' ); |
|
| 26 | + define( 'WPINV_VERSION', '2.8.20' ); |
|
| 27 | 27 | } |
| 28 | 28 | |
| 29 | 29 | // Include the main Invoicing class. |
| 30 | 30 | if ( ! class_exists( 'WPInv_Plugin', false ) ) { |
| 31 | - require_once plugin_dir_path( WPINV_PLUGIN_FILE ) . 'includes/class-wpinv.php'; |
|
| 31 | + require_once plugin_dir_path( WPINV_PLUGIN_FILE ) . 'includes/class-wpinv.php'; |
|
| 32 | 32 | } |
| 33 | 33 | |
| 34 | 34 | /** |
@@ -43,7 +43,7 @@ discard block |
||
| 43 | 43 | $GLOBALS['invoicing'] = new WPInv_Plugin(); |
| 44 | 44 | } |
| 45 | 45 | |
| 46 | - return $GLOBALS['invoicing']; |
|
| 46 | + return $GLOBALS['invoicing']; |
|
| 47 | 47 | } |
| 48 | 48 | |
| 49 | 49 | /** |
@@ -29,7 +29,7 @@ discard block |
||
| 29 | 29 | add_action( 'init', array( $this, 'register_erasers_exporters' ) ); |
| 30 | 30 | } |
| 31 | 31 | |
| 32 | - /** |
|
| 32 | + /** |
|
| 33 | 33 | * Initial registration of privacy erasers and exporters. |
| 34 | 34 | * |
| 35 | 35 | * Due to the use of translation functions, this should run only after plugins loaded. |
@@ -49,25 +49,25 @@ discard block |
||
| 49 | 49 | public function get_privacy_message() { |
| 50 | 50 | |
| 51 | 51 | $content = '<div class="wp-suggested-text">' . |
| 52 | - '<h2>' . __( 'Invoices and checkout', 'invoicing' ) . '</h2>' . |
|
| 53 | - '<p class="privacy-policy-tutorial">' . __( 'Example privacy texts.', 'invoicing' ) . '</p>' . |
|
| 54 | - '<p>' . __( 'We collect information about you during the checkout process on our site. This information may include, but is not limited to, your name, email address, phone number, address, IP and any other details that might be requested from you for the purpose of processing your payment and retaining your invoice details for legal reasons.', 'invoicing' ) . '</p>' . |
|
| 55 | - '<p>' . __( 'Handling this data also allows us to:', 'invoicing' ) . '</p>' . |
|
| 56 | - '<ul>' . |
|
| 57 | - '<li>' . __( '- Send you important account/invoice/service information.', 'invoicing' ) . '</li>' . |
|
| 58 | - '<li>' . __( '- Estimate taxes based on your location.', 'invoicing' ) . '</li>' . |
|
| 59 | - '<li>' . __( '- Respond to your queries or complaints.', 'invoicing' ) . '</li>' . |
|
| 60 | - '<li>' . __( '- Process payments and to prevent fraudulent transactions. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
| 61 | - '<li>' . __( '- Retain historical payment and invoice history. We do this on the basis of legal obligations.', 'invoicing' ) . '</li>' . |
|
| 62 | - '<li>' . __( '- Set up and administer your account, provide technical and/or customer support, and to verify your identity. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
| 63 | - '</ul>' . |
|
| 64 | - '<p>' . __( 'In addition to collecting information at checkout we may also use and store your contact details when manually creating invoices for require payments relating to prior contractual agreements or agreed terms.', 'invoicing' ) . '</p>' . |
|
| 65 | - '<h2>' . __( 'What we share with others', 'invoicing' ) . '</h2>' . |
|
| 66 | - '<p>' . __( 'We share information with third parties who help us provide our payment and invoicing services to you; for example --', 'invoicing' ) . '</p>' . |
|
| 67 | - '<p class="privacy-policy-tutorial">' . __( 'In this subsection you should list which third party payment processors you’re using to take payments since these may handle customer data. We’ve included PayPal as an example, but you should remove this if you’re not using PayPal.', 'invoicing' ) . '</p>' . |
|
| 68 | - '<p>' . __( 'We accept payments through PayPal. When processing payments, some of your data will be passed to PayPal, including information required to process or support the payment, such as the purchase total and billing information.', 'invoicing' ) . '</p>' . |
|
| 69 | - '<p>' . __( 'Please see the <a href="https://www.paypal.com/us/webapps/mpp/ua/privacy-full">PayPal Privacy Policy</a> for more details.', 'invoicing' ) . '</p>' . |
|
| 70 | - '</div>'; |
|
| 52 | + '<h2>' . __( 'Invoices and checkout', 'invoicing' ) . '</h2>' . |
|
| 53 | + '<p class="privacy-policy-tutorial">' . __( 'Example privacy texts.', 'invoicing' ) . '</p>' . |
|
| 54 | + '<p>' . __( 'We collect information about you during the checkout process on our site. This information may include, but is not limited to, your name, email address, phone number, address, IP and any other details that might be requested from you for the purpose of processing your payment and retaining your invoice details for legal reasons.', 'invoicing' ) . '</p>' . |
|
| 55 | + '<p>' . __( 'Handling this data also allows us to:', 'invoicing' ) . '</p>' . |
|
| 56 | + '<ul>' . |
|
| 57 | + '<li>' . __( '- Send you important account/invoice/service information.', 'invoicing' ) . '</li>' . |
|
| 58 | + '<li>' . __( '- Estimate taxes based on your location.', 'invoicing' ) . '</li>' . |
|
| 59 | + '<li>' . __( '- Respond to your queries or complaints.', 'invoicing' ) . '</li>' . |
|
| 60 | + '<li>' . __( '- Process payments and to prevent fraudulent transactions. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
| 61 | + '<li>' . __( '- Retain historical payment and invoice history. We do this on the basis of legal obligations.', 'invoicing' ) . '</li>' . |
|
| 62 | + '<li>' . __( '- Set up and administer your account, provide technical and/or customer support, and to verify your identity. We do this on the basis of our legitimate business interests.', 'invoicing' ) . '</li>' . |
|
| 63 | + '</ul>' . |
|
| 64 | + '<p>' . __( 'In addition to collecting information at checkout we may also use and store your contact details when manually creating invoices for require payments relating to prior contractual agreements or agreed terms.', 'invoicing' ) . '</p>' . |
|
| 65 | + '<h2>' . __( 'What we share with others', 'invoicing' ) . '</h2>' . |
|
| 66 | + '<p>' . __( 'We share information with third parties who help us provide our payment and invoicing services to you; for example --', 'invoicing' ) . '</p>' . |
|
| 67 | + '<p class="privacy-policy-tutorial">' . __( 'In this subsection you should list which third party payment processors you’re using to take payments since these may handle customer data. We’ve included PayPal as an example, but you should remove this if you’re not using PayPal.', 'invoicing' ) . '</p>' . |
|
| 68 | + '<p>' . __( 'We accept payments through PayPal. When processing payments, some of your data will be passed to PayPal, including information required to process or support the payment, such as the purchase total and billing information.', 'invoicing' ) . '</p>' . |
|
| 69 | + '<p>' . __( 'Please see the <a href="https://www.paypal.com/us/webapps/mpp/ua/privacy-full">PayPal Privacy Policy</a> for more details.', 'invoicing' ) . '</p>' . |
|
| 70 | + '</div>'; |
|
| 71 | 71 | |
| 72 | 72 | return apply_filters( 'wpinv_privacy_policy_content', $content ); |
| 73 | 73 | } |