/** * Enqueue the panels admin scripts * * @action admin_print_scripts-post-new.php * @action admin_print_scripts-post.php * @action admin_print_scripts-appearance_page_so_panels_home_page */ function siteorigin_panels_admin_enqueue_scripts($prefix) { $screen = get_current_screen(); if ($screen->base == 'post' && in_array($screen->id, siteorigin_panels_setting('post-types')) || $screen->base == 'appearance_page_so_panels_home_page') { wp_enqueue_script('jquery-ui-resizable'); wp_enqueue_script('jquery-ui-sortable'); wp_enqueue_script('jquery-ui-dialog'); wp_enqueue_script('jquery-ui-button'); wp_enqueue_script('so-undomanager', plugin_dir_url(__FILE__) . 'js/undomanager.min.js', array(), 'fb30d7f', true); wp_enqueue_script('so-panels-chosen', plugin_dir_url(__FILE__) . 'js/chosen/chosen.jquery.min.js', array('jquery'), SITEORIGIN_PANELS_VERSION, true); wp_enqueue_script('so-panels-admin', plugin_dir_url(__FILE__) . 'js/panels.admin.min.js', array('jquery'), SITEORIGIN_PANELS_VERSION, true); wp_enqueue_script('so-panels-admin-panels', plugin_dir_url(__FILE__) . 'js/panels.admin.panels.min.js', array('jquery'), SITEORIGIN_PANELS_VERSION, true); wp_enqueue_script('so-panels-admin-grid', plugin_dir_url(__FILE__) . 'js/panels.admin.grid.min.js', array('jquery'), SITEORIGIN_PANELS_VERSION, true); wp_enqueue_script('so-panels-admin-prebuilt', plugin_dir_url(__FILE__) . 'js/panels.admin.prebuilt.min.js', array('jquery'), SITEORIGIN_PANELS_VERSION, true); wp_enqueue_script('so-panels-admin-tooltip', plugin_dir_url(__FILE__) . 'js/panels.admin.tooltip.min.js', array('jquery'), SITEORIGIN_PANELS_VERSION, true); wp_enqueue_script('so-panels-admin-media', plugin_dir_url(__FILE__) . 'js/panels.admin.media.min.js', array('jquery'), SITEORIGIN_PANELS_VERSION, true); wp_enqueue_script('so-panels-admin-styles', plugin_dir_url(__FILE__) . 'js/panels.admin.styles.min.js', array('jquery'), SITEORIGIN_PANELS_VERSION, true); wp_localize_script('so-panels-admin', 'panels', array('previewUrl' => wp_nonce_url(add_query_arg('siteorigin_panels_preview', 'true', get_home_url()), 'siteorigin-panels-preview'), 'i10n' => array('buttons' => array('insert' => __('Insert', 'siteorigin-panels'), 'cancel' => __('cancel', 'siteorigin-panels'), 'delete' => __('Delete', 'siteorigin-panels'), 'duplicate' => __('Duplicate', 'siteorigin-panels'), 'edit' => __('Edit', 'siteorigin-panels'), 'done' => __('Done', 'siteorigin-panels'), 'undo' => __('Undo', 'siteorigin-panels'), 'add' => __('Add', 'siteorigin-panels')), 'messages' => array('deleteColumns' => __('Columns deleted', 'siteorigin-panels'), 'deleteWidget' => __('Widget deleted', 'siteorigin-panels'), 'confirmLayout' => __('Are you sure you want to load this layout? It will overwrite your current page.', 'siteorigin-panels'), 'editWidget' => __('Edit %s Widget', 'siteorigin-panels'))))); $panels_data = siteorigin_panels_get_current_admin_panels_data(); if (!empty($panels_data['widgets'])) { wp_localize_script('so-panels-admin', 'panelsData', $panels_data); } // Let themes and plugins give names and descriptions to missing widgets. global $wp_widget_factory; $missing_widgets = array(); if (!empty($panels_data['widgets'])) { foreach ($panels_data['widgets'] as $i => $widget) { // There's a chance the widget was activated by siteorigin_panels_widget_is_missing if (empty($wp_widget_factory->widgets[$widget['info']['class']])) { $missing_widgets[$widget['info']['class']] = apply_filters('siteorigin_panels_missing_widget_data', array('title' => str_replace('_', ' ', $widget['info']['class']), 'description' => __('Install the missing widget', 'siteorigin-panels')), $widget['info']['class']); } } } if (!empty($missing_widgets)) { wp_localize_script('so-panels-admin', 'panelsMissingWidgets', $missing_widgets); } // Set up the row styles wp_localize_script('so-panels-admin', 'panelsStyleFields', siteorigin_panels_style_get_fields()); if (siteorigin_panels_style_is_using_color()) { wp_enqueue_script('wp-color-picker'); wp_enqueue_style('wp-color-picker'); } // Render all the widget forms. A lot of widgets use this as a chance to enqueue their scripts $original_post = isset($GLOBALS['post']) ? $GLOBALS['post'] : null; // Make sure widgets don't change the global post. foreach ($GLOBALS['wp_widget_factory']->widgets as $class => $widget_obj) { ob_start(); $widget_obj->form(array()); ob_clean(); } $GLOBALS['post'] = $original_post; // This gives panels a chance to enqueue scripts too, without having to check the screen ID. do_action('siteorigin_panel_enqueue_admin_scripts'); do_action('sidebar_admin_setup'); } }
/** * Enqueue the panels admin scripts * * @action admin_print_scripts-post-new.php * @action admin_print_scripts-post.php * @uses Pootle_Page_Builder_Admin_UI::enqueue_color_picker() * @since 1.0.0 */ public function enqueue_scripts() { $screen = get_current_screen(); if ($screen->base == 'post' && in_array($screen->id, pootle_pb_settings('post-types'))) { wp_enqueue_script('jquery-ui-resizable'); wp_enqueue_script('jquery-ui-sortable'); wp_enqueue_script('jquery-ui-slider'); wp_enqueue_script('jquery-ui-dialog'); wp_enqueue_script('jquery-ui-button'); wp_enqueue_script('so-undomanager', POOTLEPAGE_URL . 'js/undomanager.min.js', array(), 'fb30d7f'); wp_enqueue_script('ppb-chosen', POOTLEPAGE_URL . 'js/chosen/chosen.jquery.min.min.js', array('jquery'), POOTLEPAGE_VERSION); $deps = array('jquery', 'jquery-ui-resizable', 'jquery-ui-sortable', 'jquery-ui-slider', 'jquery-ui-dialog', 'jquery-ui-button', 'jquery-ui-tabs'); wp_enqueue_script('so-panels-admin', POOTLEPAGE_URL . 'js/panels.admin.js', $deps, POOTLEPAGE_VERSION); wp_enqueue_script('so-panels-admin-sticky', POOTLEPAGE_URL . 'js/panels.admin.sticky.js', array('jquery'), POOTLEPAGE_VERSION); wp_enqueue_script('so-panels-admin-panels', POOTLEPAGE_URL . 'js/panels.admin.panels.js', array('jquery'), POOTLEPAGE_VERSION); wp_enqueue_script('so-panels-admin-grid', POOTLEPAGE_URL . 'js/panels.admin.grid.js', array('jquery'), POOTLEPAGE_VERSION); wp_enqueue_script('so-panels-admin-prebuilt', POOTLEPAGE_URL . 'js/panels.admin.prebuilt.js', array('jquery'), POOTLEPAGE_VERSION); wp_enqueue_script('so-panels-admin-tooltip', POOTLEPAGE_URL . 'js/panels.admin.tooltip.min.js', array('jquery'), POOTLEPAGE_VERSION); wp_enqueue_script('so-panels-admin-media', POOTLEPAGE_URL . 'js/panels.admin.media.min.js', array('jquery'), POOTLEPAGE_VERSION); wp_enqueue_script('so-panels-admin-styles', POOTLEPAGE_URL . 'js/panels.admin.styles.js', array('jquery'), POOTLEPAGE_VERSION); wp_enqueue_script('row-options', POOTLEPAGE_URL . 'js/row.options.admin.js', array('jquery')); wp_localize_script('so-panels-admin', 'panels', array('previewUrl' => wp_nonce_url(add_query_arg('siteorigin_panels_preview', 'true', get_home_url()), 'ppb-panels-preview'), 'i10n' => array('buttons' => array('insert' => __('Insert', 'ppb-panels'), 'cancel' => __('cancel', 'ppb-panels'), 'delete' => __('Delete', 'ppb-panels'), 'duplicate' => __('Duplicate', 'ppb-panels'), 'style' => __('Style', 'ppb-panels'), 'edit' => __('Edit', 'ppb-panels'), 'done' => __('Done', 'ppb-panels'), 'undo' => __('Want to undo?', 'ppb-panels'), 'add' => __('Add', 'ppb-panels')), 'messages' => array('deleteColumns' => __('Columns deleted', 'ppb-panels'), 'deleteWidget' => __('Content deleted', 'ppb-panels'), 'confirmLayout' => __('Are you sure you want to load this layout? It will overwrite your current page.', 'ppb-panels'), 'editWidget' => __('Edit %s Widget', 'ppb-panels'), 'styleWidget' => __('Style Widget', 'ppb-panels'))))); // this is the data of the widget and row that have been setup $panels_data = $this->get_current_admin_panels_data(); // Add in the forms if (count($panels_data) > 0) { // load all data even if no widget inside, so row styling will be loaded wp_localize_script('so-panels-admin', 'panelsData', $panels_data); } // Set up the row styles wp_localize_script('so-panels-admin', 'panelsStyleFields', siteorigin_panels_style_get_fields()); $this->enqueue_color_picker(); wp_localize_script('pp-pb-color-picker', 'wpColorPickerL10n', array('clear' => __('Clear'), 'defaultString' => __('Default'), 'pick' => __('Select Color'), 'current' => __('Current Color'))); wp_enqueue_style('wp-color-picker'); // This gives panels a chance to enqueue scripts too, without having to check the screen ID. do_action('ppb_enqueue_admin_scripts'); do_action('sidebar_admin_setup'); } }
/** * Sanitize all the data that's come from post data * * @param $panels_data */ function siteorigin_panels_style_sanitize_data($panels_data) { $fields = siteorigin_panels_style_get_fields(); if (empty($fields)) { return $panels_data; } if (empty($panels_data['grids']) || !is_array($panels_data['grids'])) { return $panels_data; } for ($i = 0; $i < count($panels_data['grids']); $i++) { foreach ($fields as $name => $attr) { switch ($attr['type']) { case 'checkbox': // Convert the checkbox value to true or false. $panels_data['grids'][$i]['style'][$name] = !empty($panels_data['grids'][$i]['style'][$name]); break; case 'number': $panels_data['grids'][$i]['style'][$name] = intval($panels_data['grids'][$i]['style'][$name]); break; case 'url': $panels_data['grids'][$i]['style'][$name] = esc_url_raw($panels_data['grids'][$i]['style'][$name]); break; case 'select': // Make sure the value is in the options if (!in_array($panels_data['grids'][$i]['style'][$name], array_keys($attr['options']))) { $panels_data['grids'][$i]['style'][$name] = false; } break; } } } return $panels_data; }
/** * Enqueue the panels admin scripts * * @action admin_print_scripts-post-new.php * @action admin_print_scripts-post.php * @action admin_print_scripts-appearance_page_so_panels_home_page */ function siteorigin_panels_admin_enqueue_scripts($prefix) { $screen = get_current_screen(); if ($screen->base == 'post' && in_array($screen->id, siteorigin_panels_setting('post-types')) || $screen->base == 'appearance_page_so_panels_home_page') { wp_enqueue_script('jquery-ui-resizable'); wp_enqueue_script('jquery-ui-sortable'); wp_enqueue_script('jquery-ui-dialog'); wp_enqueue_script('jquery-ui-button'); wp_enqueue_script('so-undomanager', plugin_dir_url(__FILE__) . 'js/undomanager.min.js', array(), 'fb30d7f'); // check if "chosen" is already used, e.g. by WooCommerce if (!wp_script_is('chosen')) { wp_enqueue_script('so-panels-chosen', plugin_dir_url(__FILE__) . 'js/chosen/chosen.jquery.min.min.js', array('jquery'), POOTLEPAGE_VERSION); } wp_enqueue_script('so-panels-admin', plugin_dir_url(__FILE__) . 'js/panels.admin.js', array('jquery'), POOTLEPAGE_VERSION); wp_enqueue_script('so-panels-admin-panels', plugin_dir_url(__FILE__) . 'js/panels.admin.panels.js', array('jquery'), POOTLEPAGE_VERSION); wp_enqueue_script('so-panels-admin-grid', plugin_dir_url(__FILE__) . 'js/panels.admin.grid.js', array('jquery'), POOTLEPAGE_VERSION); wp_enqueue_script('so-panels-admin-prebuilt', plugin_dir_url(__FILE__) . 'js/panels.admin.prebuilt.js', array('jquery'), POOTLEPAGE_VERSION); wp_enqueue_script('so-panels-admin-tooltip', plugin_dir_url(__FILE__) . 'js/panels.admin.tooltip.min.js', array('jquery'), POOTLEPAGE_VERSION); wp_enqueue_script('so-panels-admin-media', plugin_dir_url(__FILE__) . 'js/panels.admin.media.min.js', array('jquery'), POOTLEPAGE_VERSION); wp_enqueue_script('so-panels-admin-styles', plugin_dir_url(__FILE__) . 'js/panels.admin.styles.js', array('jquery'), POOTLEPAGE_VERSION); wp_enqueue_script('row-options', plugin_dir_url(__FILE__) . 'js/row.options.admin.js', array('jquery')); wp_localize_script('so-panels-admin', 'panels', array('previewUrl' => wp_nonce_url(add_query_arg('siteorigin_panels_preview', 'true', get_home_url()), 'siteorigin-panels-preview'), 'i10n' => array('buttons' => array('insert' => __('Insert', 'siteorigin-panels'), 'cancel' => __('cancel', 'siteorigin-panels'), 'delete' => __('Delete', 'siteorigin-panels'), 'duplicate' => __('Duplicate', 'siteorigin-panels'), 'style' => __('Style', 'siteorigin-panels'), 'edit' => __('Edit', 'siteorigin-panels'), 'done' => __('Done', 'siteorigin-panels'), 'undo' => __('Undo', 'siteorigin-panels'), 'add' => __('Add', 'siteorigin-panels')), 'messages' => array('deleteColumns' => __('Columns deleted', 'siteorigin-panels'), 'deleteWidget' => __('Widget deleted', 'siteorigin-panels'), 'confirmLayout' => __('Are you sure you want to load this layout? It will overwrite your current page.', 'siteorigin-panels'), 'editWidget' => __('Edit %s Widget', 'siteorigin-panels'), 'styleWidget' => __('Style Widget', 'siteorigin-panels'))))); // this is the data of the widget and row that have been setup $panels_data = siteorigin_panels_get_current_admin_panels_data(); // Remove any widgets with classes that don't exist if (!empty($panels_data['panels'])) { foreach ($panels_data['panels'] as $i => $panel) { if (!class_exists($panel['info']['class'])) { unset($panels_data['panels'][$i]); } } } // Add in the forms if (count($panels_data) > 0) { foreach ($panels_data['widgets'] as $i => $widget) { if (!class_exists($widget['info']['class'])) { unset($panels_data['widgets'][$i]); } // bring over the hide title check box from old Pootle Visual Editor if ($widget['info']['class'] == 'Pootle_Text_Widget') { if (isset($widget['hide-title']) && $widget['hide-title'] == '1') { $widgetStyle = isset($widget['info']['style']) ? json_decode($widget['info']['style'], true) : pp_get_default_widget_style(); $widgetStyle['hide-title'] = 'none'; $panels_data['widgets'][$i]['info']['style'] = json_encode($widgetStyle); } } } // load all data even if no widget inside, so row styling will be loaded wp_localize_script('so-panels-admin', 'panelsData', $panels_data); } // Set up the row styles wp_localize_script('so-panels-admin', 'panelsStyleFields', siteorigin_panels_style_get_fields()); // we definitely need to use color picker //if ( siteorigin_panels_style_is_using_color( ) ) { wp_dequeue_script("iris"); wp_enqueue_script("pp-pb-iris", plugin_dir_url(__FILE__) . '/js/iris.js', array('jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch')); wp_enqueue_script('pp-pb-color-picker', plugin_dir_url(__FILE__) . '/js/color-picker-custom.js', array('pp-pb-iris')); wp_localize_script('pp-pb-color-picker', 'wpColorPickerL10n', array('clear' => __('Clear'), 'defaultString' => __('Default'), 'pick' => __('Select Color'), 'current' => __('Current Color'))); wp_enqueue_style('wp-color-picker'); //} // Render all the widget forms. A lot of widgets use this as a chance to enqueue their scripts $original_post = isset($GLOBALS['post']) ? $GLOBALS['post'] : null; // Make sure widgets don't change the global post. foreach ($GLOBALS['wp_widget_factory']->widgets as $class => $widget_obj) { ob_start(); $widget_obj->form(array()); ob_clean(); } $GLOBALS['post'] = $original_post; // handle a special case for Event Calendar Pro, // since it doesn't enqueue script if not in Widgets page if (class_exists('TribeEventsMiniCalendarWidget')) { Tribe_Template_Factory::asset_package('select2'); //wp_enqueue_script( 'calendar-widget-admin', plugin_dir_url( __FILE__ ) . '/js/calendar-widget-admin.js' ); } // This gives panels a chance to enqueue scripts too, without having to check the screen ID. do_action('siteorigin_panel_enqueue_admin_scripts'); do_action('sidebar_admin_setup'); } }