/**
 * 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');
    }
}
Example #2
0
/**
 * Render a panel metabox.
 *
 * @param $post
 */
function siteorigin_panels_metabox_render($post)
{
    $panels_data = siteorigin_panels_get_current_admin_panels_data();
    include plugin_dir_path(__FILE__) . 'tpl/metabox-panels.php';
}
/**
 * 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');
    }
}