upgraded mu-plugins

root 2021-05-31 08:45:04 +02:00
parent 66dc6b5af6
commit 907d6d7294
12 changed files with 240 additions and 87 deletions

View File

@ -275,28 +275,42 @@ echo '<style type="text/css">
} }
/*mis sitios*/ /*mis sitios*/
#wpadminbar #wp-admin-bar-my-sites { #wpadminbar #wp-admin-bar-my-sites,
#wpadminbar #wp-admin-bar-mis-sitios {
display: flex; display: flex;
height: 66px; height: 66px;
align-items: center; align-items: center;
margin-left: 30px; margin-left: 30px;
} }
#wpadminbar #wp-admin-bar-my-sites a, #wpadminbar #wp-admin-bar-my-sites a,
#wpadminbar #wp-admin-bar-my-sites a:before { #wpadminbar #wp-admin-bar-my-sites a:before,
#wpadminbar #wp-admin-bar-mis-sitios a,
#wpadminbar #wp-admin-bar-mis-sitios a:before {
color: #262626!important; color: #262626!important;
} }
#wpadminbar #wp-admin-bar-my-sites .ab-sub-wrapper a:hover, #wpadminbar #wp-admin-bar-my-sites .ab-sub-wrapper a:hover,
#wpadminbar #wp-admin-bar-my-sites .ab-sub-wrapper a:hover:before { #wpadminbar #wp-admin-bar-my-sites .ab-sub-wrapper a:hover:before,
#wpadminbar #wp-admin-bar-mis-sitios .ab-sub-wrapper a:hover,
#wpadminbar #wp-admin-bar-mis-sitios .ab-sub-wrapper a:hover:before {
color: '. $primary .'!important; color: '. $primary .'!important;
background-color: '. $secondary.'; background-color: '. $secondary.';
} }
#wpadminbar #wp-admin-bar-my-sites a.ab-item:before { #wpadminbar #wp-admin-bar-my-sites a.ab-item:before,
#wpadminbar #wp-admin-bar-mis-sitios a.ab-item:before {
top: 0; top: 0;
font-size: 32px; font-size: 32px;
line-height: 66px; line-height: 66px;
padding: 0; padding: 0;
} }
#wpadminbar #wp-admin-bar-my-sites a.ab-item { #wpadminbar #wp-admin-bar-mis-sitios:before {
content: url(' . WPMU_PLUGIN_URL . '/layout.svg);
line-height: 1em;
}
/*#wpadminbar #wp-admin-bar-mis-sitios a.ab-item:before {
line-height: 57px;
}*/
#wpadminbar #wp-admin-bar-my-sites a.ab-item,
#wpadminbar #wp-admin-bar-mis-sitios a.ab-item {
height: 66px; height: 66px;
line-height: 66px; line-height: 66px;
font-size: 16px; font-size: 16px;
@ -378,7 +392,7 @@ echo '<style type="text/css">
@media screen and (max-width: 782px) { @media screen and (max-width: 782px) {
html #wpadminbar { html #wpadminbar {
height: 70px; height: 70px;
/*position: fixed;*/ position: fixed;
} }
.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-item { .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-item {
background-color: '. $bg_color .'; background-color: '. $bg_color .';
@ -414,22 +428,8 @@ echo '<style type="text/css">
#wpadminbar .ab-top-menu .menupop .ab-sub-wrapper .ab-sub-wrapper { #wpadminbar .ab-top-menu .menupop .ab-sub-wrapper .ab-sub-wrapper {
top: 50px!important; top: 50px!important;
} }
#wpadminbar #wp-admin-bar-mis-sitios a.ab-item {
} text-indent: -9999px;
@media screen and (max-width: 620px) {
#wpadminbar #wp-admin-bar-wp-logo > .ab-item {
max-width: 180px;
}
}
@media screen and (max-width: 600px) {
#wpbody {
padding-top: 0;
}
html #wpadminbar {
position: fixed;
}
.auto-fold #adminmenu {
top: 0;
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 KiB

View File

@ -1,6 +1 @@
body.page.singular header.entry-header { .page.type-page .entry-header { display: none; }
display: none;
border: 0;
padding: 0;
margin: 0;
}

View File

@ -0,0 +1,66 @@
<?php
if( is_multisite() && current_user_can( 'read' ) ) :
$user_id = get_current_user_id();
$title = 'Mis sitios web';
$blogs = get_blogs_of_user( $user_id );
?>
<div class="wrap">
<h1 class="wp-heading-inline">
<?php
echo esc_html( $title );
?>
</h1>
<form id="myblogs" method="post">
<ul class="my-sites striped">
<?php
//reset( $blogs );
foreach ( $blogs as $user_blog ) {
switch_to_blog( $user_blog->userblog_id );
echo '<li>';
echo '<img style="width:100%;height:auto;" alt="screenshot" src="http://s.wordpress.com/mshots/v1/'.urlencode(home_url()).'"/>';
echo "<h3>{$user_blog->blogname}</h3>";
$actions = "<a href='" . esc_url( home_url() ) . "'>" . __( 'Visitar web' ) . '</a>';
if ( current_user_can( 'read' ) ) {
$actions .= " | <a href='" . esc_url( admin_url() ) . "edit.php?post_type=page'>" . __( 'Todas las páginas' ) . '</a>';
}
if ( current_user_can( 'manage_sites' ) ) {
$actions .= " | <a href='" . esc_url( admin_url() ) . "network/sites.php?page=publicarweb&id=".$user_blog->userblog_id."'>" . __( 'Publicar web' ) . '</a>';//http://test.wemcor.es/wp-admin/network/sites.php?page=publicarweb&id=1
}
echo "<p class='my-sites-actions'>" . $actions . '</p>';
$pages = get_pages(['post_status'=>'publish']);
if($pages) {
echo '<p style="font-weight:bold;">Páginas del sitio web</p>';
foreach($pages as $page) {
echo '<p style="padding-left:10px;">'.$page->post_title.' <a href="'.home_url($page->post_name).'">Ver</a> | <a href="'.admin_url().'post.php?post='.$page->ID.'&action=edit">Editar</a></p>';
}
}
echo '</li>';
restore_current_blog();
}
?>
</ul>
</form>
<?php
// añadir botón nuevo sitio web si es teacher o superior
if ( current_user_can( 'read' ) ) echo '<p style="margin-top: 40px;"><a href="'.admin_url().'network/site-new.php" class="button button-primary">Añadir nuevo sitio web</a></p>';//<input type="submit" name="add-site" id="add-site" class="button button-primary" value="Añadir sitio">
?>
</div>
<?php
endif;

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0v24h24v-24h-24zm11 22h-9v-16h9v16zm11 0h-9v-7h9v7zm0-9h-9v-7h9v7z"/></svg>

After

Width:  |  Height:  |  Size: 170 B

View File

@ -43,6 +43,18 @@ function wemcor_add_new_items_admin_bar($admin_bar) {
); );
$admin_bar->add_node( $args ); $admin_bar->add_node( $args );
//mis sitios
$args = array(
'parent' => '',
'id' => 'mis-sitios',
'title' => 'Mis sitios web',
'href' => admin_url() . 'admin.php?page=mis-sitios',
'meta' => array(
'class' => 'mis-sitios'
)
);
$admin_bar->add_node( $args );
} }
//borramos todos los items de admin bar excepto logo y usuario que lo modificaremos posteriormente. De esta forma prevenimos la carga de ítems extras colocados por otros plugins que s epuedan instalar en un futuro //borramos todos los items de admin bar excepto logo y usuario que lo modificaremos posteriormente. De esta forma prevenimos la carga de ítems extras colocados por otros plugins que s epuedan instalar en un futuro
@ -58,19 +70,26 @@ function wemcor_remove_menu_admin_bar() {
$no_clear_menus = array( $no_clear_menus = array(
'wp-logo', 'wp-logo',
'my-account', 'my-account',
'my-sites', 'user-actions',
'user-info',
'edit-profile',
'logout',
'menu-toggle', 'menu-toggle',
'notifications', 'notifications',
'dropdown-menu' 'dropdown-menu',
'mis-sitios',
'top-secondary'
); );
$all_menus = $wp_admin_bar->get_nodes(); $all_menus = $wp_admin_bar->get_nodes();
check_nodes($no_clear_menus, $all_menus); remove_nodes($no_clear_menus, $all_menus, $wp_admin_bar);
// current user
$user_id = get_current_user_id(); $user_id = get_current_user_id();
$user_data = get_user_by( 'id', $user_id ); $user_data = get_user_by( 'id', $user_id );
$user_name = $user_data->display_name; $user_name = $user_data->display_name;
// modificación de items existentes
$my_account = $wp_admin_bar->get_node( 'my-account' ); $my_account = $wp_admin_bar->get_node( 'my-account' );
if($my_account) { if($my_account) {
/*stdClass Object( /*stdClass Object(
@ -155,48 +174,12 @@ function wemcor_remove_menu_admin_bar() {
} }
function check_nodes($no_clear_menus, $all_menus) { function remove_nodes($no_clear_menus, $all_menus, $wp_admin_bar) {
global $wp_admin_bar;
foreach( $all_menus as $menu ) { foreach( $all_menus as $menu ) {
if( ! in_array($menu->id, $no_clear_menus) ) $wp_admin_bar->remove_menu( $menu->id );
$remove_node = false;
if( in_array($menu->id, $no_clear_menus) ) continue;
if( in_array($menu->parent, $no_clear_menus) && $menu->parent != 'wp-logo' ) continue;
if( empty($menu->parent) && $menu->id == 'top-secondary' ) continue;
if( empty($menu->parent) || $menu->parent == 'top-secondary' || $menu->parent == 'wp-logo' ) $remove_node = true;
if( !$remove_node ) {
$parent_node = $wp_admin_bar->get_node($menu->parent);
$parent_node_parent = $parent_node->parent;
$remove_node = check_parents($parent_node_parent, $no_clear_menus);
} }
if( $remove_node ) $wp_admin_bar->remove_menu( $menu->id );
}
} }
function check_parents( $parent, $no_clear_menus ) {
global $wp_admin_bar;
$node = $wp_admin_bar->get_node($parent);
if( in_array($node->id, $no_clear_menus) && $node->id != 'wp-logo' ) return false;
if( in_array($node->parent, $no_clear_menus) && $node->parent != 'wp-logo' ) return false;
if( empty($node->parent) || $node->parent == 'top-secondary' || $node->parent == 'wp-logo' ) return true;
$parent_node = $wp_admin_bar->get_node($menu->parent);
$parent_node_parent = $parent_node->parent;
$remove_node = check_parents($parent_node_parent);
}
//estilos personalizados admin bar //estilos personalizados admin bar
add_action( 'wp_before_admin_bar_render', 'wemcor_custom_styles_admin_bar', 999 ); add_action( 'wp_before_admin_bar_render', 'wemcor_custom_styles_admin_bar', 999 );
@ -346,8 +329,13 @@ function html_menu_apps() {
*/ */
$html = ''; $html = '';
if(isset($json_data['apps_external'])) $apps_external = $json_data['apps_external']; if(isset($json_data['apps_external'])) $apps_external = $json_data['apps_external'];
else $apps_external = false;
if(isset($json_data['apps_internal'])) $apps_internal = $json_data['apps_internal']; if(isset($json_data['apps_internal'])) $apps_internal = $json_data['apps_internal'];
else $apps_internal = false;
if(isset($json_data['apps_courses'])) $apps_courses = $json['apps_my_courses']; if(isset($json_data['apps_courses'])) $apps_courses = $json['apps_my_courses'];
else $apps_courses = false;
if( $apps_external || $apps_internal || $apps_courses ) $html .= '<div id="wp-admin-bar-menu-apps" class="ab-sub-wrapper">'; if( $apps_external || $apps_internal || $apps_courses ) $html .= '<div id="wp-admin-bar-menu-apps" class="ab-sub-wrapper">';
@ -411,8 +399,6 @@ function html_menu_apps() {
} }
function wemcor_get_url_json() { function wemcor_get_url_json() {
$path = str_replace('wp.', 'api.', DOMAIN_CURRENT_SITE); return 'https://api.montseny.digitaldemocratic.net/json';
return 'https://'.$path.'/json';
} }

View File

@ -8,6 +8,7 @@ Author URI: https://wemcor.com
Text Domain: wemcor-functions Text Domain: wemcor-functions
*/ */
//se usa 'page'. Cambiar 'page' por 'post' si se decide usar sistema de posts en lugar de pages
if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
@ -15,12 +16,12 @@ add_action( 'wp_enqueue_scripts', 'wemcor_enqueue_styles' );
function wemcor_enqueue_styles() { function wemcor_enqueue_styles() {
wp_enqueue_style( 'wemcor-styles', WPMU_PLUGIN_URL .'/assets/style.css' ); wp_enqueue_style( 'wemcor-styles', WPMU_PLUGIN_URL .'/assets/style.css' );
wp_enqueue_style( 'wemcor-dynamic-style', WPMU_PLUGIN_URL .'/assets/style.php' ); //wp_enqueue_style( 'wemcor-dynamic-style', WPMU_PLUGIN_URL .'/assets/style.php' );
} }
// quitar títulos de las páginas para que así prevalezca el encabezamiento estilo google site // quitar títulos de las páginas para que así prevalezca el encabezamiento estilo google site
// add_filter( 'the_title', 'remove_page_title' ); add_filter( 'the_title', 'remove_page_title' );
function remove_page_title() { function remove_page_title() {
if( is_page() ) return false; if( is_page() ) return false;
} }

View File

@ -63,7 +63,7 @@ function callback_publicar_web() {
$site_name = $current_blog_details->blogname; $site_name = $current_blog_details->blogname;
echo '<div class="wrap"><h1 id="edit-site">' . $title . '</h1> echo '<div class="wrap"><h1 id="edit-site">' . $title . '</h1>
<p class="edit-site-actions"><a href="' . esc_url( get_home_url( $id, '/' ) ) . '">Visitar</a> | <a href="' . esc_url( get_admin_url( $id ) ) . '">Escritorio</a></p>'; <p class="edit-site-actions"><a href="' . esc_url( get_home_url( $id, '/' ) ) . '">Visitar Web</a> | <a href="' . esc_url( admin_url() ) . 'edit.php?post_type=page">Ver todas las páginas</a></p>';
// navigation tabs // navigation tabs
network_edit_site_nav( array( network_edit_site_nav( array(

View File

@ -15,8 +15,6 @@ Text Domain: wemcor-patterns
* El sistema se encarga de leer dicho directorio para mostrar todos los patterns. Si se desea dar de alta un nuevo pattern tan solo hay que guardar el .json en el directorio especificado * El sistema se encarga de leer dicho directorio para mostrar todos los patterns. Si se desea dar de alta un nuevo pattern tan solo hay que guardar el .json en el directorio especificado
* El sistema se encarga de hacer un rename para mostrar nombre del template * El sistema se encarga de hacer un rename para mostrar nombre del template
* Se tienen que guardar en formato .json dentro de la carpeta mu-plugins/templates * Se tienen que guardar en formato .json dentro de la carpeta mu-plugins/templates
* Extraer el json a partir de los bloques reutilizables si el servicio que ofrece el pattern no descarga dicho formato
* Los patrones de gutenberghub.com requieren el plugin editorplus (https://wordpress.org/plugins/editorplus/)
* *
*/ */
@ -73,5 +71,3 @@ function wemcor_register_pattern( $file ) {
) )
); );
} }

View File

@ -21,6 +21,7 @@ if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
*/ */
add_action( 'init', 'wemcor_add_custom_roles', 99 ); add_action( 'init', 'wemcor_add_custom_roles', 99 );
function wemcor_add_custom_roles() { function wemcor_add_custom_roles() {
//Default capabilities for Teacher
$capabilities = [ $capabilities = [
//pages //pages
'delete_others_pages' => true, 'delete_others_pages' => true,
@ -102,6 +103,9 @@ function wemcor_add_custom_roles() {
*/ */
if ( is_multisite() ) add_role( 'teacher', 'Teacher', $capabilities ); if ( is_multisite() ) add_role( 'teacher', 'Teacher', $capabilities );
/*
* Student
*/
//modificamos algunas de las capabilities de los argumentos para crear student //modificamos algunas de las capabilities de los argumentos para crear student
if ( is_multisite() ) $capabilities['manage_network_users'] = false; if ( is_multisite() ) $capabilities['manage_network_users'] = false;
if ( is_multisite() ) $capabilities['manage_sites'] = false; if ( is_multisite() ) $capabilities['manage_sites'] = false;
@ -110,11 +114,36 @@ function wemcor_add_custom_roles() {
$capabilities['list_users'] = false; $capabilities['list_users'] = false;
$capabilities['promote_users'] = false; $capabilities['promote_users'] = false;
$capabilities['moderate_comments'] = false; $capabilities['moderate_comments'] = false;
if ( is_multisite() ) add_role( 'student', 'Student', $capabilities );
/* /*
* Student * Manager
*/ */
if ( is_multisite() ) add_role( 'student', 'Student', $capabilities ); //creamos manager poniendo todas las capblities a true excepto las del array no_caps
if ( is_multisite() ) {
$no_caps = array(
'manage_network_plugins',
'manage_network_themes',
'upgrade_network',
'delete_themes',
'edit_theme_options',
'edit_themes',
'install_themes',
'switch_themes',
'update_themes',
'activate_plugins',
'delete_plugins',
'edit_plugins',
'install_plugins',
'update_plugins'
);
foreach( $capabilities as $key => $value ) {
if( in_array( $key, $no_caps) ) $capabilities[$key] = false;
else $capabilities[$key] = true;
}
add_role( 'manager', 'Manager', $capabilities );
}
$manager = get_role('manager');
} }
/* /*
@ -141,5 +170,7 @@ function wemcor_remove_roles() {
remove_role( 'teacher' ); remove_role( 'teacher' );
//Student //Student
remove_role( 'student' ); remove_role( 'student' );
//Manager
remove_role( 'manager' );
endif; endif;
} }

View File

@ -0,0 +1,77 @@
<?php
/*
Plugin Name: Wemcor Sites
Plugin URI:
Description: Muestra un dashboard al estilo Google sites con un listado de los sotes disponibles para cada usuario y las páginas creadas
Author: Wemcor
Author URI: https://wemcor.com
Text Domain: wemcor-options
*/
if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
// añadir menus
add_action( 'admin_menu', 'wemcor_add_menu_mis_sitios', 10 );
function wemcor_add_menu_mis_sitios() {
//mis sitios web
add_menu_page(
'Mis sitios web',
'Mis sitios web',
'manage_network',
'mis-sitios',
'wemcor_mis_sitios_callback',
'dashicons-layout',
2
);
//administrador red (admin network). Lo sacamos de admin bar y lo ponemos en menu lateral
add_menu_page(
'Administrador de la red',
'Administrador de la red',
'create-sites',
'network',
'',
'dashicons-wordpress',
1
);
}
function wemcor_mis_sitios_callback() {
require_once plugin_dir_path(__FILE__) . 'includes/mis-sitios.php';
}
// Borrar menú escritorio para Teachers y Students
add_action( 'admin_init', 'remove_dashboard_menu_according_role' );
function remove_dashboard_menu_according_role() {
$user = wp_get_current_user();
if ( in_array( 'teacher', $user->roles ) || in_array( 'student', $user->roles ) ) remove_menu_page('index.php');
//remove_menu_page('index.php');
}
//cambiar links de adminbar (que vayan a página nueva) site.php my-site.php. Quizás mejor crear un menu nuevo que lleve solo a mis sitios (en lugar del menu de multisite). cambiar nombre de sitios a todos los sitios (solo lo ve el manager)
//al hacer click en el icono debe llevar a administrador de la red (el teacher y el manager deben tener permisos) y ver el menu de mis sitios. El student no puede acceder. manager y teacher veria usuarios, mis sitios. no ven escritorio sitios temas plugin ajustes. manager veria tambien sitios
//el manager lo ve igual que origen. No verá este menu nuevo. El teacher y el student si que lo ven y hay que añadir el link de publicar o en todo caso una opcion en formato link junto al de dashoboard y pages
//mostrar página nueva con query que lea sites del usuario logueado
//mostrar screenshot dle site
//mostrar listado de páginas
//mostrar link a dashboard que lleve a listado de páginas. Crear variable para cambiar a 'pages' or 'post'
//link a editar sitio
//redirigir al iniciar sesión a cada usuario a esta página
add_filter( 'login_redirect', 'wemcor_redirect_mis_sitios_web' );
function wemcor_redirect_mis_sitios_web() {
return admin_url() .'/admin.php?page=mis-sitios';//http://test.wemcor.es/wp-admin/?page=mis-sitios
}