openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit c4ef6603288de9f3d8625afc47ef4f92348ba156
parent 20c628e013a32b48792c5a080179ab68ff3adc2e
Author: Jan Dankert <devnull@localhost>
Date:   Wed,  4 Jul 2018 01:13:02 +0200

Ansteuerung der History-API verbessert und alten Kram tlw. entfernt.

Diffstat:
modules/cms-ui/themes/default/script/openrat.js | 401++++++++++++++-----------------------------------------------------------------
modules/cms-ui/themes/default/script/openrat.min.js | 25+++++++++++--------------
2 files changed, 82 insertions(+), 344 deletions(-)

diff --git a/modules/cms-ui/themes/default/script/openrat.js b/modules/cms-ui/themes/default/script/openrat.js @@ -23,7 +23,7 @@ $( function() // Listening to the "popstate" event: window.onpopstate = function(ev) { - History.fromHistory(ev.state); + Navigator.navigateTo(ev.state); }; initActualHistoryState(); @@ -32,33 +32,73 @@ $( function() loadTree(); // Initial Loading of the navigationtree + + }); function initActualHistoryState() { - var state = new Object(); + var state = {}; state.name = window.document.title; - state.action = $('#editor').data('action'); - state.id = $('#editor').data('id' ); - History.toActualHistory( state ); + + var params = new URLSearchParams( window.location.search ); + + if (params.has('action')){ + + state.action = params.get('action'); + state.id = params.get('id' ); + state.name = window.document.title; + + state.data = {}; + + //Iterate the search parameters. + + var params = Array.from( params.entries() ); + for( var entry in params ) { + state.data[params[entry][0]] = params[entry][1]; + }; + + Navigator.toActualHistory( state ); + } } /** - * History-API. + * Navigation. */ -var History = new function () { +var Navigator = new function () { 'use strict'; - this.fromHistory = function(state) { - Workbench.loadNewAction(state.action,state.id); + /** + * Navigiert zu einer Action, aber ohne ein neues History-Element einzufügen. + */ + this.navigateTo = function(state) { + Workbench.loadNewActionState(state); } - this.toHistory = function(obj) { + + /** + * + * Navigiert zu einer neue Action und fügt einen neuen History-Eintrag hinzu. + */ + this.navigateToNew = function(obj) { + + Workbench.loadNewActionState(obj); window.history.pushState(obj,obj.name,createUrl(obj.action,null,obj.id,obj.data,false) ); + + var state = {action:action,method:method,id:id,data:params}; + } + + this.navigateToNewAction = function(action, method, id, params ) { + var state = {action:action,method:method,id:id,data:params}; + this.navigateToNew(state); } + /** + * Setzt den State für den aktuellen History-Eintrag. + * @param obj + */ this.toActualHistory = function(obj) { window.history.replaceState(obj,obj.name,createUrl(obj.action,null,obj.id,obj.data,false) ); } @@ -76,22 +116,9 @@ var Workbench = new function() // Initialze Ping timer. this.initializePingTimer(); - this.loadInitialViews(); } - this.loadInitialViews = function() { - - /* - $('div#workbench > div .view').load( createUrl('login','login',0 ),function() { - $(this).fadeIn('slow'); - - registerHeaderEvents(); - }); - */ - - } - /** * Registriert den Ping-Timer für den Sitzungserhalt. */ @@ -115,13 +142,17 @@ var Workbench = new function() } + + this.loadNewActionState = function(state) { + + Workbench.loadNewAction(state.action,state.method,state.id,state.data); + } + /** * */ - this.loadNewAction = function(action, method, id, params ) { - var state = {action:action,method:method,id:id,data:params}; - History.toHistory(state); + this.loadNewAction = function(action, method, id, params ) { $('#workbench .view-loader').each( function(idx) { var targetDOMElement = $(this); @@ -152,6 +183,8 @@ var Workbench = new function() }); }); + filterMenus(action); + } } @@ -166,7 +199,6 @@ function refreshAll() { //$('ul#history').sortable(); - refreshTitleBar(); refreshWorkbench(); // Workbench-Events registrieren @@ -232,57 +264,8 @@ function refreshActualView( element ) */ function refreshWorkbench() { - // Workbench laden - $('ul#history').empty(); - - // View-Größe initial berechnen. - resizeWorkbench(); - - // Modale Dialoge beenden - $('div.modaldialog').fadeOut(500); - $('#workbench').removeClass('modal'); - $('div#filler').fadeOut(500); - - // Default-Inhalte der einzelnen Views laden. - $('#workbench').fadeIn(750).find('li.active').each( function() { - var method = $(this).attr('data-method'); - var action = $(this).attr('data-action'); - - if ( action ) - loadView( $(this).closest('div.panel').find('div.content'),action,method,0); - }); - - // OnClick-Handler zum Scrollen der Tabs - $('div.backward_link').click( function() { - var $views = $(this).closest('div.header').find('ul.views'); - //$views.scrollTo( -50 ); - var $prev = $views.find('li.action.active').prev(); - $views.scrollTo( $prev,500,{"axis":"x"} ); - $prev.click(); - } - ); - $('div.forward_link').click( function() { - var $views = $(this).closest('div.header').find('ul.views'); - var $next = $views.find('li.action.active').next(); - $views.scrollTo( $next,500,{"axis":"x"} ); - $next.click(); - } - ); - - - registerWorkbenchEvents(); - - - - // Modale Dialoge - //$('form.login, form.profile').dialog( { modal:true, resizable:false, width:760, height:600, draggable: false } ); - - - $(window).resize( function() { - resizeWorkbench(); - } ); } @@ -292,145 +275,6 @@ function refreshWorkbench() */ function registerWorkbenchEvents() { - // Drag and Drop für Views - $('ul.views > li.action').draggable( - { - cursor: 'move', - revert: 'invalid' - } ); - - // Ziehen von Views in andere View-Leisten. - // Die View wird dabei einfach kopiert. Container mit leeren View-Leisten werden gelöscht. - $('ul.views').droppable( - { - accept : 'li.action', - hoverClass : 'drophover', - activeClass: 'dropactive', - drop: function(event, ui) // View fällt auf eine andere, existierende View-Liste - { - var dropped = ui.draggable; - var droppedOn = $(this); - var oldViewList = dropped.parent(); - - if ( $(dropped).closest('div.panel').attr('id') == $(droppedOn).closest('div.panel').attr('id') ) - $(dropped).css({top: 0,left: 0}); // Nicht auf das eigene Fenster fallen lassen. - else - $(dropped).detach().css({top: 0,left: 0}).appendTo(droppedOn).click(); - - // Falls die View-Liste, von der die View weggezogen wurde, jetzt leer ist: - if ( oldViewList.find('li').size() == 0 ) - { - var oldContainer = oldViewList.closest('div.container'); - oldViewList.closest('div.panel').remove(); // Die Bar, in der die leere Viewliste ist, entfernen. - - if ( oldContainer.hasClass('autosize') ) - oldContainer.children('div.panel').addClass('autosize').removeClass('resizable'); - else - oldContainer.children('div.panel').addClass('resizable').removeClass('autosize'); - - oldContainer.replaceWith( oldContainer.children('div.panel') ); // die andere Bar nehmen und den übergeordneten Container ersetzen. - resizeWorkbench(); - } - } - } - ); - - // Ziehen von Views in anderen Inhalt-Bereichen - // Dabei wird der Ziel-Bereich durch einen neuen View-Container ersetzt. - $('div.content').droppable( - { - accept : 'li.action', - hoverClass : 'drophover', - activeClass: 'dropactive', - drop : function(event, ui) - { - var dropped = ui.draggable; - var droppedOn = $(this); - var oldViewList = dropped.parent(); - - var offsetDropped = dropped.offset(); - var offsetContent = droppedOn.offset(); - - // Abstände im Zielelement zu dem Rändern bestimmen. - var paddingLeft = offsetDropped.left-offsetContent.left; - var paddingRight = offsetContent.left+droppedOn.width()-offsetDropped.left; - var paddingTop = offsetDropped.top-offsetContent.top; - var paddingBottom = offsetContent.top+droppedOn.height()-offsetDropped.top; - //alert( ' L:' + paddingLeft + ' R:' + paddingRight + ' T:'+ paddingTop + ' B:' + paddingBottom ); - - var newContainer = $('<div class="container"><div class="first" /><div class="divider" /><div class="second"></div>'); - - if ( paddingLeft < Math.min(paddingRight,Math.min(paddingTop,paddingBottom)) ) - { - // Linker Rand ist der nächste. - newContainer.addClass('axle-x'); - newContainer.children('div.divider' ).addClass('to-right'); - newContainer.children('div.first' ).removeClass('first').addClass('resizable'); - newContainer.children('div.second').removeClass('first').addClass('autosize' ); - } - else if ( paddingRight < Math.min(paddingTop,paddingBottom) ) - { - // Rechter Rand ist der nächste. - newContainer.addClass('axle-x'); - newContainer.children('div.divider' ).addClass('to-left'); - newContainer.children('div.first' ).removeClass('first').addClass('autosize'); - newContainer.children('div.second').removeClass('first').addClass('resizable' ); - } - else if ( paddingTop < paddingBottom ) - { - // Oberer Rand ist der nächste. - newContainer.addClass('axle-y'); - newContainer.children('div.divider' ).addClass('to-bottom'); - newContainer.children('div.first' ).removeClass('first').addClass('resizable'); - newContainer.children('div.second').removeClass('first').addClass('autosize' ); - } - else - { - // Unterer Rand ist der nächste. - newContainer.addClass('axle-y'); - newContainer.children('div.divider' ).addClass('to-top'); - newContainer.children('div.first' ).removeClass('first').addClass('autosize'); - newContainer.children('div.second').removeClass('first').addClass('resizable' ); - } - - newContainer.children('div.resizable' ).addClass('bar').data('size-factor',0.4); - - // Die komplette Bar der Quelle kopieren. - $(dropped).closest('div.panel').clone().addClass('resizable').removeClass('autosize').replaceAll( newContainer.children('div.resizable') ); - newContainer.find('ul.views > li').remove(); // Alle View entfernen - $(dropped).detach().css({top: 0,left: 0}).appendTo( newContainer.find('ul.views') ).click(); // View kopieren - - // Neuen Container in den DOM einfügen. - var oldContainer = $(droppedOn).closest('div.panel').replaceWith( newContainer ); - newContainer.children('div.autosize').replaceWith( oldContainer ); - - if ( oldContainer.hasClass('autosize' )) { newContainer.addClass('autosize' ).removeClass('resizable'); } - if ( oldContainer.hasClass('resizable')) { newContainer.addClass('resizable').removeClass('autosize' ); } - oldContainer.addClass('autosize' ).removeClass('resizable'); - - // Falls die View-Liste, von der die View weggezogen wurde, jetzt leer ist: - if ( oldViewList.find('li').length == 0 ) - { - var oldContainer = oldViewList.closest('div.container'); - oldViewList.closest('div.panel').remove(); // Die Bar, in der die leere Viewliste ist, entfernen. - - if ( oldContainer.hasClass('autosize') ) - oldContainer.children('div.panel').addClass('autosize').removeClass('resizable'); - else - oldContainer.children('div.panel').addClass('resizable').removeClass('autosize'); - - oldContainer.replaceWith( oldContainer.children('div.panel') ); // die andere Bar nehmen und den übergeordneten Container ersetzen. - resizeWorkbench(); - } - - resizeWorkbench(); - registerWorkbenchEvents(); - } - } ); - - // geht nicht zusammen mit draggable... - //$('ul.views').sortable(); - // Modalen Dialog erzeugen. if ( $('#workbench div.panel.modal').length > 0 ) { @@ -440,82 +284,11 @@ function registerWorkbenchEvents() } - // Größe der einzelnen Bereiche verändern - $('div.container.axle-x > div.divider').draggable( - - { - stop: function( event, ui ) { - var xoffset = ui.position.left; - var lr = $(this).hasClass('to-right')?1:-1; - - $(this).parent().children('div.resizable').each( function() - { - var factor = ((lr*xoffset)+$(this).width()) / ($(this).parent().width()); - factor = Math.min(0.5,Math.max(0.1,factor)); // Erlaubter Bereich - - $(this).data('size-factor',factor); - } - ); - resizeWorkbenchContainer( $(this).parent() ); - }, - axis: "x", - revert: true, - revertDuration: 0 - } - ); - $('div.container.axle-y > div.divider').draggable( - - { - stop: function( event, ui ) { - var yoffset = ui.position.top; - var lr = $(this).hasClass('to-bottom')?1:-1; - - $(this).parent().children('div.resizable').each( function() - { - var factor = ((lr*yoffset)+$(this).height()) / ($(this).parent().height()); - factor = Math.min(0.5,Math.max(0.1,factor)); // Erlaubter Bereich - - $(this).data('size-factor',factor); - } - ); - resizeWorkbenchContainer( $(this).parent() ); - }, - axis: "y", - revert: true, - revertDuration: 0 - } - ); - - // OnClick-Handler für Klick auf einen Tab-Reiter. - $('ul.views > li.action').click( function() { - $(this).orLoadView(); - }); - $('div.header').dblclick( function() - { - fullscreen( this ); - } ); - -} - - - -/** - * Laedt den Header neu. - */ -function refreshTitleBar() -{ - // Modale Dialoge - //$('form.login, form.profile').dialog( { modal:true, resizable:false, width:760, height:600, draggable: false } ); -} - - + { + fullscreen( this ); + } ); -function loadViewByName(viewName, url ) -{ - alert('loadViewByName'); - - loadView( $('div#'+viewName),url ); } @@ -530,7 +303,7 @@ function loadViewByName(viewName, url ) */ function loadView(contentEl,action,method,id,params ) { - Workbench.loadNewAction(action,method,id,params ); + Navigator.navigateToNewAction( action,method,id,params ); } @@ -607,7 +380,7 @@ function registerViewEvents( viewEl ) // Bei Änderungen in der View das Tab als 'dirty' markieren $(viewEl).find('input').change( function() { - $(this).closest('div.panel').find('ul.views li.action.active').addClass('dirty'); + $('#editor').find('header').addClass('dirty'); }); } @@ -664,6 +437,7 @@ function fullscreen( element ) { } ); } + function loadTree() { // Oberstes Tree-Element erzeugen @@ -682,7 +456,6 @@ function loadTree() - /** * Setzt neue View und aktualisiert alle Fenster. * @param element @@ -711,36 +484,6 @@ function postUrl(url,element) } -/** - * Ermittelt die aktuelle, ausgewählte View. - * - * @returns JSON - */ -function getActiveView() -{ - var element = $('#panel-content').find('li.active'); - - return{ - 'action' : $(element).data('action'), - 'id' : $(element).data('id' ), - 'extraid' : $(element).data('extra' ) - }; -} - - -/** - * Setzt neue View und aktualisiert alle Fenster. - * @param element - * @param method - */ -function startView( element,method ) -{ - loadView( $(element).closest('div.panel').find('div.content'), active.action,method,active.id,active.extraid ); - - // Alle refresh-fähigen Views mit dem neuen Objekt laden. - // refreshAllRefreshables(); -} - /** * Setzt neuen modalen Dialog und aktualisiert alle Fenster. @@ -826,9 +569,7 @@ function filterMenus(action) */ function setNewAction( action,id,extraId ) { - filterMenus(action); - - Workbench.loadNewAction(action,'edit',id,extraId); + Navigator.navigateToNewAction(action,'edit',id,extraId); // Alle refresh-fähigen Views mit dem neuen Objekt laden. //refreshAllRefreshables(); } @@ -838,11 +579,7 @@ function setNewAction( action,id,extraId ) * Setzt neue Id und aktualisiert alle Fenster. * @param id Id */ -function setNewId( id ) -{ - $('#workbench div.refreshable').attr('data-id',id); - // Alle refresh-fähigen Views mit dem neuen Objekt laden. - refreshAllRefreshables(); +function setNewId( id ) { } @@ -997,12 +734,16 @@ function createUrl(action,subaction,id,extraid,embed) if ( typeof extraid === 'string') { jQuery.each(jQuery.parseJSON(extraid), function(name, value) { + if(name=='action'||name=='subaction'||name=='id') + return; url = url + '&' + name + '=' + value; }); } else if ( typeof extraid === 'object') { jQuery.each(extraid, function(name, field) { + if(name=='action'||name=='subaction'||name=='id') + return; url = url + '&' + name + '=' + field; }); } diff --git a/modules/cms-ui/themes/default/script/openrat.min.js b/modules/cms-ui/themes/default/script/openrat.min.js @@ -1,13 +1,10 @@ -;var DEFAULT_CONTENT_ACTION='edit',OR_THEMES_EXT_DIR='modules/cms-ui/themes/';$(function(){$('html').removeClass('nojs');$('.initial-hidden').removeClass('initial-hidden');refreshAll();registerHeaderEvents();$('#workbench .view').each(function(e){registerViewEvents(this)});window.onpopstate=function(e){History.fromHistory(e.state)};initActualHistoryState();Workbench.initialize();loadTree()});function initActualHistoryState(){var e={};e.name=window.document.title;e.action=$('#editor').data('action');e.id=$('#editor').data('id');History.toActualHistory(e)};var History=new function(){'use strict';this.fromHistory=function(e){Workbench.loadNewAction(e.action,e.id)};this.toHistory=function(e){window.history.pushState(e,e.name,createUrl(e.action,null,e.id,e.data,!1))};this.toActualHistory=function(e){window.history.replaceState(e,e.name,createUrl(e.action,null,e.id,e.data,!1))}},Workbench=new function(){'use strict';this.initialize=function(){this.initializePingTimer();this.loadInitialViews()};this.loadInitialViews=function(){};this.initializePingTimer=function(){var e=function(){$.ajax(createUrl('title','ping',0))},i=5;window.setInterval(e,i*60*1000)};this.loadNewAction=function(e,i,t,a){var n={action:e,method:i,id:t,data:a};History.toHistory(n);$('#workbench .view-loader').each(function(i){var n=$(this),s=n.data('method'),o=createUrl(e,s,t,a,!0);n.empty().fadeTo(1,0.7).addClass('loader').html('').load(o,function(e,i,t){n.fadeTo(350,1);if(i=='error'){$(n).html('');$(n).removeClass('loader');notify('error',e);return};$(n).removeClass('loader');registerViewEvents(n)})})}};function refreshAll(){refreshTitleBar();refreshWorkbench();$('div#filler').click(function(){if($('div#dialog').hasClass('modal')){} -else{$('div#dialog').html('').hide();$('div#filler').fadeOut(500)}})};function refreshAllRefreshables(){$('#workbench div.panel > div.header > ul.views > li.active').each(function(){if($(this).hasClass('static'))return;var e=$(this).data('method'),i=$(this).data('action'),t=$(this).data('id'),a=$(this).data('extra');loadView($(this).closest('div.panel').find('div.content'),i,e,t,a)})};function refreshActualView(e){$(e).closest('div.panel').find('li.active').each(function(){var e=$(this).attr('data-method'),i=$(this).attr('data-action'),t=$(this).attr('data-id');loadView($(this).closest('div.panel').find('div.content'),i,e,t)})};function refreshWorkbench(){$('ul#history').empty();resizeWorkbench();$('div.modaldialog').fadeOut(500);$('#workbench').removeClass('modal');$('div#filler').fadeOut(500);$('#workbench').fadeIn(750).find('li.active').each(function(){var i=$(this).attr('data-method'),e=$(this).attr('data-action');if(e)loadView($(this).closest('div.panel').find('div.content'),e,i,0)});$('div.backward_link').click(function(){var e=$(this).closest('div.header').find('ul.views'),i=e.find('li.action.active').prev();e.scrollTo(i,500,{'axis':'x'});i.click()});$('div.forward_link').click(function(){var e=$(this).closest('div.header').find('ul.views'),i=e.find('li.action.active').next();e.scrollTo(i,500,{'axis':'x'});i.click()});registerWorkbenchEvents();$(window).resize(function(){resizeWorkbench()})};function registerWorkbenchEvents(){$('ul.views > li.action').draggable({cursor:'move',revert:'invalid'});$('ul.views').droppable({accept:'li.action',hoverClass:'drophover',activeClass:'dropactive',drop:function(e,i){var a=i.draggable,s=$(this),n=a.parent();if($(a).closest('div.panel').attr('id')==$(s).closest('div.panel').attr('id'))$(a).css({top:0,left:0});else $(a).detach().css({top:0,left:0}).appendTo(s).click();if(n.find('li').size()==0){var t=n.closest('div.container');n.closest('div.panel').remove();if(t.hasClass('autosize'))t.children('div.panel').addClass('autosize').removeClass('resizable');else t.children('div.panel').addClass('resizable').removeClass('autosize');t.replaceWith(t.children('div.panel'));resizeWorkbench()}}});$('div.content').droppable({accept:'li.action',hoverClass:'drophover',activeClass:'dropactive',drop:function(e,i){var n=i.draggable,s=$(this),d=n.parent(),o=n.offset(),r=s.offset(),f=o.left-r.left,v=r.left+s.width()-o.left,l=o.top-r.top,c=r.top+s.height()-o.top,t=$('<div class="container"><div class="first" /><div class="divider" /><div class="second"></div>');if(f<Math.min(v,Math.min(l,c))){t.addClass('axle-x');t.children('div.divider').addClass('to-right');t.children('div.first').removeClass('first').addClass('resizable');t.children('div.second').removeClass('first').addClass('autosize')} -else if(v<Math.min(l,c)){t.addClass('axle-x');t.children('div.divider').addClass('to-left');t.children('div.first').removeClass('first').addClass('autosize');t.children('div.second').removeClass('first').addClass('resizable')} -else if(l<c){t.addClass('axle-y');t.children('div.divider').addClass('to-bottom');t.children('div.first').removeClass('first').addClass('resizable');t.children('div.second').removeClass('first').addClass('autosize')} -else{t.addClass('axle-y');t.children('div.divider').addClass('to-top');t.children('div.first').removeClass('first').addClass('autosize');t.children('div.second').removeClass('first').addClass('resizable')};t.children('div.resizable').addClass('bar').data('size-factor',0.4);$(n).closest('div.panel').clone().addClass('resizable').removeClass('autosize').replaceAll(t.children('div.resizable'));t.find('ul.views > li').remove();$(n).detach().css({top:0,left:0}).appendTo(t.find('ul.views')).click();var a=$(s).closest('div.panel').replaceWith(t);t.children('div.autosize').replaceWith(a);if(a.hasClass('autosize')){t.addClass('autosize').removeClass('resizable')};if(a.hasClass('resizable')){t.addClass('resizable').removeClass('autosize')};a.addClass('autosize').removeClass('resizable');if(d.find('li').length==0){var a=d.closest('div.container');d.closest('div.panel').remove();if(a.hasClass('autosize'))a.children('div.panel').addClass('autosize').removeClass('resizable');else a.children('div.panel').addClass('resizable').removeClass('autosize');a.replaceWith(a.children('div.panel'));resizeWorkbench()};resizeWorkbench();registerWorkbenchEvents()}});if($('#workbench div.panel.modal').length>0){$('#workbench div.panel.modal').parent().addClass('modal');$('div#filler').fadeTo(500,0.5);$('#workbench').addClass('modal')};$('div.container.axle-x > div.divider').draggable({stop:function(e,i){var t=i.position.left,a=$(this).hasClass('to-right')?1:-1;$(this).parent().children('div.resizable').each(function(){var e=((a*t)+$(this).width())/($(this).parent().width());e=Math.min(0.5,Math.max(0.1,e));$(this).data('size-factor',e)});resizeWorkbenchContainer($(this).parent())},axis:'x',revert:!0,revertDuration:0});$('div.container.axle-y > div.divider').draggable({stop:function(e,i){var t=i.position.top,a=$(this).hasClass('to-bottom')?1:-1;$(this).parent().children('div.resizable').each(function(){var e=((a*t)+$(this).height())/($(this).parent().height());e=Math.min(0.5,Math.max(0.1,e));$(this).data('size-factor',e)});resizeWorkbenchContainer($(this).parent())},axis:'y',revert:!0,revertDuration:0});$('ul.views > li.action').click(function(){$(this).orLoadView()});$('div.header').dblclick(function(){fullscreen(this)})};function refreshTitleBar(){};function loadViewByName(e,i){alert('loadViewByName');loadView($('div#'+e),i)};function loadView(e,i,t,a,n){Workbench.loadNewAction(i,t,a,n)};function registerViewEvents(e){$(e).trigger('orViewLoaded');$(e).find('input[data-hint]').orHint();$(e).closest('div.panel').find('div.header div.dropdown div.entry.perview').remove();$(e).find('div.headermenu > a').each(function(e,i){});$(e).find('div.header > a.back').each(function(i,t){$(t).removeClass('button').wrap('<div class="entry perview" />').parent().appendTo($(e).closest('div.panel').find('div.header div.dropdown').first())});$(e).find('div.selector.tree').each(function(){var e=this;$(this).orTree({type:'project',selectable:$(e).attr('data-types').split(','),id:$(e).attr('data-init-folderid'),onSelect:function(i,t,a){var n=$(e).parent();$(n).find('input[type=text]').attr('value',i);$(n).find('input[type=hidden]').attr('value',a)}})});$('div.content li.object').draggable({cursor:'move',revert:'invalid'});$('div.content li.object > div.entry[data-type=\'folder\']').droppable({accept:'li.object',hoverClass:'drophover',activeClass:'dropactive',drop:function(e,i){var t=i.draggable,a=$(this).parent();startDialog($(this).text(),$(t).attr('data-type'),'copy',$(a).attr('data-id'),{'action':$(t).attr('data-type'),'subaction':'copy','id':$(t).attr('data-id'),'targetFolderId':$(a).attr('data-id')});$(t).detach().css({top:0,left:0}).appendTo(a).click()}});$(e).find('input').change(function(){$(this).closest('div.panel').find('ul.views li.action.active').addClass('dirty')})};function registerHeaderEvents(){$('body').click(function(){$('.toolbar-icon.menu').parent().removeClass('open')});$('#title .toolbar-icon.menu').click(function(e){e.stopPropagation();$(this).parent().toggleClass('open')});$('#title .toolbar-icon.menu').mouseover(function(){$(this).parent().find('.toolbar-icon.menu').removeClass('open');$(this).addClass('open')});$('#title').trigger('orHeaderLoaded');$('div.search input').blur(function(){$('div.search input div.dropdown').fadeOut()});$('div.search input').orHint();$('div.search input').orSearch({dropdown:'div.search div.dropdown'})};function fullscreen(e){$(e).closest('div.panel').fadeOut('fast',function(){$(this).toggleClass('fullscreen').fadeIn('fast')})};function loadTree(){$('#navigation').html('&nbsp;');$('#navigation').orTree({type:'root',id:0,onSelect:function(e,i,t,a){openNewAction(e,i,t,a)}});$('#navigation > div.sheet.action-tree.method-tree > ul.tree > div.tree').delay(500).click();$('#navigation > div.sheet.action-tree.method-tree > ul.tree > div.tree').delay(500).click()};function submitUrl(e,i){postUrl(i,e);refreshAllRefreshables()};function postUrl(e,i){e+='&output=json';$.ajax({'type':'POST',url:e,data:{},success:function(e,t,a){$('div.panel div.status div.loader').html('&nbsp;');doResponse(e,t,i)}})};function getActiveView(){var e=$('#panel-content').find('li.active');return{'action':$(e).data('action'),'id':$(e).data('id'),'extraid':$(e).data('extra')}};function startView(e,i){loadView($(e).closest('div.panel').find('div.content'),active.action,i,active.id,active.extraid)};function startDialog(e,i,t,a,n){$('div#filler').fadeTo(500,0.5);$('div#dialog').html('<div class="header"><ul class="views"><li class="action active"><img class="icon" title="" src="./themes/default/images/icon/'+t+'.png" /><div class="tabname" style="width:100px;">'+e+'</div></li></ul></div><div class="content" />');$('div#dialog').data('id',a);$('div#dialog').show();loadView($('div#dialog div.content'),i,t,a,n)};function modalView(e,i){var t=$(e).closest('div.panel').find('li.active').attr('data-action'),a=$(e).closest('div.panel').find('li.active').attr('data-method'),n=$(e).closest('div.panel').find('li.active').attr('data-id');$(e).closest('div.content').modal({'overlayClose':'true','xxxonClose':function(){alert('close)')}});loadView($(e).closest('div.content'),t,a,n)};function setTitle(e){if(e)$('head > title').text(e+' - '+$('head > title').data('default'));else $('head > title').text($('head > title').data('default'))};function openNewAction(e,i,t,a){setTitle(e);setNewAction(i,t,a)};function filterMenus(e){$('div.clickable').addClass('active');$('div.clickable.filtered').removeClass('active').addClass('inactive');$('div.clickable.filtered.on-action-'+e).addClass('active').removeClass('inactive')};function setNewAction(e,i,t){filterMenus(e);Workbench.loadNewAction(e,'edit',i,t)};function setNewId(e){$('#workbench div.refreshable').attr('data-id',e);refreshAllRefreshables()};function notifyBrowser(e){if(!('Notification' in window)){return} -else if(Notification.permission==='granted'){var i=new Notification(e)} -else if(Notification.permission!=='denied'){Notification.requestPermission(function(i){if(i==='granted'){var t=new Notification(e)}})}};function setUserStyle(e){var i=$('html'),t=i.attr('class').split(/\s+/);$.each(t,function(e,t){if(t.startsWith('theme-')){i.removeClass(t)}});i.addClass('theme-'+e.toLowerCase())};function insert(e,i,t){var a=document.forms[0].elements[e];a.focus();if(typeof document.selection!='undefined'){var o=document.selection.createRange(),n=o.text;o.text=i+n+t;o=document.selection.createRange();if(n.length==0){o.move('character',-t.length)} -else{o.moveStart('character',i.length+n.length+t.length)};o.select()} -else if(typeof a.selectionStart!='undefined'){var r=a.selectionStart,d=a.selectionEnd,n=a.value.substring(r,d);a.value=a.value.substr(0,r)+i+n+t+a.value.substr(d);var s;if(n.length==0){s=r+i.length} -else{s=r+i.length+n.length+t.length};a.selectionStart=s;a.selectionEnd=s} -else{s=a.value.length;var n=prompt('Text');a.value=a.value.substr(0,s)+i+n+t+a.value.substr(s)}};function createUrl(e,i,t,a,s){var n='./';n+='?action='+e;if(i!=null)n+='&subaction='+i;n+='&id='+t;if(s)n+='&embed=1';if(typeof a==='string'){jQuery.each(jQuery.parseJSON(a),function(e,i){n=n+'&'+e+'='+i})} -else if(typeof a==='object'){jQuery.each(a,function(e,i){n=n+'&'+e+'='+i})} -else{};return n};function resizeWorkbenchContainer(e){};function resizeWorkbench(){};function resizeTabs(e){};function help(e,i,t){var a=$(e).closest('div.panel').find('li.action.active').attr('data-action'),n=$(e).closest('div.panel').find('li.action.active').attr('data-method');window.open(i+a+'/'+n+t,'OpenRat_Help','location=no,menubar=no,scrollbars=yes,toolbar=no,resizable=yes')};function notify(e,i){var t=$('<div class="notice '+e+'"><div class="text">'+i+'</div></div>');$('#noticebar').prepend(t);notifyBrowser(i);$(t).fadeIn().click(function(){$(this).fadeOut('fast',function(){$(this).remove()})})};- \ No newline at end of file +;var DEFAULT_CONTENT_ACTION='edit',OR_THEMES_EXT_DIR='modules/cms-ui/themes/';$(function(){$('html').removeClass('nojs');$('.initial-hidden').removeClass('initial-hidden');refreshAll();registerHeaderEvents();$('#workbench .view').each(function(e){registerViewEvents(this)});window.onpopstate=function(e){Navigator.navigateTo(e.state)};initActualHistoryState();Workbench.initialize();loadTree()});function initActualHistoryState(){var t={};t.name=window.document.title;var e=new URLSearchParams(window.location.search);if(e.has('action')){t.action=e.get('action');t.id=e.get('id');t.name=window.document.title;t.data={};var e=Array.from(e.entries());for(var i in e){t.data[e[i][0]]=e[i][1]};Navigator.toActualHistory(t)}};var Navigator=new function(){'use strict';this.navigateTo=function(e){Workbench.loadNewActionState(e)};this.navigateToNew=function(e){Workbench.loadNewActionState(e);window.history.pushState(e,e.name,createUrl(e.action,null,e.id,e.data,!1));var t={action:action,method:method,id:id,data:params}};this.navigateToNewAction=function(e,t,i,a){var n={action:e,method:t,id:i,data:a};this.navigateToNew(n)};this.toActualHistory=function(e){window.history.replaceState(e,e.name,createUrl(e.action,null,e.id,e.data,!1))}},Workbench=new function(){'use strict';this.initialize=function(){this.initializePingTimer()};this.initializePingTimer=function(){var e=function(){$.ajax(createUrl('title','ping',0))},t=5;window.setInterval(e,t*60*1000)};this.loadNewActionState=function(e){Workbench.loadNewAction(e.action,e.method,e.id,e.data)};this.loadNewAction=function(e,t,i,a){$('#workbench .view-loader').each(function(t){var n=$(this),o=n.data('method'),r=createUrl(e,o,i,a,!0);n.empty().fadeTo(1,0.7).addClass('loader').html('').load(r,function(e,t,i){n.fadeTo(350,1);if(t=='error'){$(n).html('');$(n).removeClass('loader');notify('error',e);return};$(n).removeClass('loader');registerViewEvents(n)})});filterMenus(e)}};function refreshAll(){refreshWorkbench();$('div#filler').click(function(){if($('div#dialog').hasClass('modal')){} +else{$('div#dialog').html('').hide();$('div#filler').fadeOut(500)}})};function refreshAllRefreshables(){$('#workbench div.panel > div.header > ul.views > li.active').each(function(){if($(this).hasClass('static'))return;var e=$(this).data('method'),t=$(this).data('action'),i=$(this).data('id'),a=$(this).data('extra');loadView($(this).closest('div.panel').find('div.content'),t,e,i,a)})};function refreshActualView(e){$(e).closest('div.panel').find('li.active').each(function(){var e=$(this).attr('data-method'),t=$(this).attr('data-action'),i=$(this).attr('data-id');loadView($(this).closest('div.panel').find('div.content'),t,e,i)})};function refreshWorkbench(){registerWorkbenchEvents()};function registerWorkbenchEvents(){if($('#workbench div.panel.modal').length>0){$('#workbench div.panel.modal').parent().addClass('modal');$('div#filler').fadeTo(500,0.5);$('#workbench').addClass('modal')};$('div.header').dblclick(function(){fullscreen(this)})};function loadView(e,t,i,a,n){Navigator.navigateToNewAction(t,i,a,n)};function registerViewEvents(e){$(e).trigger('orViewLoaded');$(e).find('input[data-hint]').orHint();$(e).closest('div.panel').find('div.header div.dropdown div.entry.perview').remove();$(e).find('div.headermenu > a').each(function(e,t){});$(e).find('div.header > a.back').each(function(t,i){$(i).removeClass('button').wrap('<div class="entry perview" />').parent().appendTo($(e).closest('div.panel').find('div.header div.dropdown').first())});$(e).find('div.selector.tree').each(function(){var e=this;$(this).orTree({type:'project',selectable:$(e).attr('data-types').split(','),id:$(e).attr('data-init-folderid'),onSelect:function(t,i,a){var n=$(e).parent();$(n).find('input[type=text]').attr('value',t);$(n).find('input[type=hidden]').attr('value',a)}})});$('div.content li.object').draggable({cursor:'move',revert:'invalid'});$('div.content li.object > div.entry[data-type=\'folder\']').droppable({accept:'li.object',hoverClass:'drophover',activeClass:'dropactive',drop:function(e,t){var i=t.draggable,a=$(this).parent();startDialog($(this).text(),$(i).attr('data-type'),'copy',$(a).attr('data-id'),{'action':$(i).attr('data-type'),'subaction':'copy','id':$(i).attr('data-id'),'targetFolderId':$(a).attr('data-id')});$(i).detach().css({top:0,left:0}).appendTo(a).click()}});$(e).find('input').change(function(){$('#editor').find('header').addClass('dirty')})};function registerHeaderEvents(){$('body').click(function(){$('.toolbar-icon.menu').parent().removeClass('open')});$('#title .toolbar-icon.menu').click(function(e){e.stopPropagation();$(this).parent().toggleClass('open')});$('#title .toolbar-icon.menu').mouseover(function(){$(this).parent().find('.toolbar-icon.menu').removeClass('open');$(this).addClass('open')});$('#title').trigger('orHeaderLoaded');$('div.search input').blur(function(){$('div.search input div.dropdown').fadeOut()});$('div.search input').orHint();$('div.search input').orSearch({dropdown:'div.search div.dropdown'})};function fullscreen(e){$(e).closest('div.panel').fadeOut('fast',function(){$(this).toggleClass('fullscreen').fadeIn('fast')})};function loadTree(){$('#navigation').html('&nbsp;');$('#navigation').orTree({type:'root',id:0,onSelect:function(e,t,i,a){openNewAction(e,t,i,a)}});$('#navigation > div.sheet.action-tree.method-tree > ul.tree > div.tree').delay(500).click();$('#navigation > div.sheet.action-tree.method-tree > ul.tree > div.tree').delay(500).click()};function submitUrl(e,t){postUrl(t,e);refreshAllRefreshables()};function postUrl(e,t){e+='&output=json';$.ajax({'type':'POST',url:e,data:{},success:function(e,i,a){$('div.panel div.status div.loader').html('&nbsp;');doResponse(e,i,t)}})};function startDialog(e,t,i,a,n){$('div#filler').fadeTo(500,0.5);$('div#dialog').html('<div class="header"><ul class="views"><li class="action active"><img class="icon" title="" src="./themes/default/images/icon/'+i+'.png" /><div class="tabname" style="width:100px;">'+e+'</div></li></ul></div><div class="content" />');$('div#dialog').data('id',a);$('div#dialog').show();loadView($('div#dialog div.content'),t,i,a,n)};function modalView(e,t){var i=$(e).closest('div.panel').find('li.active').attr('data-action'),a=$(e).closest('div.panel').find('li.active').attr('data-method'),n=$(e).closest('div.panel').find('li.active').attr('data-id');$(e).closest('div.content').modal({'overlayClose':'true','xxxonClose':function(){alert('close)')}});loadView($(e).closest('div.content'),i,a,n)};function setTitle(e){if(e)$('head > title').text(e+' - '+$('head > title').data('default'));else $('head > title').text($('head > title').data('default'))};function openNewAction(e,t,i,a){setTitle(e);setNewAction(t,i,a)};function filterMenus(e){$('div.clickable').addClass('active');$('div.clickable.filtered').removeClass('active').addClass('inactive');$('div.clickable.filtered.on-action-'+e).addClass('active').removeClass('inactive')};function setNewAction(e,t,i){Navigator.navigateToNewAction(e,'edit',t,i)};function setNewId(e){};function notifyBrowser(e){if(!('Notification' in window)){return} +else if(Notification.permission==='granted'){var t=new Notification(e)} +else if(Notification.permission!=='denied'){Notification.requestPermission(function(t){if(t==='granted'){var i=new Notification(e)}})}};function setUserStyle(e){var t=$('html'),i=t.attr('class').split(/\s+/);$.each(i,function(e,i){if(i.startsWith('theme-')){t.removeClass(i)}});t.addClass('theme-'+e.toLowerCase())};function insert(e,t,i){var a=document.forms[0].elements[e];a.focus();if(typeof document.selection!='undefined'){var r=document.selection.createRange(),n=r.text;r.text=t+n+i;r=document.selection.createRange();if(n.length==0){r.move('character',-i.length)} +else{r.moveStart('character',t.length+n.length+i.length)};r.select()} +else if(typeof a.selectionStart!='undefined'){var d=a.selectionStart,s=a.selectionEnd,n=a.value.substring(d,s);a.value=a.value.substr(0,d)+t+n+i+a.value.substr(s);var o;if(n.length==0){o=d+t.length} +else{o=d+t.length+n.length+i.length};a.selectionStart=o;a.selectionEnd=o} +else{o=a.value.length;var n=prompt('Text');a.value=a.value.substr(0,o)+t+n+i+a.value.substr(o)}};function createUrl(e,t,i,a,o){var n='./';n+='?action='+e;if(t!=null)n+='&subaction='+t;n+='&id='+i;if(o)n+='&embed=1';if(typeof a==='string'){jQuery.each(jQuery.parseJSON(a),function(e,t){if(e=='action'||e=='subaction'||e=='id')return;n=n+'&'+e+'='+t})} +else if(typeof a==='object'){jQuery.each(a,function(e,t){if(e=='action'||e=='subaction'||e=='id')return;n=n+'&'+e+'='+t})} +else{};return n};function resizeWorkbenchContainer(e){};function resizeWorkbench(){};function resizeTabs(e){};function help(e,t,i){var a=$(e).closest('div.panel').find('li.action.active').attr('data-action'),n=$(e).closest('div.panel').find('li.action.active').attr('data-method');window.open(t+a+'/'+n+i,'OpenRat_Help','location=no,menubar=no,scrollbars=yes,toolbar=no,resizable=yes')};function notify(e,t){var i=$('<div class="notice '+e+'"><div class="text">'+t+'</div></div>');$('#noticebar').prepend(i);notifyBrowser(t);$(i).fadeIn().click(function(){$(this).fadeOut('fast',function(){$(this).remove()})})};+ \ No newline at end of file