WIP Egroupware tutorial:

- Create tutorial sidebox hooks automatically
- Fix some styling for popup
- Display intro video show confirmation dialog based on session (login/logout)
This commit is contained in:
Hadi Nategh 2015-10-19 15:00:42 +00:00
parent bf97b85056
commit 938c991124
20 changed files with 149 additions and 36 deletions

View File

@ -92,7 +92,6 @@ class addressbook_hooks
display_sidebox($appname,lang('Admin'),$file);
}
}
hooks::egw_tutorial_menu('addressbook');
}
/**

View File

@ -154,7 +154,6 @@ class admin_hooks
display_sidebox($appname,lang('Admin'),$file);
}
}
hooks::egw_tutorial_menu('admin');
}
/**

View File

@ -621,7 +621,6 @@ class calendar_ui
);
$GLOBALS['egw']->framework->sidebox($appname,lang('Admin'),$file,'admin');
}
hooks::egw_tutorial_menu('calendar');
}
/**

View File

@ -9,7 +9,7 @@
</columns>
<rows>
<row >
<vbox onclick="$row_cont[onclick]" align="center" statustext="$row_cont[title]">
<vbox onclick="$row_cont[onclick]" align="center" statustext="$row_cont[desc]">
<hbox background="$row_cont[thumbnail]" height="130px" width="99%" class="egw_tutorial_thumb">
<description value = "$row_cont[title]" class="egw_tutorial_title"/>
<hbox id="play" class="egw_tutorial_playBtn">

View File

@ -94,7 +94,6 @@ class filemanager_hooks
display_sidebox(self::$appname,$title,$file);
}
if ($GLOBALS['egw_info']['user']['apps']['admin']) self::admin(self::$appname);
hooks::egw_tutorial_menu('filemanager');
}
/**

View File

@ -75,6 +75,7 @@ class home_tutorial_ui {
$content = array (
'src' => $tutorial['src'],
'title' => $tutorial['title'],
'desc' => $tutorial['desc'],
'list' => $list
);
}
@ -83,11 +84,6 @@ class home_tutorial_ui {
$content = array();
egw_framework::message(lang('You do not have permission to see this tutorial!'));
}
// If its the autoloading tutorial
if ($tuid_indx[3] === 'a')
{
$content ['discardbox'] = true;
}
$tmpl->exec('home.home_tutorial_ui.popup', $content,$sel_options,array(),array(),array(),2);
}
@ -112,6 +108,8 @@ class home_tutorial_ui {
if (!($json = egw_cache::getCache(egw_cache::TREE, 'home', 'egw_tutorial_json')))
{
$json = file_get_contents('http://www.egroupware.de/videos/tutorials.json');
// Fallback tutorials.json
if (!$json) $json = file_get_contents('home/setup/tutorials.json');
// Cache the json object for two hours
egw_cache::setCache(egw_cache::TREE, 'home', 'egw_tutorial_json', $json, 720);
}

View File

@ -27,6 +27,7 @@ $setup_info['home']['maintainer'] = array(
/* The hooks this app includes, needed for hooks registration */
$setup_info['home']['hooks']['hasUpdates'] = 'home.updates.hasUpdates';
$setup_info['home']['hooks']['showUpdates'] = 'home.updates.showUpdates';
$setup_info['home']['hooks']['sidebox_all'] = 'hooks::egw_tutorial_menu';
/* Dependencies for this app to work */
$setup_info['home']['depends'][] = array(

89
home/setup/tutorials.json Normal file
View File

@ -0,0 +1,89 @@
{
"introduction":{
"en":[
{"src":"https://www.youtube.com/embed/iPrtjeEnXeU?rel=0&autoplay=1", "thumbnail":"https://img.youtube.com/vi/iPrtjeEnXeU/0.jpg", "title":"EGroupware Basics", "desc":"Some of EGroupwares most important basic features and functions in all apps."}
]
},
"mail":{
"de":[
{"src":"https://www.youtube.com/embed/wUdHb6Zha60?rel=0&autoplay=1","title":"EGroupware E-Mail Basics","thumbnail":"https://img.youtube.com/vi/wUdHb6Zha60/0.jpg", "desc":"Hier zeigen wir einige praktische Funktionen der Anwendung Mail. Beipiele: Benutzung des Kontextmenüs und Anpassen des Vorschaudialogs für Emails."},
{"src":"https://www.youtube.com/embed/7DZKPKa_Rj0?rel=0&autoplay=1","title":"EGroupware E-Mail Account Management","thumbnail":"https://img.youtube.com/vi/7DZKPKa_Rj0/0.jpg", "desc":"In diesem Tutorial erklären wir, wie einfach Sie sich selbst einen neuen Mailaccount anlegen und wie schnell das geht."},
{"src":"https://www.youtube.com/embed/vml4Ok1qdGM?rel=0&autoplay=1","title":"EGroupware Admin Mail","thumbnail":"https://img.youtube.com/vi/vml4Ok1qdGM/0.jpg", "desc":"Hier zeigen wir - für alle Admins - wichtige Einstellungen in EGroupware Mail!"},
{"src":"https://www.youtube.com/embed/A_tkKYaW_iI?rel=0&autoplay=1","title":"EGroupware 14.2 neue Features","thumbnail":"https://img.youtube.com/vi/A_tkKYaW_iI/0.jpg", "desc":"In diesem Video werden die drei wichtigsten Neuerungen der neuen EGroupware Version 14.2. beschrieben."}
],
"en":[
{"src":"https://www.youtube.com/embed/5ukeZd-kEMo?rel=0&autoplay=1","title":"EGroupware E-Mail Basics","thumbnail":"https://img.youtube.com/vi/5ukeZd-kEMo/0.jpg", "desc":"Here we show some useful features of mail application. E.g. we explain how to use context menu or how you can customize preview dialog."},
{"src":"https://www.youtube.com/embed/LkWOL8PkgvU?rel=0&autoplay=1","title":"EGroupware E-Mail account management","thumbnail":"https://img.youtube.com/vi/LkWOL8PkgvU/0.jpg", "desc":"In this tutorial we explain, how fast and how easy you create your own mail account."},
{"src":"https://www.youtube.com/embed/8CTF7w3K8kA?rel=0&autoplay=1","title":"EGroupware Admin Mail","thumbnail":"https://img.youtube.com/vi/8CTF7w3K8kA/0.jpg", "desc":"We show, how you as an admin change settings for one user in Stylite Mail Hosting."},
{"src":"https://www.youtube.com/embed/mCDJndpjO40?rel=0&autoplay=1","title":"EGroupware 14.2 new features","thumbnail":"https://img.youtube.com/vi/mCDJndpjO40/0.jpg", "desc":"This video shows the three main features of upcoming new EGroupware version 14.2."}
]
},
"admin":{
"de":[
{"src":"https://www.youtube.com/embed/a-VYyo7rQxA?rel=0&autoplay=1","title":"EGroupware Admin Basics","thumbnail":"https://img.youtube.com/vi/a-VYyo7rQxA/0.jpg", "desc":"Grundlagen der EGroupware Administration: Benutzer und Gruppen anlegen, Kategorien anlegen, Zugriffsrechte vergeben und benutzerdefinierte Felder erstellen."},
{"src":"https://www.youtube.com/embed/vml4Ok1qdGM?rel=0&autoplay=1","title":"EGroupware Admin Mail","thumbnail":"https://img.youtube.com/vi/vml4Ok1qdGM/0.jpg", "desc":"Hier zeigen wir - für alle Admins - wichtige Einstellungen in EGroupware Mail!"},
{"src":"https://www.youtube.com/embed/7DZKPKa_Rj0?rel=0&autoplay=1","title":"EGroupware E-Mail Account Management","thumbnail":"https://img.youtube.com/vi/7DZKPKa_Rj0/0.jpg", "desc":"In diesem Tutorial erklären wir, wie einfach Sie sich selbst einen neuen Mailaccount anlegen und wie schnell das geht."},
{"src":"https://www.youtube.com/embed/e_X2InMcBao?rel=0&autoplay=1","title":"EGroupware Synchronisation - Apple","thumbnail":"https://img.youtube.com/vi/e_X2InMcBao/0.jpg", "desc":"In diesem Video erklären wir Schritt für Schritt die Synchronisation mit Ihrem Mobilgerät - für alle Apple-Geräte."},
{"src":"https://www.youtube.com/embed/hJWQYzxC9MA?rel=0&autoplay=1","title":"EGroupware Synchronisation - Android","thumbnail":"https://img.youtube.com/vi/hJWQYzxC9MA/0.jpg", "desc":"In diesem Video erklären wir Schritt für Schritt die Synchronisation mit Ihrem Mobilgerät - für alle Android-Geräte."}
],
"en":[
{"src":"https://www.youtube.com/embed/W0q2HyT6tQU?rel=0&autoplay=1","title":"EGroupware Admin Basics","thumbnail":"https://img.youtube.com/vi/W0q2HyT6tQU/0.jpg", "desc":"Basics of EGroupware Administration: create users and groups, add categories, define access rights and custom fields."},
{"src":"https://www.youtube.com/embed/8CTF7w3K8kA?rel=0&autoplay=1","title":"EGroupware Admin Mail","thumbnail":"https://img.youtube.com/vi/8CTF7w3K8kA/0.jpg", "desc":"We show, how you as an admin change settings for one user in Stylite Mail Hosting."},
{"src":"https://www.youtube.com/embed/LkWOL8PkgvU?rel=0&autoplay=1","title":"EGroupware E-Mail account management","thumbnail":"https://img.youtube.com/vi/LkWOL8PkgvU/0.jpg", "desc":"In this tutorial we explain, how fast and how easy you create your own mail account."},
{"src":"https://www.youtube.com/embed/hHxjjQ_MqnY?rel=0&autoplay=1","title":"EGroupware Synchronisation - Apple","thumbnail":"https://img.youtube.com/vi/hHxjjQ_MqnY/0.jpg", "desc":"We explain step by step, how to synchronise EGroupware with your smartphone or tablet - for all Apple devices."},
{"src":"https://www.youtube.com/embed/-NdgyI7BDpY?rel=0&autoplay=1","title":"EGroupware Synchronisation - Android","thumbnail":"https://img.youtube.com/vi/-NdgyI7BDpY/0.jpg", "desc":"We explain step by step, how to synchronise EGroupware with your smartphone or tablet - for all Android devices."}
]
},
"filemanager":{
"de":[
{"src":"https://www.youtube.com/embed/scB_l7OjdJI?rel=0&autoplay=1","title":"EGroupware Dateimanager","thumbnail":"https://img.youtube.com/vi/scB_l7OjdJI/0.jpg", "desc":"In diesem Tutorial gibt es praktische Tipps und Erklärungen zur Nutzung des Dateimanagers."},
{"src":"https://www.youtube.com/embed/A_tkKYaW_iI?rel=0&autoplay=1","title":"EGroupware 14.2 neue Features","thumbnail":"https://img.youtube.com/vi/A_tkKYaW_iI/0.jpg", "desc":"In diesem Video werden die drei wichtigsten Neuerungen der neuen EGroupware Version 14.2. beschrieben."}
],
"en":[
{"src":"https://www.youtube.com/embed/lOR3vo6hMwA?rel=0&autoplay=1","title":"EGroupware File Manager","thumbnail":"https://img.youtube.com/vi/lOR3vo6hMwA/0.jpg", "desc":"We here give some useful tips concerning the usage of filemanager. We talk about handling and usability and the new sharing options that are available with version 14.2."},
{"src":"https://www.youtube.com/embed/mCDJndpjO40?rel=0&autoplay=1","title":"EGroupware 14.2 new features","thumbnail":"https://img.youtube.com/vi/mCDJndpjO40/0.jpg", "desc":"This video shows the three main features of upcoming new EGroupware version 14.2."}
]
},
"infolog":{
"de":[
{"src":"https://www.youtube.com/embed/fiPjk49HtMY?rel=0&autoplay=1","title":"EGroupware - CRM","thumbnail":"https://img.youtube.com/vi/fiPjk49HtMY/0.jpg", "desc":"Customer Relationship Management - Hier zeigen wir, wie Kontakte und Termine von Kunden oder Partnern mit Adressbuch, Kalender und InfoLog abgebildet werden können."},
{"src":"https://www.youtube.com/embed/A_tkKYaW_iI?rel=0&autoplay=1","title":"EGroupware 14.2 neue Features","thumbnail":"https://img.youtube.com/vi/A_tkKYaW_iI/0.jpg", "desc":"In diesem Video werden die drei wichtigsten Neuerungen der neuen EGroupware Version 14.2. beschrieben."}
],
"en":[
{"src":"https://www.youtube.com/embed/HwjZFnitqRQ?rel=0&autoplay=1","title":"EGroupware - CRM","thumbnail":"https://img.youtube.com/vi/HwjZFnitqRQ/0.jpg", "desc":"Customer Relationship Management - We show, how contacts and events of customers or partners can be edited with Addressbook, Calendar and InfoLog."},
{"src":"https://www.youtube.com/embed/mCDJndpjO40?rel=0&autoplay=1","title":"EGroupware 14.2 new features","thumbnail":"https://img.youtube.com/vi/mCDJndpjO40/0.jpg", "desc":"This video shows the three main features of upcoming new EGroupware version 14.2."}
]
},
"calendar":{
"de":[
{"src":"https://www.youtube.com/embed/fiPjk49HtMY?rel=0&autoplay=1","title":"EGroupware - CRM","thumbnail":"https://img.youtube.com/vi/fiPjk49HtMY/0.jpg", "desc":"Customer Relationship Management - Hier zeigen wir, wie Kontakte und Termine von Kunden oder Partnern mit Adressbuch, Kalender und InfoLog abgebildet werden können."},
{"src":"https://www.youtube.com/embed/rP_fK7Dk42s?rel=0&autoplay=1","title":"EGroupware für Universitäten und Schulen ","thumbnail":"https://img.youtube.com/vi/rP_fK7Dk42s/0.jpg", "desc":"Die EGroupware Ressourcen-Verwaltung ersetzt einzelne Listen und Aushänge und kann den Verleih von Beamern oder Laptops sowie die Nutzung von Sportplatz oder Sitzungssaal übersichtlich abbilden."}
],
"en":[
{"src":"https://www.youtube.com/embed/HwjZFnitqRQ?rel=0&autoplay=1","title":"EGroupware - CRM","thumbnail":"https://img.youtube.com/vi/HwjZFnitqRQ/0.jpg", "desc":"Customer Relationship Management - We show, how contacts and events of customers or partners can be edited with Addressbook, Calendar and InfoLog."}
]
},
"home":{
"de":[
{"src":"https://www.youtube.com/embed/A_tkKYaW_iI?rel=0&autoplay=1","title":"EGroupware 14.2 neue Features","thumbnail":"https://img.youtube.com/vi/A_tkKYaW_iI/0.jpg", "desc":"In diesem Video werden die drei wichtigsten Neuerungen der neuen EGroupware Version 14.2. beschrieben."}
],
"en":[
{"src":"https://www.youtube.com/embed/mCDJndpjO40?rel=0&autoplay=1","title":"EGroupware 14.2 new features","thumbnail":"https://img.youtube.com/vi/mCDJndpjO40/0.jpg", "desc":"This video shows the three main features of upcoming new EGroupware version 14.2."}
]
},
"ressources":{
"de":[
{"src":"https://www.youtube.com/embed/rP_fK7Dk42s?rel=0&autoplay=1","title":"EGroupware für Universitäten und Schulen ","thumbnail":"https://img.youtube.com/vi/rP_fK7Dk42s/0.jpg", "desc":"Die EGroupware Ressourcen-Verwaltung ersetzt einzelne Listen und Aushänge und kann den Verleih von Beamern oder Laptops sowie die Nutzung von Sportplatz oder Sitzungssaal übersichtlich abbilden."}
]
},
"addressbook":{
"de":[
{"src":"https://www.youtube.com/embed/0JqoFhAGLwo?rel=0&autoplay=1","title":"EGroupware Basics","thumbnail":"https://img.youtube.com/vi/0JqoFhAGLwo/0.jpg", "desc":"Die wichtigsten Basics von EGroupware und die grundlegenden Funktionen der Software."}
],
"en":[
{"src":"https://www.youtube.com/embed/iPrtjeEnXeU?rel=0&autoplay=1","title":"EGroupware Basics","thumbnail":"https://img.youtube.com/vi/iPrtjeEnXeU/0.jpg", "desc":"Some of EGroupwares most important basic features and functions in all apps."}
]
}
}

View File

@ -4,8 +4,8 @@
<overlay>
<template id="home.tutorial" template="" lang="" group="0" version="15.1">
<hbox height="90%" class="tutorial_popup">
<hbox class="tutorial_videoList" width="200px">
<grid id="list" classs="egwGridView_grid" resize_ratio="0" width="200px">
<hbox class="tutorial_videoList" width="220px">
<grid id="list" classs="egwGridView_grid" resize_ratio="0" width="220px">
<columns>
<column/>
</columns>
@ -16,8 +16,8 @@
</menulist>
</row>
<row>
<vbox onclick="$row_cont[onclick]" align="center" statustext="$row_cont[title]">
<hbox background="$row_cont[thumbnail]" height="130px" width="190px" class="egw_tutorial_thumb">
<vbox onclick="$row_cont[onclick]" align="center" statustext="$row_cont[desc]">
<hbox background="$row_cont[thumbnail]" height="130px" width="210px" class="egw_tutorial_thumb">
<description value = "$row_cont[title]" class="egw_tutorial_title"/>
<hbox id="play" class="egw_tutorial_playBtn">
<hbox></hbox>
@ -28,7 +28,9 @@
</rows>
</grid>
</hbox>
<iframe id="src" height="100%" seamless="true" width="70%" fullscreen="true"/>
<hbox class="tutorial_iframe_wrapper">
<iframe id="src" height="100%" seamless="true" width="100%" fullscreen="true"/>
</hbox>
</hbox>
<hbox class="dialogFooterToolbar">
<button align="left" statustext="Close this window" label="Close" id="button[close]" onclick="window.close()" image="close" background_image="1"/>

View File

@ -130,7 +130,6 @@ class infolog_hooks
display_sidebox($appname,lang('Admin'),$file);
}
}
hooks::egw_tutorial_menu('infolog');
}
/**

View File

@ -535,7 +535,6 @@ class mail_hooks
}
hooks::pgp_encryption_menu('mail');
hooks::egw_tutorial_menu('mail');
}
/**

View File

@ -383,10 +383,12 @@ class hooks
/**
* Static function to build egw tutorial sidebox menu
*
* @param type $appname application name
*/
public static function egw_tutorial_menu($appname)
public static function egw_tutorial_menu()
{
$tutorials = json_decode(home_tutorial_ui::getJsonData(),true);
$appname = $GLOBALS['egw_info']['flags']['currentapp'];
if (!is_array($tutorials[$appname])) return false;
if (!$GLOBALS['egw_info']['server']['egw_tutorial_disable'])
{
$file = Array (

View File

@ -189,7 +189,7 @@ var fw_browser = Class.extend({
{
if (_button_id == "show" )
{
egw.open_link(egw.link('/index.php', 'menuaction=home.home_tutorial_ui.popup&tuid=introduction-'+egw.preference('lang')+'-0-a'),'_blank','750x580');
egw.open_link(egw.link('/index.php', 'menuaction=home.home_tutorial_ui.popup&tuid=introduction-'+egw.preference('lang')+'-0-a'),'_blank','960x580');
}
else if(_button_id == "never")
{

View File

@ -985,24 +985,23 @@ var AppJS = Class.extend(
* {
* [app name]:{
* [language tag]:[
* {src:"",thumbnail:"",title:"",top:""}
* {src:"",thumbnail:"",title:"",desc:""}
* ]
* }
* }
*
* *Note: "top" and "title" are optional attributes, which "top" means that specific video should
* appears on top of the list.
* *Note: "desc" and "title" are optional attributes, which "desc" would appears as tooltip for the video.
*
* example:
* {
* "mail":{
* "en":[
* {src:"https://www.youtube.com/embed/mCDJndpjO40", thumbnail:"http://img.youtube.com/vi/mCDJndpjO40/0.jpg", "title":"PGP Encryption"},
* {src:"https://www.youtube.com/embed/mCDJndpjO", thumbnail:"http://img.youtube.com/vi/mCDJndpjO/0.jpg", "title":"Subscription", top:true},
* {src:"https://www.youtube.com/embed/mCDJndpjO40", thumbnail:"http://img.youtube.com/vi/mCDJndpjO40/0.jpg", "title":"PGP Encryption", "desc":""},
* {src:"https://www.youtube.com/embed/mCDJndpjO", thumbnail:"http://img.youtube.com/vi/mCDJndpjO/0.jpg", "title":"Subscription", "desc":""},
* ],
* "de":[
* {src:"https://www.youtube.com/embed/m40", thumbnail:"http://img.youtube.com/vi/m40/0.jpg", "title":"PGP Verschlüsselung"},
* {src:"https://www.youtube.com/embed/mpjO", thumbnail:"http://img.youtube.com/vi/mpjO/0.jpg", "title":"Ordner Abonnieren", top:true},
* {src:"https://www.youtube.com/embed/m40", thumbnail:"http://img.youtube.com/vi/m40/0.jpg", "title":"PGP Verschlüsselung", "desc":""},
* {src:"https://www.youtube.com/embed/mpjO", thumbnail:"http://img.youtube.com/vi/mpjO/0.jpg", "title":"Ordner Abonnieren", "desc":""},
* ]
* }
* }
@ -1057,7 +1056,7 @@ var AppJS = Class.extend(
egwTutorialPopup: function (_tuid)
{
var url = egw.link('/index.php', 'menuaction=home.home_tutorial_ui.popup&tuid='+_tuid);
egw.open_link(url,'_blank','750x580');
egw.open_link(url,'_blank','960x580');
},
/**

View File

@ -98,3 +98,9 @@ span.egw_tutorial_title {
height: 100%;
display: inline-block !important;
}
div.tutorial_iframe_wrapper {
position: absolute;
left: 211px;
right: 2px;
height: 90%;
}

View File

@ -105,3 +105,9 @@ span.egw_tutorial_title {
height: 100%;
display: inline-block !important;
}
div.tutorial_iframe_wrapper {
position:absolute;
left:211px;
right:2px;
height:90%;
}

View File

@ -2196,7 +2196,6 @@ body {
* @package pixelegg
* @version $Id$
*/
@import-once "def_colors.less";
#socialMedia {
position: relative;
bottom: 20px;
@ -4274,7 +4273,7 @@ td.message span.message {
text-decoration: none;
height: 32px;
/*font-size: 1.1em;*/
font-size: 12.100000000000001px;
font-size: 12.1px;
line-height: 1.5em;
}
#egw_fw_header #egw_fw_topmenu #egw_fw_topmenu_items ul li a:hover {
@ -4298,7 +4297,7 @@ td.message span.message {
}
#egw_fw_header #egw_fw_topmenu #egw_fw_topmenu_items ul a#topmenu_home:before {
padding-right: 20px;
font-size: 12.100000000000001px;
font-size: 12.1px;
content: " ";
background-image: url(../images/topmenu_items/home.png);
background-repeat: no-repeat;
@ -4694,7 +4693,7 @@ td.message span.message {
padding-left: 3em;
color: #999999;
/*font-size: 12px;*/
font-size: 12.100000000000001px;
font-size: 12.1px;
line-height: 17px;
}
#egw_fw_sidebar #egw_fw_sidemenu .egw_fw_ui_scrollarea_outerdiv .egw_fw_ui_sidemenu_entry_header object {
@ -4866,7 +4865,7 @@ td.message span.message {
margin: 5px 0px 3px 5px;
padding: 0px 0px 0px 15px;
line-height: 1em;
font-size: 12.100000000000001px;
font-size: 12.1px;
background-image: url(../images/arrow_left.png);
background-repeat: no-repeat;
background-position: left center;
@ -6468,6 +6467,12 @@ span.egw_tutorial_title {
height: 100%;
display: inline-block !important;
}
div.tutorial_iframe_wrapper {
position: absolute;
left: 211px;
right: 2px;
height: 90%;
}
span.egw_tutorial_title {
color: #FFFFFF;
font-weight: bold;
@ -7054,7 +7059,7 @@ span.egw_tutorial_title {
margin: 5px 0px 3px 5px;
padding: 0px 0px 0px 15px;
line-height: 1em;
font-size: 12.100000000000001px;
font-size: 12.1px;
background-image: url(../images/arrow_left.png);
background-repeat: no-repeat;
background-position: left center;

View File

@ -4683,7 +4683,7 @@ td.message span.message {
padding-left: 3em;
color: #999999;
/*font-size: 12px;*/
font-size: 12.100000000000001px;
font-size: 12.1px;
line-height: 17px;
}
#egw_fw_sidebar #egw_fw_sidemenu .egw_fw_ui_scrollarea_outerdiv .egw_fw_ui_sidemenu_entry_header object {
@ -6457,6 +6457,12 @@ span.egw_tutorial_title {
height: 100%;
display: inline-block !important;
}
div.tutorial_iframe_wrapper {
position: absolute;
left: 211px;
right: 2px;
height: 90%;
}
span.egw_tutorial_title {
color: #FFFFFF;
font-weight: bold;

View File

@ -111,6 +111,12 @@ span.egw_tutorial_title {
height: 100%;
display: inline-block !important;
}
div.tutorial_iframe_wrapper {
position: absolute;
left: 211px;
right: 2px;
height: 90%;
}
span.egw_tutorial_title {
color: #FFFFFF;
font-weight: bold;

View File

@ -67,7 +67,6 @@ class resources_hooks
display_sidebox($appname,lang('Admin'),$file);
}
}
hooks::egw_tutorial_menu('resources');
}
function search_link($args)