コード例 #1
0
/**
 * Add tabs to the widget dialog
 *
 * @param $tabs
 *
 * @return array
 */
function siteorigin_panels_add_widgets_dialog_tabs($tabs)
{
    $tabs['widgets_bundle'] = array('title' => __('Widgets Bundle', 'siteorigin-panels'), 'filter' => array('groups' => array('so-widgets-bundle')));
    if (class_exists('SiteOrigin_Widgets_Bundle')) {
        // Add a message about enabling more widgets
        $tabs['widgets_bundle']['message'] = sprintf(preg_replace(array('/1\\{ *(.*?) *\\}/'), array('<a href="' . admin_url('plugins.php?page=so-widgets-plugins') . '">$1</a>'), __('Enable more widgets in the 1{Widgets Bundle settings}.', 'siteorigin-panels')));
    } else {
        // Add a message about installing the widgets bundle
        $tabs['widgets_bundle']['message'] = preg_replace('/1\\{ *(.*?) *\\}/', '<a href="' . siteorigin_panels_plugin_activation_install_url('so-widgets-bundle', __('SiteOrigin Widgets Bundle', 'siteorigin-panels')) . '">$1</a>', __('Install the 1{Widgets Bundle} to get extra widgets.', 'siteorigin-panels'));
    }
    $tabs['page_builder'] = array('title' => __('Page Builder Widgets', 'siteorigin-panels'), 'message' => preg_replace(array('/1\\{ *(.*?) *\\}/'), array('<a href="' . admin_url('options-general.php?page=siteorigin_panels') . '">$1</a>'), __('You can enable the legacy (PB) widgets in the 1{Page Builder settings}.', 'siteorigin-panels')), 'filter' => array('groups' => array('panels')));
    $tabs['wordpress'] = array('title' => __('WordPress Widgets', 'siteorigin-panels'), 'filter' => array('groups' => array('wordpress')));
    // Check for woocommerce plugin.
    if (defined('WOOCOMMERCE_VERSION')) {
        $tabs['woocommerce'] = array('title' => __('WooCommerce', 'woocommerce'), 'filter' => array('groups' => array('woocommerce')));
    }
    // Check for jetpack plugin.
    if (defined('JETPACK__VERSION')) {
        $tabs['jetpack'] = array('title' => __('Jetpack', 'jetpack'), 'filter' => array('groups' => array('jetpack')));
    }
    // Check for bbpress plugin.
    if (function_exists('bbpress')) {
        $tabs['bbpress'] = array('title' => __('BBPress', 'bbpress'), 'filter' => array('groups' => array('bbpress')));
    }
    $tabs['recommended'] = array('title' => __('Recommended Widgets', 'siteorigin-panels'), 'filter' => array('groups' => array('recommended')));
    return $tabs;
}
コード例 #2
0
ファイル: siteorigin-panels.php プロジェクト: pcuervo/od4d
/**
 * Render a widget form with all the Page Builder specific fields
 *
 * @param string $widget The class of the widget
 * @param array $instance Widget values
 * @param bool $raw
 * @param string $widget_number
 * @return mixed|string The form
 */
function siteorigin_panels_render_form($widget, $instance = array(), $raw = false, $widget_number = '{$id}')
{
    global $wp_widget_factory;
    // This is a chance for plugins to replace missing widgets
    $the_widget = !empty($wp_widget_factory->widgets[$widget]) ? $wp_widget_factory->widgets[$widget] : false;
    $the_widget = apply_filters('siteorigin_panels_widget_object', $the_widget, $widget);
    if (empty($the_widget) || !is_a($the_widget, 'WP_Widget')) {
        $widgets = siteorigin_panels_get_widgets();
        if (!empty($widgets[$widget]) && !empty($widgets[$widget]['plugin'])) {
            // We know about this widget, show a form about installing it.
            $install_url = siteorigin_panels_plugin_activation_install_url($widgets[$widget]['plugin']['slug'], $widgets[$widget]['plugin']['name']);
            $form = '<div class="panels-missing-widget-form">' . '<p>' . preg_replace(array('/1\\{ *(.*?) *\\}/', '/2\\{ *(.*?) *\\}/'), array('<a href="' . $install_url . '" target="_blank">$1</a>', '<strong>$1</strong>'), sprintf(__('You need to install 1{%1$s} to use the widget 2{%2$s}.', 'siteorigin-panels'), $widgets[$widget]['plugin']['name'], $widget)) . '</p>' . '<p>' . __("Save and reload this page to start using the widget after you've installed it.", 'siteorigin-panels') . '</p>' . '</div>';
        } else {
            // This widget is missing, so show a missing widgets form.
            $form = '<div class="panels-missing-widget-form"><p>' . preg_replace(array('/1\\{ *(.*?) *\\}/', '/2\\{ *(.*?) *\\}/'), array('<strong>$1</strong>', '<a href="https://siteorigin.com/thread/" target="_blank">$1</a>'), sprintf(__('The widget 1{%1$s} is not available. Please try locate and install the missing plugin. Post on the 2{support forums} if you need help.', 'siteorigin-panels'), esc_html($widget))) . '</p></div>';
        }
        // Allow other themes and plugins to change the missing widget form
        return apply_filters('siteorigin_panels_missing_widget_form', $form, $widget, $instance);
    }
    if ($raw) {
        $instance = $the_widget->update($instance, $instance);
    }
    $the_widget->id = 'temp';
    $the_widget->number = $widget_number;
    ob_start();
    $return = $the_widget->form($instance);
    do_action_ref_array('in_widget_form', array(&$the_widget, &$return, $instance));
    $form = ob_get_clean();
    // Convert the widget field naming into ones that Page Builder uses
    $exp = preg_quote($the_widget->get_field_name('____'));
    $exp = str_replace('____', '(.*?)', $exp);
    $form = preg_replace('/' . $exp . '/', 'widgets[' . preg_replace('/\\$(\\d)/', '\\\\$$1', $widget_number) . '][$1]', $form);
    $form = apply_filters('siteorigin_panels_widget_form', $form, $widget, $instance);
    // Add all the information fields
    return $form;
}
コード例 #3
0
/**
 * Render a widget form with all the Page Builder specific fields
 *
 * @param string $widget The class of the widget
 * @param array $instance Widget values
 * @param bool $raw
 * @return mixed|string The form
 */
function siteorigin_panels_render_form($widget, $instance = array(), $raw = false)
{
    global $wp_widget_factory;
    // This is a chance for plugins to replace missing widgets
    $the_widget = !empty($wp_widget_factory->widgets[$widget]) ? $wp_widget_factory->widgets[$widget] : false;
    $the_widget = apply_filters('siteorigin_panels_widget_object', $the_widget, $widget);
    if (empty($the_widget) || !is_a($the_widget, 'WP_Widget')) {
        $widgets = siteorigin_panels_get_widgets();
        if (!empty($widgets[$widget]) && !empty($widgets[$widget]['plugin'])) {
            // We know about this widget, show a form about installing it.
            $install_url = siteorigin_panels_plugin_activation_install_url($widgets[$widget]['plugin']['slug'], $widgets[$widget]['plugin']['name']);
            $form = '<div class="panels-missing-widget-form">' . '<p>' . sprintf(__("You need to <a href='%s' target='_blank'>install %s</a> to use the widget <strong>%s</strong>. It's a free plugin available off the official WordPress plugin directory.", 'siteorigin-panels'), $install_url, $widgets[$widget]['plugin']['name'], $widget) . '</p>' . '<p>' . __("Save and reload this page to start using the widget after you've installed it.") . '</p>' . '</div>';
        } else {
            // This widget is missing, so show a missing widgets form.
            $form = '<div class="panels-missing-widget-form"><p>' . sprintf(__('The widget <strong>%s</strong> is not available. Please try locate and install the missing plugin. Post on the <a href="%s" target="_blank">support forums</a> if you need help.', 'siteorigin-panels'), esc_html($widget), 'http://siteorigin.com/thread/') . '</p></div>';
        }
        // Allow other themes and plugins to change the missing widget form
        return apply_filters('siteorigin_panels_missing_widget_form', $form, $widget, $instance);
    }
    if ($raw) {
        $instance = $the_widget->update($instance, $instance);
    }
    $the_widget->id = 'temp';
    $the_widget->number = '{$id}';
    ob_start();
    $the_widget->form($instance);
    $form = ob_get_clean();
    // Convert the widget field naming into ones that Page Builder uses
    $exp = preg_quote($the_widget->get_field_name('____'));
    $exp = str_replace('____', '(.*?)', $exp);
    $form = preg_replace('/' . $exp . '/', 'widgets[{$id}][$1]', $form);
    $form = apply_filters('siteorigin_panels_widget_form', $form, $widget, $instance);
    // Add all the information fields
    return $form;
}