Example #1
0
/**
 *
 * @param type $dashboard
 * @param type $meta_box
 */
function _wp_dashboard_control_callback($dashboard, $meta_box)
{
    echo '<form method="post" class="dashboard-widget-control-form">';
    wp_dashboard_trigger_widget_control($meta_box['id']);
    wp_nonce_field('edit-dashboard-widget_' . $meta_box['id'], 'dashboard-widget-nonce');
    echo '<input type="hidden" name="widget_id" value="' . esc_attr($meta_box['id']) . '" />';
    submit_button(__('Submit'));
    echo '</form>';
}
function _wp_dashboard_control_callback( $dashboard, $meta_box ) {
	echo '<form action="" method="post" class="dashboard-widget-control-form">';
	wp_dashboard_trigger_widget_control( $meta_box['id'] );
	echo "<p class='submit'><input type='hidden' name='widget_id' value='$meta_box[id]' /><input type='submit' value='" . __( 'Submit' ) . "' /></p>";

	echo '</form>';
}
 public static function si_dashboard_setup()
 {
     require_once ABSPATH . 'wp-admin/includes/dashboard.php';
     global $wp_registered_widgets, $wp_registered_widget_controls, $wp_dashboard_control_callbacks;
     $wp_dashboard_control_callbacks = array();
     $screen = get_current_screen();
     do_action('si_dashboard_setup', $screen->id);
     SI_Dashboard::add_dashboard_widgets($screen->id);
     if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
         check_admin_referer('edit-dashboard-widget_' . $_POST['widget_id'], 'dashboard-widget-nonce');
         ob_start();
         // hack - but the same hack wp-admin/widgets.php uses
         wp_dashboard_trigger_widget_control($_POST['widget_id']);
         ob_end_clean();
         wp_redirect(remove_query_arg('edit'));
         exit;
     }
     /** This action is documented in wp-admin/edit-form-advanced.php */
     do_action('do_meta_boxes', $screen->id, 'normal', '');
     /** This action is documented in wp-admin/edit-form-advanced.php */
     do_action('do_meta_boxes', $screen->id, 'side', '');
 }
function _sp_help_control_callback($dashboard, $meta_box)
{
    echo '<form action="" method="post" class="dashboard-widget-control-form">';
    wp_dashboard_trigger_widget_control($meta_box['id']);
    echo '<input type="hidden" name="widget_id" value="' . esc_attr($meta_box['id']) . '" />';
    submit_button(__('Submit'));
    echo '</form>';
}
function wp_dashboard_setup()
{
    global $wpdb, $wp_dashboard_sidebars;
    $update = false;
    $widget_options = get_option('dashboard_widget_options');
    if (!$widget_options || !is_array($widget_options)) {
        $widget_options = array();
    }
    /* Register WP Dashboard Dynamic Sidebar */
    register_sidebar(array('name' => 'WordPress Dashboard', 'id' => 'wp_dashboard', 'before_widget' => "\t<div class='dashboard-widget-holder %2\$s' id='%1\$s'>\n\n\t\t<div class='dashboard-widget'>\n\n", 'after_widget' => "\t\t</div>\n\n\t</div>\n\n", 'before_title' => "\t\t\t<h3 class='dashboard-widget-title'>", 'after_title' => "</h3>\n\n"));
    /* Register Widgets and Controls */
    // Recent Comments Widget
    $mod_comments = wp_count_comments();
    $mod_comments = $mod_comments->moderated;
    if (current_user_can('moderate_comments') && $mod_comments) {
        $notice = sprintf(__ngettext('%d comment awaiting moderation', '%d comments awaiting moderation', $mod_comments), $mod_comments);
        $notice = "<a href='edit-comments.php?comment_status=moderated'>{$notice}</a>";
    } else {
        $notice = '';
    }
    wp_register_sidebar_widget('dashboard_recent_comments', __('Recent Comments'), 'wp_dashboard_recent_comments', array('all_link' => 'edit-comments.php', 'notice' => $notice, 'width' => 'half'));
    // Incoming Links Widget
    if (!isset($widget_options['dashboard_incoming_links'])) {
        $update = true;
        $widget_options['dashboard_incoming_links'] = array('link' => apply_filters('dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?hl=en&scoring=d&partner=wordpress&q=link:' . trailingslashit(get_option('home'))), 'url' => apply_filters('dashboard_incoming_links_feed', 'http://blogsearch.google.com/blogsearch_feeds?hl=en&scoring=d&ie=utf-8&num=10&output=rss&partner=wordpress&q=link:' . trailingslashit(get_option('home'))), 'items' => 5, 'show_date' => 0);
    }
    wp_register_sidebar_widget('dashboard_incoming_links', __('Incoming Links'), 'wp_dashboard_empty', array('all_link' => $widget_options['dashboard_incoming_links']['link'], 'feed_link' => $widget_options['dashboard_incoming_links']['url'], 'width' => 'half'), 'wp_dashboard_cached_rss_widget', 'wp_dashboard_incoming_links_output');
    wp_register_widget_control('dashboard_incoming_links', __('Incoming Links'), 'wp_dashboard_rss_control', array(), array('widget_id' => 'dashboard_incoming_links', 'form_inputs' => array('title' => false, 'show_summary' => false, 'show_author' => false)));
    // WP Plugins Widget
    wp_register_sidebar_widget('dashboard_plugins', __('Plugins'), 'wp_dashboard_empty', array('all_link' => 'http://wordpress.org/extend/plugins/', 'feed_link' => 'http://wordpress.org/extend/plugins/rss/topics/', 'width' => 'half'), 'wp_dashboard_cached_rss_widget', 'wp_dashboard_plugins_output', array('http://wordpress.org/extend/plugins/rss/browse/popular/', 'http://wordpress.org/extend/plugins/rss/browse/new/', 'http://wordpress.org/extend/plugins/rss/browse/updated/'));
    // Primary feed (Dev Blog) Widget
    if (!isset($widget_options['dashboard_primary'])) {
        $update = true;
        $widget_options['dashboard_primary'] = array('link' => apply_filters('dashboard_primary_link', __('http://wordpress.org/development/')), 'url' => apply_filters('dashboard_primary_feed', __('http://wordpress.org/development/feed/')), 'title' => apply_filters('dashboard_primary_title', __('WordPress Development Blog')), 'items' => 2, 'show_summary' => 1, 'show_author' => 0, 'show_date' => 1);
    }
    wp_register_sidebar_widget('dashboard_primary', $widget_options['dashboard_primary']['title'], 'wp_dashboard_empty', array('all_link' => $widget_options['dashboard_primary']['link'], 'feed_link' => $widget_options['dashboard_primary']['url'], 'width' => 'half', 'class' => 'widget_rss'), 'wp_dashboard_cached_rss_widget', 'wp_dashboard_rss_output');
    wp_register_widget_control('dashboard_primary', __('Primary Feed'), 'wp_dashboard_rss_control', array(), array('widget_id' => 'dashboard_primary'));
    // Secondary Feed (Planet) Widget
    if (!isset($widget_options['dashboard_secondary'])) {
        $update = true;
        $widget_options['dashboard_secondary'] = array('link' => apply_filters('dashboard_secondary_link', __('http://planet.wordpress.org/')), 'url' => apply_filters('dashboard_secondary_feed', __('http://planet.wordpress.org/feed/')), 'title' => apply_filters('dashboard_secondary_title', __('Other WordPress News')), 'items' => 15);
    }
    wp_register_sidebar_widget('dashboard_secondary', $widget_options['dashboard_secondary']['title'], 'wp_dashboard_empty', array('all_link' => $widget_options['dashboard_secondary']['link'], 'feed_link' => $widget_options['dashboard_secondary']['url'], 'width' => 'full'), 'wp_dashboard_cached_rss_widget', 'wp_dashboard_secondary_output');
    wp_register_widget_control('dashboard_secondary', __('Secondary Feed'), 'wp_dashboard_rss_control', array(), array('widget_id' => 'dashboard_secondary', 'form_inputs' => array('show_summary' => false, 'show_author' => false, 'show_date' => false)));
    /* Dashboard Widget Template
    		wp_register_sidebar_widget( $widget_id (unique slug) , $widget_title, $output_callback,
    			array(
    				'all_link'  => full url for "See All" link,
    				'feed_link' => full url for "RSS" link,
    				'width'     => 'fourth', 'third', 'half', 'full' (defaults to 'half'),
    				'height'    => 'single', 'double' (defaults to 'single'),
    			),
    			$wp_dashboard_empty_callback (only needed if using 'wp_dashboard_empty' as your $output_callback),
    			$arg, $arg, $arg... (further args passed to callbacks)
    		);
    
    		// optional: if you want users to be able to edit the settings of your widget, you need to register a widget_control
    		wp_register_widget_control( $widget_id, $widget_control_title, $control_output_callback,
    			array(), // leave an empty array here: oddity in widget code
    			array(
    				'widget_id' => $widget_id, // Yes - again.  This is required: oddity in widget code
    				'arg'       => an arg to pass to the $control_output_callback,
    				'another'   => another arg to pass to the $control_output_callback,
    				...
    			)
    		);
    		*/
    // Hook to register new widgets
    do_action('wp_dashboard_setup');
    // Hard code the sidebar's widgets and order
    $dashboard_widgets = array();
    $dashboard_widgets[] = 'dashboard_recent_comments';
    $dashboard_widgets[] = 'dashboard_incoming_links';
    $dashboard_widgets[] = 'dashboard_primary';
    if (current_user_can('activate_plugins')) {
        $dashboard_widgets[] = 'dashboard_plugins';
    }
    $dashboard_widgets[] = 'dashboard_secondary';
    // Filter widget order
    $dashboard_widgets = apply_filters('wp_dashboard_widgets', $dashboard_widgets);
    $wp_dashboard_sidebars = array('wp_dashboard' => $dashboard_widgets, 'array_version' => 3.5);
    add_filter('dynamic_sidebar_params', 'wp_dashboard_dynamic_sidebar_params');
    if ('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id'])) {
        ob_start();
        // hack - but the same hack wp-admin/widgets.php uses
        wp_dashboard_trigger_widget_control($_POST['widget_id']);
        ob_end_clean();
        wp_redirect(remove_query_arg('edit'));
        exit;
    }
    if ($update) {
        update_option('dashboard_widget_options', $widget_options);
    }
}