/**
 * 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');
    }
}
Exemplo n.º 2
0
 /**
  * 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');
     }
 }
Exemplo n.º 3
0
/**
 * 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;
}
Exemplo n.º 4
0
/**
 * 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');
    }
}