From f25070a9c23f8352a21ddc2d1c405983af76566e Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Tue, 1 Mar 2016 20:45:31 +0000 Subject: [PATCH] - switching minifying of javascript to use Grunt and Uglify (instead of doing it on the fly with php on every host) - generating now a couple of bundles: api, et2, mail, calendar, jdots, pixelegg and mobile - developers need to update minified files whenever a javascript file changes: grunt uglify[:(api|et2|mail|calendar|jdots|pixelegg|mobile)] - minified files also contains a map file allowing to debug with them --- Gruntfile.js | 56 ++++++++- mail/inc/class.mail_zpush.inc.php | 3 + mail/js/app.min.js | 6 + mail/js/app.min.js.map | 1 + phpgwapi/inc/class.egw_framework.inc.php | 95 +++++++++++---- phpgwapi/inc/class.egw_include_mgr.inc.php | 16 +-- phpgwapi/js/framework/fw_classes.js | 135 +++++++++++++++++++++ phpgwapi/js/framework/fw_desktop.js | 2 +- phpgwapi/js/jsapi/egw_files.js | 22 +++- pixelegg/js/fw_pixelegg.js | 4 +- pixelegg/js/fw_pixelegg.min.js | 6 + pixelegg/js/fw_pixelegg.min.js.map | 1 + updateGruntfile.php | 13 +- 13 files changed, 320 insertions(+), 40 deletions(-) create mode 100644 mail/js/app.min.js create mode 100644 mail/js/app.min.js.map create mode 100644 phpgwapi/js/framework/fw_classes.js create mode 100644 pixelegg/js/fw_pixelegg.min.js create mode 100644 pixelegg/js/fw_pixelegg.min.js.map diff --git a/Gruntfile.js b/Gruntfile.js index bcd5b43694..cdf80eb562 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -68,7 +68,6 @@ module.exports = function (grunt) { "phpgwapi\/js\/jsapi\/egw_message.js", "phpgwapi\/js\/es6-promise.min.js", "phpgwapi\/js\/jsapi\/app_base.js", - "phpgwapi\/js\/jsapi\/egw.js", "phpgwapi\/js\/dhtmlxtree\/codebase\/dhtmlxcommon.js", "phpgwapi\/js\/dhtmlxtree\/sources\/dhtmlxtree.js", "phpgwapi\/js\/dhtmlxtree\/sources\/ext\/dhtmlxtree_json.js", @@ -188,12 +187,63 @@ module.exports = function (grunt) { }, mail: { files: { - "mail\/js\/app.min.js": "mail\/js\/app.js" + "mail\/js\/app.min.js": [ + "mail\/js\/app.js" + ] } }, calendar: { files: { - "calendar\/js\/app.min.js": "calendar\/js\/app.js" + "calendar\/js\/app.min.js": [ + "calendar\/js\/et2_widget_owner.js", + "calendar\/js\/et2_widget_view.js", + "calendar\/js\/et2_widget_timegrid.js", + "calendar\/js\/et2_widget_event.js", + "calendar\/js\/et2_widget_daycol.js", + "calendar\/js\/et2_widget_planner_row.js", + "calendar\/js\/et2_widget_planner.js", + "calendar\/js\/app.js" + ] + } + }, + jdots: { + files: { + "jdots\/js\/fw_jdots.min.js": [ + "phpgwapi\/js\/framework\/fw_base.js", + "phpgwapi\/js\/framework\/fw_browser.js", + "phpgwapi\/js\/jquery\/mousewheel\/mousewheel.js", + "phpgwapi\/js\/framework\/fw_ui.js", + "phpgwapi\/js\/framework\/fw_classes.js", + "phpgwapi\/js\/framework\/fw_desktop.js", + "jdots\/js\/fw_jdots.js" + ] + } + }, + mobile: { + files: { + "jdots\/js\/fw_mobile.min.js": [ + "phpgwapi\/js\/jquery\/fastclick\/lib\/fastclick.js", + "phpgwapi\/js\/framework\/fw_base.js", + "phpgwapi\/js\/framework\/fw_browser.js", + "phpgwapi\/js\/jquery\/mousewheel\/mousewheel.js", + "phpgwapi\/js\/framework\/fw_ui.js", + "phpgwapi\/js\/framework\/fw_classes.js", + "jdots\/js\/fw_mobile.js" + ] + } + }, + pixelegg: { + files: { + "pixelegg\/js\/fw_pixelegg.min.js": [ + "phpgwapi\/js\/framework\/fw_base.js", + "phpgwapi\/js\/framework\/fw_browser.js", + "phpgwapi\/js\/jquery\/mousewheel\/mousewheel.js", + "phpgwapi\/js\/framework\/fw_ui.js", + "phpgwapi\/js\/framework\/fw_classes.js", + "phpgwapi\/js\/framework\/fw_desktop.js", + "pixelegg\/js\/slider.js", + "pixelegg\/js\/fw_pixelegg.js" + ] } } } diff --git a/mail/inc/class.mail_zpush.inc.php b/mail/inc/class.mail_zpush.inc.php index ceff787c63..e109d382d5 100644 --- a/mail/inc/class.mail_zpush.inc.php +++ b/mail/inc/class.mail_zpush.inc.php @@ -822,6 +822,9 @@ class mail_zpush implements activesync_plugin_write, activesync_plugin_sendmail, ZLog::Write(LOGLEVEL_DEBUG,__METHOD__."() truncsize=$truncsize, mimeSupport=".array2string($mimesupport)); $bodypreference = $contentparameters->GetBodyPreference(); /* fmbiete's contribution r1528, ZP-320 */ + // fix for z-push bug returning additional bodypreference type 4, even if only 1 is requested and mimessupport = 0 + if (!$mimesupport && ($key = array_search('4', $bodypreference))) unset($bodypreference[$key]); + //$this->debugLevel=4; if (!isset($this->mail)) $this->mail = mail_bo::getInstance(false,self::$profileID,true,false,true); ZLog::Write(LOGLEVEL_DEBUG,__METHOD__.__LINE__.' FolderID:'.$folderid.' ID:'.$id.' TruncSize:'.$truncsize.' Bodypreference: '.array2string($bodypreference)); diff --git a/mail/js/app.min.js b/mail/js/app.min.js new file mode 100644 index 0000000000..ab5c72c01d --- /dev/null +++ b/mail/js/app.min.js @@ -0,0 +1,6 @@ +/*! build Tue Mar 01 2016 10:42:55 */ + +app.classes.mail=AppJS.extend({appname:"mail",et2:null,doStatus:null,mail_queuedFolders:[],mail_queuedFoldersIndex:0,mail_selectedMails:[],mail_currentlyFocussed:"",mail_previewAreaActive:!0,nm_index:"nm",mail_fileSelectorWindow:null,mail_isMainWindow:!0,preview_preload:{timeout:null,request:null},subscription_treeLastState:"",aclCommonRights:["lrs","lprs","ilprs","ilprsw","aeiklprstwx","custom"],aclRights:["l","r","s","w","i","p","c","d","a"],W_INTERVALS:[],init:function(){this._super.apply(this,arguments),this.egw.is_popup()||this.egw.dataCacheRegister("mail",this.nm_cache,function(server_query){server_query||this.unlock_tree()},this)},destroy:function(){if(null!=this.et2){var nm=this.et2.getWidgetById(this.nm_index);null!=nm&&$j(nm).off("refresh")}this.egw.dataCacheUnregister("mail"),delete this.et2_obj,this._super.apply(this,arguments)},checkET2:function(){if(!this.et2)try{this.et2=etemplate2.getByApplication("mail")[0].widgetContainer}catch(e){return!1}return!0},et2_ready:function(et2,_name){switch(this._super.apply(this,arguments),this.et2_obj=et2,_name){case"mail.sieve.vacation":this.vacationFilterStatusChange();break;case"mail.mobile_index":case"mail.index":var self=this;jQuery("iframe#mail-index_messageIFRAME").on("load",function(){self.mailvelopeAvailable(self.mailvelopeDisplay),self.mail_prepare_print()});var nm=this.et2.getWidgetById(this.nm_index);if(this.mail_isMainWindow=!0,this.mail_disablePreviewArea(!0),this.mail_refreshFolderStatus(void 0,void 0,!1),null!=nm&&("undefined"==typeof jQuery._data(nm).events||"undefined"==typeof jQuery._data(nm).events.refresh)){var self=this;$j(nm).on("refresh",function(){self.mail_refreshFolderStatus.call(self,void 0,void 0,!1)})}var tree_wdg=this.et2.getWidgetById(this.nm_index+"[foldertree]");tree_wdg&&(tree_wdg.set_onopenstart(jQuery.proxy(this.openstart_tree,this)),tree_wdg.set_onopenend(jQuery.proxy(this.openend_tree,this))),this.mail_callRefreshVacationNotice();break;case"mail.display":var self=this;jQuery("iframe#mail-display_mailDisplayBodySrc").on("load",function(e){self.mailvelopeAvailable(self.mailvelopeDisplay),self.mail_prepare_print(),window.location.search.search("&print=")>=0&&jQuery(this.contentWindow.document.body).children().length>0&&self.mail_print()}),this.mail_isMainWindow=!1,this.mail_display(),this.register_for_drag(this.et2.getArrayMgr("content").getEntry("mail_id"),this.et2.getArrayMgr("content").getEntry("mail_displayattachments"));break;case"mail.compose":(this.et2.getWidgetById("composeToolbar")._actionManager.getActionById("pgp")&&this.et2.getWidgetById("composeToolbar")._actionManager.getActionById("pgp").checked||this.et2.getArrayMgr("content").data.mail_plaintext&&-1!=this.et2.getArrayMgr("content").data.mail_plaintext.indexOf(this.begin_pgp_message))&&this.mailvelopeAvailable(this.mailvelopeCompose),et2.menuaction="mail_compose::ajax_send";var that=this,textAreaWidget=this.et2.getWidgetById("mail_htmltext");this.mail_isMainWindow=!1,this.compose_fieldExpander_init(),this.check_sharing_filemode(),this.subject2title(),this.W_INTERVALS.push(window.setInterval(function(){that.saveAsDraft(null,"autosaving")},12e4)),jQuery("#mail-compose_subject").on({focus:function(){that.compose_fieldExpander_init(),that.compose_fieldExpander()}}),jQuery("#mail-compose").on("load",function(){textAreaWidget&&textAreaWidget.ckeditor?textAreaWidget.ckeditor.on("instanceReady",function(){that.compose_fieldExpander(),egwIsMobile()&&jQuery(jQuery("iframe.cke_wysiwyg_frame")[0].contentWindow.document.body).css({margin:"0"})}):that.compose_fieldExpander()}),jQuery(window).on("resize",function(){that.compose_resizeHandler()}),this.init_dndCompose();var to=this.et2.getWidgetById("to");if(to&&to.get_value()&&""!=to.get_value()){var content=this.et2.getArrayMgr("content").data;if(content.is_plain){var plainText=this.et2.getWidgetById("mail_plaintext");jQuery(plainText.node).focus(),"undefined"!=typeof plainText.node.setSelectionRange&&plainText.node.setSelectionRange(0)}else textAreaWidget.ckeditor.on("instanceReady",function(e){this.focus()})}else to&&jQuery("input",to.node).focus();break;case"mail.subscribe":if(""!=this.subscription_treeLastState){var tree=this.et2.getWidgetById("foldertree"),state=jQuery.parseJSON(this.subscription_treeLastState);tree.input.loadJSONObject(tree._htmlencode_node(state))}break;case"mail.folder_management":this.egw.message(this.egw.lang("If you would like to select multiple folders in one action, you can hold ctrl key then select a folder as start range and another folder within a same level as end range, all folders in between will be selected or unselected based on their current status."),"info",!0)}},observer:function(_msg,_app,_id,_type,_msg_type,_links){switch(_app){case"mail":if("sieve"===_id){var iframe=this.et2.getWidgetById("extra_iframe");if(iframe&&iframe.getDOMNode()){var contentWindow=iframe.getDOMNode().contentWindow;contentWindow&&contentWindow.app&&contentWindow.app.mail&&contentWindow.app.mail.sieve_refresh()}return!1}break;case"emailadmin":var tree=this.et2?this.et2.getWidgetById(this.nm_index+"[foldertree]"):null;if(!tree)break;var node=tree.getNode(_id);switch(_type){case"delete":node&&tree.deleteItem(_id);break;case"update":case"edit":node&&egw.json("mail.mail_ui.ajax_reloadNode",[_id]).sendRequest(!0);break;case"add":tree.refreshItem(0)}}},nm_cache:function(query_context){return query_context&&query_context.start||0!=query_context.count||!query_context.filters||!query_context.filters.selectedFolder||!query_context.filters||query_context.filters.search?!1:this.egw.jsonEncode({selectedFolder:query_context.filters.selectedFolder||"",cat_id:query_context.filters.cat_id||"",filter:query_context.filters.filter||"",filter2:query_context.filters.filter2||"",sort:query_context.filters.sort})},mail_rebuildActionsOnList:function(_actions){this.et2.getWidgetById(this.nm_index).set_actions(_actions)},mail_fetchCurrentlyFocussed:function(_selected,_reset){if(1==_reset||"undefined"==typeof _selected){if(1==_reset){""!=this.mail_currentlyFocussed&&egw.dataRefreshUID(this.mail_currentlyFocussed);for(var k=0;k=0||dataElem.data.class.indexOf("recent")>=0)&&(this.mail_removeRowClass(messages,"recent"),this.mail_removeRowClass(messages,"unseen"),this.mail_reduceCounterWithoutServerRoundtrip())},mail_openAsHtml:function(_action,_elems){this.mail_open(_action,_elems,"tryashtml")},mail_openAsText:function(_action,_elems){this.mail_open(_action,_elems,"tryastext")},mail_compose:function(_action,_elems){if("undefined"==typeof _elems||0==_elems.length){if(this.et2&&this.et2.getArrayMgr("content").getEntry("mail_id")){var _elems=[];_elems.push({id:this.et2.getArrayMgr("content").getEntry("mail_id")||""})}if(("undefined"==typeof _elems||0==_elems.length)&&this.mail_isMainWindow&&this.mail_currentlyFocussed){var _elems=[];_elems.push({id:this.mail_currentlyFocussed})}}var settings={id:"",from:""};switch(settings.id="undefined"==typeof _elems?"":_elems[0].id,_action.id){case"compose":if(1!=_elems.length)return this.mail_compose("forward",_elems);break;case"forward":case"forwardinline":case"forwardasattach":if(_elems.length>1||"forwardasattach"==_action.id){if(settings.from="forward",settings.mode="forwardasattach","undefined"!=typeof _elems&&_elems.length>1)for(var j=1;j<_elems.length;j++)settings.id=settings.id+","+_elems[j].id}else settings.from="forward",settings.mode="forwardinline";break;default:settings.from=_action.id}var compose_list=egw.getOpenWindows("mail",/^compose_/),window_name="compose_"+compose_list.length+"_"+(settings.from||"")+"_"+settings.id;return egw().open("","mail","add",settings,window_name,"mail")},setCompose:function(window_name,content){var compose=window.open("",window_name);if(!compose||compose.closed)return!1;var compose_et2=compose.etemplate2.getByApplication("mail");if(!compose_et2||1!=compose_et2.length||!compose_et2[0].widgetContainer)return!1;var success=!0,arrContent=[];for(var field in content)try{var widget=compose_et2[0].widgetContainer.getWidgetById(field),value=widget.getValue()||content[field];if(jQuery.isArray(value))if(jQuery.isArray(content[field]))value.concat(content[field]);else{arrContent=content[field].split(",");for(var k=0;k=0;i--)children[i].destroy(),widget.removeChild(children[i]);1==content.length&&"undefined"!=typeof content[0]&&content[0]&&(content=content[0].split(","));for(var remembervalue="",i=0;i=widget.getDOMNode().scrollWidth&&$j(widget.getDOMNode()).innerHeight()>=widget.getDOMNode().scrollHeight)},this,et2_button)}}return _dataElem},mail_display:function(){var dataElem={data:{FROM:"",SENDER:"",TO:"",CC:"",BCC:""}},content=this.et2.getArrayMgr("content").data,expand_content=[{build_children:!0,data_one:"FROM",data:"FROM",widget:"FROM",line:"mailDisplayHeadersFrom"},{build_children:!0,data:"SENDER",widget:"SENDER",line:"mailDisplayHeadersSender"},{build_children:!0,data:"TO",widget:"TO",line:"mailDisplayHeadersTo"},{build_children:!0,data:"CC",widget:"CC",line:"mailDisplayHeadersCc"},{build_children:!0,data:"BCC",widget:"BCC",line:"mailDisplayHeadersBcc"}];if("undefiend"!=typeof content){dataElem.data=jQuery.extend(dataElem.data,content),this.url_email_expandOnClick(expand_content,dataElem);var toolbaractions="undefined"!=typeof dataElem&&"undefined"!=typeof dataElem.data&&"undefined"!=typeof dataElem.data.displayToolbaractions?JSON.parse(dataElem.data.displayToolbaractions):void 0;toolbaractions&&this.et2.getWidgetById("displayToolbar").set_actions(toolbaractions)}},mail_preview:function(selected,nextmatch){var dataElem={data:{subject:"",fromaddress:"",toaddress:"",ccaddress:"",date:"",attachmentsBlock:""}},attachmentArea=this.et2.getWidgetById("previewAttachmentArea");if("undefined"!=typeof selected&&1==selected.length){var _id=this.mail_fetchCurrentlyFocussed(selected);dataElem=jQuery.extend(dataElem,egw.dataGetUIDdata(_id)),dataElem.data&&dataElem.data.attachmentsBlock[0]&&dataElem.data.attachmentsBlock[0].winmailFlag&&("application/ms-tnef"==dataElem.data.attachmentsBlock[0].mimetype||"winmail.dat"==dataElem.data.attachmentsBlock[0].filename)&&(attachmentArea.getDOMNode().classList.add("loading"),this.egw.jsonq("mail.mail_ui.ajax_resolveWinmail",[_id],jQuery.proxy(function(_data){attachmentArea.getDOMNode().classList.remove("loading"),"object"==typeof _data?(attachmentArea.set_value({content:_data}),this.data.attachmentsBlock=_data,egw.dataStoreUID(this.data.uid,this.data),set_prev_iframe_top()):console.log("Can not resolve the winmail.data!")},dataElem)))}var $preview_iframe=jQuery("#mail-index_mailPreviewContainer"),set_prev_iframe_top=function(){window.setTimeout(function(){for(var lastEl=$preview_iframe.prev().prev(),iframeTop=$preview_iframe.offset().top;"none"===lastEl.css("display");)lastEl=lastEl.prev();var offset=iframeTop-(lastEl.offset().top+lastEl.height())||130;$preview_iframe.css("top",$preview_iframe.position().top-offset+10)},50)};if(attachmentArea&&"undefined"!=typeof _id&&""!=_id&&"undefined"!=typeof dataElem){set_prev_iframe_top();var data_widgets={previewFromAddress:"fromaddress",previewDate:"date",previewSubject:"subject"};for(var id in data_widgets){var widget=this.et2.getWidgetById(id);null!=widget&&widget.set_value(dataElem.data[data_widgets[id]]||"")}var IframeHandle=this.et2.getWidgetById("messageIFRAME");IframeHandle.set_src("about:blank"),jQuery(IframeHandle.getDOMNode()).show().next(this.mailvelope_iframe_selector).remove();var expand_content=[{build_children:!0,data_one:"toaddress",data:"additionaltoaddress",widget:"additionalToAddress",line:"mailPreviewHeadersTo"},{build_children:!0,data:"ccaddress",widget:"additionalCCAddress",line:"mailPreviewHeadersCC"},{build_children:!1,data:"attachmentsBlock",widget:"previewAttachmentArea",line:"mailPreviewHeadersAttachments"}];dataElem=this.url_email_expandOnClick(expand_content,dataElem),this.mail_selectedMails.indexOf(_id)<0&&this.mail_selectedMails.push(_id),this.mail_disablePreviewArea(!1),IframeHandle.set_src(egw.link("/index.php",{menuaction:"mail.mail_ui.loadEmailBody",_messageID:_id}));var messages={};if(messages.msg=[_id],"undefined"!=typeof dataElem&&"undefined"!=typeof dataElem.data&&"undefined"!=typeof dataElem.data.flags&&"undefined"!=typeof dataElem.data.flags.read&&(dataElem.data.flags.read="read"),"undefined"!=typeof dataElem&&"undefined"!=typeof dataElem.data&&"undefined"!=typeof dataElem.data.class&&(dataElem.data.class.indexOf("unseen")>=0||dataElem.data.class.indexOf("recent")>=0)){if(this.mail_removeRowClass(messages,"recent"),this.mail_removeRowClass(messages,"unseen"),this.mail_reduceCounterWithoutServerRoundtrip(),"undefined"!=typeof dataElem.data.dispositionnotificationto&&dataElem.data.dispositionnotificationto&&"undefined"==typeof dataElem.data.flags.mdnsent&&"undefined"==typeof dataElem.data.flags.mdnnotsent){var buttons=[{text:this.egw.lang("Yes"),id:"mdnsent"},{text:this.egw.lang("No"),id:"mdnnotsent"}];et2_dialog.show_dialog(function(_button_id,_value){switch(_button_id){case"mdnsent":return egw.jsonq("mail.mail_ui.ajax_sendMDN",[messages]),void egw.jsonq("mail.mail_ui.ajax_flagMessages",["mdnsent",messages,!0]);case"mdnnotsent":egw.jsonq("mail.mail_ui.ajax_flagMessages",["mdnnotsent",messages,!0])}},this.egw.lang("The message sender has requested a response to indicate that you have read this message. Would you like to send a receipt?"),this.egw.lang("Confirm"),messages,buttons)}egw.jsonq("mail.mail_ui.ajax_flagMessages",["read",messages,!1])}}else{var prevAttchArea=this.et2.getWidgetById("previewAttachmentArea");if(prevAttchArea){prevAttchArea.set_value({content:[]}),this.et2.getWidgetById("previewAttachmentArea").set_class("previewAttachmentArea noContent mail_DisplayNone");var IframeHandle=this.et2.getWidgetById("messageIFRAME");IframeHandle.set_src("about:blank"),this.mail_disablePreviewArea(!0)}}},showAllHeader:function(event,widget,button){var list=jQuery(button).prev();list.toggleClass("visible"),$j("body").one("click",list,function(ev){ev.data.removeClass("visible")})},mail_setMailBody:function(content){var IframeHandle=this.et2.getWidgetById("messageIFRAME");IframeHandle.set_value("")},mail_refreshFolderStatus:function(_nodeID,mode,_refreshGridArea,_refreshQuotaDisplay){"undefined"!=typeof _nodeID&&"undefined"!=typeof _nodeID[_nodeID]&&_nodeID[_nodeID]&&(_refreshGridArea=_nodeID[_refreshGridArea],mode=_nodeID[mode],_nodeID=_nodeID[_nodeID]);var nodeToRefresh=0,mode2use="none";"undefined"==typeof _refreshGridArea&&(_refreshGridArea=!0),"undefined"==typeof _refreshQuotaDisplay&&(_refreshQuotaDisplay=!0),_nodeID&&(nodeToRefresh=_nodeID),mode&&"forced"==mode&&(mode2use=mode);try{var tree_wdg=this.et2.getWidgetById(this.nm_index+"[foldertree]"),activeFolders=tree_wdg.getTreeNodeOpenItems(nodeToRefresh,mode2use);this.mail_queueRefreshFolderList("thisfolderonly"==mode&&nodeToRefresh?[_nodeID]:activeFolders),_refreshGridArea&&this.mail_refreshMessageGrid(),_refreshQuotaDisplay&&this.mail_refreshQuotaDisplay()}catch(e){}},mail_refreshQuotaDisplay:function(_server){egw.json("mail.mail_ui.ajax_refreshQuotaDisplay",[_server]).sendRequest(!0)},mail_setQuotaDisplay:function(_data){if(this.et2||this.checkET2()){var quotabox=this.et2.getWidgetById(this.nm_index+"[quotainpercent]");quotabox&&(quotabox.set_class(_data.data.quotaclass),quotabox.set_value(_data.data.quotainpercent),quotabox.set_label(_data.data.quota))}},mail_callRefreshVacationNotice:function(_server){egw.jsonq("mail_ui::ajax_refreshVacationNotice",[_server])},register_for_drag:function(mail_id,attachments){var data={};if(attachments)for(var i=0;i1?_elems.length+" "+this.egw.lang("files"):data.name||""),div.append(text),window.FileReader&&"draggable"in document.createElement("span")&&navigator&&navigator.userAgent.indexOf("Chrome")>=0){var key=["Mac68K","MacPPC","MacIntel"].indexOf(window.navigator.platform)<0?"Ctrl":"Command";text.append("
"+this.egw.lang("Hold %1 to drag files to your computer",key))}return div},mail_refreshVacationNotice:function(_data){(this.et2||this.checkET2())&&(null==_data?(this.et2.getWidgetById(this.nm_index+"[vacationnotice]").set_value(""),this.et2.getWidgetById(this.nm_index+"[vacationrange]").set_value("")):(this.et2.getWidgetById(this.nm_index+"[vacationnotice]").set_value(_data.vacationnotice),this.et2.getWidgetById(this.nm_index+"[vacationrange]").set_value(_data.vacationrange)))},mail_refreshFilter2Options:function(_data){if(null!=_data&&(this.et2||this.checkET2())){var filter2=this.et2.getWidgetById("filter2"),current=filter2.value,currentexists=!1;for(var k in _data)k==current&&(currentexists=!0);currentexists||filter2.set_value(""),filter2.set_select_options(_data)}},mail_refreshFilterOptions:function(_data){if(null!=_data&&(this.et2||this.checkET2())){var filter=this.et2.getWidgetById("filter"),current=filter.value,currentexists=!1;for(var k in _data)k==current&&(currentexists=!0);currentexists||filter.set_value("any"),filter.set_select_options(_data)}},mail_refreshCatIdOptions:function(_data){if(null!=_data&&(this.et2||this.checkET2())){var filter=this.et2.getWidgetById("cat_id"),current=filter.value,currentexists=!1;for(var k in _data)k==current&&(currentexists=!0);currentexists||filter.set_value("quick"),filter.set_select_options(_data)}},mail_queueRefreshFolderList:function(_folders){var self=this;window.setTimeout(function(){egw.jsonq("mail.mail_ui.ajax_setFolderStatus",[_folders],function(){self.unlock_tree()})},100)},mail_CheckFolderNoSelect:function(action,_senders,_currentNode){var ftree,node;return ftree=this.et2.getWidgetById(this.nm_index+"[foldertree]"),ftree&&(node=ftree.getNode(_senders[0].id)),!node||-1===node.im0.indexOf("NoSelect")},spamfolder_enabled:function(_action,_senders,_currentNode){var ftree=this.et2.getWidgetById(this.nm_index+"[foldertree]"),acc_id=_senders[0].id.split("::")[0],node=ftree?ftree.getNode(acc_id):null;return node&&node.data&&node.data.spamfolder},sieve_enabled:function(_action,_senders,_currentNode){var ftree=this.et2.getWidgetById(this.nm_index+"[foldertree]"),acc_id=_senders[0].id.split("::")[0],node=ftree?ftree.getNode(acc_id):null;return node&&node.data&&node.data.sieve},acl_enabled:function(_action,_senders,_currentNode){var ftree=this.et2.getWidgetById(this.nm_index+"[foldertree]"),inbox=_senders[0].id.split("::")[0]+"::INBOX",node=ftree?ftree.getNode(inbox):null;return node&&node.data.acl&&this.mail_CheckFolderNoSelect(_action,_senders,_currentNode)},mail_setFolderStatus:function(_status){if(this.et2||this.checkET2()){var ftree=this.et2.getWidgetById(this.nm_index+"[foldertree]");for(var i in _status)ftree.setLabel(i,_status[i]),ftree.setStyle(i,"font-weight: "+(_status[i].match(this._unseen_regexp)?"bold":"normal"))}},mail_setLeaf:function(_status){var ftree=this.et2.getWidgetById(this.nm_index+"[foldertree]"),selectedNode=ftree.getSelectedNode();for(var i in _status)if("undefined"!=typeof _status[i].olddesc&&"#skip-user-interaction-message#"!==_status[i].olddesc&&this.egw.message(this.egw.lang("Renamed Folder %1 to %2",_status[i].olddesc,_status[i].desc)),ftree.renameItem(i,_status[i].id,_status[i].desc),ftree.setStyle(i,"font-weight: "+(_status[i].desc.match(this._unseen_regexp)?"bold":"normal")),_status[i].id==selectedNode.id){var nm=this.et2.getWidgetById(this.nm_index);nm.activeFilters.selectedFolder=_status[i].id,nm.applyFilters()}},mail_removeLeaf:function(_status){var ftree=this.et2.getWidgetById(this.nm_index+"[foldertree]"),selectedNode=ftree.getSelectedNode();for(var i in _status){"undefined"!=typeof _status[i]&&"#skip-user-interaction-message#"!==_status[i]&&this.egw.message(this.egw.lang("Removed Folder %1 ",_status[i])),ftree.deleteItem(i,selectedNode.id==i);var selectedNodeAfter=ftree.getSelectedNode();if(selectedNodeAfter.id!=selectedNode.id&&selectedNode.id==i){var nm=this.et2.getWidgetById(this.nm_index);nm.activeFilters.selectedFolder=selectedNodeAfter.id,nm.applyFilters()}}},mail_reloadNode:function(_status){var ftree=this.et2?this.et2.getWidgetById(this.nm_index+"[foldertree]"):null;if(ftree){var selectedNode=ftree.getSelectedNode();for(var i in _status)"undefined"!=typeof _status[i]&&"#skip-user-interaction-message#"!==_status[i]&&("undefined"!=typeof _status[i].parent?this.egw.message(this.egw.lang("Reloaded Folder %1","string"==typeof _status[i]?_status[i].replace(this._unseen_regexp,""):_status[i].text.replace(this._unseen_regexp,""))):this.egw.message(this.egw.lang("Reloaded Account %1","string"==typeof _status[i]?_status[i].replace(this._unseen_regexp,""):_status[i].text.replace(this._unseen_regexp,"")))),ftree.refreshItem(i,"object"==typeof _status[i]?_status[i]:null),"string"==typeof _status[i]&&ftree.setStyle(i,"font-weight: "+(_status[i].match(this._unseen_regexp)?"bold":"normal"));var selectedNodeAfter=ftree.getSelectedNode();if(null!=selectedNodeAfter&&selectedNodeAfter.id!=selectedNode.id){var nm=this.et2.getWidgetById(this.nm_index);nm.activeFilters.selectedFolder=selectedNodeAfter.id,nm.applyFilters()}}},mail_refreshMessageGrid:function(_isPopup){"undefined"==typeof _isPopup&&(_isPopup=!1);var nm;nm=_isPopup&&!this.mail_isMainWindow?window.opener.etemplate2.getByApplication("mail")[0].widgetContainer.getWidgetById(this.nm_index):this.et2.getWidgetById(this.nm_index),nm.applyFilters()},mail_getMsg:function(){var msg_wdg=this.et2.getWidgetById("msg");return msg_wdg?msg_wdg.valueOf().htmlNode[0].innerHTML:""},mail_setMsg:function(myMsg){var msg_wdg=this.et2.getWidgetById("msg");msg_wdg&&(msg_wdg.set_value(myMsg),msg_wdg.set_disabled(0==myMsg.trim().length))},mail_delete:function(_action,_elems){this.mail_checkAllSelected(_action,_elems,null,!0)},mail_callDelete:function(_action,_elems,_allMessagesChecked){var calledFromPopup=!1;if("undefined"==typeof _allMessagesChecked&&(_allMessagesChecked=!1),"undefined"==typeof _elems||0==_elems.length){if(calledFromPopup=!0,this.et2.getArrayMgr("content").getEntry("mail_id")){var _elems=[];_elems.push({id:this.et2.getArrayMgr("content").getEntry("mail_id")||""})}if(("undefined"==typeof _elems||0==_elems.length)&&this.mail_isMainWindow&&this.mail_currentlyFocussed){var _elems=[];_elems.push({id:this.mail_currentlyFocussed})}}var msg=this.mail_getFormData(_elems);return msg.all=_allMessagesChecked,"cancel"==msg.all?!1:(msg.all&&(msg.activeFilters=this.mail_getActiveFilters(_action)),calledFromPopup||this.mail_setRowClass(_elems,"deleted"),this.mail_deleteMessages(msg,"no",calledFromPopup),void(calledFromPopup&&0==this.mail_isMainWindow&&egw(window).close()))},mail_reduceCounterWithoutServerRoundtrip:function(){var ftree=this.et2.getWidgetById(this.nm_index+"[foldertree]"),_foldernode=ftree.getSelectedNode(),counter=_foldernode.label.match(this._unseen_regexp),icounter=0;if(counter&&(icounter=parseInt(counter[0].replace(" (","").replace(")",""))),icounter>0){var newcounter=icounter-1;newcounter>0&&(_foldernode.label=_foldernode.label.replace(" ("+String(icounter)+")"," ("+String(newcounter)+")")),0==newcounter&&(_foldernode.label=_foldernode.label.replace(" ("+String(icounter)+")","")),ftree.setLabel(_foldernode.id,_foldernode.label)}},_unseen_regexp:/ \([0-9]+\)$/,mail_splitRowId:function(_rowID){var res=_rowID.split("::");return 4!=res.length||isNaN(parseInt(res[0]))||res.unshift("mail"),res},mail_deleteMessages:function(_msg,_action,_calledFromPopup){var message,ftree,_foldernode,displayname;ftree=this.et2.getWidgetById(this.nm_index+"[foldertree]"),ftree?(_foldernode=ftree.getSelectedNode(),displayname=_foldernode.label.replace(this._unseen_regexp,"")):(message=this.mail_splitRowId(_msg.msg[0]),message[3]&&(_foldernode=displayname=jQuery.base64Decode(message[3]))),egw.json("mail.mail_ui.ajax_deleteMessages",[_msg,"undefined"==typeof _action?"no":_action]).sendRequest(!0),_msg.all&&this.egw.refresh(this.egw.lang("deleted %1 messages in %2",_msg.all?egw.lang("all"):_msg.msg.length,displayname?displayname:egw.lang("current folder")),"mail"),this.egw.message(this.egw.lang("deleted %1 messages in %2",_msg.all?egw.lang("all"):_msg.msg.length,displayname?displayname:egw.lang("current Folder")))},mail_deleteMessagesShowResult:function(_msg){for(var ids=[],i=0;i<_msg.msg.length;i++)ids.push(_msg.msg[i].replace(/mail::/,""));_msg.all?this.egw.refresh(_msg.egw_message,"mail"):(this.egw.refresh(_msg.egw_message,"mail",ids,"delete"),this.et2.getWidgetById(this.nm_index).controller._selectionMgr.resetSelection())},mail_retryForcedDelete:function(responseObject){var reason=responseObject.response,messageList=responseObject.messageList;confirm(reason)?this.mail_deleteMessages(messageList,"remove_immediately"):(this.egw.message(this.egw.lang("canceled deletion due to userinteraction")),this.mail_removeRowClass(messageList,"deleted")),this.mail_refreshMessageGrid(),this.mail_preview()},mail_undeleteMessages:function(_messageList){},mail_emptySpam:function(action,_senders){var server=_senders[0].iface.id.split("::"),activeFilters=this.mail_getActiveFilters(),self=this;if(this.egw.message(this.egw.lang("empty junk")),egw.json("mail.mail_ui.ajax_emptySpam",[server[0],activeFilters.selectedFolder?activeFilters.selectedFolder:null],function(){self.unlock_tree()}).sendRequest(!0),window.localStorage)for(var i=0;i0&&window.localStorage.removeItem(key)}},mail_emptyTrash:function(action,_senders){var server=_senders[0].iface.id.split("::"),activeFilters=this.mail_getActiveFilters(),self=this;if(this.egw.message(this.egw.lang("empty trash")),egw.json("mail.mail_ui.ajax_emptyTrash",[server[0],activeFilters.selectedFolder?activeFilters.selectedFolder:null],function(){self.unlock_tree()}).sendRequest(!0),window.localStorage)for(var i=0;i0&&window.localStorage.removeItem(key)}},mail_compressFolder:function(action,_senders){this.egw.message(this.egw.lang("compress folder")),egw.jsonq("mail.mail_ui.ajax_compressFolder",[_senders[0].iface.id])},mail_changeProfile:function(folder,_widget,getFolders){return"undefined"==typeof getFolders&&(getFolders=!0),this.egw.message(this.egw.lang("Connect to Profile %1",_widget.getSelectedLabel().replace(this._unseen_regexp,""))),_widget.openItem(folder,!0),this.lock_tree(),egw.json("mail_ui::ajax_changeProfile",[folder,getFolders,this.et2._inst.etemplate_exec_id],jQuery.proxy(function(){var inbox=folder+"::INBOX";_widget.reSelectItem(inbox),this.mail_changeFolder(inbox,_widget,""),this.unlock_tree()},this)).sendRequest(!0),!0},mail_changeFolder:function(_folder,_widget,_previous){this.loadIframe();var img=_widget.getSelectedNode().images[0];if(-1!==img.indexOf("NoSelect"))return void _widget.reSelectItem(_previous);var server=_folder.split("::"),previousServer=_previous.split("::"),profile_selected=-1===_folder.indexOf("::");if(server[0]!=previousServer[0]&&profile_selected)return this.mail_changeProfile(_folder,_widget,0==_widget.getSelectedNode().childsCount);var nm=_widget.getRoot().getWidgetById(this.nm_index);if(nm&&(this.lock_tree(),nm.applyFilters({selectedFolder:_folder})),!profile_selected){var displayname=_widget.getSelectedLabel(),myMsg=(displayname?displayname:_folder).replace(this._unseen_regexp,"")+" "+this.egw.lang("selected");this.egw.message(myMsg)}this.mail_refreshFolderStatus(_folder,"forced",!1,!1),this.mail_refreshQuotaDisplay(server[0]),this.mail_preview(),server[0]!=previousServer[0]&&(this.mail_callRefreshVacationNotice(server[0]),egw.jsonq("mail.mail_ui.ajax_refreshFilters",[server[0]]))},mail_checkAllSelected:function(_action,_elems,_target,_confirm){"undefined"==typeof _confirm&&(_confirm=!1);var obj_manager=egw_getObjectManager(this.appname).getObjectById(this.nm_index),that=this,rvMain=!1; +if(obj_manager&&_elems.length>1&&obj_manager.getAllSelected()&&!_action.paste||"readall"==_action.id){if(_confirm){var buttons=[{text:this.egw.lang("Yes"),id:"all",class:"ui-priority-primary",default:!0},{text:this.egw.lang("Cancel"),id:"cancel"}],messageToDisplay="",actionlabel=_action.id;switch(_action.id){case"readall":messageToDisplay=this.egw.lang("Do you really want to mark ALL messages as read in the current folder?")+" ";break;case"unlabel":messageToDisplay=this.egw.lang("Do you really want to remove ALL labels from ALL messages in the current folder?")+" ";break;case"label1":"label1"==_action.id&&(actionlabel="important");case"label2":"label2"==_action.id&&(actionlabel="job");case"label3":"label3"==_action.id&&(actionlabel="personal");case"label4":"label4"==_action.id&&(actionlabel="to do");case"label5":"label5"==_action.id&&(actionlabel="later");case"flagged":case"read":case"undelete":messageToDisplay=this.egw.lang("Do you really want to toggle flag %1 for ALL messages in the current view?",this.egw.lang(actionlabel))+" ","label"==_action.id.substr(0,5)&&(messageToDisplay=this.egw.lang("Do you really want to toggle label %1 for ALL messages in the current view?",this.egw.lang(actionlabel))+" ");break;default:var type=null;"move"!=_action.id.substr(0,4)&&"drop_move_mail"!==_action.id||(type="Move"),"copy"!=_action.id.substr(0,4)&&"drop_copy_mail"!==_action.id||(type="Copy"),messageToDisplay=this.egw.lang("Do you really want to apply %1 to ALL messages in the current view?",this.egw.lang(type?type:_action.id))+" "}return et2_dialog.show_dialog(function(_button_id){var rv=!1;switch(_button_id){case"all":rv=!0;break;case"cancel":rv="cancel"}switch("cancel"!=rv&&that.lock_tree(),_action.id){case"delete":that.mail_callDelete(_action,_elems,rv);break;case"readall":case"unlabel":case"label1":case"label2":case"label3":case"label4":case"label5":case"flagged":case"read":case"undelete":that.mail_callFlagMessages(_action,_elems,rv);break;case"drop_move_mail":that.mail_callMove(_action,_elems,_target,rv);break;case"drop_copy_mail":that.mail_callCopy(_action,_elems,_target,rv);break;default:"move"==_action.id.substr(0,4)&&that.mail_callMove(_action,_elems,_target,rv),"copy"==_action.id.substr(0,4)&&that.mail_callCopy(_action,_elems,_target,rv)}},messageToDisplay,this.egw.lang("Confirm"),_action.id,buttons)}rvMain=!0}switch(_action.id){case"delete":this.mail_callDelete(_action,_elems,rvMain);break;case"unlabel":case"label1":case"label2":case"label3":case"label4":case"label5":case"flagged":case"read":case"undelete":this.mail_callFlagMessages(_action,_elems,rvMain);break;case"drop_move_mail":this.mail_callMove(_action,_elems,_target,rvMain);break;case"drop_copy_mail":this.mail_callCopy(_action,_elems,_target,rvMain);break;default:"move"==_action.id.substr(0,4)&&this.mail_callMove(_action,_elems,_target,rvMain),"copy"==_action.id.substr(0,4)&&this.mail_callCopy(_action,_elems,_target,rvMain)}},mail_doActionCall:function(_action,_elems){},mail_getActiveFilters:function(_action){var obj_manager=egw_getObjectManager(this.appname).getObjectById(this.nm_index);return obj_manager&&obj_manager.manager&&obj_manager.manager.data&&obj_manager.manager.data.nextmatch&&obj_manager.manager.data.nextmatch.activeFilters?obj_manager.manager.data.nextmatch.activeFilters:!1},mail_flag:function(_action,_elems){this.mail_checkAllSelected(_action,_elems,null,!0)},mail_callFlagMessages:function(_action,_elems,_allMessagesChecked){var folder="",tree={},formData={},data={msg:[this.et2.getArrayMgr("content").getEntry("mail_id")]||"",all:_allMessagesChecked||!1,popup:egw(window).is_popup()||!1,activeFilters:"readall"==_action.id?!1:this.mail_getActiveFilters(_action)},rowClass=_action.id;switch("undefined"==typeof _elems||0==_elems.length?this.mail_isMainWindow&&this.mail_currentlyFocussed&&(data.msg=[this.mail_currentlyFocussed],_elems=data,data.msg=this.mail_getFormData(_elems).msg):data.msg=this.mail_getFormData(_elems).msg,_action.id){case"read":rowClass="seen",tree=data.popup?opener.etemplate2.getByApplication("mail")[0].widgetContainer.getWidgetById(this.nm_index+"[foldertree]"):this.et2.getWidgetById(this.nm_index+"[foldertree]"),folder=tree.getSelectedNode().id;break;case"readall":rowClass="seen";break;case"label1":rowClass="labelone";break;case"label2":rowClass="labeltwo";break;case"label3":rowClass="labelthree";break;case"label4":rowClass="labelfour";break;case"label5":rowClass="labelfive"}if(jQuery(data).extend({},data,formData),"cancel"==data.all)return!1;if("un"==_action.id.substring(0,2))if("unlabel"==_action.id){for(var labels=["labelone","labeltwo","labelthree","labelfour","labelfive"],i=0;i=0&&classes.splice(classes.indexOf(rowClass),1),classes.indexOf("un"+rowClass)>=0&&classes.splice(classes.indexOf("un"+rowClass),1),flags[_action.id]?(msg_unset.msg.push(data.msg[i]),classes.push("un"+rowClass),delete flags[_action.id]):(msg_set.msg.push(data.msg[i]),flags[_action.id]=_action.id,classes.push(rowClass)),dataElem.data.class=classes.join(" "),egw.dataStoreUID(data.msg[i],dataElem.data),this.updateFilter_data(data.msg[i],_action.id,data.activeFilters);return msg_unset.msg&&msg_unset.msg.length&&(data.all||this.mail_flagMessages("un"+_action.id,msg_unset)),msg_set.msg&&msg_set.msg.length&&(data.all||this.mail_flagMessages(_action.id,msg_set)),data.all&&this.mail_flagMessages(_action.id,data),void("read"==_action.id&&this.mail_refreshFolderStatus(folder,"thisfolderonly",!1,!0))}this.mail_flagMessages("read",data)}},updateFilter_data:function(_uid,_actionId,_filters){var uid=_uid.replace("mail::",""),action="";switch(_actionId){case"flagged":action="flagged";break;case"read":"seen"==_filters.filter?action="seen":"unseen"==_filters.filter&&(action="unseen");break;case"label1":action="keyword1";break;case"label2":action="keyword2";break;case"label3":action="keyword3";break;case"label4":action="keyword4";break;case"label4":action="keyword4"}action==_filters.filter&&egw.refresh("","mail",uid,"delete")},mail_flagMessages:function(_flag,_elems,_isPopup){egw.jsonq("mail.mail_ui.ajax_flagMessages",[_flag,_elems])},mail_displayHeaderLines:function(_url){egw_openWindowCentered(_url,"mail_display_headerLines","870","600",window.outerWidth/2,window.outerHeight/2)},mail_header:function(_action,_elems){if("undefined"==typeof _elems||0==_elems.length){if(this.et2.getArrayMgr("content").getEntry("mail_id")){var _elems=[];_elems.push({id:this.et2.getArrayMgr("content").getEntry("mail_id")||""})}if(("undefined"==typeof _elems||0==_elems.length)&&this.mail_isMainWindow&&this.mail_currentlyFocussed){var _elems=[];_elems.push({id:this.mail_currentlyFocussed})}}var url=window.egw_webserverUrl+"/index.php?";url+="menuaction=mail.mail_ui.displayHeader",url+="&id="+_elems[0].id,this.mail_displayHeaderLines(url)},mail_mailsource:function(_action,_elems){if("undefined"==typeof _elems||0==_elems.length){if(this.et2.getArrayMgr("content").getEntry("mail_id")){var _elems=[];_elems.push({id:this.et2.getArrayMgr("content").getEntry("mail_id")||""})}if(("undefined"==typeof _elems||0==_elems.length)&&this.mail_isMainWindow&&this.mail_currentlyFocussed){var _elems=[];_elems.push({id:this.mail_currentlyFocussed})}}var url=window.egw_webserverUrl+"/index.php?";url+="menuaction=mail.mail_ui.saveMessage",url+="&id="+_elems[0].id,url+="&location=display",this.mail_displayHeaderLines(url)},mail_save:function(_action,_elems){if("undefined"==typeof _elems||0==_elems.length){if(this.et2.getArrayMgr("content").getEntry("mail_id")){var _elems=[];_elems.push({id:this.et2.getArrayMgr("content").getEntry("mail_id")||""})}if(("undefined"==typeof _elems||0==_elems.length)&&this.mail_isMainWindow&&this.mail_currentlyFocussed){var _elems=[];_elems.push({id:this.mail_currentlyFocussed})}}var url=window.egw_webserverUrl+"/index.php?";url+="menuaction=mail.mail_ui.saveMessage",url+="&id="+_elems[0].id,this.et2._inst.download(url)},address_click:function(tag_info,widget){},displayAttachment:function(tag_info,widget,calledForCompose){var mailid,attgrid;if("undefined"!=typeof calledForCompose&&"object"!=typeof calledForCompose||(calledForCompose=!1),calledForCompose===!1)if(this.mail_isMainWindow){mailid=this.mail_currentlyFocussed;var p=widget.getParent(),cont=p.getArrayMgr("content").data;attgrid=cont[widget.id.replace(/\[filename\]/,"")]}else mailid=this.et2.getArrayMgr("content").getEntry("mail_id"),attgrid=this.et2.getArrayMgr("content").getEntry("mail_displayattachments")[widget.id.replace(/\[filename\]/,"")];if(calledForCompose===!0){attgrid=this.et2.getArrayMgr("content").getEntry("attachments")[widget.id.replace(/\[name\]/,"")];var mailids=this.et2.getArrayMgr("content").getEntry("processedmail_id"),mailida=mailids.split(",");if(mailid=1==mailida.length?mailida[0]:mailida[widget.id.replace(/\[name\]/,"")],"undefined"!=typeof attgrid.uid&&attgrid.uid&&-1==mailid.indexOf(attgrid.uid))for(var i=0;i-1&&(mailid=mailida[i])}var width,height,url=window.egw_webserverUrl+"/index.php?",windowName="mail";switch(attgrid.type.toUpperCase()){case"MESSAGE/RFC822":url+="menuaction=mail.mail_ui.displayMessage",url+="&mode=display",url+="&id="+mailid,url+="&part="+attgrid.partID,url+="&is_winmail="+attgrid.winmailFlag,windowName=windowName+"displayMessage_"+mailid+"_"+attgrid.partID,width=870,height=egw_getWindowOuterHeight();break;case"IMAGE/JPEG":case"IMAGE/PNG":case"IMAGE/GIF":case"IMAGE/BMP":case"APPLICATION/PDF":case"TEXT/PLAIN":case"TEXT/HTML":case"TEXT/DIRECTORY":case"TEXT/X-VCARD":case"TEXT/VCARD":case"TEXT/CALENDAR":case"TEXT/X-VCALENDAR":url+="menuaction=mail.mail_ui.getAttachment",url+="&id="+mailid,url+="&part="+attgrid.partID,url+="&is_winmail="+attgrid.winmailFlag,windowName=windowName+"displayAttachment_"+mailid+"_"+attgrid.partID;var reg2,reg="800x600";"TEXT/CALENDAR"==attgrid.type.toUpperCase()&&(windowName="maildisplayEvent_"+mailid+"_"+attgrid.partID,reg2=egw.link_get_registry("calendar"),"undefined"!=typeof reg2.view&&"undefined"!=typeof reg2.view_popup&&(reg=reg2.view_popup)),"TEXT/X-VCARD"!=attgrid.type.toUpperCase()&&"TEXT/VCARD"!=attgrid.type.toUpperCase()||(windowName="maildisplayContact_"+mailid+"_"+attgrid.partID,reg2=egw.link_get_registry("addressbook"),"undefined"!=typeof reg2.add&&"undefined"!=typeof reg2.add_popup&&(reg=reg2.add_popup));var w_h=reg.split("x");width=w_h[0],height=w_h[1];break;default:url+="menuaction=mail.mail_ui.getAttachment",url+="&id="+mailid,url+="&part="+attgrid.partID,url+="&is_winmail="+attgrid.winmailFlag,windowName=windowName+"displayAttachment_"+mailid+"_"+attgrid.partID,width=870,height=600}egw_openWindowCentered(url,windowName,width,height)},displayUploadedFile:function(tag_info,widget){var attgrid;if(attgrid=this.et2.getArrayMgr("content").getEntry("attachments")[widget.id.replace(/\[name\]/,"")],attgrid.uid&&(attgrid.partID||attgrid.folder))return void this.displayAttachment(tag_info,widget,!0);var width,height,get_param={menuaction:"mail.mail_compose.getAttachment",tmpname:attgrid.tmp_name,etemplate_exec_id:this.et2._inst.etemplate_exec_id},windowName="maildisplayAttachment_"+attgrid.file.replace(/\//g,"_");switch(attgrid.type.toUpperCase()){case"IMAGE/JPEG":case"IMAGE/PNG":case"IMAGE/GIF":case"IMAGE/BMP":case"APPLICATION/PDF":case"TEXT/PLAIN":case"TEXT/HTML":case"TEXT/DIRECTORY":case"TEXT/X-VCARD":case"TEXT/VCARD":case"TEXT/CALENDAR":case"TEXT/X-VCALENDAR":var reg2,reg="800x600";"TEXT/CALENDAR"==attgrid.type.toUpperCase()&&(windowName="maildisplayEvent_"+attgrid.file.replace(/\//g,"_"),reg2=egw.link_get_registry("calendar"),"undefined"!=typeof reg2.view&&"undefined"!=typeof reg2.view_popup&&(reg=reg2.view_popup)),"TEXT/X-VCARD"!=attgrid.type.toUpperCase()&&"TEXT/VCARD"!=attgrid.type.toUpperCase()||(windowName="maildisplayContact_"+attgrid.file.replace(/\//g,"_"),reg2=egw.link_get_registry("addressbook"),"undefined"!=typeof reg2.add&&"undefined"!=typeof reg2.add_popup&&(reg=reg2.add_popup));var w_h=reg.split("x");width=w_h[0],height=w_h[1];break;case"MESSAGE/RFC822":default:get_param.mode="save",width=870,height=600}egw.openPopup(egw.link("/index.php",get_param),width,height,windowName)},saveAttachment:function(tag_info,widget){var mailid,attgrid;if(this.mail_isMainWindow){mailid=this.mail_currentlyFocussed;var p=widget.getParent(),cont=p.getArrayMgr("content").data;attgrid=cont[widget.id.replace(/\[save\]/,"")]}else mailid=this.et2.getArrayMgr("content").getEntry("mail_id"),attgrid=this.et2.getArrayMgr("content").getEntry("mail_displayattachments")[widget.id.replace(/\[save\]/,"")];var url=window.egw_webserverUrl+"/index.php?";url+="menuaction=mail.mail_ui.getAttachment",url+="&mode=save",url+="&id="+mailid,url+="&part="+attgrid.partID,url+="&is_winmail="+attgrid.winmailFlag,this.et2._inst.download(url)},saveAllAttachmentsToZip:function(tag_info,widget){var mailid,attgrid;if(this.mail_isMainWindow){mailid=this.mail_currentlyFocussed;var p=widget.getParent(),cont=p.getArrayMgr("content").data;attgrid=cont[widget.id.replace(/\[save\]/,"")]}else mailid=this.et2.getArrayMgr("content").getEntry("mail_id"),attgrid=this.et2.getArrayMgr("content").getEntry("mail_displayattachments")[widget.id.replace(/\[save\]/,"")];var url=window.egw_webserverUrl+"/index.php?";url+="menuaction=mail.mail_ui.download_zip",url+="&mode=save",url+="&id="+mailid,this.et2._inst.download(url)},saveAttachmentToVFS:function(tag_info,widget){var mailid,attgrid;if(this.mail_isMainWindow){mailid=this.mail_currentlyFocussed;var p=widget.getParent(),cont=p.getArrayMgr("content").data;attgrid=cont[widget.id.replace(/\[saveAsVFS\]/,"")]}else mailid=this.et2.getArrayMgr("content").getEntry("mail_id"),attgrid=this.et2.getArrayMgr("content").getEntry("mail_displayattachments")[widget.id.replace(/\[saveAsVFS\]/,"")];var url=window.egw_webserverUrl+"/index.php?",width=640,height=570,windowName="mail";url+="menuaction=filemanager.filemanager_select.select",url+="&mode=saveas",url+="&id="+mailid+"::"+attgrid.partID+"::"+attgrid.winmailFlag,url+="&name="+attgrid.filename,url+="&type="+attgrid.type.toLowerCase(),url+="&method=mail.mail_ui.vfsSaveAttachment",url+="&label="+egw.lang("Save"),egw_openWindowCentered(url,windowName,width,height)},saveAllAttachmentsToVFS:function(tag_info,widget){var mailid,attgrid;if(this.mail_isMainWindow){mailid=this.mail_currentlyFocussed;var p=widget.getParent();attgrid=p.getArrayMgr("content").data}else mailid=this.et2.getArrayMgr("content").getEntry("mail_id"),attgrid=this.et2.getArrayMgr("content").getEntry("mail_displayattachments");var url=window.egw_webserverUrl+"/index.php?",width=640,height=570,windowName="mail";url+="menuaction=filemanager.filemanager_select.select",url+="&mode=select-dir",url+="&method=mail.mail_ui.vfsSaveAttachment",url+="&label="+egw.lang("Save all");for(var i=0;i0)return _actionObjects;_actionObjects.length>0&&(messages.msg=[]);for(var i=0;i<_actionObjects.length;i++)_actionObjects[i].id.length>0&&(messages.msg[i]=_actionObjects[i].id);return messages},mail_setRowClass:function(_actionObjects,_class){if("undefined"==typeof _class)return!1;if("undefined"==typeof _actionObjects.msg){for(var i=0;i<_actionObjects.length;i++)if(_actionObjects[i].id.length>0&&_actionObjects[i].iface){var dataElem=$j(_actionObjects[i].iface.getDOMNode());dataElem.addClass(_class)}}else for(var i=0;i<_actionObjects.msg.length;i++){var mail_uid=_actionObjects.msg[i],dataElem=egw.dataGetUIDdata(mail_uid);if(null==dataElem||void 0==typeof dataElem)return;switch(dataElem.data.class+=" "+_class,_class){case"unseen":delete dataElem.data.flags.read}egw.dataStoreUID(mail_uid,dataElem.data)}},mail_removeRowClass:function(_actionObjects,_class){if("undefined"==typeof _class)return!1;if("undefined"==typeof _actionObjects.msg){for(var i=0;i<_actionObjects.length;i++)if(_actionObjects[i].id.length>0){var dataElem=$j(_actionObjects[i].iface.getDOMNode());dataElem.removeClass(_class)}}else for(var i=0;i<_actionObjects.msg.length;i++){var mail_uid=_actionObjects.msg[i],dataElem=egw.dataGetUIDdata(mail_uid);if(null==dataElem||void 0==typeof dataElem)return;var classes=dataElem.data.class||"";if(classes=classes.split(" "),classes.indexOf(_class)>=0){switch(classes.splice(classes.indexOf(_class),1),dataElem.data.class=classes.join(" "),_class){case"unseen":dataElem.data.flags.read=!0}egw.dataStoreUID(mail_uid,dataElem.data)}}},mail_move2folder:function(_action,_elems){this.mail_move(_action,_elems,null)},mail_move:function(_action,_senders,_target){this.mail_checkAllSelected(_action,_senders,_target,!0)},mail_callMove:function(_action,_senders,_target,_allMessagesChecked){var target="drop_move_mail"==_action.id?_target.iface.id:_action.id.substr(5),messages=this.mail_getFormData(_senders);if("undefined"==typeof _allMessagesChecked&&(_allMessagesChecked=!1),window.localStorage)for(var i=0;i0&&(NewFolderName=_value),NewFolderName&&NewFolderName.length>0)switch(_button_id){case"add":return void egw.json("mail.mail_ui.ajax_addFolder",[_senders[0].id,NewFolderName]).sendRequest(!0);case"cancel":}},this.egw.lang("Enter the name for the new Folder:"),this.egw.lang("Add a new Folder to %1:",OldFolderName),"",buttons)},mail_RenameFolder:function(_action,_senders){var ftree=this.et2.getWidgetById(this.nm_index+"[foldertree]"),OldFolderName=ftree.getLabel(_senders[0].id).replace(this._unseen_regexp,""),buttons=[{text:this.egw.lang("Rename"),id:"rename",class:"ui-priority-primary",image:"edit",default:!0},{text:this.egw.lang("Cancel"),id:"cancel"}];et2_dialog.show_prompt(function(_button_id,_value){var NewFolderName=null;if(_value.length>0&&(NewFolderName=_value),NewFolderName&&NewFolderName.length>0)switch(_button_id){case"rename":return void egw.json("mail.mail_ui.ajax_renameFolder",[_senders[0].id,NewFolderName]).sendRequest(!0);case"cancel":}},this.egw.lang("Rename Folder %1 to:",OldFolderName),this.egw.lang("Rename Folder %1 ?",OldFolderName),OldFolderName,buttons)},mail_MoveFolder:function(_action,_senders,destination){if(!destination||!destination.id)return void egw.debug("warn","Move folder, but no target");var sourceProfile=_senders[0].id.split("::"),targetProfile=destination.id.split("::");if(sourceProfile[0]!=targetProfile[0])return void egw.message(this.egw.lang("Moving Folders from one Mailaccount to another is not supported"),"error");var ftree=this.et2.getWidgetById(this.nm_index+"[foldertree]"),src_label=_senders[0].id.replace(/^[0-9]+::/,""),dest_label=destination.id.replace(/^[0-9]+::/,""),callback=function(_button){if(_button==et2_dialog.YES_BUTTON){egw.appName="mail",egw.message(egw.lang("Folder %1 is moving to folder %2",src_label,dest_label)),egw.loading_prompt("mail_moveFolder",!0,"","#egw_fw_basecontainer");for(var i=0;i<_senders.length;i++)egw.jsonq("mail.mail_ui.ajax_MoveFolder",[_senders[i].id,destination.id],function(){var id=destination.id.split("::");ftree.refreshItem(id[0],null),egw.loading_prompt("mail_moveFolder",!1)})}};et2_dialog.show_dialog(callback,this.egw.lang("Are you sure you want to move folder %1 to folder %2?",src_label,dest_label),this.egw.lang("Move folder"),{},et2_dialog.BUTTONS_YES_NO,et2_dialog.WARNING_MESSAGE)},mail_DeleteFolder:function(_action,_senders){var ftree=this.et2.getWidgetById(this.nm_index+"[foldertree]"),OldFolderName=ftree.getLabel(_senders[0].id).replace(this._unseen_regexp,""),buttons=[{text:this.egw.lang("Yes"),id:"delete",class:"ui-priority-primary",default:!0},{text:this.egw.lang("Cancel"),id:"cancel"}];et2_dialog.show_dialog(function(_button_id,_value){switch(_button_id){case"delete":return void egw.json("mail.mail_ui.ajax_deleteFolder",[_senders[0].id]).sendRequest(!0);case"cancel":}},this.egw.lang("Do you really want to DELETE Folder %1 ?",OldFolderName)+" "+(ftree.hasChildren(_senders[0].id)?this.egw.lang("All subfolders will be deleted too, and all messages in all affected folders will be lost"):this.egw.lang("All messages in the folder will be lost")),this.egw.lang("DELETE Folder %1 ?",OldFolderName),OldFolderName,buttons)},uploadForImport:function(_event,_file_count,_path){if(_file_count&&!jQuery.isEmptyObject(_event.data.getValue())){_event.data;this.et2_obj.submit()}},uploadForCompose:function(_event,_file_count,_path){if(_file_count&&!jQuery.isEmptyObject(_event.data.getValue())){_event.data;this.et2_obj.submit()}},composeUploadStart:function(){var boxAttachment=this.et2.getWidgetById("attachments");if(boxAttachment){var groupbox=boxAttachment.getParent();groupbox&&groupbox.set_disabled(!1)}var self=this;return setTimeout(function(){self.compose_resizeHandler()},100),!0},vfsUploadForImport:function(_egw,_widget,_window){jQuery.isEmptyObject(_widget)||jQuery.isEmptyObject(_widget.getValue())||this.et2_obj.submit()},vfsUploadForCompose:function(_egw,_widget,_window){jQuery.isEmptyObject(_widget)||jQuery.isEmptyObject(_widget.getValue())||this.et2_obj.submit()},submitOnChange:function(_egw,_widget){if(!jQuery.isEmptyObject(_widget)){if("undefined"!=typeof _widget.id)var widgetId=_widget.id;switch(widgetId){case"mimeType":this.et2_obj.submit();break;default:jQuery.isEmptyObject(_widget.getValue())||this.et2_obj.submit()}}},saveAsDraft:function(_egw_action,_action){var content=this.et2.getArrayMgr("content").data,action=_action;_egw_action&&"autosaving"!==_action&&(action=_egw_action.id);var widgets=["from","to","cc","bcc","subject","folder","replyto","mailaccount","mail_htmltext","mail_plaintext","lastDrafted","filemode","expiration","password"],widget={};for(var index in widgets)widget=this.et2.getWidgetById(widgets[index]),widget&&(content[widgets[index]]=widget.get_value());var self=this;if(content){if(this.mailvelope_editor)return this.mailvelope_editor.encrypt([]).then(function(_armored){content.mail_plaintext=_armored,self.egw.json("mail.mail_compose.ajax_saveAsDraft",[content,action],function(_data){self.savingDraft_response(_data,action)}).sendRequest(!0)},function(_err){self.egw.message(_err.message,"error")}),!1;this.egw.json("mail.mail_compose.ajax_saveAsDraft",[content,action],function(_data){self.savingDraft_response(_data,action)}).sendRequest(!0)}},savingDraft_response:function(_responseData,_action){if(jQuery.isEmptyObject(_responseData))return this.egw.message("Could not saved the message. Because, the response from server failed.","error"),!1;if(_responseData.success){var content=this.et2.getArrayMgr("content"),lastDrafted=this.et2.getWidgetById("lastDrafted"),folderTree="undefined"!=typeof opener.etemplate2.getByApplication("mail")[0]?opener.etemplate2.getByApplication("mail")[0].widgetContainer.getWidgetById("nm[foldertree]"):null,activeFolder=folderTree?folderTree.getSelectedNode():null;if(content){var prevDraftedId=content.data.lastDrafted;switch(content.data.lastDrafted=_responseData.draftedId,this.et2.setArrayMgr("content",content),lastDrafted.set_value(_responseData.draftedId),folderTree&&activeFolder&&"undefined"!=typeof activeFolder.id&&_responseData.draftfolder==activeFolder.id&&(prevDraftedId&&opener.egw_refresh(_responseData.message,"mail",prevDraftedId,"delete"),this.egw.refresh(_responseData.message,"mail",_responseData.draftedId)),_action){case"button[saveAsDraftAndPrint]":this.mail_compose_print("mail::"+_responseData.draftedId),this.egw.message(_responseData.message);break;case"autosaving":default:this.egw.message(_responseData.message)}}}else this.egw.message(_responseData.message,"error")},sieve_focus_radioBtn:function(_ev,_widget){_widget.getRoot().getWidgetById("action").set_value(_widget.id.replace(/^action_([^_]+)_text$/,"$1"))},sieve_vac_all_aliases:function(){var aliases=[],tmp=[],addr=this.et2.getWidgetById("addresses"),addresses=this.et2.getArrayMgr("sel_options").data.addresses;for(var id in addresses)aliases.push(id);if(addr){tmp=aliases.concat(addr.get_value());var deDuplicator=function(item,pos){return tmp.indexOf(item)==pos};aliases=tmp.filter(deDuplicator),addr.set_value(aliases)}},vacationFilterStatusChange:function(){var status=this.et2.getWidgetById("status"),s_date=this.et2.getWidgetById("start_date"),e_date=this.et2.getWidgetById("end_date"),by_date_label=this.et2.getWidgetById("by_date_label");status&&s_date&&e_date&&by_date_label&&(s_date.set_disabled("by_date"!=status.get_value()),e_date.set_disabled("by_date"!=status.get_value()),by_date_label.set_disabled("by_date"!=status.get_value()))},action:function(_type,_selected){var actionData,that=this,typeId=_type.id,linkData="",ruleID=_selected[0].id.split("_").pop()-1;if(_type)switch(_type.id){case"delete":var callbackDeleteDialog=function(button_id){button_id==et2_dialog.YES_BUTTON&&(actionData=_type.parent.data.widget.getArrayMgr("content"),that._do_action(typeId,actionData.data,ruleID))};et2_dialog.show_dialog(callbackDeleteDialog,this.egw.lang("Do you really want to DELETE this Rule"),this.egw.lang("Delete"),{},et2_dialog.BUTTONS_YES_CANCEL,et2_dialog.WARNING_MESSAGE);break;case"add":linkData="mail.mail_sieve.edit",this.egw.open_link(linkData,"_blank","600x480");break;case"edit":linkData="mail.mail_sieve.edit&ruleID="+ruleID,this.egw.open_link(linkData,"_blank","600x480");break;case"enable":actionData=_type.parent.data.widget.getArrayMgr("content"),this._do_action(typeId,actionData.data,ruleID);break;case"disable":actionData=_type.parent.data.widget.getArrayMgr("content"),this._do_action(typeId,actionData.data,ruleID)}},_do_action:function(_typeID,_data,_selectedID,_msg){if(_typeID&&_data){var request=this.egw.json("mail.mail_sieve.ajax_action",[_typeID,_selectedID,_msg],null,null,!0);request.sendRequest()}},sieve_refresh:function(){this.et2._inst.submit()},acl_common_rights_selector:function(event,widget){var rowId=widget.id.replace(/[^0-9.]+/g,""),rights=[];switch(widget.get_value()){case"custom":break;case"aeiklprstwx":rights=widget.get_value().replace(/[k,x,t,e]/g,"cd").split("");break;default:rights=widget.get_value().split("")}if(rights.length>0)for(var i=0;i0&&this.et2._inst.submit()},edit_account:function(_action,_senders){var acc_id=parseInt(_senders[0].id);this.egw.open_link("mail.mail_wizard.edit&acc_id="+acc_id,"_blank","720x500")},compose_fieldExpander_init:function(){var widgets={cc:{widget:{},jQClass:".mailComposeJQueryCc"},bcc:{widget:{},jQClass:".mailComposeJQueryBcc"},folder:{widget:{},jQClass:".mailComposeJQueryFolder"},replyto:{widget:{},jQClass:".mailComposeJQueryReplyto"}};for(var widget in widgets){var expanderBtn=widget+"_expander";widgets[widget].widget=this.et2.getWidgetById(widget),widgets[expanderBtn]={widget:this.et2.getWidgetById(expanderBtn)},"undefined"!=typeof widgets[widget].widget&&"undefined"!=typeof widgets[expanderBtn].widget&&0==widgets[widget].widget.get_value().length&&(widgets[expanderBtn].widget.set_disabled(!1),jQuery(widgets[widget].jQClass).hide())}},compose_resizeHandler:function(){if(!egwIsMobile())try{var bodyH=egw_getWindowInnerHeight(),textArea=this.et2.getWidgetById("mail_plaintext"),$headerSec=jQuery(".mailComposeHeaderSection"),attachments=this.et2.getWidgetById("attachments"),content=this.et2.getArrayMgr("content").data,prgV_H=150,attchV_H=68;if("undefined"!=typeof textArea&&null!=textArea){textArea.getParent().disabled&&(textArea=this.et2.getWidgetById("mail_htmltext"));var textAreaDelta="mail_htmltext"==textArea.id?20:40,delta=attachments.table.find("li").length>0&&attachments.table.height()>0?prgV_H:content.attachments?attchV_H:textAreaDelta,bodySize=bodyH-Math.round($headerSec.height()+$headerSec.offset().top)-delta;"mail_htmltext"!=textArea.id?(textArea.getParent().set_height(bodySize),textArea.set_height(bodySize)):"undefined"!=typeof textArea&&"mail_htmltext"==textArea.id?textArea.ckeditor.resize("100%",bodySize):textArea.set_height(bodySize-90)}}catch(e){}},compose_fieldExpander:function(event,widget){var expWidgets={cc:{},bcc:{},folder:{},replyto:{}};for(var name in expWidgets)expWidgets[name]=this.et2.getWidgetById(name+"_expander");if("undefined"!=typeof widget)switch(widget.id){case"cc_expander":jQuery(".mailComposeJQueryCc").show(),"undefined"!=typeof expWidgets.cc&&expWidgets.cc.set_disabled(!0);break;case"bcc_expander":jQuery(".mailComposeJQueryBcc").show(),"undefined"!=typeof expWidgets.bcc&&expWidgets.bcc.set_disabled(!0);break;case"folder_expander":jQuery(".mailComposeJQueryFolder").show(),"undefined"!=typeof expWidgets.folder&&expWidgets.folder.set_disabled(!0);break;case"replyto_expander":jQuery(".mailComposeJQueryReplyto").show(),"undefined"!=typeof expWidgets.replyto&&expWidgets.replyto.set_disabled(!0)}else if("undefined"==typeof widget){var widgets={cc:{},bcc:{},folder:{},replyto:{}};for(var widget in widgets)if(widgets[widget]=this.et2.getWidgetById(widget),widgets[widget].get_value().length)switch(widget){case"cc":jQuery(".mailComposeJQueryCc").show(),"undefiend"!=typeof expWidgets.cc&&expWidgets.cc.set_disabled(!0);break;case"bcc":jQuery(".mailComposeJQueryBcc").show(),"undefiend"!=typeof expWidgets.bcc&&expWidgets.bcc.set_disabled(!0);break;case"folder":jQuery(".mailComposeJQueryFolder").show(),"undefiend"!=typeof expWidgets.folder&&expWidgets.folder.set_disabled(!0);break;case"replyto":jQuery(".mailComposeJQueryReplyto").show(),"undefiend"!=typeof expWidgets.replyto&&expWidgets.replyto.set_disabled(!0)}}this.compose_resizeHandler()},lock_tree:function(){if(!document.getElementById("mail_folder_lock_div")){var parent=jQuery("#mail-index_nm\\[foldertree\\]"),lock_div=jQuery(document.createElement("div"));lock_div.attr("id","mail_folder_lock_div").addClass("mail_folder_lock"),parent.prepend(lock_div)}},unlock_tree:function(){jQuery("#mail_folder_lock_div").remove()},openstart_tree:function(_id,_widget,_hasChildren){return-1!=_id.indexOf("::")||_hasChildren||this.lock_tree(),!0},openend_tree:function(_id,_widget,_hasChildren){-1==_id.indexOf("::")&&1==_hasChildren&&this.unlock_tree()},mail_print:function(_action,_senders){var currentTemp=this.et2._inst.name;switch(currentTemp){case"mail.index":this.mail_prev_print(_action,_senders);break;case"mail.display":this.mail_display_print()}},mail_compose_print:function(_id){this.egw.open(_id,"mail","view","&print="+_id+"&mode=print")},print_for_compose:function(){var afterprint=function(){egw(window).close()};window.onafterprint?window.onafterprint=afterprint:setTimeout(function(){egw(window).close()},2e3)},mail_prepare_print:function(){var mainIframe=jQuery("#mail-display_mailDisplayBodySrc"),tmpPrintDiv=jQuery("#tempPrintDiv");if(0==tmpPrintDiv.length&&tmpPrintDiv.children()){tmpPrintDiv=jQuery(document.createElement("div")).attr("id","tempPrintDiv").addClass("tmpPrintDiv");var notAttached=!0}mainIframe&&(tmpPrintDiv[0].innerHTML=mainIframe.contents().find("body").html()),notAttached&&jQuery("#mail-display_mailDisplayBodySrc").after(tmpPrintDiv),tmpPrintDiv.find("#divAppboxHeader").remove()},mail_display_print:function(){this.egw.message("Printing...."),setTimeout(function(){egw(window).window.print()},100)},mail_prev_print:function(_action,_elems){this.mail_open(_action,_elems,"print")},vacation_change_account:function(_egw,_widget){_widget.getInstanceManager().submit()},recipients_onchange:function(){if(this.mailvelope_editor){var self=this;this.mailvelopeGetCheckRecipients().catch(function(_err){self.egw.message(_err.message,"error")})}this.set_dragging_dndCompose()},set_dragging_dndCompose:function(){var zIndex=100,dragItems=jQuery("div.ms-sel-item:not(div.ui-draggable)");dragItems.each(function(i,item){var $isErr=jQuery(item).find(".ui-state-error");$isErr.length>0&&delete dragItems.splice(i,1)}),dragItems.length>0&&(dragItems.draggable({appendTo:"body",containment:"document",distance:0,cursor:"move",cursorAt:{left:2},cancel:".ms-close-btn",delay:"300",revert:function(){return this.parent().find(".ms-sel-item").css("position","relative"),!0},start:function(event,ui){var dragItem=jQuery(this);(event.ctrlKey||event.metaKey)&&dragItem.addClass("mailCompose_copyEmail").css("cursor","copy"),dragItem.css("z-index",zIndex++),dragItem.css("position","absolute")},create:function(event,ui){jQuery(this).css("css","move")}}).draggable("disable"),window.setTimeout(function(){dragItems&&dragItems.data()&&"undefined"!=typeof dragItems.data().uiDraggable&&dragItems.draggable("enable")},100))},init_dndCompose:function(){var self=this,emailTags=jQuery("#mail-compose_to,#mail-compose_cc,#mail-compose_bcc");emailTags.hover(function(){self.set_dragging_dndCompose()}),emailTags.droppable({accept:".ms-sel-item",drop:function(event,ui){var emails,widget=self.et2.getWidgetById(this.getAttribute("name")),distLists=[],fromWidget={},parentWidgetDOM=ui.draggable.parentsUntil('div[id^="mail-compoe_"]',".ui-droppable");"undefined"!=parentWidgetDOM&&parentWidgetDOM.length>0&&(fromWidget=self.et2.getWidgetById(parentWidgetDOM.attr("name")));var draggedValue=ui.draggable.text(),dValueKey=draggedValue,distItem=ui.draggable.find(".mailinglist");if(distItem.length>0){var distItemId=parseInt(distItem.attr("data"));if(distItemId)for(var fromDistLists=resolveDistList(fromWidget),i=0;i0&&widget.taglist.addToSelection(distLists),jQuery.isEmptyObject(fromWidget)||ui.draggable.attr("class").search("mailCompose_copyEmail")>-1?ui.draggable.removeClass("mailCompose_copyEmail").css("cursor","move"):_removeDragged(fromWidget,dValueKey)||jQuery(ui.draggable).draggable("option","revert",!0);var dragItems=jQuery("div.ms-sel-item");dragItems.each(function(i,item){var $isErr=jQuery(item).find(".ui-state-error");$isErr.length>0&&delete dragItems.splice(i,1)}),dragItems.draggable("destroy")}}});var _removeDragged=function(_widget,_value){if(_widget&&_value){var emails=_widget.get_value(),itemIndex=emails.indexOf(_value),dist=[];if(!(itemIndex>-1))return!1;emails.splice(itemIndex,1);var dist=resolveDistList(_widget,emails);if(_widget.set_value(emails),dist){for(var i=0;i0&&(iframe.addClass("mailvelopeIframe").height(originFrame[0].contentWindow.document.body.scrollHeight+400),tempPrint.hide(),mailvelopeTopContainer.addClass("mailvelopeTopContainer"))},mailvelopeDisplay:function(_keyring){var self=this,mailvelope=window.mailvelope,iframe=jQuery("iframe#mail-display_mailDisplayBodySrc,iframe#mail-index_messageIFRAME"),armored=iframe.contents().find("td.td_display > pre").text().trim();if(""!=armored&&-1!==armored.indexOf(this.begin_pgp_message)){var container=iframe.parent()[0],container_selector=container.id?"#"+container.id:"div.mailDisplayContainer";options={showExternalContent:1==this.egw.preference("allowExternalIMGs")};var from_widget=this.et2.getWidgetById("FROM_0")||this.et2.getWidgetById("previewFromAddress");from_widget&&from_widget.value&&(options.senderAddress=from_widget.value.replace(/^.*<([^<>]+)>$/,"$1")),mailvelope.createDisplayContainer(container_selector,armored,_keyring,options).then(function(){iframe.hide(),self.prepareMailvelopePrint()},function(_err){self.egw.message(_err.message,"error")})}},mailvelope_editor:void 0,mailvelopeCompose:function(_keyring){delete this.mailvelope_editor;var mimeType=this.et2.getWidgetById("mimeType"),is_html=mimeType.get_value(),container=is_html?".mailComposeHtmlContainer":".mailComposeTextContainer",editor=this.et2.getWidgetById(is_html?"mail_htmltext":"mail_plaintext"),options={predefinedText:editor.get_value()},start_pgp=options.predefinedText.indexOf(this.begin_pgp_message);if(-1!=start_pgp){var end_pgp=options.predefinedText.indexOf(this.end_pgp_message);if(-1!=end_pgp){options={quotedMailHeader:options.predefinedText.slice(0,start_pgp).replace(/> /gm,"").trim()+"\n",quotedMail:options.predefinedText.slice(start_pgp,end_pgp+this.end_pgp_message.length+1).replace(/> /gm,""),quotedMailIndent:0!=start_pgp,predefinedText:options.predefinedText.slice(end_pgp+this.end_pgp_message.length+1).replace(/^> \s*/m,""),signMsg:!0};var composeToolbar=this.et2.getWidgetById("composeToolbar");composeToolbar.checkbox("pgp")||composeToolbar.checkbox("pgp",!0)}}var self=this;mailvelope.createEditorContainer(container,_keyring,options).then(function(_editor){self.mailvelope_editor=_editor,editor.set_disabled(!0),mimeType.set_readonly(!0)},function(_err){self.egw.message(_err.message,"error")})},togglePgpEncrypt:function(_action){var self=this;if(_action.checked){if("undefined"==typeof mailvelope)return this.mailvelopeInstallationOffer(),this.et2.getWidgetById("composeToolbar")._actionManager.getActionById("pgp").set_checked(!1),void jQuery("button#composeToolbar-pgp").toggleClass("toolbar_toggled");this.mailvelopeGetCheckRecipients().then(function(_recipients){var mimeType=self.et2.getWidgetById("mimeType");return mimeType.get_value()?(mimeType.set_value(!1),void self.et2._inst.submit()):void self.mailvelopeOpenKeyring().then(function(_keyring){self.mailvelopeCompose(_keyring)})}).catch(function(_err){self.egw.message(_err.message,"error"),self.et2.getWidgetById("composeToolbar")._actionManager.getActionById("pgp").set_checked(!1),jQuery("button#composeToolbar-pgp").toggleClass("toolbar_toggled")})}else et2_dialog.show_dialog(function(_button_id){_button_id==et2_dialog.YES_BUTTON?(self.et2.getWidgetById("mimeType").set_readonly(!1),self.et2.getWidgetById("mail_plaintext").set_disabled(!1),jQuery(self.mailvelope_iframe_selector).remove()):self.et2.getWidgetById("composeToolbar").checkbox("pgp",!0)},this.egw.lang("You will loose current message body, unless you save it to your clipboard!"),this.egw.lang("Switch off encryption?"),{},et2_dialog.BUTTON_YES_NO,et2_dialog.WARNING_MESSAGE,void 0,this.egw)},mailvelopeGetCheckRecipients:function(){var recipients=this.et2.getWidgetById("to").get_value();return recipients=recipients.concat(this.et2.getWidgetById("cc").get_value()),recipients=recipients.concat(this.et2.getWidgetById("bcc").get_value()),this._super.call(this,recipients)},compose_submitAction:function(_action){if(this.mailvelope_editor){var self=this;return this.mailvelopeGetCheckRecipients().then(function(_recipients){return self.mailvelope_editor.encrypt(_recipients)}).then(function(_armored){self.et2.getWidgetById("mimeType").set_value(!1),self.et2.getWidgetById("mail_plaintext").set_disabled(!1),self.et2.getWidgetById("mail_plaintext").set_value(_armored),self.et2._inst.submit(null,null,!0)}).catch(function(_err){self.egw.message(_err.message,"error")}),!1}this.et2._inst.submit(null,null,!0)},compose_setToggle:function(_action){var widget=this.et2.getWidgetById(_action.id);widget&&"undefined"!=typeof _action.checkbox&&_action.checkbox&&widget.set_value(_action.checked?"on":"off")},compose_priorityChange:function(_action){var widget=this.et2.getWidgetById("priority");widget&&widget.set_value(_action.id)},compose_triggerWidget:function(_action){var widget=this.et2.getWidgetById(_action.id);if(widget)switch(widget.id){case"uploadForCompose":document.getElementById("mail-compose_uploadForCompose").click();break;default:widget.click()}},compose_saveDraft2fm:function(_action){var content=this.et2.getArrayMgr("content").data,subject=this.et2.getWidgetById("subject"),elem={0:{id:"",subject:""}};"undefined"!=typeof content&&content.lastDrafted&&subject?(elem[0].id=content.lastDrafted,elem[0].subject=subject.get_value(),this.mail_save2fm(_action,elem)):et2_dialog.alert("You need to save the message as draft first before to be able to save it into VFS","Save into VFS","info")},folderManagement:function(_action,_senders){var acc_id=parseInt(_senders[0].id);this.egw.open_link("mail.mail_ui.folderManagement&acc_id="+acc_id,"_blank","720x500")},folderMgmt_autoloadingStart:function(_id,_widget){return this.subscription_autoloadingStart(_id,_widget)},folderMgmt_autoloadingEnd:function(_id,_widget){return!0},folderMgmt_onSelect:function(_ids,_widget){var resetSelection=!1,self=this,rangeSelector=function(_a,_b,_branch){var branchItems=_branch.split(_widget.input.dlmtr),_aIndex=_widget.input.getIndexById(_a),_bIndex=_widget.input.getIndexById(_b);if(_aIndex>_bIndex){var tmpIndex=_aIndex;_aIndex=_bIndex,_bIndex=tmpIndex}for(var i=_aIndex;_bIndex>=i;i++)self.folderMgmt_setCheckbox(_widget,branchItems[i],!_widget.input.isItemChecked(branchItems[i]))},itemIds=_ids.split(_widget.input.dlmtr);if(2==itemIds.length){var branch=_widget.input.getSubItems(_widget.input.getParentId(itemIds[0]));rangeSelector(itemIds[0],itemIds[1],branch)}else 1!=itemIds.length&&(resetSelection=!0);resetSelection&&_widget.input._unselectItems()},folderMgmt_setCheckbox:function(_widget,_itemId,_stat){_widget&&(_widget.input.setCheck(_itemId,_stat),_widget.input.setSubChecked(_itemId,_stat))},folderMgmt_onCheck:function(_id,_widget){var selected=_widget.input.getAllChecked();selected&&selected.split(_widget.input.dlmtr).length>5&&egw.message(egw.lang("If you would like to select multiple folders in one action, you can hold ctrl key then select a folder as start range and another folder within a same level as end range, all folders in between will be selected or unselected based on their current status."))},folderMgmt_deleteBtn:function(){var tree=etemplate2.getByApplication("mail")[0].widgetContainer.getWidgetById("tree"),menuaction="mail.mail_ui.ajax_folderMgmt_delete",callbackDialog=function(_btn){if(egw.appName="mail",_btn===et2_dialog.YES_BUTTON&&tree){var selFolders=tree.input.getAllChecked();if(selFolders){var selFldArr=selFolders.split(tree.input.dlmtr),msg=egw.lang("Deleting %1 folders in progress ...",selFldArr.length);return et2_dialog.long_task(function(_val,_resp){if(console.log(_val,_resp),_val&&"error"!==_resp.type){for(var stat=[],folderName="",i=0;i '/phpgwapi/js/jsapi.min.js', + 'et2' => '/etemplate/js/etemplate2.min.js', + 'et21'=> '/etemplate/js/etemplate2.min.js', + 'pixelegg' => '/pixelegg/js/fw_pixelegg.min.js', + 'jdots' => '/jdots/js/fw_jdots.min.js', + 'mobile' => '/jdots/js/fw_mobile.min.js', + ); + /** * Devide js-includes in bundles of javascript files to include eg. api or etemplate2, if minifying is enabled * @@ -2054,7 +2068,13 @@ abstract class egw_framework unset($bundles['.ts']); foreach($bundles as $name => $files) { - $file2bundle += array_combine($files, array_fill(0, count($files), $name)); + // ignore bundles of not used templates, as they can contain identical files + if (in_array($name, array('api', 'et2', 'et21')) || + $name == (html::$ua_mobile ? 'mobile' : $GLOBALS['egw_info']['server']['template_set']) || + isset($GLOBALS['egw_info']['apps'][$name])) + { + $file2bundle += array_combine($files, array_fill(0, count($files), $name)); + } } } $to_include = $included_bundles = array(); @@ -2065,18 +2085,33 @@ abstract class egw_framework { if (($bundle = $file2bundle[$file])) { - //error_log(__METHOD__."() requiring boundle $bundle for $file"); + //error_log(__METHOD__."() requiring bundle $bundle for $file"); if (!in_array($bundle, $included_bundles)) { - $max_modified = 0; - $to_include = array_merge($to_include, self::bundle_urls($bundles[$bundle], $max_modified)); $included_bundles[] = $bundle; - // check if bundle-config is more recent then - if ($max_modified > $bundles_ts) + $minurl = self::$bundle2minurl[$bundle]; + if (!isset($minurl) && isset($GLOBALS['egw_info']['apps'][$bundle])) { - // force new bundle config by deleting cached one and call ourself again - egw_cache::unsetTree(__CLASS__, 'bundles'); - return self::bundle_js_includes($js_includes); + $minurl = '/'.$bundle.'/js/app.min.js'; + } + if (isset($minurl) && file_exists(EGW_SERVER_ROOT.$minurl)) + { + if (!isset($to_include[$minurl])) + { + $to_include[$minurl] = $minurl.'?'.filemtime(EGW_SERVER_ROOT.$minurl); + } + } + else + { + $max_modified = 0; + $to_include = array_merge($to_include, self::bundle_urls($bundles[$bundle], $max_modified)); + // check if bundle-config is more recent then + if ($max_modified > $bundles_ts) + { + // force new bundle config by deleting cached one and call ourself again + egw_cache::unsetTree(__CLASS__, 'bundles'); + return self::bundle_js_includes($js_includes); + } } } } @@ -2085,7 +2120,14 @@ abstract class egw_framework unset($query); list($path, $query) = explode('?', $file, 2); $mod = filemtime(EGW_SERVER_ROOT.$path); - + // check if we have a more recent minified version of the file and use it + if ($GLOBALS['egw_info']['server']['debug_minify'] !== 'True' && + substr($path, -3) == '.js' && file_exists(EGW_SERVER_ROOT.($min_path = substr($path, 0, -3).'.min.js')) && + (($min_mod = filemtime(EGW_SERVER_ROOT.$min_path)) >= $mod)) + { + $path = $min_path; + $mod = $min_mod; + } $to_include[$file] = $path.'?'.$mod.($query ? '&'.$query : ''); } } @@ -2169,7 +2211,7 @@ abstract class egw_framework $inc_mgr = new egw_include_mgr(); $bundles = array(); - $api_max_mod = $et2_max_mod = $jdots_max_mod = 0; + $max_mod = array(); // generate api bundle $inc_mgr->include_js_file('/phpgwapi/js/jquery/jquery.js'); @@ -2195,22 +2237,33 @@ abstract class egw_framework $inc_mgr->include_js_file('/phpgwapi/js/ckeditor/ckeditor.js'); $inc_mgr->include_js_file('/phpgwapi/js/ckeditor/config.js'); $bundles['api'] = $inc_mgr->get_included_files(); - self::bundle_urls($bundles['api'], $api_max_mod); + self::bundle_urls($bundles['api'], $max_mod['api']); // generate et2 bundle (excluding files in api bundle) //$inc_mgr->include_js_file('/etemplate/js/lib/jsdifflib/difflib.js'); // it does not work with "use strict" therefore included in front $inc_mgr->include_js_file('/etemplate/js/etemplate2.js'); $bundles['et2'] = array_diff($inc_mgr->get_included_files(), $bundles['api']); - self::bundle_urls($bundles['et2'], $et2_max_mod); + self::bundle_urls($bundles['et2'], $max_mod['et2']); - // generate jdots bundle, if installed - /* switching jdots bundle off, as fw_pixelegg will cause whole jdots bundle incl. fw_jdots to include - if (file_exists(EGW_SERVER_ROOT.'/jdots')) + $stock_files = call_user_func_array('array_merge', $bundles); + + // generate template and app bundles, if installed + foreach(array( + 'jdots' => '/jdots/js/fw_jdots.js', + 'mobile' => '/jdots/js/fw_mobile.js', + 'pixelegg' => '/pixelegg/js/fw_pixelegg.js', + 'calendar' => '/calendar/js/app.js', + 'mail' => '/mail/js/app.js', + ) as $bundle => $file) { - $inc_mgr->include_js_file('/jdots/js/fw_jdots.js'); - $bundles['jdots'] = array_diff($inc_mgr->get_included_files(), call_user_func_array('array_merge', $bundles)); - self::bundle_urls($bundles['jdots'], $jdots_max_mod); - }*/ + if (@file_exists(EGW_SERVER_ROOT.$file)) + { + $inc_mgr = new egw_include_mgr($stock_files); // reset loaded files to stock files + $inc_mgr->include_js_file($file); + $bundles[$bundle] = array_diff($inc_mgr->get_included_files(), $stock_files); + self::bundle_urls($bundles[$bundle], $max_mod[$bundle]); + } + } // automatic split bundles with more then MAX_BUNDLE_FILES (=50) files foreach($bundles as $name => $files) @@ -2224,7 +2277,7 @@ abstract class egw_framework } // store max modification time of all files in all bundles - $bundles['.ts'] = max(array($api_max_mod, $et2_max_mod, $jdots_max_mod)); + $bundles['.ts'] = max($max_mod); //error_log(__METHOD__."() returning ".array2string($bundles)); return $bundles; diff --git a/phpgwapi/inc/class.egw_include_mgr.inc.php b/phpgwapi/inc/class.egw_include_mgr.inc.php index 17fa5fc615..ca35bf2de2 100644 --- a/phpgwapi/inc/class.egw_include_mgr.inc.php +++ b/phpgwapi/inc/class.egw_include_mgr.inc.php @@ -270,8 +270,8 @@ class egw_include_mgr * --> /phpgwapi/inc/calendar-setup.js?lang=de * * @param string $package package or complete path (relative to EGW_SERVER_ROOT) to be included - * @param string|array $file=null file to be included - no ".js" on the end or array with get params - * @param string $app='phpgwapi' application directory to search - default = phpgwapi + * @param string|array $file =null file to be included - no ".js" on the end or array with get params + * @param string $app ='phpgwapi' application directory to search - default = phpgwapi * * @returns the correct path on the server if the file is found or false, if the * file is not found or no further processing is needed. @@ -332,8 +332,8 @@ class egw_include_mgr * --> /phpgwapi/inc/calendar-setup.js?lang=de * * @param string $package package or complete path (relative to EGW_SERVER_ROOT) to be included - * @param string|array $file=null file to be included - no ".js" on the end or array with get params - * @param string $app='phpgwapi' application directory to search - default = phpgwapi + * @param string|array $file =null file to be included - no ".js" on the end or array with get params + * @param string $app ='phpgwapi' application directory to search - default = phpgwapi */ public function include_js_file($package, $file = null, $app = 'phpgwapi') { @@ -361,11 +361,11 @@ class egw_include_mgr * Include given files, optionally clear list of files to include * * @param array $files - * @param boolean $clear_files=false if true clear list of files, before including given ones + * @param boolean $clear_files =false if true clear list of files, before including given ones */ public function include_files(array $files, $clear_files=false) { - if ($clear_files) self::$included_files = array(); + if ($clear_files) $this->included_files = array(); foreach ($files as $file) { @@ -376,7 +376,7 @@ class egw_include_mgr /** * Return all files * - * @param boolean $clear_files=false if true clear list of files after returning them + * @param boolean $clear_files =false if true clear list of files after returning them * @return array */ public function get_included_files($clear_files=false) @@ -389,7 +389,7 @@ class egw_include_mgr /** * Constructor * - * @param array $files=null optional files to include as for include_files method + * @param array $files =null optional files to include as for include_files method */ public function __construct(array $files = null) { diff --git a/phpgwapi/js/framework/fw_classes.js b/phpgwapi/js/framework/fw_classes.js new file mode 100644 index 0000000000..16a501bda9 --- /dev/null +++ b/phpgwapi/js/framework/fw_classes.js @@ -0,0 +1,135 @@ +/** + * eGroupware JavaScript Framework - Non UI classes + * + * @link http://www.egroupware.org + * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License + * @author Andreas Stoeckel + * @version $Id$ + */ + +/*---------------------------- + Class egw_fw_class_application + ----------------------------*/ +/** + * application class constructor + * + * @param {type} _parentFw + * @param {type} _appName + * @param {type} _displayName + * @param {type} _icon + * @param {type} _indexUrl + * @param {type} _sideboxWidth + * @param {type} _baseUrl + * @param {type} _internalName + * @returns {egw_fw_class_application} + */ +function egw_fw_class_application(_parentFw, _appName, _displayName, _icon, + _indexUrl, _sideboxWidth, _baseUrl, _internalName) +{ + //Copy the application properties + this.appName = _appName; + this.internalName = _internalName; + this.displayName = _displayName; + this.icon = _icon; + this.indexUrl = _indexUrl; + this.sidebox_md5 = ''; + this.hasPrerequisites; + this.baseUrl = _baseUrl; + + this.website_title = ''; + this.app_header = ''; + + this.sideboxWidth = _sideboxWidth; + + //Setup a link to the parent framework class + this.parentFw = _parentFw; + + //Preset some variables + this.hasSideboxMenuContent = false; + this.sidemenuEntry = null; + this.tab = null; + this.browser = null; +} + +/** + * Returns an menuaction inside the jdots_framework for this application. + * without a "this" context (by directly calling egw_fw_class_application.prototype.getAjaxUrl) + * or passing null to a "call" call "home" will be used as application name and + * the the base url will be omitted (default behaviour for all applications which) + * lie inside the default egw instance. + * + * @param {string} _fun is the function which shall be called on the server. + */ +egw_fw_class_application.prototype.getMenuaction = function(_fun) +{ + var baseUrl = ''; + var appName = 'home'; + + if (this) + { + baseUrl = this.getBaseUrl(); + appName = this.internalName; + } + + // Check whether the baseurl is actually set. If not, then this application + // resides inside the same egw instance as the jdots framework. We'll simply + // return a menu action and not a full featured url here. + if (baseUrl != '') + { + baseUrl = baseUrl + 'json.php?menuaction='; + } + + // use template handler to call current framework, eg. pixelegg + return baseUrl + appName + '.jdots_framework.' + _fun + '.template'; +}; + +/** + * Returns the base url for this application. If the application resides inside + * the default egw instance, '' will be returned unless the _force parameter is + * set to true. + * + * @param {boolean} _force Optional parameter. If set, getBaseUrl will return the + * webserverUrl instead of '' if the application resides inside the main + * egw instance. + */ +egw_fw_class_application.prototype.getBaseUrl = function(_force) +{ + if (this.baseUrl) + { + return this.baseUrl; + } + else if ((typeof _force != 'undefined') && _force) + { + return egw_topWindow().egw_webserverUrl; + } + else + { + return ''; + } +}; + +function egw_fw_getMenuaction(_fun) +{ + return egw_fw_class_application.prototype.getMenuaction.call(null, _fun); +} + +/*---------------------------- + Class egw_fw_class_callback + ----------------------------*/ + +function egw_fw_class_callback(_context, _proc) +{ + this.context = _context; + this.proc = _proc; +} + +egw_fw_class_callback.prototype.call = function() +{ + return this.proc.apply(this.context, arguments); +}; + +array_remove = function(array, index) +{ + array.splice(index, 1); +}; + diff --git a/phpgwapi/js/framework/fw_desktop.js b/phpgwapi/js/framework/fw_desktop.js index c1a7330ff6..9d01ebf1d0 100644 --- a/phpgwapi/js/framework/fw_desktop.js +++ b/phpgwapi/js/framework/fw_desktop.js @@ -13,7 +13,7 @@ framework.fw_base; framework.fw_browser; framework.fw_ui; - egw_fw_classes; + framework.fw_classes; egw_inheritance.js; */ diff --git a/phpgwapi/js/jsapi/egw_files.js b/phpgwapi/js/jsapi/egw_files.js index 2c70e5d6c9..3f3688a350 100644 --- a/phpgwapi/js/jsapi/egw_files.js +++ b/phpgwapi/js/jsapi/egw_files.js @@ -50,6 +50,13 @@ egw.extend('files', egw.MODULE_WND_LOCAL, function(_app, _wnd) */ var bundle2files_regexp = /phpgwapi\/inc\/min\/\?b=[^&]+&f=([^&]+)/; + /** + * Regexp to detect and remove .min.js extension + * + * @type RegExp + */ + var min_js_regexp = /\.min\.js$/; + /** * Return array of files-sources from bundle(s) incl. bundle-src itself * @@ -65,12 +72,16 @@ egw.extend('files', egw.MODULE_WND_LOCAL, function(_app, _wnd) for(var n=0; n < _srcs.length; ++n) { var file = _srcs[n]; - files.push(file); + files.push(file.replace(min_js_regexp, '.js')); var contains = file.match(bundle2files_regexp); if (contains && contains.length > 1) { - files = files.concat(contains[1].split(',')); + var bundle = contains[1].split(','); + for(var i; i < bundle.length; ++i) + { + files.push(bundle[i].replace(min_js_regexp, '.js')); + } } } return files; @@ -122,7 +133,7 @@ egw.extend('files', egw.MODULE_WND_LOCAL, function(_app, _wnd) } // make urls egw-relative files = strip_egw_url(files); - // resolve bundles + // resolve bundles and replace .min.js with .js files = files_from_bundles(files); return { @@ -189,13 +200,16 @@ egw.extend('files', egw.MODULE_WND_LOCAL, function(_app, _wnd) /** * Check if file is already included and optional mark it as included if not yet included * + * Check does NOT differenciate between file.min.js and file.js. + * Only .js get's recored in files for further checking, if _add_if_not set. + * * @param {string} _file * @param {boolean} _add_if_not if true mark file as included * @return boolean true if file already included, false if not */ included: function(_file, _add_if_not) { - var file = removeTS(_file); + var file = removeTS(_file).replace(min_js_regexp, '.js'); var not_inc = files.indexOf(file) == -1; if (not_inc && _add_if_not) diff --git a/pixelegg/js/fw_pixelegg.js b/pixelegg/js/fw_pixelegg.js index 7bb324a7a7..9739c73545 100644 --- a/pixelegg/js/fw_pixelegg.js +++ b/pixelegg/js/fw_pixelegg.js @@ -8,12 +8,14 @@ * @description Create jdots framework */ -"use strict"; /*egw:uses jquery.jquery; framework.fw_desktop; + /pixelegg/js/slider.js; */ (function(window){ + "use strict"; + /** * jdots framework object defenition * here we can add framework methods and also override fw_desktop methods if it is neccessary diff --git a/pixelegg/js/fw_pixelegg.min.js b/pixelegg/js/fw_pixelegg.min.js new file mode 100644 index 0000000000..0912c529a4 --- /dev/null +++ b/pixelegg/js/fw_pixelegg.min.js @@ -0,0 +1,6 @@ +/*! build Tue Mar 01 2016 21:27:37 */ + +function egw_fw_ui_tab(_parent,_contHeaderDiv,_contDiv,_icon,_callback,_closeCallback,_tag,_pos){this.parent=_parent,this.contHeaderDiv=_contHeaderDiv,this.contDiv=_contDiv,this.title="",this.tag=_tag,this.closeable=!0,this.callback=_callback,this.closeCallback=_closeCallback,this.position=_pos,this.headerDiv=document.createElement("span"),this.headerDiv._position=_pos,$j(this.headerDiv).addClass("egw_fw_ui_tab_header"),this.headerDiv._callbackObject=new egw_fw_class_callback(this,_callback),$j(this.headerDiv).click(function(){this._callbackObject.call(this)}),$j(this.headerDiv).hover(function(){$j(this).hasClass("egw_fw_ui_tab_header_active")||$j(this).addClass("egw_fw_ui_tab_header_hover")},function(){$j(this).removeClass("egw_fw_ui_tab_header_hover")});var tab=this.headerDiv;$j(this.headerDiv).droppable({tolerance:"pointer",over:function(){tab._callbackObject.call(tab)}}),this.closeButton=document.createElement("span"),this.closeButton._callbackObject=new egw_fw_class_callback(this,_closeCallback),$j(this.closeButton).addClass("egw_fw_ui_tab_close_button"),$j(this.closeButton).click(function(){return this._callbackObject.context.closeable?(this._callbackObject.call(this),!1):!0}),$j(this.headerDiv).append(this.closeButton);var icon=egw.image_element(_icon);$j(icon).addClass("egw_fw_ui_tab_icon"),$j(this.headerDiv).append(icon),this.headerH1=document.createElement("h1"),this.setTitle(""),$j(this.headerDiv).append(this.headerH1),$j(this.headerDiv).append(this.closeButton),this.contentDiv=document.createElement("div"),$j(this.contentDiv).addClass("egw_fw_ui_tab_content"),$j(this.contentDiv).hide();var _this=this,$_children=$j(this.contHeaderDiv).children(),_cnt=$_children.size();_cnt>0&&_pos>-1?$_children.each(function(i){return _pos<=this._position?($j(this).before(_this.headerDiv),!1):i==_cnt-1?($j(this).after(_this.headerDiv),!1):void 0}):$j(this.contHeaderDiv).append(this.headerDiv),$j(this.contDiv).append(this.contentDiv)}function egw_fw_ui_tabs(_contDiv){this.contDiv=_contDiv,this.contHeaderDiv=document.createElement("div"),$j(this.contHeaderDiv).addClass("egw_fw_ui_tabs_header"),$j(this.contDiv).append(this.contHeaderDiv),this.appHeaderContainer=$j(document.createElement("div")),this.appHeaderContainer.addClass("egw_fw_ui_app_header_container"),$j(this.contDiv).append(this.appHeaderContainer),this.appHeader=$j(document.createElement("div")),this.appHeader.addClass("egw_fw_ui_app_header"),this.appHeader.hide(),this.appHeaderContainer.append(this.appHeader),this.tabs=Array(),this.activeTab=null,this.tabHistory=Array()}function egw_fw_ui_category(_contDiv,_name,_title,_content,_callback,_animationCallback,_tag){this.contDiv=_contDiv,this.catName=_name,this.callback=_callback,this.animationCallback=_animationCallback,this.tag=_tag,this.headerDiv=document.createElement("div"),$j(this.headerDiv).addClass("egw_fw_ui_category");var entryH1=document.createElement("h1");$j(entryH1).append(_title),$j(this.headerDiv).append(entryH1),this.contentDiv=document.createElement("div"),this.contentDiv._parent=this,$j(this.contentDiv).addClass("egw_fw_ui_category_content"),$j(this.contentDiv).append(_content),$j(this.contentDiv).hide(),this.headerDiv._parent=this,$j(this.headerDiv).click(function(){$j(this).hasClass("egw_fw_ui_category_active")?this._parent.close(!1):this._parent.open(!1)}),$j(this.contDiv).append(this.headerDiv),$j(this.contDiv).append(this.contentDiv)}function egw_fw_ui_scrollarea(_contDiv){this.startScrollSpeed=50,this.endScrollSpeed=250,this.scrollSpeedAccel=75,this.timerInterval=.04,this.contDiv=_contDiv,this.contHeight=0,this.boxHeight=0,this.scrollPos=0,this.buttonScrollOffs=0,this.maxScrollPos=0,this.buttonsVisible=!0,this.mouseOver=!1,this.scrollTime=0,this.btnUpEnabled=!0,this.btnDownEnabled=!0,this.scrollDiv=document.createElement("div"),this.scrollDiv.style.position="relative",$j(this.scrollDiv).addClass("egw_fw_ui_scrollarea");var self=this;$j(this.scrollDiv).on("mousewheel",function(e,delta){var noscroll=!1;("OPTION"==e.target.tagName||"SELECT"==e.target.tagName||e.target.getAttribute("class")&&e.target.getAttribute("class").match(/egw_tutorial/gi))&&(noscroll=!0),delta&&!noscroll&&(e.stopPropagation(),self.scrollDelta(30*-delta),self.contHeight!=this.scrollHeight&&self.update())}),this.outerDiv=document.createElement("div"),$j(this.outerDiv).addClass("egw_fw_ui_scrollarea_outerdiv"),$j(this.outerDiv).append(this.scrollDiv),$j(this.contDiv).children().appendTo(this.scrollDiv),$j(this.contDiv).append(this.outerDiv),this.contentDiv=this.scrollDiv,this.btnUp=document.createElement("span"),$j(this.btnUp).addClass("egw_fw_ui_scrollarea_button"),$j(this.btnUp).addClass("egw_fw_ui_scrollarea_button_up"),$j(this.btnUp).hide(),this.btnUp._parent=this,$j(this.btnUp).mouseenter(function(){this._parent.mouseOverToggle(!0,-1),$j(this).addClass("egw_fw_ui_scrollarea_button_hover")}),$j(this.btnUp).click(function(){this._parent.setScrollPos(0)}),$j(this.btnUp).mouseleave(function(){this._parent.mouseOverToggle(!1,-1),$j(this).removeClass("egw_fw_ui_scrollarea_button_hover")}),$j(this.outerDiv).prepend(this.btnUp),this.btnDown=document.createElement("span"),$j(this.btnDown).addClass("egw_fw_ui_scrollarea_button"),$j(this.btnDown).addClass("egw_fw_ui_scrollarea_button_down"),$j(this.btnDown).hide(),this.btnDown._parent=this,$j(this.btnDown).mouseenter(function(){this._parent.mouseOverToggle(!0,1),$j(this).addClass("egw_fw_ui_scrollarea_button_hover")}),$j(this.btnDown).click(function(){this._parent.setScrollPos(this._parent.maxScrollPos)}),$j(this.btnDown).mouseleave(function(){this._parent.mouseOverToggle(!1,1),$j(this).removeClass("egw_fw_ui_scrollarea_button_hover")}),$j(this.outerDiv).prepend(this.btnDown),this.update()}function egw_fw_ui_splitter(_contDiv,_orientation,_resizeCallback,_constraints,_tag){if(this.tag=_tag,this.contDiv=_contDiv,this.orientation=_orientation,this.resizeCallback=_resizeCallback,this.startPos=0,this.constraints=[{size:0,minsize:0,maxsize:0},{size:0,minsize:0,maxsize:0}],_constraints.constructor==Array)for(var i=0;2>i;i++)"undefined"!=typeof _constraints[i]&&("undefined"!=typeof _constraints[i].size&&(this.constraints[i].size=_constraints[i].size),"undefined"!=typeof _constraints[i].minsize&&(this.constraints[i].minsize=_constraints[i].minsize),"undefined"!=typeof _constraints[i].maxsize&&(this.constraints[i].maxsize=_constraints[i].maxsize));this.splitterDiv=document.createElement("div"),this.splitterDiv._parent=this,$j(this.splitterDiv).addClass("egw_fw_ui_splitter");var dragoptions={opacity:.7,helper:"clone",start:function(event,ui){return this._parent.dragStartHandler.call(this._parent,event,ui)},drag:function(event,ui){return this._parent.dragHandler.call(this._parent,event,ui)},stop:function(event,ui){return this._parent.dragStopHandler.call(this._parent,event,ui)},containment:"document",appendTo:"body",axis:"y",iframeFix:!0,zIndex:1e4};switch(this.orientation){case EGW_SPLITTER_HORIZONTAL:dragoptions.axis="y",$j(this.splitterDiv).addClass("egw_fw_ui_splitter_horizontal");break;case EGW_SPLITTER_VERTICAL:dragoptions.axis="x",$j(this.splitterDiv).addClass("egw_fw_ui_splitter_vertical")}$j(this.splitterDiv).draggable(dragoptions),$j(this.splitterDiv).mouseenter(function(){$j(this).addClass("egw_fw_ui_splitter_hover")}),$j(this.splitterDiv).mouseleave(function(){$j(this).removeClass("egw_fw_ui_splitter_hover")}),$j(this.contDiv).append(this.splitterDiv)}function egw_fw_ui_toggleSidebar(_contentDiv,_toggleCallback,_callbackContext){var self=this;this.toggleCallback=_toggleCallback,this.toggleDiv=$j(document.createElement("div")).attr({id:"egw_fw_toggler"}).click(function(){self.onToggle(_callbackContext)});$j(document.createElement("span")).addClass("et2_clickable").appendTo(this.toggleDiv);"1"===egw.preference("audio_effect","common")&&(this.toggleAudio=$j(document.createElement("audio")).attr({src:"data:audio/mp3;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/71gBgAAAAAEsAAAAAAAAJYAAAAAAAASwAAAAAAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+9YAYAAAAABLAAAAAAAACWAAAAAAAAEsAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//vWAGAAAAAASwAAAAAAAAlgAAAAAAABLAAAAAAAACWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/71gBgAAAAAEsAAAAAAAAJYAAAAAAAASwAAAAAAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+9YAYAAAAABLAAAAAAAACWAAAAAAAAEsAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//vWAGAAAAAASwAAAAAAAAlgAAAAAAABLAAAAAAAACWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/71gBgAAAAAEsAAAAAAAAJYAAAAAAAASwAAAAAAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+9YAYAAAAABLAAAAAAAACWAAAAAAAAEsAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//vWAGAAAAAASwAAAAAAAAlgAAAAAAABLAAAAAAAACWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/71gBgAAAAAEsAAAAAAAAJYAAAAAAAASwAAAAAAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAA="}).appendTo(this.toggleDiv)),this.contDiv=$j(_contentDiv),this.contDiv.prepend(this.toggleDiv)}function egw_fw_class_application(_parentFw,_appName,_displayName,_icon,_indexUrl,_sideboxWidth,_baseUrl,_internalName){this.appName=_appName,this.internalName=_internalName,this.displayName=_displayName,this.icon=_icon,this.indexUrl=_indexUrl,this.sidebox_md5="",this.hasPrerequisites,this.baseUrl=_baseUrl,this.website_title="",this.app_header="",this.sideboxWidth=_sideboxWidth, +this.parentFw=_parentFw,this.hasSideboxMenuContent=!1,this.sidemenuEntry=null,this.tab=null,this.browser=null}function egw_fw_getMenuaction(_fun){return egw_fw_class_application.prototype.getMenuaction.call(null,_fun)}function egw_fw_class_callback(_context,_proc){this.context=_context,this.proc=_proc}function show_pixelegg_header(_toggle,_delay){$j("#egw_fw_header").slideToggle(),$j("#egw_fw_sidebar").animate({top:"48px"},_delay),$j("#egw_fw_tabs").animate({"margin-top":"8px"},_delay),$j(".egw_fw_ui_tabs_header").css("padding","1px 1px 0px 1px"),$j(".egw_fw_ui_sidemenu_entry_header_active").css("background-position","95% -3000px"),$j(_toggle).parent().removeClass("slidedown"),$j(_toggle).parent().addClass("slideup")}function hide_pixelegg_header(_toggle,_delay){$j("#egw_fw_header").slideToggle(),$j("#egw_fw_sidebar").animate({top:"3px"},_delay),$j("#egw_fw_logout").show(),$j("#egw_fw_print").show(),$j("#egw_fw_tabs").animate({"margin-top":"8px",top:"0px"},_delay),$j(".egw_fw_ui_sidemenu_entry_header_active").css("background-position","95% 50%"),$j(".egw_fw_ui_tabs_header").css("height","34px").css("padding","1px 75px 0px 20px"),$j(".egw_fw_ui_tab_header").css("height","24px"),$j(".egw_fw_ui_tab_icon").css("display","inline-block"),$j(".egw_fw_ui_tab_icon").css("margin-right","5px"),$j(".egw_fw_ui_tabs_header h1").css("float","none"),$j(".egw_fw_ui_tabs_header h1").css("display","inline"),$j(_toggle).parent().removeClass("slideup"),$j(_toggle).parent().addClass("slidedown")}function replace_svg(){$j("img.svg").each(function(){var $img=$j(this),imgID=$img.attr("id"),imgClass=$img.attr("class"),imgURL=$img.attr("src");$j.get(imgURL,function(data){var $svg=$j(data).find("svg");"undefined"!=typeof imgID&&($svg=$svg.attr("id",imgID)),"undefined"!=typeof imgClass&&($svg=$svg.attr("class",imgClass+" replaced-svg")),$svg=$svg.removeAttr("xmlns:a"),$img.replaceWith($svg)},"xml")})}var fw_base=function(){"use strict";return Class.extend({init:function(_sidemenuId,_tabsId,_webserverUrl,_sideboxSizeCallback){this.sidemenuDiv=document.getElementById(_sidemenuId),this.tabsDiv=document.getElementById(_tabsId),this.webserverUrl=_webserverUrl,this.sideboxSizeCallback=_sideboxSizeCallback,window.egw_webserverUrl=_webserverUrl,this.serializedTabState="",this.notifyTabChangeEnabled=!1,this.sidemenuUi=null,this.tabsUi=null,this.applications=new Object,this.activeApp=null,$j(window).resize(function(){window.framework.resizeHandler()}),window.egw_alertHandler=this.alertHandler,window.egw_appWindow=this.egw_appWindow,window.egw_appWindowOpen=this.egw_appWindowOpen,window.egw_getAppName=this.egw_getAppName},loadApplications:function(apps){this.sidemenuUi.clean(),this.tabsUi.clean();for(var defaultApp=null,restore=new Object,restore_count=0,mkRestoreEntry=function(_app,_pos,_url,_active){return{app:_app,position:_pos,url:_url,active:_active}},i=0;i'),""==_data[i].entries[j].item_link)catContent+=this.html.html;else{var link=_data[i].entries[j].item_link;link&&(catContent+=''+this.html.html+"")}_data[i].entries[j].icon_or_star&&(catContent+="")}if(""!=catContent){var categoryUi=new egw_fw_ui_category(contDiv,_data[i].menu_name,_data[i].title,catContent,this.categoryOpenCloseCallback,this.categoryAnimationCallback,_app),opened=egw.preference("jdots_sidebox_"+_data[i].menu_name,_app.appName);"undefined"==typeof opened&&(opened=_data[i].opened),opened&&categoryUi.open(!0)}}_data.length<=0&&_app.sidemenuEntry.hideAjaxLoader();for(var forms=$j("form",contDiv).toArray(),i=0;i1))},applicationClickCallback:function(_sender){this.tag.parentFw.applicationTabNavigate(this.tag,this.tag.indexUrl)},tabClickCallback:function(_sender){this.tag.parentFw.setActiveApp(this.tag)},tabCloseClickCallback:function(_sender){var app=this.tag,tabsUi=this.parent;tabsUi.tabs.length>1&&(app.browser.blank(),this.tag.parentFw.notifyTabChangeEnabled=!1,tabsUi.removeTab(this),app.tab=null,app.browser=null,app.sidemenuEntry&&app.sidemenuEntry.hideAjaxLoader(),app.parentFw.setActiveApp(tabsUi.activeTab.tag),this.tag.parentFw.notifyTabChangeEnabled=!0,this.tag.parentFw.notifyTabChange()),tabsUi.setCloseable(tabsUi.tabs.length>1),this.tag.parentFw.resizeHandler()},parseAppFromUrl:function(_url){var _app=null,matches=_url.match(/menuaction=([a-z0-9_-]+)\./i)||_url.match(/\/([^\/]+)\/[^\/]+\.php/i);return matches&&(_app=this.getApplicationByName(matches[1])),_app},getApplicationByName:function(_name){return"undefined"!=typeof this.applications[_name]?this.applications[_name]:null},setWebsiteTitle:function(_app,_title,_header){"string"==typeof _app&&(_app=this.getApplicationByName(_app)),_app&&(_app.website_title=_title,_header&&_header!=egw.lang(_app.appName)?_app.app_header=_header:_app.app_header="",_app==this.activeApp&&this.refreshAppTitle())},alertHandler:function(_message,_details){_details?alert("Error:\n "+_message+"\n\nDetails:\n "+_details):alert(_message)},callManual:function(referer){"undefined"==typeof referer&&this.activeApp&&"manual"!=this.activeApp.appName&&(referer=this.activeApp.indexUrl,this.activeApp.browser.iframe&&this.activeApp.browser.iframe.contentWindow.location&&(referer=this.activeApp.browser.iframe.contentWindow.location.href)),"undefined"!=typeof referer&&this.linkHandler(egw.link("/index.php",{menuaction:"manual.uimanual.view",referer:referer}),"manual",!0)},linkHandler:function(_link,_app,_useIframe,_linkSource){var app=null;_app&&"string"==typeof _app&&(app=this.getApplicationByName(_app)),app||(app=this.parseAppFromUrl(_link)),app?this.applicationTabNavigate(app,_link):"string"==typeof _app?egw_alertHandler('Application "'+_app+'" not found.','The application "'+_app+'" the link "'+_link+'" points to is not registered.'):egw_alertHandler("No appropriate target application has been found.","Target link: "+_link)},redirect:function(_url){window.location=_url},setActiveApp:function(_app){if(_app!=this.activeApp){if(!_app.browser.currentLocation&&!_app.browser.iframe)return void this.applicationTabNavigate(_app,_app.indexUrl);this.activeApp=_app,_app.sidemenuEntry?_app.hasSideboxMenuContent&&this.sidemenuUi.open(_app.sidemenuEntry):this.sidemenuUi.open(null),this.refreshAppTitle(),_app.tab&&(this.tabsUi.showTab(_app.tab),this.notifyTabChange())}},openPopup:function(_url,_width,_height,_windowName,_app,_returnID,_status,_parentWnd){var parentWindow=_parentWnd||window,navigate=!1;if("undefined"!=typeof _app&&_app!==!1){var appEntry=framework.getApplicationByName(_app);appEntry&&null==appEntry.browser&&(navigate=!0,framework.applicationTabNavigate(appEntry,"about:blank"))}else var appEntry=framework.activeApp;null==appEntry||null==appEntry.browser.iframe||!_app&&egw(parentWindow).is_popup()||(parentWindow=appEntry.browser.iframe.contentWindow);var windowID=egw(parentWindow).openPopup(_url,_width,_height,_windowName,_app,!0,_status,!0);return windowID.framework=this,navigate&&window.setTimeout("framework.applicationTabNavigate(framework.activeApp, framework.activeApp.indexUrl);",500),_returnID!==!1?windowID:void 0},egw_appWindow:function(_app){var app=framework.getApplicationByName(_app),result=window;return null!=app&&null!=app.browser&&null!=app.browser.iframe&&(result=app.browser.iframe.contentWindow),result},egw_appWindowOpen:function(_app,_url){"undefined"==typeof _url&&(_url="about:blank"),null==_app&&(window.location=_url);var app=null;app="string"==typeof _app?framework.getApplicationByName(_app):_app,null!=app&&framework.applicationTabNavigate(app,_url)},egw_getAppName:function(){return framework.activeApp.appName},tzSelection:function(_tz){var req=egw.json("home.jdots_framework.ajax_tz_selection.template",[_tz],null,null,!1);req.sendRequest(),this.activeApp.browser&&this.activeApp.browser.reload()},refreshAppTitle:function(){this.activeApp&&(this.messageTimer&&(window.clearTimeout(this.messageTimer),delete this.messageTimer),this.tabsUi.setAppHeader(this.activeApp.app_header),document.title=this.activeApp.website_title),this.resizeHandler()},resizeHandler:function(){for(var app in this.applications)null!=this.applications[app].browser&&this.applications[app].browser.resize()},refresh:function(_msg,_app,_id,_type,_targetapp,_replace,_with,_msg_type){_app||(window.location.href=window.egw_webserverUrl+"/index.php?cd=yes"+(_msg?"&msg="+encodeURIComponent(_msg):""));var win=window,app=this.getApplicationByName(_app);if(app){if(!app.browser)return;app.browser&&app.browser.iframe&&(win=app.browser.iframe.contentWindow)}if(win==window){var refresh_done=!1;"function"==typeof etemplate2&&etemplate2.app_refresh&&(refresh_done=etemplate2.app_refresh(_msg,_app,_id,_type)),refresh_done||(app||(app=this.activeApp),app&&app.browser&&app.browser.reload())}return _targetapp&&_app!=_targetapp&&this.refresh(_msg,_targetapp,null,null,null,_replace,_with,_msg_type),win!=window?win:void 0},print:function(){if(this.activeApp&&"manual"!=this.activeApp.appName){var appWindow=this.egw_appWindow(this.activeApp.appName);if(appWindow){appWindow.focus();var deferred=[],et2_list=[];if($j(".et2_container",this.activeApp.tab.contDiv).each(function(){var et2=etemplate2.getById(this.id);et2&&jQuery(et2.DOMContainer).filter(":visible")&&(deferred=deferred.concat(et2.print()),et2_list.push(et2))}),et2_list.length){var afterPrint=function(){$j("#egw_fw_main").css("margin-left",framework.activeApp.sideboxWidth-1+"px");var app=framework.activeApp;framework.activeApp="",framework.setActiveApp(app),window.setTimeout(function(){for(var i=0;i0&&(useIframe=!1),window.app[this.app.appName]&&window.app[this.app.appName].destroy&&window.app[this.app.appName].destroy(),"function"==typeof etemplate2)$j(".et2_container",this.contentDiv||this.baseDiv).each(function(){var et=etemplate2.getById(this.id);null!==et&&et.clear()});else if(this.iframe&&"function"==typeof this.iframe.contentWindow.etemplate2)try{if("function"==typeof this.iframe.contentWindow.etemplate2){var content=this.iframe.contentWindow;$j(".et2_container",this.iframe.contentWindow).each(function(){var et=content.etemplate2.getById(this.id);null!==et&&et.clear()})}}catch(e){}if(this.currentLocation=_url,useIframe)this.setBrowserType(EGW_BROWSER_TYPE_IFRAME),window.setTimeout(function(){if(self.iframe.src=_url,self.iframe&&self.iframe.contentWindow)try{self.iframe.contentWindow._legacy_iframe=!0,self.app==framework.activeApp&&self.iframe.contentWindow.focus()}catch(e){}self.loadingDeferred&&(self.loadingDeferred.resolve(),self.loadingDeferred=null)},1);else if(this.setBrowserType(EGW_BROWSER_TYPE_DIV),"about:blank"==targetUrl)this.app.sidemenuEntry&&this.app.sidemenuEntry.hideAjaxLoader(),egw_widgetReplace(this.app.appName,this.contentDiv,"");else{this.app.sidemenuEntry&&this.app.sidemenuEntry.showAjaxLoader(),this.data="",$j(this.contentDiv).empty();var self_egw=egw(this.app.appName),req=self_egw.json(this.app.getMenuaction("ajax_exec"),[targetUrl],this.browse_callback,this,!0,this);req.sendRequest()}return this.loadingDeferred.promise()},browse_callback:function(_data){_data&&void 0==_data.type&&(this.data=_data[0],this.browse_finished())},browse_finished:function(){this.app.sidemenuEntry&&this.app.sidemenuEntry.hideAjaxLoader();var content={html:this.data,js:""};this.app==framework.activeApp&&window.focus(),egw_seperateJavaScript(content),$j(this.contentDiv).append(content.html),$j(this.contentDiv).append(content.js),this.loadingDeferred&&this.loadingDeferred.resolve()},reload:function(){switch(this.type){case EGW_BROWSER_TYPE_DIV:this.browse(this.currentLocation);break;case EGW_BROWSER_TYPE_IFRAME:this.iframe.contentWindow.location.reload()}},blank:function(){this.browse("about:blank",this.type==EGW_BROWSER_TYPE_IFRAME)}})}.call(this);!function($){function handler(event){var orgEvent=event||window.event,args=[].slice.call(arguments,1),delta=0,deltaX=0,deltaY=0;return event=$.event.fix(orgEvent),event.type="mousewheel",orgEvent.wheelDelta&&(delta=orgEvent.wheelDelta/120),orgEvent.detail&&(delta=-orgEvent.detail/3),deltaY=delta,void 0!==orgEvent.axis&&orgEvent.axis===orgEvent.HORIZONTAL_AXIS&&(deltaY=0,deltaX=-1*delta),void 0!==orgEvent.wheelDeltaY&&(deltaY=orgEvent.wheelDeltaY/120),void 0!==orgEvent.wheelDeltaX&&(deltaX=-1*orgEvent.wheelDeltaX/120),args.unshift(event,delta,deltaX,deltaY),($.event.dispatch||$.event.handle).apply(this,args)}var types=["DOMMouseScroll","mousewheel"];if($.event.fixHooks)for(var i=types.length;i;)$.event.fixHooks[types[--i]]=$.event.mouseHooks;$.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var i=types.length;i;)this.addEventListener(types[--i],handler,!1);else this.onmousewheel=handler},teardown:function(){if(this.removeEventListener)for(var i=types.length;i;)this.removeEventListener(types[--i],handler,!1);else this.onmousewheel=null}},$.fn.extend({mousewheel:function(fn){return fn?this.bind("mousewheel",fn):this.trigger("mousewheel")},unmousewheel:function(fn){return this.unbind("mousewheel",fn)}})}(jQuery);var fw_ui_sidemenu_entry=function(){"use strict";return Class.extend({init:function(_parent,_baseDiv,_elemDiv,_name,_icon,_callback,_tag,_app){this.baseDiv=_baseDiv,this.elemDiv=_elemDiv,this.entryName=_name,this.icon=_icon,this.tag=_tag,this.parent=_parent,this.atTop=!1,this.isDraged=!1,this.headerDiv=document.createElement("div"),this.headerDiv.id=_app+"_sidebox_header",$j(this.headerDiv).addClass("egw_fw_ui_sidemenu_entry_header");var iconDiv=egw.image_element(this.icon,_name);$j(iconDiv).addClass("egw_fw_ui_sidemenu_entry_icon"),this.ajaxloader=document.createElement("div"),$j(this.ajaxloader).addClass("egw_fw_ui_ajaxloader"),$j(this.ajaxloader).hide();var entryH1=document.createElement("h1");$j(entryH1).text(this.entryName),$j(this.headerDiv).append(iconDiv),$j(this.headerDiv).append(entryH1),$j(this.headerDiv).append(this.ajaxloader),this.headerDiv._parent=this,this.headerDiv._callbackObject=new egw_fw_class_callback(this,_callback),$j(this.headerDiv).click(function(){return this._parent.isDraged||this._callbackObject.call(this),this._parent.isDraged=!1,!0}),this.contentDiv=document.createElement("div"),this.contentDiv.id=_app+"_sidebox_content",$j(this.contentDiv).addClass("egw_fw_ui_sidemenu_entry_content"),$j(this.contentDiv).hide(),this.marker=document.createElement("div"),this.marker._parent=this,this.marker.className="egw_fw_ui_sidemenu_marker";var entryH1_=document.createElement("h1");$j(entryH1_).text(this.entryName),$j(this.marker).append(entryH1_),$j(this.marker).hide(),this.containerDiv=document.createElement("div"),this.containerDiv._parent=this,$j(this.containerDiv).append(this.marker),$j(this.containerDiv).append(this.headerDiv),$j(this.containerDiv).append(this.contentDiv),$j(this.elemDiv).append(this.containerDiv)},setContent:function(_content){$j(this.contentDiv).empty(),$j(this.contentDiv).append(_content)},open:function(){$j(this.baseDiv).prepend(this.contentDiv),$j(this.baseDiv).prepend(this.headerDiv),this.atTop=!0,$j(this.headerDiv).addClass("egw_fw_ui_sidemenu_entry_header_active"),$j(this.contentDiv).show()},close:function(){this.atTop&&($j(this.marker).after(this.contentDiv),$j(this.marker).after(this.headerDiv),this.atTop=!1),$j(this.headerDiv).removeClass("egw_fw_ui_sidemenu_entry_header_active"),$j(this.contentDiv).hide()},showAjaxLoader:function(){$j(this.ajaxloader).show()},hideAjaxLoader:function(){$j(this.ajaxloader).hide()},remove:function(){$j(this.headerDiv).remove(),$j(this.contentDiv).remove()}})}.call(this),fw_ui_sidemenu=function(){"use strict";return Class.extend({init:function(_baseDiv){this.baseDiv=_baseDiv,this.elemDiv=document.createElement("div"),$j(this.baseDiv).append(this.elemDiv),this.entries=new Array,this.activeEntry=null},_searchMarkers:function(_resultArray,_children){for(var i=0;i<_children.length;i++){var child=_children[i];"egw_fw_ui_sidemenu_marker"==child.className&&"undefined"!=typeof child._parent&&_resultArray.push(child._parent),this._searchMarkers(_resultArray,child.childNodes)}},addEntry:function(_name,_icon,_callback,_tag,_app){var entry=new egw_fw_ui_sidemenu_entry(this,this.baseDiv,this.elemDiv,_name,_icon,_callback,_tag,_app);return this.entries[this.entries.length]=entry,entry},open:function(_entry){for(var i=0;i=0;i--)this.tabHistory[i]==this.tabHistory[i-1]&&array_remove(this.tabHistory,i)},egw_fw_ui_tabs.prototype.addTab=function(_icon,_callback,_closeCallback,_tag,_pos){var pos=-1;"undefined"!=typeof _pos&&(pos=_pos);var tab=new egw_fw_ui_tab(this,this.contHeaderDiv,this.contDiv,_icon,_callback,_closeCallback,_tag,pos),inserted=!1;if(pos>-1)for(var i in this.tabs)if(this.tabs[i].position>pos){this.tabs.splice(i,0,tab),inserted=!0;break}return-1!=pos&&inserted||(this.tabs[this.tabs.length]=tab),null==this.activeTab&&this.showTab(tab),tab},egw_fw_ui_tabs.prototype.removeTab=function(_tab){for(var i=this.tabHistory.length-1;i>=0;i--)this.tabHistory[i]==_tab&&array_remove(this.tabHistory,i);if(this.cleanHistory(),_tab==this.activeTab&&this.tabs.length>0){var tab=_tab==this.tabs[0]?this.tabs[1]:this.tabs[0];"undefined"!=typeof this.tabHistory[this.tabHistory.length-1]&&(tab=this.tabHistory[this.tabHistory.length-1]),tab.callback.call(tab)}_tab.remove();for(var i=this.tabs.length-1;i>=0;i--)this.tabs[i]==_tab&&array_remove(this.tabs,i)},egw_fw_ui_tabs.prototype.showTab=function(_tab){if(this.activeTab!=_tab){for(var i=0;i50&&array_remove(this.tabHistory,0)}},egw_fw_ui_tabs.prototype.setCloseable=function(_closeable){for(var i=0;i=_pos?(this.btnUpEnabled&&$j(this.btnUp).addClass("egw_fw_ui_scrollarea_button_disabled"),this.btnDownEnabled||$j(this.btnDown).removeClass("egw_fw_ui_scrollarea_button_disabled"),this.btnDownEnabled=!0,this.btnUpEnabled=!1,_pos=0):_pos>=this.maxScrollPos?(this.btnDownEnabled&&$j(this.btnDown).addClass("egw_fw_ui_scrollarea_button_disabled"),this.btnUpEnabled||$j(this.btnUp).removeClass("egw_fw_ui_scrollarea_button_disabled"),this.btnDownEnabled=!1,this.btnUpEnabled=!0,_pos=this.maxScrollPos):(this.btnUpEnabled||$j(this.btnUp).removeClass("egw_fw_ui_scrollarea_button_disabled"),this.btnDownEnabled||$j(this.btnDown).removeClass("egw_fw_ui_scrollarea_button_disabled"),this.btnUpEnabled=!0,this.btnDownEnabled=!0),this.scrollPos=_pos,this.scrollDiv.style.top=Math.round(-_pos)+"px")},egw_fw_ui_scrollarea.prototype.scrollDelta=function(_delta){this.setScrollPos(this.scrollPos+_delta)},egw_fw_ui_scrollarea.prototype.toggleButtons=function(_visible){_visible?($j(this.btnDown).show(),$j(this.btnUp).show(),this.buttonHeight=$j(this.btnDown).outerHeight(),this.maxScrollPos=this.contHeight-this.boxHeight,this.setScrollPos(this.scrollPos)):(this.scrollDiv.style.top="0",$j(this.btnDown).hide(),$j(this.btnUp).hide()),this.buttonsVisible=_visible},egw_fw_ui_scrollarea.prototype.update=function(){this.contHeight=$j(this.scrollDiv).outerHeight(),this.boxHeight=$j(this.contDiv).height(),this.toggleButtons(this.contHeight>this.boxHeight),this.setScrollPos(this.scrollPos)},egw_fw_ui_scrollarea.prototype.getScrollDelta=function(_timeGap){var curScrollSpeed=this.startScrollSpeed+this.scrollSpeedAccel*this.scrollTime;return curScrollSpeed>this.endScrollSpeed&&(curScrollSpeed=this.endScrollSpeed),this.scrollTime=this.scrollTime+_timeGap,curScrollSpeed*_timeGap},egw_fw_ui_scrollarea.prototype.mouseOverCallback=function(_context){_context.scrollDelta(_context.getScrollDelta(_context.timerInterval)*_context.dir),_context.mouseOver&&setTimeout(function(){_context.mouseOverCallback(_context)},Math.round(1e3*_context.timerInterval))},egw_fw_ui_scrollarea.prototype.mouseOverToggle=function(_over,_dir){if(this.mouseOver=_over,this.dir=_dir,this.update(),_over){var _context=this;setTimeout(function(){_context.mouseOverCallback(_context)},Math.round(1e3*_context.timerInterval))}else this.scrollTime=0};var EGW_SPLITTER_HORIZONTAL=0,EGW_SPLITTER_VERTICAL=1;egw_fw_ui_splitter.prototype.clipDelta=function(_delta){for(var result=_delta,i=0;2>i;i++){var mul=0==i?1:-1;if(this.constraints[i].maxsize>0){var size=this.constraints[i].size+mul*result;size>this.constraints[i].maxsize&&(result+=mul*(this.constraints[i].maxsize-size))}if(this.constraints[i].minsize>0){var size=this.constraints[i].size+mul*result;sizeouter_width){var max_width=Math.floor(outer_width/this.tabsUi.contHeaderDiv.childElementCount)-(spans.outerWidth(!0)-spans.width());spans.css("max-width",max_width+"px")}},categoryOpenCloseCallback:function(_opened){egw.set_preference(this.tag.appName,"jdots_sidebox_"+this.catName,_opened)},categoryAnimationCallback:function(){this.tag.parentFw.scrollAreaUi.update()},_toggleSidebarCallback:function(_state){var splitterWidth=egw.preference("jdotssideboxwidth",this.activeApp.appName)||this.activeApp.sideboxWidth;"on"===_state?(this.splitterUi.resizeCallback(70,"toggle"),egw.set_preference(this.activeApp.appName,"toggleSidebar","on")):(this.splitterUi.resizeCallback(splitterWidth),egw.set_preference(this.activeApp.appName,"toggleSidebar","off"))},getToggleSidebarState:function(){var toggleSidebar=egw.preference("toggleSidebar",this.activeApp.appName);this.toggleSidebarUi.set_toggle(toggleSidebar?toggleSidebar:"off",this._toggleSidebarCallback,this)}})}(window),egw_LAB.wait(function(){$j(document).ready(function(){$j("#slidetoggle").click(function(){"none"===$j("#egw_fw_header").css("display")?(show_pixelegg_header(this,1e3),egw_getFramework().checkTabOverflow(),egw.set_preference("common","pixelegg_header_hidden","")):(hide_pixelegg_header(this,1e3),egw_getFramework().checkTabOverflow(),egw.set_preference("common","pixelegg_header_hidden","true")),window.setTimeout(function(){egw_getFramework().notifyTabChange()},1e3)}),egw.preference("pixelegg_header_hidden")&&hide_pixelegg_header($j("#slidetoggle"),0)}),$j("#quick_add").on({mouseover:function(ev){ev.relatedTarget&&"quick_add_selectbox"!=ev.relatedTarget.id&&"quick_add_selectbox"!=ev.target.id&&($j(this).css({transition:"0.2s ease-out 0s",width:"166px","border-top-left-radius":"20px","background-color":"#0B5FA4"}),$j("select",this).css({transition:"0.1s linear 0.2s",visibility:"visible",width:"120px"})),ev.stopPropagation()},mouseout:function(ev){ev.target&&ev.relatedTarget&&"quick_add_selectbox"!=ev.target.id&&"quick_add"!=ev.relatedTarget.id&&"quick_add_selectbox"!=ev.relatedTarget.id&&"OPTION"!=ev.relatedTarget.tagName&&($j(this).css({transition:"0.6s ease-out 0s",width:"16px","border-top-left-radius":"0px","background-color":"transparent"}),$j("select",this).css({transition:"0s linear 0s",visibility:"hidden",width:"10px"})),ev.stopPropagation()},focusout:function(ev){$j(this).css({transition:"0.6s ease-out 0s",width:"16px","border-top-left-radius":"0px","background-color":"transparent"}),$j("select",this).css({transition:"0s linear 0s",visibility:"hidden",width:"10px"})}}),replace_svg()}),function(window){"use strict";var fw_pixelegg=fw_desktop.extend({getIFrameHeight:function(_iframe){var height=this._super.apply(this,arguments);return height-28}});egw_LAB.wait(function(){function egw_setSideboxSize(_size){document.getElementById("egw_fw_main").style.marginLeft=_size+"px",document.getElementById("egw_fw_sidebar").style.width=_size+"px"}$j(document).ready(function(){window.framework=new fw_pixelegg("egw_fw_sidemenu","egw_fw_tabs",window.egw_webserverUrl,egw_setSideboxSize,"egw_fw_splitter",255,245),window.callManual=window.framework.callManual,jQuery("#egw_fw_print").click(function(){window.framework.print()}),jQuery("#egw_fw_logout").click(function(){window.framework.redirect(this.getAttribute("data-logout-url"))}),jQuery('form[name^="tz_selection"]').children().on("change",function(){return framework.tzSelection(this.value),!1}),window.egw.link_quick_add("quick_add");var href_regexp=/^javascript:([^\(]+)\((.*)?\);?$/;jQuery("#egw_fw_topmenu_items,#egw_fw_topmenu_info_items,#egw_fw_sidemenu,#egw_fw_footer").on("click",'a[href^="javascript:"]',function(ev){ev.stopPropagation();var matches=this.href.match(href_regexp),args=[];if(matches.length>1&&void 0!==matches[2])try{args=JSON.parse("["+matches[2]+"]")}catch(e){args=JSON.parse("["+matches[2].replace(/','/g,'","').replace(/((^|,)'|'(,|$))/g,'$2"$3')+"]")}return args.unshift(matches[1]),et2_call.apply(this,args),!1})})})}(window); +//# sourceMappingURL=fw_pixelegg.min.js.map \ No newline at end of file diff --git a/pixelegg/js/fw_pixelegg.min.js.map b/pixelegg/js/fw_pixelegg.min.js.map new file mode 100644 index 0000000000..188be8bf25 --- /dev/null +++ b/pixelegg/js/fw_pixelegg.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../phpgwapi/js/framework/fw_ui.js","../../phpgwapi/js/framework/fw_classes.js","slider.js","../../phpgwapi/js/framework/fw_base.js","../../phpgwapi/js/framework/fw_browser.js","../../phpgwapi/js/jquery/mousewheel/mousewheel.js","../../phpgwapi/js/framework/fw_desktop.js","fw_pixelegg.js"],"names":["egw_fw_ui_tab","_parent","_contHeaderDiv","_contDiv","_icon","_callback","_closeCallback","_tag","_pos","this","parent","contHeaderDiv","contDiv","title","tag","closeable","callback","closeCallback","position","headerDiv","document","createElement","_position","$j","addClass","_callbackObject","egw_fw_class_callback","click","call","hover","hasClass","removeClass","tab","droppable","tolerance","over","closeButton","context","append","icon","egw","image_element","headerH1","setTitle","contentDiv","hide","_this","$_children","children","_cnt","size","each","i","before","after","egw_fw_ui_tabs","appHeaderContainer","appHeader","tabs","Array","activeTab","tabHistory","egw_fw_ui_category","_name","_title","_content","_animationCallback","catName","animationCallback","entryH1","close","open","egw_fw_ui_scrollarea","startScrollSpeed","endScrollSpeed","scrollSpeedAccel","timerInterval","contHeight","boxHeight","scrollPos","buttonScrollOffs","maxScrollPos","buttonsVisible","mouseOver","scrollTime","btnUpEnabled","btnDownEnabled","scrollDiv","style","self","on","e","delta","noscroll","target","tagName","getAttribute","match","stopPropagation","scrollDelta","scrollHeight","update","outerDiv","appendTo","btnUp","mouseenter","mouseOverToggle","setScrollPos","mouseleave","prepend","btnDown","egw_fw_ui_splitter","_orientation","_resizeCallback","_constraints","orientation","resizeCallback","startPos","constraints","minsize","maxsize","constructor","splitterDiv","dragoptions","opacity","helper","start","event","ui","dragStartHandler","drag","dragHandler","stop","dragStopHandler","containment","axis","iframeFix","zIndex","EGW_SPLITTER_HORIZONTAL","EGW_SPLITTER_VERTICAL","draggable","egw_fw_ui_toggleSidebar","_contentDiv","_toggleCallback","_callbackContext","toggleCallback","toggleDiv","attr","id","onToggle","preference","toggleAudio","src","egw_fw_class_application","_parentFw","_appName","_displayName","_indexUrl","_sideboxWidth","_baseUrl","_internalName","appName","internalName","displayName","indexUrl","sidebox_md5","hasPrerequisites","baseUrl","website_title","app_header","sideboxWidth","parentFw","hasSideboxMenuContent","sidemenuEntry","browser","egw_fw_getMenuaction","_fun","prototype","getMenuaction","_context","_proc","proc","show_pixelegg_header","_toggle","_delay","slideToggle","animate","top","margin-top","css","hide_pixelegg_header","show","replace_svg","$img","imgID","imgClass","imgURL","get","data","$svg","find","removeAttr","replaceWith","fw_base","Class","extend","init","_sidemenuId","_tabsId","_webserverUrl","_sideboxSizeCallback","sidemenuDiv","getElementById","tabsDiv","webserverUrl","sideboxSizeCallback","window","egw_webserverUrl","serializedTabState","notifyTabChangeEnabled","sidemenuUi","tabsUi","applications","Object","activeApp","resize","framework","resizeHandler","egw_alertHandler","alertHandler","egw_appWindow","egw_appWindowOpen","egw_getAppName","loadApplications","apps","clean","defaultApp","restore","restore_count","mkRestoreEntry","_app","_url","_active","app","url","active","length","name","appData","sideboxwidth","noNavbar","addEntry","applicationClickCallback","isDefault","opened","openOnce","applicationTabNavigate","_hidden","createApplicationTab","deferred","jQuery","Deferred","iframe","currentLocation","egw_refresh","setActiveApp","resolve","promise","getIFrameHeight","fw_browser","setContent","baseDiv","notifyTabChange","browse","_iframe","height","outerHeight","setSidebox","_data","_md5","getApplicationByName","contJS","catContent","j","entries","html","lang_item","js","egw_seperateJavaScript","icon_or_star","item_link","link","categoryUi","menu_name","categoryOpenCloseCallback","categoryAnimationCallback","hideAjaxLoader","forms","toArray","form","action","indexOf","substr","parseAppFromUrl","sidebox","currentAppName","sortable","items","placeholder","favSortedList","attribute","set_preference","_init_sidebox","setTimeout","callResizeHandler","contentWindow","focus","storeTabsStatus","assembleTabList","serialized","jsonEncode","jsonq","_opened","result","addTab","tabClickCallback","tabCloseClickCallback","setCloseable","_sender","blank","removeTab","matches","setWebsiteTitle","_header","lang","refreshAppTitle","_message","_details","alert","callManual","referer","location","href","linkHandler","menuaction","_link","_useIframe","_linkSource","redirect","showTab","openPopup","_width","_height","_windowName","_returnID","_status","_parentWnd","parentWindow","navigate","appEntry","is_popup","windowID","tzSelection","_tz","req","json","sendRequest","reload","messageTimer","clearTimeout","setAppHeader","refresh","_msg","_id","_type","_targetapp","_replace","_with","_msg_type","encodeURIComponent","win","refresh_done","etemplate2","app_refresh","print","appWindow","et2_list","et2","getById","DOMContainer","filter","concat","push","afterPrint","widgetContainer","iterateOver","_widget","et2_IPrint","onafterprint","matchMedia","mediaQueryList","listener","mql","removeListener","addListener","when","apply","done","fail","EGW_BROWSER_TYPE_NONE","EGW_BROWSER_TYPE_IFRAME","EGW_BROWSER_TYPE_DIV","_heightCallback","type","heightCallback","ajaxLoaderDiv","loadingDeferred","wnd","trigger","setBrowserType","empty","reject","width","borderWidth","frameBorder","ret","useIframe","targetUrl","loading_prompt","egwIsMobile","ajaxLoaderDivTimeout","remove","always","destroy","et","clear","content","_legacy_iframe","egw_widgetReplace","showAjaxLoader","self_egw","browse_callback","undefined","browse_finished","$","handler","orgEvent","args","slice","arguments","deltaX","deltaY","fix","wheelDelta","detail","HORIZONTAL_AXIS","wheelDeltaY","wheelDeltaX","unshift","dispatch","handle","types","fixHooks","mouseHooks","special","mousewheel","setup","addEventListener","onmousewheel","teardown","removeEventListener","fn","bind","unmousewheel","unbind","fw_ui_sidemenu_entry","_baseDiv","_elemDiv","elemDiv","entryName","atTop","isDraged","iconDiv","ajaxloader","text","marker","className","entryH1_","containerDiv","fw_ui_sidemenu","activeEntry","_searchMarkers","_resultArray","_children","child","childNodes","entry","egw_fw_ui_sidemenu_entry","_entry","is","_closeable","_text","_msg_class","prop","cleanHistory","array_remove","pos","inserted","splice","_tab","tabHistroy","_instantly","slideDown","slideUp","Math","round","_delta","toggleButtons","_visible","buttonHeight","getScrollDelta","_timeGap","curScrollSpeed","mouseOverCallback","dir","_over","_dir","clipDelta","mul","offset","left","set_disable","_state","play","splitter","splitterUi","set_toggle","toggleClass","getBaseUrl","_force","egw_topWindow","array","index","desktop_ui_sidemenu_entry","_super","setBottomLine","distance","item","startDrag","stopDrag","refreshSort","_entryList","desktop_ui_sidemenu","_sortCallback","sortCallback","resultArray","fw_desktop","_splitterId","_sideboxStartSize","_sideboxMinSize","scrollAreaUi","toggleSidebarUi","_toggleSidebarCallback","splitterResize","screen","availWidth","egw_script","JSON","parse","sorted_restore","sort","a","b","getToggleSidebarState","_entriesArray","name_array","_toggleMode","checkTabOverflow","outer_width","spans","outerWidth","max_width","floor","childElementCount","splitterWidth","toggleSidebar","egw_LAB","wait","ready","egw_getFramework","mouseover","ev","relatedTarget","transition","border-top-left-radius","background-color","visibility","mouseout","focusout","fw_pixelegg","egw_setSideboxSize","_size","marginLeft","value","link_quick_add","href_regexp","replace","et2_call"],"mappings":"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","file":"fw_pixelegg.min.js"} \ No newline at end of file diff --git a/updateGruntfile.php b/updateGruntfile.php index a5ff054578..7b7e0c1fbc 100755 --- a/updateGruntfile.php +++ b/updateGruntfile.php @@ -45,6 +45,12 @@ foreach(egw_framework::get_bundles() as $name => $files) if ($path[0] == '/') $path = substr($path, 1); }); + // phpgwapi/js/jsapi/egw.js loaded via own tag, and we must not load it twice! + if ($name == 'api' && ($key = array_search('phpgwapi/js/jsapi/egw.js', $files))) + { + unset($files[$key]); + } + //var_dump($name, $files); if (isset($uglify[$name])) { @@ -53,11 +59,14 @@ foreach(egw_framework::get_bundles() as $name => $files) } elseif (isset($uglify[$append = substr($name, 0, -1)])) { + reset($uglify[$append]['files']); + list($target) = each($uglify[$append]['files']); $uglify[$append]['files'][$target] = array_merge($uglify[$append]['files'][$target], array_values($files)); } - else + else // create new bundle using last file as target { - error_log("Bundle $name ignored!\n"); + $target = str_replace('.js', '.min.js', end($files)); + $uglify[$name]['files'][$target] = array_values($files); } }