'top-secondary',
'id' => 'notifications',
'title' => false,
'href' => false,
'meta' => array(
'onclick' => 'open-notifications',
'class' => 'notifications',
'html' => '0'
)
);
$admin_bar->add_node( $args );
$html = html_menu_apps();
//apps
$args = array(
'parent' => 'top-secondary',
'id' => 'dropdown-menu',
'title' => false,
'href' => false,
'meta' => array(
'onclick' => 'openDropDown',
'class' => 'dropdown-menu menupop',
'html' => $html
)
);
$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
add_action( 'wp_before_admin_bar_render', 'wemcor_remove_menu_admin_bar', PHP_INT_MAX );
function wemcor_remove_menu_admin_bar() {
global $wp_admin_bar;
//JSON
$path_json = wemcor_get_url_json();
$json = file_get_contents($path_json);
$json_data = json_decode($json, true);
$no_clear_menus = array(
'wp-logo',
'my-account',
'my-sites',
'menu-toggle',
'notifications',
'dropdown-menu'
);
$all_menus = $wp_admin_bar->get_nodes();
check_nodes($no_clear_menus, $all_menus);
$user_id = get_current_user_id();
$user_data = get_user_by( 'id', $user_id );
$user_name = $user_data->display_name;
$my_account = $wp_admin_bar->get_node( 'my-account' );
if($my_account) {
/*stdClass Object(
[id] => my-account
[title] => Hola, gestor
[parent] => top-secondary
[href] => http://test.wemcor.es/wp-admin/network/profile.php
[group] =>
[meta] => Array(
[class] => with-avatar
)
)*/
if( isset($json_data['user']['avatar']) ) $user_avatar = '';
else $user_avatar = get_avatar($user_id);
if( isset($json_data['user']['account']) ) $user_account = $json_data['user']['account'];
else $user_account = $my_account->href;
$wp_admin_bar->add_node(
array(
'parent' => $my_account->parent,
'id' => $my_account->id,
'title' => $user_avatar,
'href' => $user_account,
'group' => $my_account->group,
'meta' => $my_account->meta
)
);
}
$my_avatar = $wp_admin_bar->get_node( 'user-info' );
if($my_avatar) {
/*stdClass Object(
[id] => user-info
[title] => '
wp-manager'
[parent] => user-actions
[href] => https://wp.montseny.digitaldemocratic.net/wp-admin/profile.php
[group] =>
[meta] => Array(
[tabindex] => -1
)
)*/
if( isset($json_data['user']['avatar']) ) $user_avatar = '
'.$user_name.'';
else $user_avatar = '
'.$user_name.'';
if( isset($json_data['user']['account']) ) $user_account = $json_data['user']['account'];
else $user_account = $my_account->href;
$wp_admin_bar->add_node(
array(
'id' => $my_avatar->id,
'title' => $user_avatar,
'parent' => $my_avatar->parent,
'href' => $user_account,
'group' => $my_avatar->group,
'meta' => $my_avatar->meta
)
);
}
$my_profile = $wp_admin_bar->get_node( 'edit-profile' );
if($my_profile) {
/*stdClass Object(
[id] => edit-profile
[title] => Edit Profile
[parent] => user-actions
[href] => https://wp.montseny.digitaldemocratic.net/wp-admin/profile.php
[group] =>
[meta] => Array()
)*/
if( isset($json_data['user']['account']) ) $user_account = $json_data['user']['account'];
else $user_account = $my_account->href;
$wp_admin_bar->add_node(
array(
'id' => $my_profile->id,
'title' => $my_profile->title,
'parent' => $my_profile->parent,
'href' => $user_account,
'group' => $my_profile->group,
'meta' => $my_profile->meta
)
);
}
}
function check_nodes($no_clear_menus, $all_menus) {
global $wp_admin_bar;
foreach( $all_menus as $menu ) {
$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
add_action( 'wp_before_admin_bar_render', 'wemcor_custom_styles_admin_bar', 999 );
function wemcor_custom_styles_admin_bar() {
//JSON
$path_json = wemcor_get_url_json();
$json = file_get_contents($path_json);
$json_data = json_decode($json, true);
if( isset($json_data['logo']) ) $bg_logo = $json_data['logo'];
else $bg_logo = WPMU_PLUGIN_URL . '/custom-logo-admin-bar.png';
//$bg_logo = WPMU_PLUGIN_URL . '/custom-logo-admin-bar.png';
if( isset($json_data['colours']['background']) ) $bg_color = $json_data['colours']['secondary'];
else $bg_color = '#FFF';
if( isset($json_data['colours']['primary']) ) $primary = $json_data['colours']['primary'];
else $primary = '#262626';
if( isset($json_data['colours']['secondary']) ) $secondary = $json_data['colours']['background'];
else $secondary = '#f0f0f0';
require_once dirname(__FILE__) . '/assets/admin-bar-style.php';
}
//encolamos javascript para funciones de menu toggle
add_action( 'admin_enqueue_scripts', 'wemcor_admin_enqueue_scripts' );
add_action( 'wp_enqueue_scripts', 'wemcor_admin_enqueue_scripts' );
function wemcor_admin_enqueue_scripts() {
//FontAwesome 5
//wp_enqueue_style('fontawesome', 'https://use.fontawesome.com/releases/v5.8.1/css/all.css', '', '5.8.1', 'all');
//FontAwesome 4
wp_enqueue_style('fontawesome', 'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css', '', '4.7.0', 'all');
}
//HTML del menú de apps
function html_menu_apps() {
//JSON
$path_json = wemcor_get_url_json();
$json = file_get_contents($path_json);
$json_data = json_decode($json, true);
/*
Array(
[background_login] => https://api.montseny.digitaldemocratic.net/custom/img/background.png
[colours] => Array(
[background] => #F0F0F0
[primary] => #92AE01
[secondary] => #FFFFFF)
[logo] => https://api.montseny.digitaldemocratic.net/custom/img/logo.png
[apps_external] => Array(
[0] => Array(
[href] => https://agora.xtec.cat/ceipmontseny-barcelona/
[icon] => fa fa-university
[name] => Escola Web
[shortname] => web
)
[1] => Array(
[href] => https://youtube.com/
[icon] => fa fa-youtube-play
[name] => Youtube
[shortname] => youtube)
[2] => Array(
[href] => https://www.wordreference.com/
[icon] => fa fa-book
[name] => Diccionari
[shortname] => diccionari)
[3] => Array(
[href] => http://meet.jit.si/
[icon] => fa fa-video-camera
[name] => Reunions Jitsi
[shortname] => jitsi)
[4] => Array(
[href] => https://www.google.es/
[icon] => fa fa-search
[name] => Cercar
[shortname] => search)
[5] => Array(
[href] => https://www.google.es/maps/preview
[icon] => fa fa-map-marker
[name] => Maps
[shortname] => maps)
)
[apps_internal] => Array(
[0] => Array(
[href] => https://nextcloud.montseny.digitaldemocratic.net/
[icon] => fa fa-cloud
[name] => Núvol + crear arxius
[shortname] => cloud)
[1] => Array(
[href] => https://nextcloud.montseny.digitaldemocratic.net/apps/mail/setup
[icon] => fa fa-envelope-o
[name] => Correu
[shortname] => email)
[2] => Array(
[href] => https://pad.montseny.digitaldemocratic.net/
[icon] => fa fa-file-text-o
[name] => Pads
[shortname] => pads)
[3] => Array(
[href] => https://nextcloud.montseny.digitaldemocratic.net/apps/forms
[icon] => fa fa-check-square-o
[name] => Formularis
[shortname] => forms)
[4] => Array(
[href] => https://nextcloud.montseny.digitaldemocratic.net/apps/polls
[icon] => fa fa-bar-chart
[name] => Enquestes
[shortname] => feedback)
[5] => Array(
[href] => https://nextcloud.montseny.digitaldemocratic.net/apps/spreed
[icon] => fa fa-commenting-o
[name] => Xat
[shortname] => chat)
[6] => Array(
[href] => https://nextcloud.montseny.digitaldemocratic.net/apps/calendar
[icon] => fa fa-calendar
[name] => Calendari
[shortname] => schedule)
[7] => Array(
[href] => https://wp.montseny.digitaldemocratic.net/wp-login.php?saml_sso
[icon] => fa fa-rss
[name] => Webs
[shortname] => webs)
[8] => Array(
[href] => https://nextcloud.montseny.digitaldemocratic.net/apps/bbb
[icon] => fa fa-video-camera
[name] => Reunions BBB
[shortname] => meets_bbb)
[9] => Array(
[href] => https://nextcloud.montseny.digitaldemocratic.net/apps/photos
[icon] => fa fa-file-image-o
[name] => Fotos
[shortname] => photos)
)
[user] => Array(
[account] => https://sso.montseny.digitaldemocratic.net/auth/realms/master/account
[avatar] => https://sso.montseny.digitaldemocratic.net/auth/realms/master/avatar-provider
[password] => https://sso.montseny.digitaldemocratic.net/auth/realms/master/password
)
)
*/
$html = '';
if(isset($json_data['apps_external'])) $apps_external = $json_data['apps_external'];
if(isset($json_data['apps_internal'])) $apps_internal = $json_data['apps_internal'];
if(isset($json_data['apps_courses'])) $apps_courses = $json['apps_my_courses'];
if( $apps_external || $apps_internal || $apps_courses ) $html .= '