Skip to:
Content

BuddyPress.org

Changeset 4175


Ignore:
Timestamp:
04/08/2011 09:29:34 PM (15 years ago)
Author:
boonebgorges
Message:

Adds functions for queueing and displaying multiple admin notices at a time. Fixes #3137

Location:
trunk/bp-core
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-core/admin/bp-core-admin.php

    r4107 r4175  
    1010}
    1111add_action( 'in_plugin_update_message-buddypress/bp-loader.php', 'bp_core_update_message' );
    12 
    13 /**
    14  * When BuddyPress is activated we must make sure that mod_rewrite is enabled.
    15  * We must also make sure a BuddyPress compatible theme is enabled. This function
    16  * will show helpful messages to the administrator.
    17  *
    18  * @package BuddyPress Core
    19  */
    20 function bp_core_activation_notice() {
    21         global $wp_rewrite, $wpdb, $bp;
    22 
    23         if ( isset( $_POST['permalink_structure'] ) )
    24                 return false;
    25 
    26         if ( !is_super_admin() )
    27                 return false;
    28 
    29         if ( !empty( $wpdb->blogid ) ) {
    30                 if ( $wpdb->blogid != BP_ROOT_BLOG ) {
    31                         return false;
    32                 }
    33         }
    34 
    35         if ( empty( $wp_rewrite->permalink_structure ) ) { ?>
    36 
    37                 <div id="message" class="updated fade">
    38                         <p><?php printf( __( '<strong>BuddyPress is almost ready</strong>. You must <a href="%s">update your permalink structure</a> to something other than the default for it to work.', 'buddypress' ), admin_url( 'options-permalink.php' ) ) ?></p>
    39                 </div><?php
    40 
    41         } else {
    42                 // Get current theme info
    43                 $ct = current_theme_info();
    44 
    45                 // The best way to remove this notice is to add a "buddypress" tag to
    46                 // your active theme's CSS header.
    47                 if ( !defined( 'BP_SILENCE_THEME_NOTICE' ) && !in_array( 'buddypress', (array)$ct->tags ) ) { ?>
    48 
    49                         <div id="message" class="updated fade">
    50                                 <p style="line-height: 150%"><?php printf( __( "<strong>BuddyPress is ready</strong>. You'll need to <a href='%s'>activate a BuddyPress compatible theme</a> to take advantage of all of the features. We've bundled a default theme, but you can always <a href='%s'>install some other compatible themes</a> or <a href='%s'>update your existing WordPress theme</a>.", 'buddypress' ), network_admin_url( 'themes.php' ), network_admin_url( 'theme-install.php?type=tag&s=buddypress&tab=search' ), network_admin_url( 'plugin-install.php?type=term&tab=search&s=%22bp-template-pack%22' ) ) ?></p>
    51                         </div>
    52 
    53                 <?php
    54                 }
    55         }
    56 }
    57 add_action( 'admin_notices', 'bp_core_activation_notice' );
    5812
    5913/**
  • trunk/bp-core/bp-core-functions.php

    r4174 r4175  
    159159}
    160160add_action( is_multisite() ? 'network_admin_menu' : 'admin_menu', 'bp_core_add_admin_menu', 9 );
     161
     162/**
     163 * Print admin messages to admin_notices or network_admin_notices
     164 *
     165 * BuddyPress combines all its messages into a single notice, to avoid a preponderance of yellow
     166 * boxes.
     167 *
     168 * @package BuddyPress Core
     169 * @since 1.3
     170 *
     171 * @global $bp The global BuddyPress settings variable created in bp_core_setup_globals()
     172 * @uses is_super_admin() to check current user permissions before showing the notices
     173 * @uses bp_is_root_blog()
     174 */
     175function bp_core_print_admin_notices() {
     176        global $bp;
     177       
     178        // Only the super admin should see messages
     179        if ( !is_super_admin() )
     180                return;
     181       
     182        // On multisite installs, don't show on the Site Admin of a non-root blog
     183        if ( !bp_is_root_blog() )
     184                return;
     185               
     186        // Show the messages
     187        if ( !empty( $bp->admin->notices ) ) {
     188        ?>
     189                <div id="message" class="updated fade">
     190                        <?php foreach( $bp->admin->notices as $notice ) : ?>
     191                                <p><?php echo $notice ?></p>
     192                        <?php endforeach ?>
     193                </div>         
     194        <?php
     195        }
     196}
     197add_action( 'admin_notices', 'bp_core_print_admin_notices' );
     198add_action( 'network_admin_notices', 'bp_core_print_admin_notices' );
     199
     200/**
     201 * Add an admin notice to the BP queue
     202 *
     203 * Messages added with this function are displayed in BuddyPress's general purpose admin notices
     204 * box. It is recommended that you hook this function to admin_init, so that your messages are
     205 * loaded in time.
     206 *
     207 * @package BuddyPress Core
     208 * @since 1.3
     209 *
     210 * @global $bp The global BuddyPress settings variable created in bp_core_setup_globals()
     211 * @param string $notice The notice you are adding to the queue
     212 */
     213function bp_core_add_admin_notice( $notice ) {
     214        global $bp;
     215       
     216        if ( empty( $bp->admin->notices ) ) {
     217                $bp->admin->notices = array();
     218        }
     219       
     220        $bp->admin->notices[] = $notice;
     221}
     222
     223/**
     224 * When BuddyPress is activated we must make sure that mod_rewrite is enabled.
     225 * We must also make sure a BuddyPress compatible theme is enabled. This function
     226 * will show helpful messages to the administrator.
     227 *
     228 * @package BuddyPress Core
     229 */
     230function bp_core_activation_notice() {
     231        global $wp_rewrite, $wpdb, $bp;
     232
     233        if ( isset( $_POST['permalink_structure'] ) )
     234                return false;
     235
     236        if ( empty( $wp_rewrite->permalink_structure ) ) {
     237                bp_core_add_admin_notice( sprintf( __( '<strong>BuddyPress is almost ready</strong>. You must <a href="%s">update your permalink structure</a> to something other than the default for it to work.', 'buddypress' ), admin_url( 'options-permalink.php' ) ) );
     238        }
     239               
     240        // Get current theme info
     241        $ct = current_theme_info();
     242
     243        // The best way to remove this notice is to add a "buddypress" tag to
     244        // your active theme's CSS header.
     245        if ( !defined( 'BP_SILENCE_THEME_NOTICE' ) && !in_array( 'buddypress', (array)$ct->tags ) ) {
     246                bp_core_add_admin_notice( sprintf( __( "You'll need to <a href='%s'>activate a <strong>BuddyPress-compatible theme</strong></a> to take advantage of all of BuddyPress's features. We've bundled a default theme, but you can always <a href='%s'>install some other compatible themes</a> or <a href='%s'>update your existing WordPress theme</a>.", 'buddypress' ), admin_url( 'themes.php' ), network_admin_url( 'theme-install.php?type=tag&s=buddypress&tab=search' ), network_admin_url( 'plugin-install.php?type=term&tab=search&s=%22bp-template-pack%22' ) ) );
     247        }
     248}
     249add_action( 'admin_init', 'bp_core_activation_notice' );
    161250
    162251/**
Note: See TracChangeset for help on using the changeset viewer.