fix bundles for TinyMCE and added on for messenger

This commit is contained in:
Ralf Becker 2018-12-12 17:00:14 +01:00
parent 56b0704bcb
commit 35cbfeec09
3 changed files with 81 additions and 34 deletions

View File

@ -98,8 +98,7 @@ module.exports = function (grunt) {
"api/js/dhtmlxMenu/sources/dhtmlxmenu.js", "api/js/dhtmlxMenu/sources/dhtmlxmenu.js",
"api/js/dhtmlxMenu/sources/ext/dhtmlxmenu_ext.js", "api/js/dhtmlxMenu/sources/ext/dhtmlxmenu_ext.js",
"api/js/egw_action/egw_menu_dhtmlx.js", "api/js/egw_action/egw_menu_dhtmlx.js",
"api/js/jquery/chosen/chosen.jquery.js", "api/js/jquery/chosen/chosen.jquery.js"
"vendor/egroupware/ckeditor/config.js"
] ]
} }
}, },
@ -173,9 +172,10 @@ module.exports = function (grunt) {
"api/js/etemplate/et2_widget_favorites.js", "api/js/etemplate/et2_widget_favorites.js",
"api/js/etemplate/et2_widget_html.js", "api/js/etemplate/et2_widget_html.js",
"api/js/etemplate/et2_widget_htmlarea.js", "api/js/etemplate/et2_widget_htmlarea.js",
"api/js/etemplate/et2_widget_ckeditor.js",
"api/js/etemplate/et2_widget_tabs.js", "api/js/etemplate/et2_widget_tabs.js",
"api/js/etemplate/et2_widget_toolbar.js",
"api/js/etemplate/et2_widget_timestamper.js", "api/js/etemplate/et2_widget_timestamper.js",
"api/js/etemplate/et2_widget_toolbar.js",
"api/js/etemplate/et2_widget_tree.js", "api/js/etemplate/et2_widget_tree.js",
"api/js/etemplate/et2_widget_historylog.js", "api/js/etemplate/et2_widget_historylog.js",
"api/js/etemplate/et2_widget_hrule.js", "api/js/etemplate/et2_widget_hrule.js",
@ -187,6 +187,7 @@ module.exports = function (grunt) {
"api/js/etemplate/et2_widget_progress.js", "api/js/etemplate/et2_widget_progress.js",
"api/js/etemplate/et2_widget_portlet.js", "api/js/etemplate/et2_widget_portlet.js",
"api/js/etemplate/et2_widget_ajaxSelect.js", "api/js/etemplate/et2_widget_ajaxSelect.js",
"api/js/etemplate/vfsSelectUI.js",
"api/js/etemplate/et2_widget_vfs.js", "api/js/etemplate/et2_widget_vfs.js",
"api/js/etemplate/et2_widget_video.js", "api/js/etemplate/et2_widget_video.js",
"api/js/jquery/barcode/jquery-barcode.min.js", "api/js/jquery/barcode/jquery-barcode.min.js",
@ -195,8 +196,7 @@ module.exports = function (grunt) {
"api/js/etemplate/et2_widget_itempicker.js", "api/js/etemplate/et2_widget_itempicker.js",
"api/js/etemplate/et2_widget_script.js", "api/js/etemplate/et2_widget_script.js",
"api/js/etemplate/et2_core_legacyJSFunctions.js", "api/js/etemplate/et2_core_legacyJSFunctions.js",
"api/js/etemplate/etemplate2.js", "api/js/etemplate/etemplate2.js"
"api/js/etemplate/vfsSelectUI.js"
] ]
} }
}, },
@ -249,7 +249,7 @@ module.exports = function (grunt) {
}, },
notifications: { notifications: {
files: { files: {
"notifications/js/notificationajaxpopup.min.js":[ "notifications/js/notificationajaxpopup.min.js": [
"notifications/js/notificationajaxpopup.js" "notifications/js/notificationajaxpopup.js"
] ]
} }
@ -277,6 +277,18 @@ module.exports = function (grunt) {
"projectmanager/js/app.js" "projectmanager/js/app.js"
] ]
} }
},
messenger: {
files: {
"messenger/js/app.min.js": [
"messenger/jsxc/lib/jquery.slimscroll.js",
"messenger/jsxc/lib/jquery.fullscreen.js",
"messenger/jsxc/lib/jsxc.dep.js",
"messenger/jsxc/jsxc.js",
"messenger/js/init.js",
"messenger/js/app.js"
]
}
} }
}, },
cssmin: { cssmin: {
@ -298,11 +310,12 @@ module.exports = function (grunt) {
"api/js/egw_action/test/skins/dhtmlxmenu_egw.css", "api/js/egw_action/test/skins/dhtmlxmenu_egw.css",
"api/js/etemplate/lib/jsdifflib/diffview.css", "api/js/etemplate/lib/jsdifflib/diffview.css",
"vendor/bower-asset/cropper/dist/cropper.min.css", "vendor/bower-asset/cropper/dist/cropper.min.css",
"api/templates/default/css/flags.css",
"api/templates/default/css/htmlarea.css",
"api/templates/default/etemplate2.css", "api/templates/default/etemplate2.css",
"pixelegg/css/pixelegg.css", "pixelegg/css/pixelegg.css",
"api/templates/default/print.css", "api/templates/default/print.css",
"pixelegg/print.css", "pixelegg/print.css"
"api/templates/default/css/flags.css"
], ],
"pixelegg/css/mobile.min.css": [ "pixelegg/css/mobile.min.css": [
"api/js/jquery/chosen/chosen.css", "api/js/jquery/chosen/chosen.css",
@ -315,11 +328,12 @@ module.exports = function (grunt) {
"api/js/egw_action/test/skins/dhtmlxmenu_egw.css", "api/js/egw_action/test/skins/dhtmlxmenu_egw.css",
"api/js/etemplate/lib/jsdifflib/diffview.css", "api/js/etemplate/lib/jsdifflib/diffview.css",
"vendor/bower-asset/cropper/dist/cropper.min.css", "vendor/bower-asset/cropper/dist/cropper.min.css",
"api/templates/default/css/flags.css",
"api/templates/default/css/htmlarea.css",
"api/templates/default/etemplate2.css", "api/templates/default/etemplate2.css",
"pixelegg/css/mobile.css", "pixelegg/css/mobile.css",
"api/templates/default/print.css", "api/templates/default/print.css",
"pixelegg/print.css", "pixelegg/print.css"
"api/templates/default/css/flags.css"
], ],
"pixelegg/mobile/fw_mobile.min.css": [ "pixelegg/mobile/fw_mobile.min.css": [
"api/js/jquery/chosen/chosen.css", "api/js/jquery/chosen/chosen.css",
@ -332,6 +346,8 @@ module.exports = function (grunt) {
"api/js/egw_action/test/skins/dhtmlxmenu_egw.css", "api/js/egw_action/test/skins/dhtmlxmenu_egw.css",
"api/js/etemplate/lib/jsdifflib/diffview.css", "api/js/etemplate/lib/jsdifflib/diffview.css",
"vendor/bower-asset/cropper/dist/cropper.min.css", "vendor/bower-asset/cropper/dist/cropper.min.css",
"api/templates/default/css/flags.css",
"api/templates/default/css/htmlarea.css",
"api/templates/default/etemplate2.css", "api/templates/default/etemplate2.css",
"pixelegg/mobile/fw_mobile.css", "pixelegg/mobile/fw_mobile.css",
"api/templates/default/print.css", "api/templates/default/print.css",
@ -353,6 +369,24 @@ module.exports = function (grunt) {
"api/templates/default/print.css", "api/templates/default/print.css",
"pixelegg/print.css", "pixelegg/print.css",
"api/templates/default/css/flags.css" "api/templates/default/css/flags.css"
],
"pixelegg/css/modern.min.css": [
"api/js/jquery/chosen/chosen.css",
"vendor/bower-asset/jquery-ui/themes/redmond/jquery-ui.css",
"vendor/egroupware/magicsuggest/magicsuggest.css",
"api/js/jquery/jpicker/css/jPicker-1.1.6.min.css",
"api/js/jquery/jquery-ui-timepicker-addon.css",
"api/js/jquery/blueimp/css/blueimp-gallery.min.css",
"api/js/dhtmlxtree/codebase/dhtmlxtree.css",
"api/js/egw_action/test/skins/dhtmlxmenu_egw.css",
"api/js/etemplate/lib/jsdifflib/diffview.css",
"vendor/bower-asset/cropper/dist/cropper.min.css",
"api/templates/default/css/flags.css",
"api/templates/default/css/htmlarea.css",
"api/templates/default/etemplate2.css",
"pixelegg/css/modern.css",
"api/templates/default/print.css",
"pixelegg/print.css"
] ]
} }
}, },
@ -369,6 +403,8 @@ module.exports = function (grunt) {
"api/js/egw_action/test/skins/dhtmlxmenu_egw.css", "api/js/egw_action/test/skins/dhtmlxmenu_egw.css",
"api/js/etemplate/lib/jsdifflib/diffview.css", "api/js/etemplate/lib/jsdifflib/diffview.css",
"vendor/bower-asset/cropper/dist/cropper.min.css", "vendor/bower-asset/cropper/dist/cropper.min.css",
"api/templates/default/css/flags.css",
"api/templates/default/css/htmlarea.css",
"api/templates/default/etemplate2.css", "api/templates/default/etemplate2.css",
"api/templates/default/def_tutorials.css", "api/templates/default/def_tutorials.css",
"api/templates/default/default.css", "api/templates/default/default.css",
@ -376,8 +412,7 @@ module.exports = function (grunt) {
"jdots/css/jdots.css", "jdots/css/jdots.css",
"jdots/css/high-contrast.css", "jdots/css/high-contrast.css",
"api/templates/default/print.css", "api/templates/default/print.css",
"jdots/print.css", "jdots/print.css"
"api/templates/default/css/flags.css"
], ],
"jdots/css/jdots.min.css": [ "jdots/css/jdots.min.css": [
"api/js/jquery/chosen/chosen.css", "api/js/jquery/chosen/chosen.css",
@ -390,14 +425,15 @@ module.exports = function (grunt) {
"api/js/egw_action/test/skins/dhtmlxmenu_egw.css", "api/js/egw_action/test/skins/dhtmlxmenu_egw.css",
"api/js/etemplate/lib/jsdifflib/diffview.css", "api/js/etemplate/lib/jsdifflib/diffview.css",
"vendor/bower-asset/cropper/dist/cropper.min.css", "vendor/bower-asset/cropper/dist/cropper.min.css",
"api/templates/default/css/flags.css",
"api/templates/default/css/htmlarea.css",
"api/templates/default/etemplate2.css", "api/templates/default/etemplate2.css",
"api/templates/default/def_tutorials.css", "api/templates/default/def_tutorials.css",
"api/templates/default/default.css", "api/templates/default/default.css",
"jdots/egw_fw.css", "jdots/egw_fw.css",
"jdots/css/jdots.css", "jdots/css/jdots.css",
"api/templates/default/print.css", "api/templates/default/print.css",
"jdots/print.css", "jdots/print.css"
"api/templates/default/css/flags.css"
], ],
"jdots/css/orange-green.min.css": [ "jdots/css/orange-green.min.css": [
"api/js/jquery/chosen/chosen.css", "api/js/jquery/chosen/chosen.css",
@ -410,6 +446,8 @@ module.exports = function (grunt) {
"api/js/egw_action/test/skins/dhtmlxmenu_egw.css", "api/js/egw_action/test/skins/dhtmlxmenu_egw.css",
"api/js/etemplate/lib/jsdifflib/diffview.css", "api/js/etemplate/lib/jsdifflib/diffview.css",
"vendor/bower-asset/cropper/dist/cropper.min.css", "vendor/bower-asset/cropper/dist/cropper.min.css",
"api/templates/default/css/flags.css",
"api/templates/default/css/htmlarea.css",
"api/templates/default/etemplate2.css", "api/templates/default/etemplate2.css",
"api/templates/default/def_tutorials.css", "api/templates/default/def_tutorials.css",
"api/templates/default/default.css", "api/templates/default/default.css",
@ -417,8 +455,7 @@ module.exports = function (grunt) {
"jdots/css/jdots.css", "jdots/css/jdots.css",
"jdots/css/orange-green.css", "jdots/css/orange-green.css",
"api/templates/default/print.css", "api/templates/default/print.css",
"jdots/print.css", "jdots/print.css"
"api/templates/default/css/flags.css"
] ]
} }
} }

View File

@ -145,8 +145,9 @@ class Bundle
$mod = filemtime(EGW_SERVER_ROOT.$path); $mod = filemtime(EGW_SERVER_ROOT.$path);
if ($mod > $max_modified) $max_modified = $mod; if ($mod > $max_modified) $max_modified = $mod;
// ckeditor must be included before bundled files, as they depend on it! // ckeditor of TinyMCE must be included before bundled files, as they depend on it!
if (strpos($path,'/ckeditor/ckeditor.js') !== false) if (strpos($path,'/ckeditor/ckeditor.js') !== false ||
strpos($path, '/tinymce/tinymce.min.js') !== false)
{ {
$to_include_first[] = $path . '?' . $mod; $to_include_first[] = $path . '?' . $mod;
} }
@ -234,8 +235,8 @@ class Bundle
// include choosen in api, as old eTemplate uses it and fail if it pulls in half of et2 // include choosen in api, as old eTemplate uses it and fail if it pulls in half of et2
$inc_mgr->include_js_file('/api/js/jquery/chosen/chosen.jquery.js'); $inc_mgr->include_js_file('/api/js/jquery/chosen/chosen.jquery.js');
// include CKEditor in api, as old eTemplate uses it too // include CKEditor in api, as old eTemplate uses it too
$inc_mgr->include_js_file('/vendor/egroupware/ckeditor/ckeditor.js'); //$inc_mgr->include_js_file('/vendor/egroupware/ckeditor/ckeditor.js');
$inc_mgr->include_js_file('/vendor/egroupware/ckeditor/config.js'); //$inc_mgr->include_js_file('/vendor/egroupware/ckeditor/config.js');
$bundles['api'] = $inc_mgr->get_included_files(); $bundles['api'] = $inc_mgr->get_included_files();
self::urls($bundles['api'], $max_mod['api']); self::urls($bundles['api'], $max_mod['api']);
@ -254,6 +255,7 @@ class Bundle
'calendar' => '/calendar/js/app.js', 'calendar' => '/calendar/js/app.js',
'mail' => '/mail/js/app.js', 'mail' => '/mail/js/app.js',
'projectmanager' => '/projectmanager/js/app.js', 'projectmanager' => '/projectmanager/js/app.js',
'messenger' => '/messenger/js/app.js',
) as $bundle => $file) ) as $bundle => $file)
{ {
if (@file_exists(EGW_SERVER_ROOT.$file)) if (@file_exists(EGW_SERVER_ROOT.$file))

View File

@ -5,9 +5,8 @@
* *
* @link http://www.egroupware.org * @link http://www.egroupware.org
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @author Ralf Becker <rb@stylite.de> * @author Ralf Becker <rb@egroupware.org>
* @copyright (c) 2016 by Ralf Becker <rb@stylite.de> * @copyright (c) 2016-18 by Ralf Becker <rb@egroupware.org>
* @version $Id$
*/ */
use EGroupware\Api\Framework; use EGroupware\Api\Framework;
@ -15,6 +14,8 @@ use EGroupware\Api\Framework\Bundle;
if (php_sapi_name() !== 'cli') die("This is a commandline ONLY tool!\n"); if (php_sapi_name() !== 'cli') die("This is a commandline ONLY tool!\n");
// force a domain for MServer install
$_REQUEST['domain'] = 'boulder.egroupware.org';
$GLOBALS['egw_info'] = array( $GLOBALS['egw_info'] = array(
'flags' => array( 'flags' => array(
'currentapp' => 'login', 'currentapp' => 'login',
@ -38,6 +39,18 @@ if (!preg_match('/grunt\.initConfig\(({.+})\);/s', $content, $matches) ||
$uglify =& $config['uglify']; $uglify =& $config['uglify'];
// some files are not in a bundle, because loaded otherwise or are big enough themselfs
$exclude = array(
// api/js/jsapi/egw.js loaded via own tag, and we must not load it twice!
'api/js/jsapi/egw.js',
// TinyMCE is loaded separate before the bundle
'api/js/tinymce/tinymce.min.js',
// ckeditor is loaded on demand only
'vendor/egroupware/ckeditor/ckeditor.js',
'vendor/egroupware/ckeditor/ckeditor.config.js',
'vendor/egroupware/ckeditor/ckeditor.adapters/jquery.js',
);
foreach(Bundle::all() as $name => $files) foreach(Bundle::all() as $name => $files)
{ {
if ($name == '.ts') continue; // ignore timestamp if ($name == '.ts') continue; // ignore timestamp
@ -48,15 +61,10 @@ foreach(Bundle::all() as $name => $files)
if ($path[0] == '/') $path = substr($path, 1); if ($path[0] == '/') $path = substr($path, 1);
}); });
// api/js/jsapi/egw.js loaded via own tag, and we must not load it twice! // some files are not in a bundle, because they are big enough themselfs
if ($name == 'api' && ($key = array_search('api/js/jsapi/egw.js', $files))) foreach($exclude as $file)
{ {
unset($files[$key]); if (($key = array_search($file, $files))) unset($files[$key]);
}
// ckeditor is loaded separate before the bundle
if ($name == 'api' && ($key = array_search('vendor/egroupware/ckeditor/ckeditor.js', $files)))
{
unset($files[$key]);
} }
//var_dump($name, $files); //var_dump($name, $files);
@ -80,7 +88,7 @@ foreach(Bundle::all() as $name => $files)
// add css for all templates and themes // add css for all templates and themes
$cssmin =& $config['cssmin']; $cssmin =& $config['cssmin'];
$GLOBALS['egw_info']['flags']['currentapp'] = '*grunt*'; // to no find any app.css files $GLOBALS['egw_info']['flags']['currentapp'] = '*grunt*'; // to not find any app.css files
$GLOBALS['egw_info']['server']['debug_minify'] = 'True'; // otherwise we would only get minified file $GLOBALS['egw_info']['server']['debug_minify'] = 'True'; // otherwise we would only get minified file
foreach(array('pixelegg','jdots')/*array_keys(Framework::list_templates())*/ as $template) foreach(array('pixelegg','jdots')/*array_keys(Framework::list_templates())*/ as $template)
{ {
@ -88,7 +96,7 @@ foreach(array('pixelegg','jdots')/*array_keys(Framework::list_templates())*/ as
$tpl = Framework::factory(); $tpl = Framework::factory();
$themes = $tpl->list_themes(); $themes = $tpl->list_themes();
if ($template == 'pixelegg') $themes[] = 'fw_mobile'; // this is for mobile devices if ($template == 'pixelegg') $themes[] = 'fw_mobile'; // this is for mobile devices
foreach($themes as $theme) foreach(array_keys($themes) as $theme)
{ {
// skip not working cssmin of pixelegg/traditional: Broken @import declaration of "../../etemplate/templates/default/etemplate2.css" // skip not working cssmin of pixelegg/traditional: Broken @import declaration of "../../etemplate/templates/default/etemplate2.css"
if ($template == 'pixelegg' && $theme == 'traditional') continue; if ($template == 'pixelegg' && $theme == 'traditional') continue;