commit d109c8243e01a7af1769423cc370963a492b9a67
parent 332844eb67f4d3d10daac4e189b9d0ce70e6a4ef
Author: Jan Dankert <devnull@localhost>
Date: Sat, 30 Jun 2018 00:40:00 +0200
Actions können nun auch 'Embedded' ausgeführt werden, d.h. pro HTTP-Request kann der Dispatcher mehrmals ausgeführt werden. Dadurch können wir eine vollständigere HTML-Seite beim 1. Request ausliefern.
Diffstat:
6 files changed, 112 insertions(+), 119 deletions(-)
diff --git a/modules/cms-core/Dispatcher.class.php b/modules/cms-core/Dispatcher.class.php
@@ -40,11 +40,16 @@ class Dispatcher
*/
public function doAction()
{
- define('PRODUCTION', config('production'));
- define('DEVELOPMENT', !PRODUCTION);
+ if(!defined('PRODUCTION')) {
+
+ define('PRODUCTION', config('production'));
+ define('DEVELOPMENT', !PRODUCTION);
+ }
+
// Start the session. All classes should have been loaded up to now.
- session_start();
+ if(session_status()==PHP_SESSION_NONE && !headers_sent())
+ session_start();
global $SESS;
$SESS = &$_SESSION;
@@ -71,7 +76,9 @@ class Dispatcher
$this->checkPostToken();
- define('FILE_SEP', $conf['interface']['file_separator']);
+ if(!defined('FILE_SEP'))
+
+ define('FILE_SEP', $conf['interface']['file_separator']);
// Is this a POST request?
$this->isAction = $_SERVER['REQUEST_METHOD'] == 'POST';
@@ -114,7 +121,7 @@ class Dispatcher
Session::close();
// Ablaufzeit für den Inhalt auf aktuelle Zeit setzen.
- header('Expires: ' . substr(date('r', time() - date('Z')), 0, -5) . 'GMT', false);
+ #header('Expires: ' . substr(date('r', time() - date('Z')), 0, -5) . 'GMT', false);
return $result;
}
@@ -283,6 +290,7 @@ class Dispatcher
$do->actionName = $this->action;
$do->subActionName = $this->subaction;
+ if(!defined('OR_ID'))
if (isset($REQ[REQ_PARAM_ID]))
define('OR_ID', $REQ[REQ_PARAM_ID]);
else
diff --git a/modules/cms-ui/UI.class.php b/modules/cms-ui/UI.class.php
@@ -35,28 +35,10 @@ class UI
$subaction = 'show';
}
- $dispatcher = new Dispatcher();
-
- $dispatcher->action = $action;
- define('OR_ACTION', $action);
-
- $dispatcher->subaction = $subaction;
- define('OR_METHOD', $subaction);
-
- self::setContentSecurityPolicy();
-
-
- $data = $dispatcher->doAction();
-
- // The action is able to change its method and action name.
- $subaction = $dispatcher->subaction;
- $action = $dispatcher->action;
-
header('Content-Type: text/html; charset=UTF-8');
+ self::setContentSecurityPolicy();
- $tplName = $action . '/' . $subaction;
-
- UI::outputTemplate($tplName,$data['output']);
+ UI::executeAction($action,$subaction);
} catch (BadMethodCallException $e) {
// Action-Method does not exist.
@@ -74,6 +56,30 @@ class UI
}
}
+ public static function executeAction( $action, $subaction )
+ {
+ $dispatcher = new Dispatcher();
+
+ $dispatcher->action = $action;
+ if(!defined('OR_ACTION'))
+ define('OR_ACTION', $action);
+
+ $dispatcher->subaction = $subaction;
+ if(!defined('OR_METHOD'))
+ define('OR_METHOD', $subaction);
+
+
+ $data = $dispatcher->doAction();
+
+ // The action is able to change its method and action name.
+ $subaction = $dispatcher->subaction;
+ $action = $dispatcher->action;
+
+ $tplName = $action . '/' . $subaction;
+
+ UI::outputTemplate($tplName,$data['output']);
+ }
+
/**
* Executes and outputs a HTML template.
*
@@ -98,7 +104,7 @@ class UI
} catch (Exception $e) {
throw new DomainException("Compilation failed for Template '$templateName'.", 0, $e);
}
- header("X-CMS-Template-File: " . $templateFile);
+ #header("X-CMS-Template-File: " . $templateFile);
}
// Spätestens jetzt muss das Template vorhanden sein.
diff --git a/modules/cms-ui/action/IndexAction.class.php b/modules/cms-ui/action/IndexAction.class.php
@@ -123,6 +123,14 @@ class IndexAction extends Action
else
$style = config('interface','style','default');
+ $userIsLoggedIn = is_object($user);
+
+ // Welche Aktion soll ausgeführt werden?
+ $action = $userIsLoggedIn ? 'start' : 'login';
+ if ( $userIsLoggedIn && isset($_REQUEST['action'])) {
+ $action = $_REQUEST['action'];
+ }
+
$jsFiles = $this->getJSFiles();
$cssFiles = $this->getCSSFiles();
//$themeCss = $this->getThemeCSS();
diff --git a/modules/cms-ui/themes/default/layout/index.php b/modules/cms-ui/themes/default/layout/index.php
@@ -40,15 +40,33 @@
<div>
- <nav class="view" data-action="tree" data-method="show">
+ <nav>
+ <header>
+ <a href=""></a>
+ </header>
+ <div class="view-static" data-action="tree" data-method="show">
+ <?php echo embedView('tree','show'); ?>
+ </div>
</nav>
- <main class="view" data-method="edit">
+ <main>
+ <header>
+ <span class="title"></span>
+ </header>
+ <div class="view" data-method="edit">
+ <?php echo embedView('login','login'); ?>
+ </div>
</main>
- <aside class="view" data-method="info">
+ <aside>
+ <header>
+ <a href=""></a>
+ </header>
+ <div class="view" data-method="info">
+ <?php echo embedView('login','login'); ?>
+ </div>
</aside>
</div>
@@ -74,3 +92,23 @@
</body>
</html>
+<?php
+function embedView( $action, $method ) {
+ try {
+
+ return cms_ui\UI::executeAction($action,$method);
+ }
+ catch (BadMethodCallException $e) {
+ // Action-Method does not exist.
+ return "Method dows not exist: ".$method;
+ } catch (ObjectNotFoundException $e) {
+ return "Object not found";
+ } catch (OpenRatException $e) {
+ return lang($e->key);
+ } catch (SecurityException $e) {
+ return("You are not allowed to execute '".$action.'/'.$method."''.");
+ } catch (Exception $e) {
+ return "Hups...: ".$e->__toString();
+ }
+}
+?>+
\ No newline at end of file
diff --git a/modules/cms-ui/themes/default/script/openrat.js b/modules/cms-ui/themes/default/script/openrat.js
@@ -32,9 +32,22 @@ 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.
*/
@@ -1193,59 +1206,6 @@ function createUrl(action,subaction,id,extraid)
*/
function resizeWorkbenchContainer( container )
{
-
- var availableWidth = container.width();
- var availableHeight = container.height();
- var factor = container.children('div.resizable').data('size-factor');
-
- if ( !factor)
- factor = 0.3;
-
- var horizontal = container.hasClass('axle-x');
-
- if ( horizontal )
- {
- // Container ist horizontal geteilt.
- var size = Math.floor(availableWidth * factor);
- container.find('div.panel.resizable').css('width',''+size +'px');
- container.find('div.panel.resizable > div.content').css('height',''+(availableHeight-26)+'px');
- container.find('div.panel.autosize ').css('width',''+(availableWidth-size-9)+'px');
- container.find('div.panel.autosize > div.content').css('height',''+(availableHeight-26)+'px');
-
- container.children('div.resizable').css('width',''+size +'px');
- container.children('div.resizable').css('height',''+availableHeight+'px');
- container.children('div.autosize').css('width',''+(availableWidth-size-9)+'px');
- container.children('div.autosize').css('height',''+availableHeight+'px');
-
- container.children('div.divider').css('height',''+availableHeight+'px');
- }
- else
- {
- // Container ist vertikal geteilt.
- var size = Math.floor(availableHeight * factor);
- container.find('div.panel.resizable ').css('width',''+availableWidth +'px');
- container.find('div.panel.resizable > div.content').css('height',''+(size-26)+'px');
- container.find('div.panel.autosize ').css('width',''+availableWidth +'px');
- container.find('div.panel.autosize > div.content').css('height',''+(availableHeight-size-26)+'px');
-
- container.children('div.resizable').css('width',''+availableWidth +'px');
- container.children('div.resizable').css('height',''+size+'px');
- container.children('div.autosize').css('width',''+availableWidth+'px');
- container.children('div.autosize').css('height',''+(availableHeight-size-5)+'px');
-
- container.children('div.divider').css('width',''+availableWidth+'px');
- }
-
- container.children('div.panel').each( function()
- {
- resizeTabs( $(this) );
- }
- );
-
- $(container).children('div.container').each( function() {
- resizeWorkbenchContainer($(this));
- });
-
}
@@ -1255,21 +1215,6 @@ function resizeWorkbenchContainer( container )
*/
function resizeWorkbench()
{
- // Größe des Anzeige-Bereiches im Browser ermitteln.
- var viewportWidth = $(window).width();
- var viewportHeight = $(window).height();
-
- var titleHeight = 40;
-
- var container = $('#workbench > div.container');
-
- // Verfügbare Breite der Workbench ist Fensterbreite - Innenabstand der Workbench (2*3px)
- container.css('width' ,''+(viewportWidth-6)+'px');
-
- // Verfügbare Höhe der Workbench ist Fensterhöhe - Höhe der Titelleiste - Innenabstand der Workbench (2*3px)
- container.css('height',''+(viewportHeight-titleHeight-6)+'px');
-
- resizeWorkbenchContainer( container );
}
@@ -1278,18 +1223,6 @@ function resizeWorkbench()
*/
function resizeTabs( panel )
{
- // Anzahl Tabs pro Panel
- var tabCount = $(panel).find('div.header li.action').length;
-
- // Von der Panel-Breite werden 18px für das Fenstermenü substrahiert.
- // Von der Breite pro Tab werden 39px für das Icon substrahiert.
- var tabWidth = Math.floor((($(panel).width()-18)/tabCount)-39);
- if ( $(panel).is('#panel-content') )
- tabWidth -= 24; // Im Content-Bereich gibt es noch den Schließen-Knopf.
-
- // Validierung: Mindest- und Maximalbreite
- tabWidth = Math.min(90,Math.max(5,tabWidth));
- $(panel).find('li.action div.tabname').width(tabWidth);
}
diff --git a/modules/cms-ui/themes/default/script/openrat.min.js b/modules/cms-ui/themes/default/script/openrat.min.js
@@ -1,7 +1,7 @@
-;var DEFAULT_CONTENT_ACTION='edit',OR_THEMES_EXT_DIR='modules/cms-ui/themes/';$(function(){$('html').removeClass('nojs');$('.initial-hidden').removeClass('initial-hidden');refreshAll();Workbench.initialize()});var Workbench=new function(){'use strict';this.initialize=function(){this.initializePingTimer()};this.initializePingTimer=function(){var e=function(){$.ajax(createUrl('title','ping',0))},i=5;window.setInterval(e,i*60*1000)};this.openNewTab=function(e,i,t,n,s){var a=$(e).children('div.sheet.action-'+i+'.method-'+t+'.id-'+n);if(a.length==0){$(e).children('div.sheet').hide();a=$('<div class="sheet action-'+i+' method-'+t+' id-'+n+'" />');$(e).append(a)}
+;var DEFAULT_CONTENT_ACTION='edit',OR_THEMES_EXT_DIR='modules/cms-ui/themes/';$(function(){$('html').removeClass('nojs');$('.initial-hidden').removeClass('initial-hidden');refreshAll();Workbench.initialize()});var 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.openNewTab=function(e,i,t,n,s){var a=$(e).children('div.sheet.action-'+i+'.method-'+t+'.id-'+n);if(a.length==0){$(e).children('div.sheet').hide();a=$('<div class="sheet action-'+i+' method-'+t+' id-'+n+'" />');$(e).append(a)}
else{if(a.is(':visible')){return}
-else{$(e).children('div.sheet').hide();a.show();return}};var d=createUrl(i,t,n,s);$(a).empty().fadeTo(1,0.7).addClass('loader').html('').load(d,function(e,i,t){$(a).fadeTo(350,1);if(i=='error'){$(a).html('');$(a).removeClass('loader');notify('error',e);return};$(a).removeClass('loader');registerViewEvents(a)})}};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),o=n.parent(),d=n.offset(),l=s.offset(),h=d.left-l.left,v=l.left+s.width()-d.left,r=d.top-l.top,c=l.top+s.height()-d.top,t=$('<div class="container"><div class="first" /><div class="divider" /><div class="second"></div>');if(h<Math.min(v,Math.min(r,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{$(e).children('div.sheet').hide();a.show();return}};var l=createUrl(i,t,n,s);$(a).empty().fadeTo(1,0.7).addClass('loader').html('').load(l,function(e,i,t){$(a).fadeTo(350,1);if(i=='error'){$(a).html('');$(a).removeClass('loader');notify('error',e);return};$(a).removeClass('loader');registerViewEvents(a)})}};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),o=n.parent(),l=n.offset(),d=s.offset(),h=l.left-d.left,v=d.left+s.width()-l.left,r=l.top-d.top,c=d.top+s.height()-l.top,t=$('<div class="container"><div class="first" /><div class="divider" /><div class="second"></div>');if(h<Math.min(v,Math.min(r,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(r,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(r<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(o.find('li').length==0){var a=o.closest('div.container');o.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)});loadTree()};function refreshTitleBar(){$('#header').load(createUrl('title','show',0),function(){$(this).fadeIn('slow');registerHeaderEvents()})};function loadViewByName(e,i){alert('loadViewByName');loadView($('div#'+e),i)};function loadView(e,i,t,a,n){Workbench.openNewTab(e,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')});$('#header .toolbar-icon.menu').click(function(e){e.stopPropagation();$(this).parent().toggleClass('open')});$('#header .toolbar-icon.menu').mouseover(function(){$(this).parent().find('.toolbar-icon.menu').removeClass('open');$(this).addClass('open')});$('#header').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(){if($('div#panel-tree li.action').data('action')=='tree'){$('div#panel-tree div.content > div.sheet.action-tree.method-tree').html(' ');$('div#panel-tree div.content > div.sheet.action-tree.method-tree').orTree({type:'root',id:0,onSelect:function(e,i,t,a){openNewAction(e,i,t,a)}});$('div#panel-tree div.content > div.sheet.action-tree.method-tree > ul.tree > div.tree').delay(500).click();$('div#panel-tree div.content > 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(' ');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){var t=getActiveView();loadView($(e).closest('div.panel').find('div.content'),t.action,i,t.id,t.extraid)};function startDialog(e,i,t,a,n){if(i==null||i.length==0)i=$('#panel-content').find('li.active').data('action');if(a==null||a.length==0)a=$('#panel-content').find('li.active').data('id');if(typeof n==='undefined')n=$('#panel-content').find('li.active').data('extra');$('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);$('ul#history li.active').removeClass('active');if($('ul#history li.'+i+'.id'+t).length>0){$('ul#history li.'+i+'.id'+t).addClass('active')}
@@ -9,11 +9,10 @@ else{$('ul#history').append('<li class="action active '+i+' id'+t+'"><img src="'
else{$('div#panel-content > div.header > ul.views > li.active').removeClass('active');var s=7;if($('div#panel-content > div.header > ul.views > li.action').length>=s)$('div#panel-content > div.header > ul.views > li.action').first().remove();var n=$('<li class="action active '+i+' id'+t+'" title="'+e+'"><img class="icon" src="'+OR_THEMES_EXT_DIR+'default/images/icon_'+i+'.png" title="" /><div class="tabname">'+e+'</div><img class="close icon" src="'+OR_THEMES_EXT_DIR+'default/images/icon/close.gif" title="" /></li>');$('div#panel-content > div.header > ul.views').append(n);n.data('action',i);n.data('id',t);n.data('extra',a);n.data('method',DEFAULT_CONTENT_ACTION);resizeTabs($('div#contentbar'),!0);$('div#panel-content > div.header > ul.views').scrollLeft(9999);$('div#panel-content > div.header > ul.views img.close').click(function(){setTitle('');var i=$(this).closest('li.action').data('action'),t=$(this).closest('li.action').data('id');$('#workbench div.content > div.sheet.action-'+i+'.id-'+t).remove();if($(this).closest('li.action').hasClass('active')){$('#workbench div.refreshable div.content').html('');var e=$(this).closest('ul.views');$(this).parent().remove();$(e).find('li.action').last().click()}
else{$(this).parent().remove()};resizeTabs($('div#panel-content'),!0)});$('div#panel-content > div.header > ul.views > li.active').click(function(){$('div#panel-content > div.header > ul.views li.active').removeClass('active');$(this).addClass('active');setTitle($(this).children('div.tabname').text());setNewAction(i,t,a)});resizeTabs($('div#panel-content '))};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 ul.views > li.action.dependent').data('action',e).data('id',i).data('extra',t);refreshAllRefreshables()};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 d=document.selection.createRange(),n=d.text;d.text=i+n+t;d=document.selection.createRange();if(n.length==0){d.move('character',-t.length)}
-else{d.moveStart('character',i.length+n.length+t.length)};d.select()}
-else if(typeof a.selectionStart!='undefined'){var l=a.selectionStart,o=a.selectionEnd,n=a.value.substring(l,o);a.value=a.value.substr(0,l)+i+n+t+a.value.substr(o);var s;if(n.length==0){s=l+i.length}
-else{s=l+i.length+n.length+t.length};a.selectionStart=s;a.selectionEnd=s}
+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 l=document.selection.createRange(),n=l.text;l.text=i+n+t;l=document.selection.createRange();if(n.length==0){l.move('character',-t.length)}
+else{l.moveStart('character',i.length+n.length+t.length)};l.select()}
+else if(typeof a.selectionStart!='undefined'){var d=a.selectionStart,o=a.selectionEnd,n=a.value.substring(d,o);a.value=a.value.substr(0,d)+i+n+t+a.value.substr(o);var s;if(n.length==0){s=d+i.length}
+else{s=d+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 loadSubaction(e,i,t,a){alert('nobody should call loadSubaction()');var s={skin:'v2',baseHref:OR_THEMES_EXT_DIR+'../editor/editor/',customConfig:'config-openrat.js',filebrowserUploadUrl:'./dispatcher.php?action=filebrowser&subaction=directupload&name=upload',filebrowserBrowseUrl:'./dispatcher.php?action=filebrowser&subaction=browse'};var n=$(e).parent().parent().parent('div.panel').children('div.content').first();$(n).load(createUrl(i,t,a)+' div.content',null,function(){var e=CKEDITOR.instances[$('textarea.editor').attr('name')];if(e)e.destroy();CKEDITOR.replace('text',{customConfig:'config-openrat.js'})});$(e).parent().parent().find('.active').removeClass('active');$(e).parent().addClass('active')};function createUrl(e,i,t,a){var n='./';if(typeof a==='string'){n+='?action='+e+'&subaction='+i+'&id='+t;jQuery.each(jQuery.parseJSON(a),function(e,i){n=n+'&'+e+'='+i})}
else if(typeof a==='object'){n+='?action='+e+'&subaction='+i+'&id='+t;jQuery.each(a,function(e,i){n=n+'&'+e+'='+i})}
-else{n+='?action='+e+'&subaction='+i+'&id='+t};console.log('URL='+n);return n};function resizeWorkbenchContainer(e){var t=e.width(),a=e.height(),n=e.children('div.resizable').data('size-factor');if(!n)n=0.3;var s=e.hasClass('axle-x');if(s){var i=Math.floor(t*n);e.find('div.panel.resizable').css('width',''+i+'px');e.find('div.panel.resizable > div.content').css('height',''+(a-26)+'px');e.find('div.panel.autosize ').css('width',''+(t-i-9)+'px');e.find('div.panel.autosize > div.content').css('height',''+(a-26)+'px');e.children('div.resizable').css('width',''+i+'px');e.children('div.resizable').css('height',''+a+'px');e.children('div.autosize').css('width',''+(t-i-9)+'px');e.children('div.autosize').css('height',''+a+'px');e.children('div.divider').css('height',''+a+'px')}
-else{var i=Math.floor(a*n);e.find('div.panel.resizable ').css('width',''+t+'px');e.find('div.panel.resizable > div.content').css('height',''+(i-26)+'px');e.find('div.panel.autosize ').css('width',''+t+'px');e.find('div.panel.autosize > div.content').css('height',''+(a-i-26)+'px');e.children('div.resizable').css('width',''+t+'px');e.children('div.resizable').css('height',''+i+'px');e.children('div.autosize').css('width',''+t+'px');e.children('div.autosize').css('height',''+(a-i-5)+'px');e.children('div.divider').css('width',''+t+'px')};e.children('div.panel').each(function(){resizeTabs($(this))});$(e).children('div.container').each(function(){resizeWorkbenchContainer($(this))})};function resizeWorkbench(){var i=$(window).width(),t=$(window).height(),a=40,e=$('#workbench > div.container');e.css('width',''+(i-6)+'px');e.css('height',''+(t-a-6)+'px');resizeWorkbenchContainer(e)};function resizeTabs(e){var t=$(e).find('div.header li.action').length,i=Math.floor((($(e).width()-18)/t)-39);if($(e).is('#panel-content'))i-=24;i=Math.min(90,Math.max(5,i));$(e).find('li.action div.tabname').width(i)};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
+else{n+='?action='+e+'&subaction='+i+'&id='+t};console.log('URL='+n);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