2010-10-21 14:35:52 -04:00
< ? php
/**
2010-11-08 21:16:45 -05:00
* Edit Site Themes Administration Screen
2010-10-21 14:35:52 -04:00
*
* @ package WordPress
2010-11-10 09:27:15 -05:00
* @ subpackage Multisite
2010-10-21 14:35:52 -04:00
* @ since 3.1 . 0
*/
2010-11-10 09:27:15 -05:00
/** Load WordPress Administration Bootstrap */
2010-11-08 16:52:54 -05:00
require_once ( './admin.php' );
2010-11-10 09:27:15 -05:00
if ( ! is_multisite () )
wp_die ( __ ( 'Multisite support is not enabled.' ) );
2010-12-15 14:24:42 -05:00
$menu_perms = get_site_option ( 'menu_items' , array () );
2010-12-16 03:43:22 -05:00
if ( empty ( $menu_perms [ 'themes' ] ) && ! is_super_admin () )
wp_die ( __ ( 'Cheatin’ uh?' ) );
2010-12-15 14:24:42 -05:00
2010-12-16 03:43:22 -05:00
if ( ! current_user_can ( 'manage_sites' ) )
2010-12-15 14:24:42 -05:00
wp_die ( __ ( 'You do not have sufficient permissions to manage themes for this site.' ) );
2010-12-16 01:52:47 -05:00
add_contextual_help ( $current_screen ,
'<p>' . __ ( 'The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.' ) . '</p>' .
2010-12-16 02:02:56 -05:00
'<p>' . __ ( '<strong>Themes</strong> - This areas shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site’s Appearance menu. ' ) . '</p>' .
'<p>' . sprintf ( __ ( 'To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url ( 'themes.php' ) ) . '</p>' .
2010-12-16 01:52:47 -05:00
'<p>' . __ ( 'See the contextual help on the next tab. ' ) . '</p>' .
'<p><strong>' . __ ( 'For more information:' ) . '</strong></p>' .
'<p>' . __ ( '<a href="http://codex.wordpress.org/Super_Admin_Options_SubPanel" target="_blank">Network Options Documentation</a>' ) . '</p>' .
'<p>' . __ ( '<a href="http://wordpress.org/support/multisite/" target="_blank">Support Forums</a>' ) . '</p>'
);
2010-11-08 16:52:54 -05:00
$wp_list_table = get_list_table ( 'WP_MS_Themes_List_Table' );
$action = $wp_list_table -> current_action ();
2010-10-21 14:35:52 -04:00
2010-11-08 16:52:54 -05:00
$s = isset ( $_REQUEST [ 's' ]) ? $_REQUEST [ 's' ] : '' ;
2010-10-21 14:35:52 -04:00
2010-11-08 16:52:54 -05:00
// Clean up request URI from temporary args for screen options/paging uri's to work as expected.
2010-11-08 21:16:45 -05:00
$_SERVER [ 'REQUEST_URI' ] = remove_query_arg ( array ( 'enable' , 'disable' , 'enable-selected' , 'disable-selected' ), $_SERVER [ 'REQUEST_URI' ]);
2010-10-21 14:35:52 -04:00
$id = isset ( $_REQUEST [ 'id' ] ) ? intval ( $_REQUEST [ 'id' ] ) : 0 ;
if ( ! $id )
wp_die ( __ ( 'Invalid site ID.' ) );
2010-11-23 17:27:05 -05:00
2010-11-08 16:52:54 -05:00
$wp_list_table -> prepare_items ();
2010-10-21 14:35:52 -04:00
$details = get_blog_details ( $id );
2010-12-09 07:36:39 -05:00
if ( ! can_edit_network ( $details -> site_id ) )
2010-10-21 14:35:52 -04:00
wp_die ( __ ( 'You do not have permission to access this page.' ) );
$is_main_site = is_main_site ( $id );
2010-11-08 16:52:54 -05:00
if ( $action ) {
2010-10-21 14:35:52 -04:00
switch_to_blog ( $id );
2010-11-08 16:52:54 -05:00
$allowed_themes = get_option ( 'allowedthemes' );
switch ( $action ) {
case 'enable' :
$theme = $_GET [ 'theme' ];
2010-11-29 02:24:54 -05:00
$update = 'enabled' ;
2010-11-08 16:52:54 -05:00
if ( ! $allowed_themes )
$allowed_themes = array ( $theme => true );
else
$allowed_themes [ $theme ] = true ;
break ;
case 'disable' :
$theme = $_GET [ 'theme' ];
2010-11-29 02:24:54 -05:00
$update = 'disabled' ;
2010-11-08 16:52:54 -05:00
if ( ! $allowed_themes )
$allowed_themes = array ();
else
unset ( $allowed_themes [ $theme ] );
break ;
case 'enable-selected' :
2010-11-29 02:24:54 -05:00
if ( isset ( $_POST [ 'checked' ] ) ) {
$update = 'enable' ;
$themes = ( array ) $_POST [ 'checked' ];
foreach ( ( array ) $themes as $theme )
$allowed_themes [ $theme ] = true ;
} else {
$update = 'error' ;
}
2010-11-08 16:52:54 -05:00
break ;
case 'disable-selected' :
2010-11-29 02:24:54 -05:00
if ( isset ( $_POST [ 'checked' ] ) ) {
$update = 'disable' ;
$themes = ( array ) $_POST [ 'checked' ];
foreach ( ( array ) $themes as $theme )
unset ( $allowed_themes [ $theme ] );
} else {
$update = 'error' ;
}
2010-11-08 16:52:54 -05:00
break ;
2010-10-21 14:35:52 -04:00
}
2010-11-08 16:52:54 -05:00
update_option ( 'allowedthemes' , $allowed_themes );
2010-10-21 14:35:52 -04:00
restore_current_blog ();
2010-11-08 16:52:54 -05:00
2010-11-29 02:24:54 -05:00
wp_redirect ( add_query_arg ( 'update' , $update , wp_get_referer () ) );
2010-11-08 16:52:54 -05:00
exit ;
2010-10-21 14:35:52 -04:00
}
2010-11-25 19:20:18 -05:00
if ( isset ( $_GET [ 'action' ] ) && 'update-site' == $_GET [ 'action' ] ) {
wp_redirect ( wp_get_referer () );
exit ();
}
2010-11-11 10:16:16 -05:00
add_thickbox ();
add_screen_option ( 'per_page' , array ( 'label' => _x ( 'Themes' , 'themes per page (screen options)' ) ) );
2010-10-21 14:35:52 -04:00
$title = sprintf ( __ ( 'Edit Site: %s' ), get_blogaddress_by_id ( $id ));
$parent_file = 'sites.php' ;
$submenu_file = 'sites.php' ;
2010-11-25 19:20:18 -05:00
require ( '../admin-header.php' ); ?>
2010-10-21 14:35:52 -04:00
< div class = " wrap " >
2010-10-21 16:24:54 -04:00
< ? php screen_icon ( 'ms-admin' ); ?>
2010-10-21 14:35:52 -04:00
< h2 id = " edit-site " >< ? php echo $title ?> </h2>
2010-10-25 16:45:58 -04:00
< h3 class = " nav-tab-wrapper " >
2010-10-21 14:35:52 -04:00
< ? php
2010-12-16 02:13:01 -05:00
$tabs = array (
'site-info' => array ( 'label' => __ ( 'Info' ), 'url' => 'site-info.php' ),
'site-users' => array ( 'label' => __ ( 'Users' ), 'url' => 'site-users.php' ),
'site-themes' => array ( 'label' => __ ( 'Themes' ), 'url' => 'site-themes.php' ),
'site-settings' => array ( 'label' => __ ( 'Settings' ), 'url' => 'site-settings.php' ),
);
2010-10-21 14:35:52 -04:00
foreach ( $tabs as $tab_id => $tab ) {
$class = ( $tab [ 'url' ] == $pagenow ) ? ' nav-tab-active' : '' ;
echo '<a href="' . $tab [ 'url' ] . '?id=' . $id . '" class="nav-tab' . $class . '">' . esc_html ( $tab [ 'label' ] ) . '</a>' ;
}
?>
2010-11-29 02:24:54 -05:00
</ h3 >< ? php
if ( isset ( $_GET [ 'update' ] ) ) {
switch ( $_GET [ 'update' ] ) {
case 'enabled' :
echo '<div id="message" class="updated"><p>' . __ ( 'Theme enabled.' ) . '</p></div>' ;
break ;
case 'disabled' :
echo '<div id="message" class="updated"><p>' . __ ( 'Theme disabled.' ) . '</p></div>' ;
break ;
case 'error' :
echo '<div id="message" class="error"><p>' . __ ( 'No theme selected.' ) . '</p></div>' ;
break ;
}
} ?>
2010-11-25 19:20:18 -05:00
< p >< ? php _e ( 'Network enabled themes are not shown on this screen.' ) ?> </p>
2010-11-08 16:52:54 -05:00
2010-11-08 21:16:45 -05:00
< form method = " get " action = " " >
< p class = " search-box " >
< label class = " screen-reader-text " for = " theme-search-input " >< ? php _e ( 'Search Themes' ); ?> :</label>
< input type = " text " id = " theme-search-input " name = " s " value = " <?php _admin_search_query(); ?> " />
< ? php submit_button ( __ ( 'Search Installed Themes' ), 'button' , '' , false ); ?>
</ p >
</ form >
< ? php $wp_list_table -> views (); ?>
2010-11-08 16:52:54 -05:00
2010-10-21 14:35:52 -04:00
< form method = " post " action = " site-themes.php?action=update-site " >
< ? php wp_nonce_field ( 'edit-site' ); ?>
< input type = " hidden " name = " id " value = " <?php echo esc_attr( $id ) ?> " />
2010-11-08 16:52:54 -05:00
< ? php $wp_list_table -> display (); ?>
2010-10-21 14:35:52 -04:00
</ form >
</ div >
2010-11-08 16:52:54 -05:00
< ? php include ( ABSPATH . 'wp-admin/admin-footer.php' ); ?>