/** * EGroupware idots template javascript * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package phpgwapi * @subpackage idots * @link http://www.egroupware.org * @author Ralf Becker * @version $Id$ */ /** * idots javascript */ (function(){ // add quick add select box egw.link_quick_add('quick_add'); // instanciate slideout menus via "data-slide-out" of egw.js script tag var egw_script = document.getElementById('egw_script_id'); if (egw_script) { var data_slide_out = egw_script.getAttribute('data-slide-out'); if (data_slide_out) { data_slide_out = JSON.parse(data_slide_out); for(var i=0; i < data_slide_out.length; ++i) { var args=data_slide_out[i]; new ypSlideOutMenu(args.id, args.dir, args.left, args.top, args.width, args.height, args.pos); for(var selector in args.bind) { var data = args.bind[selector]; jQuery(selector).on(data.event, {menu: args.id, method: data.method}, function(event){ window.ypSlideOutMenu[event.data.method].call(window, event.data.menu); event.preventDefault(); }); } } } } /** * Initialisation, when DOM is ready */ $j(function() { // Installing resize handler for divAppbox and et2_container, as et2 otherwise can not correctly size nextmatch $j(window).resize(function(){ var appbox_height = $j(window).height()-$j('#topmenu').height()-$j('#divAppIconBar').height()- $j('#divStatusBar').height()-$j('#divAppboxHeader').height()-$j('#divPoweredBy').height()-20; //console.log('setting height of '+appbox_height); $j('#divAppbox').css('min-height', appbox_height+'px'); $j('.et2_container').height(appbox_height-7); }); $j(window).resize(); $j(window).load(function(){ // fixes sometimes not called resize, probably due to timing issues $j(window).resize(); }); // allowing javascript urls in topmenu and sidebox only under CSP by binding click handlers to them var href_regexp = /^javascript:([^\(]+)\((.*)?\);?$/; jQuery('#topmenu_items,#thesideboxcolumn').on('click','a[href^="javascript:"]',function(){ var matches = this.href.match(href_regexp); if (matches && typeof window[matches[1]] == 'function') { var args = []; if (matches.length > 1 && matches[2] !== undefined) args = JSON.parse('['+matches[2].replace(/'/g,'"')+']'); window[matches[1]].apply(window.framework, args); } else if (matches && matches[1].indexOf('app.') == 0) { return et2_call(matches[1],matches[2]); } else { alert('Do NOT know how to execute '+this.href); } // return false to not execute link itself, which would violate CSP return false; }); // make sidebox resizable with jQueryUI resizable jQuery('#thesideboxcolumn').resizable({handles: 'e', minWidth: 200, stop: function(event, ui){ egw.set_preference(egw_appName, 'idotssideboxwidth', ui.size.width); }}); }); })();