openrat-cms

OpenRat Content Management System
git clone http://git.code.weiherhei.de/openrat-cms.git
Log | Files | Refs | README

commit 58ae0cdfcd70327693f4e15a6a67099d6abac1d5
parent 1f51014ede711cad3f15e6c7fa60bb47a3b45350
Author: Jan Dankert <develop@jandankert.de>
Date:   Mon, 15 Feb 2021 01:33:55 +0100

New: Show the navigation tree only after click.

Diffstat:
Mmodules/cms/ui/themes/default/html/views/folder/advanced.php | 6+++---
Mmodules/cms/ui/themes/default/html/views/link/value.php | 6+++---
Mmodules/cms/ui/themes/default/html/views/pageelement/value.php | 6+++---
Mmodules/cms/ui/themes/default/script/openrat.js | 119+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
Mmodules/cms/ui/themes/default/script/openrat.min.js | 7++++---
Mmodules/cms/ui/themes/default/script/openrat/common.js | 119++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
Mmodules/cms/ui/themes/default/script/plugin/jquery-plugin-orSearch.js | 6+++++-
Amodules/cms/ui/themes/default/style/openrat-selector.less | 31+++++++++++++++++++++++++++++++
Mmodules/cms/ui/themes/default/style/openrat.css | 14++++++++++++++
Mmodules/cms/ui/themes/default/style/openrat.min.css | 1+
Mmodules/template_engine/components/html/component_selector/SelectorComponent.class.php | 9++++-----
11 files changed, 214 insertions(+), 110 deletions(-)

diff --git a/modules/cms/ui/themes/default/html/views/folder/advanced.php b/modules/cms/ui/themes/default/html/views/folder/advanced.php @@ -82,10 +82,10 @@ <div class="<?php echo O::escapeHtml('or-fieldset-value') ?>"><?php echo O::escapeHtml('') ?> <div class="<?php echo O::escapeHtml('or-selector') ?>"><?php echo O::escapeHtml('') ?> <input type="<?php echo O::escapeHtml('hidden') ?>" name="<?php echo O::escapeHtml('targetobjectid') ?>" value="<?php echo O::escapeHtml(''.@$targetobjectid.'') ?>" class="<?php echo O::escapeHtml('or-selector-link-value') ?>" /><?php echo O::escapeHtml('') ?> - <i class="<?php echo O::escapeHtml('or-image-icon or-image-icon--menu-tree') ?>"><?php echo O::escapeHtml('') ?></i> - <input type="<?php echo O::escapeHtml('text') ?>" name="<?php echo O::escapeHtml('targetobjectid_text') ?>" placeholder="<?php echo O::escapeHtml(''.@$rootfoldername.'') ?>" value="<?php echo O::escapeHtml(''.@$rootfoldername.'') ?>" class="<?php echo O::escapeHtml('or-selector-link-name') ?>" /><?php echo O::escapeHtml('') ?> + <input type="<?php echo O::escapeHtml('text') ?>" name="<?php echo O::escapeHtml('targetobjectid_text') ?>" placeholder="<?php echo O::escapeHtml(''.@$rootfoldername.'') ?>" value="<?php echo O::escapeHtml(''.@$rootfoldername.'') ?>" class="<?php echo O::escapeHtml('or-selector-link-name or-act-selector-search') ?>" /><?php echo O::escapeHtml('') ?> + <i class="<?php echo O::escapeHtml('or-image-icon or-image-icon--menu-tree or-act-selector-tree-button') ?>"><?php echo O::escapeHtml('') ?></i> <div class="<?php echo O::escapeHtml('or-dropdown or-act-selector-search-results') ?>"><?php echo O::escapeHtml('') ?></div> - <div type="<?php echo O::escapeHtml('hidden') ?>" data-types="<?php echo O::escapeHtml('folder') ?>" data-init-id="<?php echo O::escapeHtml(''.@$rootfolderid.'') ?>" data-init-folderid="<?php echo O::escapeHtml(''.@$rootfolderid.'') ?>" class="<?php echo O::escapeHtml('or-navtree or-act-load-selector-tree') ?>"><?php echo O::escapeHtml('') ?></div> + <div type="<?php echo O::escapeHtml('hidden') ?>" data-types="<?php echo O::escapeHtml('folder') ?>" data-init-id="<?php echo O::escapeHtml(''.@$rootfolderid.'') ?>" data-init-folderid="<?php echo O::escapeHtml(''.@$rootfolderid.'') ?>" class="<?php echo O::escapeHtml('or-navtree or-selector-tree or-act-load-selector-tree') ?>"><?php echo O::escapeHtml('') ?></div> </div> </div> </section> diff --git a/modules/cms/ui/themes/default/html/views/link/value.php b/modules/cms/ui/themes/default/html/views/link/value.php @@ -14,10 +14,10 @@ <div class="<?php echo O::escapeHtml('or-fieldset-value') ?>"><?php echo O::escapeHtml('') ?> <div class="<?php echo O::escapeHtml('or-selector') ?>"><?php echo O::escapeHtml('') ?> <input type="<?php echo O::escapeHtml('hidden') ?>" name="<?php echo O::escapeHtml('targetobjectid') ?>" value="<?php echo O::escapeHtml(''.@$targetobjectid.'') ?>" class="<?php echo O::escapeHtml('or-selector-link-value') ?>" /><?php echo O::escapeHtml('') ?> - <i class="<?php echo O::escapeHtml('or-image-icon or-image-icon--menu-tree') ?>"><?php echo O::escapeHtml('') ?></i> - <input type="<?php echo O::escapeHtml('text') ?>" name="<?php echo O::escapeHtml('targetobjectid_text') ?>" placeholder="<?php echo O::escapeHtml(''.@$targetobjectname.'') ?>" value="<?php echo O::escapeHtml(''.@$targetobjectname.'') ?>" class="<?php echo O::escapeHtml('or-selector-link-name') ?>" /><?php echo O::escapeHtml('') ?> + <input type="<?php echo O::escapeHtml('text') ?>" name="<?php echo O::escapeHtml('targetobjectid_text') ?>" placeholder="<?php echo O::escapeHtml(''.@$targetobjectname.'') ?>" value="<?php echo O::escapeHtml(''.@$targetobjectname.'') ?>" class="<?php echo O::escapeHtml('or-selector-link-name or-act-selector-search') ?>" /><?php echo O::escapeHtml('') ?> + <i class="<?php echo O::escapeHtml('or-image-icon or-image-icon--menu-tree or-act-selector-tree-button') ?>"><?php echo O::escapeHtml('') ?></i> <div class="<?php echo O::escapeHtml('or-dropdown or-act-selector-search-results') ?>"><?php echo O::escapeHtml('') ?></div> - <div type="<?php echo O::escapeHtml('hidden') ?>" data-types="<?php echo O::escapeHtml('page,file') ?>" data-init-id="<?php echo O::escapeHtml(''.@$targetobjectid.'') ?>" data-init-folderid="<?php echo O::escapeHtml('parentid') ?>" class="<?php echo O::escapeHtml('or-navtree or-act-load-selector-tree') ?>"><?php echo O::escapeHtml('') ?></div> + <div type="<?php echo O::escapeHtml('hidden') ?>" data-types="<?php echo O::escapeHtml('page,file') ?>" data-init-id="<?php echo O::escapeHtml(''.@$targetobjectid.'') ?>" data-init-folderid="<?php echo O::escapeHtml('parentid') ?>" class="<?php echo O::escapeHtml('or-navtree or-selector-tree or-act-load-selector-tree') ?>"><?php echo O::escapeHtml('') ?></div> </div> </div> </section> diff --git a/modules/cms/ui/themes/default/html/views/pageelement/value.php b/modules/cms/ui/themes/default/html/views/pageelement/value.php @@ -128,10 +128,10 @@ <div class="<?php echo O::escapeHtml('or-fieldset-value') ?>"><?php echo O::escapeHtml('') ?> <div class="<?php echo O::escapeHtml('or-selector') ?>"><?php echo O::escapeHtml('') ?> <input type="<?php echo O::escapeHtml('hidden') ?>" name="<?php echo O::escapeHtml('linkobjectid') ?>" value="<?php echo O::escapeHtml(''.@$linkobjectid.'') ?>" class="<?php echo O::escapeHtml('or-selector-link-value') ?>" /><?php echo O::escapeHtml('') ?> - <i class="<?php echo O::escapeHtml('or-image-icon or-image-icon--menu-tree') ?>"><?php echo O::escapeHtml('') ?></i> - <input type="<?php echo O::escapeHtml('text') ?>" name="<?php echo O::escapeHtml('linkobjectid_text') ?>" placeholder="<?php echo O::escapeHtml(''.@$linkname.'') ?>" value="<?php echo O::escapeHtml(''.@$linkname.'') ?>" class="<?php echo O::escapeHtml('or-selector-link-name') ?>" /><?php echo O::escapeHtml('') ?> + <input type="<?php echo O::escapeHtml('text') ?>" name="<?php echo O::escapeHtml('linkobjectid_text') ?>" placeholder="<?php echo O::escapeHtml(''.@$linkname.'') ?>" value="<?php echo O::escapeHtml(''.@$linkname.'') ?>" class="<?php echo O::escapeHtml('or-selector-link-name or-act-selector-search') ?>" /><?php echo O::escapeHtml('') ?> + <i class="<?php echo O::escapeHtml('or-image-icon or-image-icon--menu-tree or-act-selector-tree-button') ?>"><?php echo O::escapeHtml('') ?></i> <div class="<?php echo O::escapeHtml('or-dropdown or-act-selector-search-results') ?>"><?php echo O::escapeHtml('') ?></div> - <div type="<?php echo O::escapeHtml('hidden') ?>" data-types="<?php echo O::escapeHtml(''.@$types.'') ?>" data-init-id="<?php echo O::escapeHtml(''.@$linkobjectid.'') ?>" data-init-folderid="<?php echo O::escapeHtml(''.@$rootfolderid.'') ?>" class="<?php echo O::escapeHtml('or-navtree or-act-load-selector-tree') ?>"><?php echo O::escapeHtml('') ?></div> + <div type="<?php echo O::escapeHtml('hidden') ?>" data-types="<?php echo O::escapeHtml(''.@$types.'') ?>" data-init-id="<?php echo O::escapeHtml(''.@$linkobjectid.'') ?>" data-init-folderid="<?php echo O::escapeHtml(''.@$rootfolderid.'') ?>" class="<?php echo O::escapeHtml('or-navtree or-selector-tree or-act-load-selector-tree') ?>"><?php echo O::escapeHtml('') ?></div> </div> </div> </section> diff --git a/modules/cms/ui/themes/default/script/openrat.js b/modules/cms/ui/themes/default/script/openrat.js @@ -136,6 +136,8 @@ jQuery.fn.orSearch = function( options ) 'dropdown': $(), // empty element 'select' : function( obj ) {}, 'afterSelect' : function() {}, + 'onSearchActive' : function() {}, + 'onSearchInactive' : function() {}, 'openDropdown' : true, 'action': 'search', 'method': 'quicksearch', @@ -151,6 +153,7 @@ jQuery.fn.orSearch = function( options ) if ( searchArgument.length ) { + settings.onSearchActive(); $('.or-search').addClass('search--is-active'); dropdownEl.addClass('search-result--is-active'); @@ -202,10 +205,11 @@ jQuery.fn.orSearch = function( options ) } else { + settings.onSearchInactive(); + // No search argument. $(dropdownEl).empty(); // Leeren. - $('.or-search').removeClass('search--is-active'); dropdownEl.removeClass('search-result--is-active'); } }); @@ -2787,6 +2791,12 @@ $( function() { let registerGlobalSearch = function() { $('.or-search-input .or-input').orSearch( { + onSearchActive: function() { + $('.or-search').addClass('search--is-active'); + }, + onSearchInactive: function() { + $('.or-search').removeClass('search--is-active'); + }, dropdown : '.or-act-search-result', resultEntryClass: 'or-search-result-entry', //openDropdown: true, // the dropdown is automatically opened by the menu. @@ -2981,45 +2991,56 @@ Openrat.Workbench.afterViewLoadedHandler.add( function(viewEl ) { // Selectors (Einzel-Ausahl für Dateien) initialisieren // Wurzel des Baums laden - $(viewEl).find('.or-act-load-selector-tree').each( function() { - var selectorEl = this; - /* - $(this).orTree( { type:'project',selectable:$(selectorEl).attr('data-types').split(','),id:$(selectorEl).attr('data-init-folderid'),onSelect:function(name,type,id) { - - var selector = $(selectorEl).parent(); - - //console.log( 'Selected: '+name+" #"+id ); - $(selector).find('input[type=text]' ).attr( 'value',name ); - $(selector).find('input[type=hidden]').attr( 'value',id ); - } }); - */ - - let id = $(this).data('init-folder-id'); - let type = id?'folder':'projects'; - let loadBranchUrl = './?action=tree&subaction=branch&id='+id+'&type='+type; - let $targetElement = $(this); + $(viewEl).find('.or-act-selector-tree-button').click( function() { - $.get(loadBranchUrl).done( function (html) { + let $selector = $(this).parent('.or-selector'); + let $targetElement = $selector.find('.or-act-load-selector-tree'); - // Den neuen Unter-Zweig erzeugen. - let $ul = $('<ul class="or-navtree-list" />'); - $ul.appendTo( $targetElement.empty() ).append( html ); + if ( $selector.hasClass('selector--is-tree-active') ) { + $selector.removeClass('selector--is-tree-active'); + $targetElement.empty(); + } + else { + $selector.addClass('selector--is-tree-active'); - $ul.find('li').orTree( - { - 'openAction' : function(name,action,id) { - viewEl.find('.or-selector-link-value').val(id ); - viewEl.find('.or-selector-link-name' ).val('').attr('placeholder',name); + var selectorEl = this; + /* + $(this).orTree( { type:'project',selectable:$(selectorEl).attr('data-types').split(','),id:$(selectorEl).attr('data-init-folderid'),onSelect:function(name,type,id) { + + var selector = $(selectorEl).parent(); + + //console.log( 'Selected: '+name+" #"+id ); + $(selector).find('input[type=text]' ).attr( 'value',name ); + $(selector).find('input[type=hidden]').attr( 'value',id ); + } }); + */ + + let id = $(this).data('init-folder-id'); + let type = id?'folder':'projects'; + let loadBranchUrl = './?action=tree&subaction=branch&id='+id+'&type='+type; + + $.get(loadBranchUrl).done( function (html) { + + // Den neuen Unter-Zweig erzeugen. + let $ul = $('<ul class="or-navtree-list" />'); + $ul.appendTo( $targetElement ).append( html ); + + $ul.find('li').orTree( + { + 'openAction' : function(name,action,id) { + $selector.find('.or-selector-link-value').val(id ); + $selector.find('.or-selector-link-name' ).val('').attr('placeholder',name); + } } - } - ); // All subnodes are getting event listener for open/close + ); // All subnodes are getting event listener for open/close - // Die Navigationspunkte sind anklickbar, hier wird der Standardmechanismus benutzt. - $ul.find('.or-act-clickable').orLinkify(); + // Die Navigationspunkte sind anklickbar, hier wird der Standardmechanismus benutzt. + $ul.find('.or-act-clickable').orLinkify(); - // Open the first node. - $ul.find('.or-navtree-node-control').first().click(); - } ); + // Open the first node. + $ul.find('.or-navtree-node-control').first().click(); + } ); + } } ); @@ -3062,18 +3083,26 @@ Openrat.Workbench.afterViewLoadedHandler.add( function(viewEl ) { function registerSelectorSearch( $element ) { - $($element).find('.or-selector .or-selector-link-name').orSearch( { - dropdown: '.or-dropdown.or-act-selector-search-results', - resultEntryClass: 'or-search-result-entry', - select: function(obj) { - $($element).find('.or-selector-link-value').val(obj.id ); - $($element).find('.or-selector-link-name' ).val(obj.name).attr('placeholder',obj.name); - }, - afterSelect: function() { - $('.or-dropdown.or-act-selector-search-results').empty(); - } + $($element).find('.or-act-selector-search').orSearch( { + onSearchActive: function() { + $(this).parent('or-selector').addClass('selector-search--is-active'); + }, + onSearchInactive: function() { + $(this).parent('or-selector').removeClass('selector-search--is-active' ); + }, + + dropdown: '.or-act-selector-search-results', + resultEntryClass: 'or-search-result-entry', + + select: function(obj) { + $($element).find('.or-selector-link-value').val(obj.id ); + $($element).find('.or-selector-link-name' ).val(obj.name).attr('placeholder',obj.name); + }, + + afterSelect: function() { + $('.or-dropdown.or-act-selector-search-results').empty(); + } } ); - } diff --git a/modules/cms/ui/themes/default/script/openrat.min.js b/modules/cms/ui/themes/default/script/openrat.min.js @@ -114,9 +114,9 @@ else{c=10000;n=null;h=r.floating||this._isFloating(this.currentItem);p=h?"left": else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.currentItem.css("marginLeft"),10)||0),top:(parseInt(this.currentItem.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,s,o,i=this.options;if(i.containment==="parent"){i.containment=this.helper[0].parentNode};if(i.containment==="document"||i.containment==="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,i.containment==="document"?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,(i.containment==="document"?(this.document.height()||document.body.parentNode.scrollHeight):this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]};if(!(/^(document|window|parent)$/).test(i.containment)){e=t(i.containment)[0];s=t(i.containment).offset();o=(t(e).css("overflow")!=="hidden");this.containment=[s.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,s.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,s.left+(o?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,s.top+(o?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(e,i){if(!i){i=this.position};var s=e==="absolute"?1:-1,o=this.cssPosition==="absolute"&&!(this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,n=(/(html|body)/i).test(o[0].tagName);return{top:(i.top+this.offset.relative.top*s+this.offset.parent.top*s-((this.cssPosition==="fixed"?-this.scrollParent.scrollTop():(n?0:o.scrollTop()))*s)),left:(i.left+this.offset.relative.left*s+this.offset.parent.left*s-((this.cssPosition==="fixed"?-this.scrollParent.scrollLeft():n?0:o.scrollLeft())*s))}},_generatePosition:function(e){var s,o,i=this.options,n=e.pageX,r=e.pageY,a=this.cssPosition==="absolute"&&!(this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,h=(/(html|body)/i).test(a[0].tagName);if(this.cssPosition==="relative"&&!(this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()};if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){n=this.containment[0]+this.offset.click.left};if(e.pageY-this.offset.click.top<this.containment[1]){r=this.containment[1]+this.offset.click.top};if(e.pageX-this.offset.click.left>this.containment[2]){n=this.containment[2]+this.offset.click.left};if(e.pageY-this.offset.click.top>this.containment[3]){r=this.containment[3]+this.offset.click.top}};if(i.grid){s=this.originalPageY+Math.round((r-this.originalPageY)/i.grid[1])*i.grid[1];r=this.containment?((s-this.offset.click.top>=this.containment[1]&&s-this.offset.click.top<=this.containment[3])?s:((s-this.offset.click.top>=this.containment[1])?s-i.grid[1]:s+i.grid[1])):s;o=this.originalPageX+Math.round((n-this.originalPageX)/i.grid[0])*i.grid[0];n=this.containment?((o-this.offset.click.left>=this.containment[0]&&o-this.offset.click.left<=this.containment[2])?o:((o-this.offset.click.left>=this.containment[0])?o-i.grid[0]:o+i.grid[0])):o}};return{top:(r-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+((this.cssPosition==="fixed"?-this.scrollParent.scrollTop():(h?0:a.scrollTop())))),left:(n-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+((this.cssPosition==="fixed"?-this.scrollParent.scrollLeft():h?0:a.scrollLeft())))}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],(this.direction==="down"?e.item[0]:e.item[0].nextSibling));this.counter=this.counter?++this.counter:1;var o=this.counter;this._delay(function(){if(o===this.counter){this.refreshPositions(!s)}})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length){this.placeholder.before(this.currentItem)};this._noFinalSort=null;if(this.helper[0]===this.currentItem[0]){for(i in this._storedCSS){if(this._storedCSS[i]==="auto"||this._storedCSS[i]==="static"){this._storedCSS[i]=""}};this.currentItem.css(this._storedCSS);this._removeClass(this.currentItem,"ui-sortable-helper")} else{this.currentItem.show()};if(this.fromOutside&&!e){s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))})};if((this.fromOutside||this.domPosition.prev!==this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!==this.currentItem.parent()[0])&&!e){s.push(function(t){this._trigger("update",t,this._uiHash())})};if(this!==this.currentContainer){if(!e){s.push(function(t){this._trigger("remove",t,this._uiHash())});s.push((function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}).call(this,this.currentContainer));s.push((function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}).call(this,this.currentContainer))}};function o(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}};for(i=this.containers.length-1;i>=0;i--){if(!e){s.push(o("deactivate",this,this.containers[i]))};if(this.containers[i].containerCache.over){s.push(o("out",this,this.containers[i]));this.containers[i].containerCache.over=0}};if(this.storedCursor){this.document.find("body").css("cursor",this.storedCursor);this.storedStylesheet.remove()};if(this._storedOpacity){this.helper.css("opacity",this._storedOpacity)};if(this._storedZIndex){this.helper.css("zIndex",this._storedZIndex==="auto"?"":this._storedZIndex)};this.dragging=!1;if(!e){this._trigger("beforeStop",t,this._uiHash())};this.placeholder[0].parentNode.removeChild(this.placeholder[0]);if(!this.cancelHelperRemoval){if(this.helper[0]!==this.currentItem[0]){this.helper.remove()};this.helper=null};if(!e){for(i=0;i<s.length;i++){s[i].call(this,t)};this._trigger("stop",t,this._uiHash())};this.fromOutside=!1;return!this.cancelHelperRemoval},_trigger:function(){if(t.Widget.prototype._trigger.apply(this,arguments)===!1){this.cancel()}},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}})})); ;jQuery.fn.toggleAttr=function(t,e,f){return this.each(function(){let self=$(this);if(self.attr(t)==e)self.attr(t,f);else self.attr(t,e)})}; -;jQuery.fn.orSearch=function(t){var e=$.extend({'dropdown':$(),'select':function(e){},'afterSelect':function(){},'openDropdown':!0,'action':'search','method':'quicksearch','resultEntryClass':'or-dropdown-entry',},t);return $(this).on('input change',function(){let searchInput=$(this);let searchArgument=searchInput.val();let dropdownEl=$(e.dropdown);if(searchArgument.length){$('.or-search').addClass('search--is-active');dropdownEl.addClass('search-result--is-active');$.ajax({'type':'GET',url:'./api/?action='+e.action+'&subaction='+e.method+'&output=json&search='+searchArgument,data:null,success:function(t,r,n){$(dropdownEl).empty();for(id in t.output.result){let result=t.output.result[id];let div=$('<div class="'+e.resultEntryClass+' '+e.resultEntryClass+'--active" title="'+result.desc+'"></div>');div.data('object',{'name':result.name,'action':result.type,'id':result.id});let link=$('<a class="or-link"/>').attr('href',Openrat.Navigator.createShortUrl(result.type,result.id));link.click(function(e){e.preventDefault()});$(link).append('<i class="or-image-icon or-image-icon--action-'+result.type+'" />');$(link).append('<span class="or-dropdown-text">'+result.name+'</span>');$(div).append(link);$(dropdownEl).append(div)};if(t.output.result&&e.openDropdown){$(dropdownEl).addClass('dropdown--is-open')} +;jQuery.fn.orSearch=function(t){var e=$.extend({'dropdown':$(),'select':function(e){},'afterSelect':function(){},'onSearchActive':function(){},'onSearchInactive':function(){},'openDropdown':!0,'action':'search','method':'quicksearch','resultEntryClass':'or-dropdown-entry',},t);return $(this).on('input change',function(){let searchInput=$(this);let searchArgument=searchInput.val();let dropdownEl=$(e.dropdown);if(searchArgument.length){e.onSearchActive();$('.or-search').addClass('search--is-active');dropdownEl.addClass('search-result--is-active');$.ajax({'type':'GET',url:'./api/?action='+e.action+'&subaction='+e.method+'&output=json&search='+searchArgument,data:null,success:function(t,n,r){$(dropdownEl).empty();for(id in t.output.result){let result=t.output.result[id];let div=$('<div class="'+e.resultEntryClass+' '+e.resultEntryClass+'--active" title="'+result.desc+'"></div>');div.data('object',{'name':result.name,'action':result.type,'id':result.id});let link=$('<a class="or-link"/>').attr('href',Openrat.Navigator.createShortUrl(result.type,result.id));link.click(function(e){e.preventDefault()});$(link).append('<i class="or-image-icon or-image-icon--action-'+result.type+'" />');$(link).append('<span class="or-dropdown-text">'+result.name+'</span>');$(div).append(link);$(dropdownEl).append(div)};if(t.output.result&&e.openDropdown){$(dropdownEl).addClass('dropdown--is-open')} else{$(dropdownEl).removeClass('dropdown--is-open')};$(dropdownEl).find('.or-search-result-entry').click(function(t){e.select($(this).data('object'));e.afterSelect();searchInput.val('')})}})} -else{$(dropdownEl).empty();$('.or-search').removeClass('search--is-active');dropdownEl.removeClass('search-result--is-active')}})}; +else{e.onSearchInactive();$(dropdownEl).empty();dropdownEl.removeClass('search-result--is-active')}})}; ;jQuery.fn.orLinkify=function(t){var a=$.extend({'openAction':function(t,a,e){Openrat.Workbench.openNewAction(t,a,e)}},t);$(this).addClass('linkified');if($(this).is('a'))$(this).click(function(t){t.preventDefault()});else $(this).find('a').click(function(t){t.preventDefault()});return $(this).click(function(t){$el=$(this);if($el.is('a'))$link=$el;else $link=$el.find('a').first();let type=$link.attr('data-type');if($link.parent().hasClass('dropdown-entry--inactive'))return;switch(type){case'post':$form=$('<form />').attr('method','POST').addClass('invisible');$form.data('afterSuccess',$link.data('afterSuccess'));let params=jQuery.parseJSON($link.attr('data-data'));params.output='json';$.each(params,function(t,a){let $input=$('<input />').attr('type','hidden').attr('name',t).attr('value',a);$form.append($input)});let form=new Openrat.Form();form.initOnElement($form);form.submit();break;case'edit':case'dialog':Openrat.Workbench.startDialog($link.attr('data-name'),$link.attr('data-action'),$link.attr('data-method'),$link.attr('data-id'),$link.attr('data-extra'));break;case'external':window.open($link.attr('data-url'),' _blank');break;case'window':window.location.href=Openrat.View.createUrl($link.attr('data-action'),$link.attr('data-method'),$link.attr('data-id'));break;case'popup':Openrat.Workbench.popupWindow=window.open($link.attr('data-url'),'Popup','location=no,menubar=no,scrollbars=yes,toolbar=no,resizable=yes');break;case'help':help($link,$link.attr('data-url'),$link.attr('data-suffix'));break;case'fullscreen':fullscreen($link);break;case'open':a.openAction($link.text().trim(),$link.attr('data-action'),$link.attr('data-id'));break;default:throw'UI error: Unknown link type: '+type+' in link '+$link.html()}})}; ;jQuery.fn.orTree=function(e){var n=$.extend({'openAction':function(e,n,o){}},e);let registerTreeBranchEvents=function(e){Openrat.Workbench.registerDraggable(e)};$(this).each(function(o,e){$(e).children('.or-navtree-node-control').click(function(){let $node=$(this).parent('.or-navtree-node');if($node.is('.or-navtree-node--is-open')){$node.children('ul').slideUp('fast').remove();$node.removeClass('navtree-node--is-open').addClass('navtree-node--is-closed').find('.or-navtree-tree-icon').removeClass('image-icon--node-open').addClass('image-icon--node-closed')} else{$(e).closest('div.view').addClass('loader');let $link=$node.find('a');let id=$link.data('id');let extraId=$link.data('extra');let loadBranchUrl='./?action=tree&subaction=branch&id='+id+'';if(typeof extraId==='string'){jQuery.each(jQuery.parseJSON(extraId.replace(/'/g,'"')),function(e,n){loadBranchUrl=loadBranchUrl+'&'+e+'='+n})} @@ -1185,7 +1185,8 @@ else{}})};let timeoutMinutes=5;window.setInterval(ping,timeoutMinutes*60*1000)}; else if(Notification.permission==='granted'){let notification=new Notification(e)} else if(Notification.permission!=='denied'){Notification.requestPermission(function(t){if(t==='granted'){let notification=new Notification(e)}})}};this.notify=function(t,i,o,n,a,log=null,notifyTheBrowser=!1){if(notifyTheBrowser)notifyBrowser(a);let notice=$('<div class="or-notice or-notice--'+n+'"></div>');let toolbar=$('<div class="or-notice-toolbar"></div>');if(log)$(toolbar).append('<i class="or-act-notice-full or-image-icon or-image-icon--menu-fullscreen"></i>');$(toolbar).append('<i class="or-image-icon or-image-icon--menu-close or-act-notice-close"></i>');$(notice).append(toolbar);if(o)$(notice).append('<div class="or-notice-name"><a class="or-act-clickable" href="'+Openrat.Navigator.createShortUrl(t,i)+'" data-type="open" data-action="'+t+'" data-id="'+i+'"><i class="or-notice-action-full or-image-icon or-image-icon--action-'+t+'"></i> '+o+'</a></div>');$(notice).append('<div class="or-notice-text">'+e(a)+'</div>');if(log)$(notice).append('<div class="or-notice-log"><pre>'+e(log)+'</pre></div>');$('#noticebar').prepend(notice);$(notice).orLinkify();$(notice).find('.or-act-notice-full').click(function(){$(notice).toggleClass('notice--is-full')});$(notice).find('.or-act-notice-close').click(function(){$(notice).fadeOut('fast',function(){$(notice).remove()})});let timeout=1;if(n=='ok')timeout=3;if(n=='info')timeout=10;if(n=='warning')timeout=15;if(n=='error')timeout=20;if(timeout>0)setTimeout(function(){$(notice).fadeOut('slow',function(){$(this).remove()})},timeout*1000)};this.dataChangedHandler=$.Callbacks();this.dataChangedHandler.add(function(){if(Openrat.Workbench.popupWindow)Openrat.Workbench.popupWindow.location.reload()});this.afterViewLoadedHandler=$.Callbacks();this.setApplicationTitle=function(e){if(e)$('head > title').text(e+' - '+$('head > title').data('default'));else $('head > title').text($('head > title').data('default'))};var e=function(e){return String(e).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;')};this.registerOpenClose=function(e){$(e).children('.or-collapsible-act-switch').click(function(){$(this).closest('.or-collapsible').toggleClass('collapsible--is-open').toggleClass('collapsible--is-closed')})};this.openNewAction=function(e,t,i){$('.or-workbench-navigation').removeClass('workbench-navigation--is-open');Openrat.Workbench.setApplicationTitle(e);Openrat.Navigator.navigateToNew({'action':t,'id':i})};this.startDialog=function(e,t,i,o,n){if(!t)t=Openrat.Workbench.state.action;if(!o)o=Openrat.Workbench.state.id;let view=new Openrat.View(t,i,o,n);view.before=function(){$('.or-dialog-content .or-view').html('<div class="header"><img class="or-icon" title="" src="./themes/default/images/icon/'+i+'.png" />'+e+'</div>');$('.or-dialog-content .or-view').data('id',o);$('.or-dialog').removeClass('dialog--is-closed').addClass('dialog--is-open');$('.or-dialog-content .or-act-dialog-name').html(e);let view=this;this.escapeKeyClosingHandler=function(e){if(e.keyCode==27){view.close();$(document).off('keyup')}};$(document).keyup(this.escapeKeyClosingHandler);$('.or-dialog-filler,.or-act-dialog-close').click(function(e){e.preventDefault();view.close()})};view.close=function(){let isDirty=$('.or-view--is-dirty').length;if(isDirty){let exit=window.confirm(Openrat.Workbench.language.UNSAVED_CHANGES_CONFIRM);if(!exit)return};if($('.or-dialog').hasClass('or-dialog--modal'))return;$('.or-dialog-content .or-view.or-view--is-dirty').removeClass('view--is-dirty');$('.or-dialog-content .or-view').html('');$('.or-dialog').removeClass('dialog--is-open').addClass('dialog--is-closed');$(document).unbind('keyup',this.escapeKeyClosingHandler)};return view.start($('.or-dialog-content .or-view'))};this.registerDraggable=function(e){$(e).find('.or-draggable').draggable({helper:'clone',opacity:0.7,zIndex:2,distance:10,cursor:'move',revert:'false'})};this.registerDroppable=function(e){$(e).find('.or-droppable').droppable({accept:'.or-draggable',hoverClass:'or-droppable--hover',activeClass:'or-droppable--active',drop:function(e,t){let dropped=t.draggable;let id=dropped.data('id');let name=dropped.data('name');if(!name)name=id;$(this).find('.or-selector-link-value').val(id);$(this).find('.or-selector-link-name').val(name).attr('placeholder',name)}})}}; ;Openrat.Navigator=new function(){'use strict';this.navigateTo=function(t){Openrat.Workbench.loadNewActionState(t)};this.navigateToNew=function(t){this.navigateTo(t);window.history.pushState(t,t.name,this.createShortUrl(t.action,t.id))};this.toActualHistory=function(t){window.history.replaceState(t,t.name,this.createShortUrl(t.action,t.id))};this.createShortUrl=function(t,i){return'./#/'+t+(i?'/'+i:'')}}; -;$(function(){$('html').removeClass('nojs');$('.or--initial-hidden').removeClass('-initial-hidden');function n(){};n();window.onpopstate=function(e){Openrat.Navigator.navigateTo(e.state)};Openrat.Workbench.initialize();Openrat.Workbench.reloadAll();let registerWorkbenchGlobalEvents=function(){$('.keystroke').each(function(){let keystrokeElement=$(this);let keystroke=keystrokeElement.text();if(keystroke.length==0)return;let keyaction=function(){keystrokeElement.click()};$(document).bind('keydown',keystroke,keyaction)})};$('.or-act-initial-notice').each(function(){Openrat.Workbench.notify('',0,'','info',$(this).text());$(this).remove()});registerWorkbenchGlobalEvents();let closeMenu=function(){$('body').click(function(){$('.or-menu').removeClass('menu--is-open')})};closeMenu();let closeMobileNavigation=function(){$('.or-act-navigation-close').click(function(){$('.or-workbench-navigation').removeClass('workbench-navigation--is-open');$('.or-workbench').removeClass('workbench--navigation-is-open')})};closeMobileNavigation();let closeDesktopNavigation=function(){$('.or-workbench-title .or-act-nav-small').click(function(){$('.or-workbench').addClass('workbench--navigation-is-small');$('.or-workbench-navigation').addClass('workbench-navigation--is-small')})};closeDesktopNavigation();let registerGlobalSearch=function(){$('.or-search-input .or-input').orSearch({dropdown:'.or-act-search-result',resultEntryClass:'or-search-result-entry',select:function(e){Openrat.Workbench.openNewAction(e.name,e.action,e.id)},afterSelect:function(){}});$('.or-search .or-act-search-delete').click(function(){$('.or-search .or-title-input').val('').change()})};registerGlobalSearch();Openrat.Workbench.afterNewActionHandler.add(function(){$('.or-sidebar').find('.or-sidebar-button').orLinkify()});Openrat.Workbench.afterNewActionHandler.add(function(){let url=Openrat.View.createUrl('tree','path',Openrat.Workbench.state.id,{'type':Openrat.Workbench.state.action});let loadPromise=$.get(url);loadPromise.done(function(e){$('.or-breadcrumb').empty().append(e).find('.or-act-clickable').orLinkify();$('nav .or-navtree-node').removeClass('or-navtree-node--selected');$('.or-breadcrumb a').each(function(){let action=$(this).data('action');let id=$(this).data('id');let $navControl=$('nav .or-navtree-node[data-type='+action+'][data-id='+id+'].or-navtree-node--is-closed .or-navtree-node-control');$navControl.click()})}).fail(function(n,t,o){console.warn({message:'Failed to load path',url:url,error:e,status:t,o})}).always(function(){})});Openrat.Workbench.afterNewActionHandler.fire()});let filterMenus=function(){let action=Openrat.Workbench.state.action;let id=Openrat.Workbench.state.id;$('.or-workbench-title .or-dropdown-entry.or-act-clickable').addClass('dropdown-entry--active');$('.or-workbench-title .or-dropdown-entry.or-act-clickable.or-filtered').removeClass('dropdown-entry--active').addClass('dropdown-entry--inactive');$('.or-workbench-title .or-dropdown-entry.or-act-clickable.or-filtered .or-link').attr('data-id',id);let url=Openrat.View.createUrl('profile','available',id,{'queryaction':action},!0);let promise=$.getJSON(url);promise.done(function(e){jQuery.each(e.output.views,function(e,n){$('.or-workbench-title .or-dropdown-entry.or-act-clickable.or-filtered > .or-link[data-method=\''+n+'\']').parent().addClass('dropdown-entry--active').removeClass('dropdown-entry--inactive')})})};Openrat.Workbench.afterAllViewsLoaded.add(function(){filterMenus()});Openrat.Workbench.afterViewLoadedHandler.add(function(e){if(Openrat.Workbench.popupWindow)$(e).find('a[data-type=\'popup\']').each(function(){Openrat.Workbench.popupWindow.location.href=$(this).attr('data-url')})});Openrat.Workbench.afterViewLoadedHandler.add(function(e){$(e).find('.or-input--password').dblclick(function(){$(this).toggleAttr('type','text','password')});$(e).find('.or-act-make-visible').click(function(){$(this).toggleClass('btn--is-active');$(this).parent().children('input').toggleAttr('type','text','password')})});Openrat.Workbench.afterViewLoadedHandler.add(function(e){e.find('.or-act-load-nav-tree').each(function(){let type=$(this).data('type')||'root';let loadBranchUrl='./?action=tree&subaction=branch&id=0&type='+type;let $targetElement=$(this);$.get(loadBranchUrl).done(function(e){let $ul=$('<ul class="or-navtree-list" />');$ul.appendTo($targetElement.empty()).append(e);$ul.find('li').orTree({'openAction':function(e,n,t){Openrat.Workbench.openNewAction(e,n,t)}});$ul.find('.or-act-clickable').orLinkify();$ul.find('.or-navtree-node-control').first().click()})})});Openrat.Workbench.afterViewLoadedHandler.add(function(e){var n=$(e).closest('section');n.toggleClass('is-empty',$(e).is(':empty'));if(!$(e).is(':empty'))n.slideDown('fast');else n.slideUp('fast');$(e).find('.or-act-nav-open-close').click(function(){$('.or-workbench').toggleClass('workbench--navigation-is-open');$('.or-workbench-navigation').toggleClass('workbench-navigation--is-open')});$(e).find('.or-act-nav-small').click(function(){$('.or-workbench').addClass('workbench--navigation-is-small');$('.or-workbench-navigation').addClass('workbench-navigation--is-small')});$(e).find('.or-act-nav-wide').click(function(){$('.or-workbench').removeClass('workbench--navigation-is-small');$('.or-workbench-navigation').removeClass('workbench-navigation--is-small')});$(e).find('.or-act-load-selector-tree').each(function(){var n=this;let id=$(this).data('init-folder-id');let type=id?'folder':'projects';let loadBranchUrl='./?action=tree&subaction=branch&id='+id+'&type='+type;let $targetElement=$(this);$.get(loadBranchUrl).done(function(n){let $ul=$('<ul class="or-navtree-list" />');$ul.appendTo($targetElement.empty()).append(n);$ul.find('li').orTree({'openAction':function(n,t,o){e.find('.or-selector-link-value').val(o);e.find('.or-selector-link-name').val('').attr('placeholder',n)}});$ul.find('.or-act-clickable').orLinkify();$ul.find('.or-navtree-node-control').first().click()})});t(e);$(e).find('.or-input').change(function(){$(this).closest('.or-view').addClass('view--is-dirty')});$(e).find('.or-theme-chooser').change(function(){Openrat.Workbench.setUserStyle(this.value)});function o(e){$(e).find('.or-menu-category').click(function(e){e.stopPropagation();$(this).parents('.or-menu').toggleClass('menu--is-open')});$(e).find('.or-menu-category').mouseover(function(){$(this).parents('.or-menu').find('.or-menu-category').removeClass('menu-category--is-open');$(this).addClass('menu-category--is-open')})};function r(e){$(e).find('.or-selector .or-selector-link-name').orSearch({dropdown:'.or-dropdown.or-act-selector-search-results',resultEntryClass:'or-search-result-entry',select:function(n){$(e).find('.or-selector-link-value').val(n.id);$(e).find('.or-selector-link-name').val(n.name).attr('placeholder',n.name)},afterSelect:function(){$('.or-dropdown.or-act-selector-search-results').empty()}})};function a(e){};o(e);r(e);a(e);function t(e){Openrat.Workbench.registerDraggable(e);Openrat.Workbench.registerDroppable(e)};t(e)}); +;$(function(){$('html').removeClass('nojs');$('.or--initial-hidden').removeClass('-initial-hidden');function t(){};t();window.onpopstate=function(e){Openrat.Navigator.navigateTo(e.state)};Openrat.Workbench.initialize();Openrat.Workbench.reloadAll();let registerWorkbenchGlobalEvents=function(){$('.keystroke').each(function(){let keystrokeElement=$(this);let keystroke=keystrokeElement.text();if(keystroke.length==0)return;let keyaction=function(){keystrokeElement.click()};$(document).bind('keydown',keystroke,keyaction)})};$('.or-act-initial-notice').each(function(){Openrat.Workbench.notify('',0,'','info',$(this).text());$(this).remove()});registerWorkbenchGlobalEvents();let closeMenu=function(){$('body').click(function(){$('.or-menu').removeClass('menu--is-open')})};closeMenu();let closeMobileNavigation=function(){$('.or-act-navigation-close').click(function(){$('.or-workbench-navigation').removeClass('workbench-navigation--is-open');$('.or-workbench').removeClass('workbench--navigation-is-open')})};closeMobileNavigation();let closeDesktopNavigation=function(){$('.or-workbench-title .or-act-nav-small').click(function(){$('.or-workbench').addClass('workbench--navigation-is-small');$('.or-workbench-navigation').addClass('workbench-navigation--is-small')})};closeDesktopNavigation();let registerGlobalSearch=function(){$('.or-search-input .or-input').orSearch({onSearchActive:function(){$('.or-search').addClass('search--is-active')},onSearchInactive:function(){$('.or-search').removeClass('search--is-active')},dropdown:'.or-act-search-result',resultEntryClass:'or-search-result-entry',select:function(e){Openrat.Workbench.openNewAction(e.name,e.action,e.id)},afterSelect:function(){}});$('.or-search .or-act-search-delete').click(function(){$('.or-search .or-title-input').val('').change()})};registerGlobalSearch();Openrat.Workbench.afterNewActionHandler.add(function(){$('.or-sidebar').find('.or-sidebar-button').orLinkify()});Openrat.Workbench.afterNewActionHandler.add(function(){let url=Openrat.View.createUrl('tree','path',Openrat.Workbench.state.id,{'type':Openrat.Workbench.state.action});let loadPromise=$.get(url);loadPromise.done(function(e){$('.or-breadcrumb').empty().append(e).find('.or-act-clickable').orLinkify();$('nav .or-navtree-node').removeClass('or-navtree-node--selected');$('.or-breadcrumb a').each(function(){let action=$(this).data('action');let id=$(this).data('id');let $navControl=$('nav .or-navtree-node[data-type='+action+'][data-id='+id+'].or-navtree-node--is-closed .or-navtree-node-control');$navControl.click()})}).fail(function(t,n,o){console.warn({message:'Failed to load path',url:url,error:e,status:n,o})}).always(function(){})});Openrat.Workbench.afterNewActionHandler.fire()});let filterMenus=function(){let action=Openrat.Workbench.state.action;let id=Openrat.Workbench.state.id;$('.or-workbench-title .or-dropdown-entry.or-act-clickable').addClass('dropdown-entry--active');$('.or-workbench-title .or-dropdown-entry.or-act-clickable.or-filtered').removeClass('dropdown-entry--active').addClass('dropdown-entry--inactive');$('.or-workbench-title .or-dropdown-entry.or-act-clickable.or-filtered .or-link').attr('data-id',id);let url=Openrat.View.createUrl('profile','available',id,{'queryaction':action},!0);let promise=$.getJSON(url);promise.done(function(e){jQuery.each(e.output.views,function(e,t){$('.or-workbench-title .or-dropdown-entry.or-act-clickable.or-filtered > .or-link[data-method=\''+t+'\']').parent().addClass('dropdown-entry--active').removeClass('dropdown-entry--inactive')})})};Openrat.Workbench.afterAllViewsLoaded.add(function(){filterMenus()});Openrat.Workbench.afterViewLoadedHandler.add(function(e){if(Openrat.Workbench.popupWindow)$(e).find('a[data-type=\'popup\']').each(function(){Openrat.Workbench.popupWindow.location.href=$(this).attr('data-url')})});Openrat.Workbench.afterViewLoadedHandler.add(function(e){$(e).find('.or-input--password').dblclick(function(){$(this).toggleAttr('type','text','password')});$(e).find('.or-act-make-visible').click(function(){$(this).toggleClass('btn--is-active');$(this).parent().children('input').toggleAttr('type','text','password')})});Openrat.Workbench.afterViewLoadedHandler.add(function(e){e.find('.or-act-load-nav-tree').each(function(){let type=$(this).data('type')||'root';let loadBranchUrl='./?action=tree&subaction=branch&id=0&type='+type;let $targetElement=$(this);$.get(loadBranchUrl).done(function(e){let $ul=$('<ul class="or-navtree-list" />');$ul.appendTo($targetElement.empty()).append(e);$ul.find('li').orTree({'openAction':function(e,t,n){Openrat.Workbench.openNewAction(e,t,n)}});$ul.find('.or-act-clickable').orLinkify();$ul.find('.or-navtree-node-control').first().click()})})});Openrat.Workbench.afterViewLoadedHandler.add(function(e){var t=$(e).closest('section');t.toggleClass('is-empty',$(e).is(':empty'));if(!$(e).is(':empty'))t.slideDown('fast');else t.slideUp('fast');$(e).find('.or-act-nav-open-close').click(function(){$('.or-workbench').toggleClass('workbench--navigation-is-open');$('.or-workbench-navigation').toggleClass('workbench-navigation--is-open')});$(e).find('.or-act-nav-small').click(function(){$('.or-workbench').addClass('workbench--navigation-is-small');$('.or-workbench-navigation').addClass('workbench-navigation--is-small')});$(e).find('.or-act-nav-wide').click(function(){$('.or-workbench').removeClass('workbench--navigation-is-small');$('.or-workbench-navigation').removeClass('workbench-navigation--is-small')});$(e).find('.or-act-selector-tree-button').click(function(){let $selector=$(this).parent('.or-selector');let $targetElement=$selector.find('.or-act-load-selector-tree');if($selector.hasClass('selector--is-tree-active')){$selector.removeClass('selector--is-tree-active');$targetElement.empty()} +else{$selector.addClass('selector--is-tree-active');var e=this;let id=$(this).data('init-folder-id');let type=id?'folder':'projects';let loadBranchUrl='./?action=tree&subaction=branch&id='+id+'&type='+type;$.get(loadBranchUrl).done(function(e){let $ul=$('<ul class="or-navtree-list" />');$ul.appendTo($targetElement).append(e);$ul.find('li').orTree({'openAction':function(e,t,n){$selector.find('.or-selector-link-value').val(n);$selector.find('.or-selector-link-name').val('').attr('placeholder',e)}});$ul.find('.or-act-clickable').orLinkify();$ul.find('.or-navtree-node-control').first().click()})}});n(e);$(e).find('.or-input').change(function(){$(this).closest('.or-view').addClass('view--is-dirty')});$(e).find('.or-theme-chooser').change(function(){Openrat.Workbench.setUserStyle(this.value)});function o(e){$(e).find('.or-menu-category').click(function(e){e.stopPropagation();$(this).parents('.or-menu').toggleClass('menu--is-open')});$(e).find('.or-menu-category').mouseover(function(){$(this).parents('.or-menu').find('.or-menu-category').removeClass('menu-category--is-open');$(this).addClass('menu-category--is-open')})};function r(e){$(e).find('.or-act-selector-search').orSearch({onSearchActive:function(){$(this).parent('or-selector').addClass('selector-search--is-active')},onSearchInactive:function(){$(this).parent('or-selector').removeClass('selector-search--is-active')},dropdown:'.or-act-selector-search-results',resultEntryClass:'or-search-result-entry',select:function(t){$(e).find('.or-selector-link-value').val(t.id);$(e).find('.or-selector-link-name').val(t.name).attr('placeholder',t.name)},afterSelect:function(){$('.or-dropdown.or-act-selector-search-results').empty()}})};function a(e){};o(e);r(e);a(e);function n(e){Openrat.Workbench.registerDraggable(e);Openrat.Workbench.registerDroppable(e)};n(e)}); ;Openrat.Workbench.afterViewLoadedHandler.add(function(e){}); ;Openrat.Workbench.afterViewLoadedHandler.add(function(e){$(e).find('textarea').orAutoheight();$(e).find('textarea.or-editor.or-code-editor').each(function(){let mode=$(this).data('mode');let mimetype=$(this).data('mimetype');if(mimetype.length>0)mode=mimetype;let textareaEl=this;let editor=CodeMirror.fromTextArea(textareaEl,{lineNumbers:!0,viewportMargin:Infinity,mode:mode});editor.on('change',function(){let newValue=editor.getValue();$(textareaEl).val(newValue)});$(editor.getWrapperElement()).droppable({accept:'.or-draggable',hoverClass:'or-droppable--hover',activeClass:'or-droppable--active',drop:function(e,t){let dropped=t.draggable;let pos=editor.getCursor();editor.setSelection(pos,pos);let insertText=dropped.data('id');let toInsert=''+insertText;editor.replaceSelection(toInsert)}})});$(e).find('textarea.or-editor.or-markdown-editor').each(function(){let textarea=this;let toolbar=[{name:'bold',action:SimpleMDE.toggleBold,className:'image-icon image-icon--editor-bold',title:'Bold',},{name:'italic',action:SimpleMDE.toggleItalic,className:'image-icon image-icon--editor-italic',title:'Italic',},{name:'heading',action:SimpleMDE.toggleHeadingBigger,className:'image-icon image-icon--editor-headline',title:'Headline',},'|',{name:'quote',action:SimpleMDE.toggleBlockquote,className:'image-icon image-icon--editor-quote',title:'Quote',},{name:'code',action:SimpleMDE.toggleCodeBlock,className:'image-icon image-icon--editor-code',title:'Code',},'|',{name:'generic list',action:SimpleMDE.toggleUnorderedList,className:'image-icon image-icon--editor-unnumberedlist',title:'Unnumbered list',},{name:'numbered list',action:SimpleMDE.toggleOrderedList,className:'image-icon image-icon--editor-numberedlist',title:'Numbered list',},'|',{name:'table',action:SimpleMDE.drawTable,className:'image-icon image-icon--editor-table',title:'Table',},{name:'horizontalrule',action:SimpleMDE.drawHorizontalRule,className:'image-icon image-icon--editor-horizontalrule',title:'Horizontal rule',},'|',{name:'undo',action:SimpleMDE.undo,className:'image-icon image-icon--editor-undo',title:'Undo',},{name:'redo',action:SimpleMDE.redo,className:'image-icon image-icon--editor-redo',title:'Redo',},'|',{name:'link',action:SimpleMDE.drawLink,className:'image-icon image-icon--editor-link',title:'Link',},{name:'image',action:SimpleMDE.drawImage,className:'image-icon image-icon--editor-image',title:'Image',},'|',{name:'guide',action:'https://simplemde.com/markdown-guide',className:'image-icon image-icon--editor-help',title:'Howto markdown',},];let mde=new SimpleMDE({element:$(this)[0],toolbar:toolbar,autoDownloadFontAwesome:!1});let codemirror=mde.codemirror;$(codemirror.getWrapperElement()).droppable({accept:'.or-draggable',hoverClass:'or-droppable--hover',activeClass:'or-droppable--active',drop:function(e,t){let dropped=t.draggable;let insertText='';let id=dropped.data('id');let url='__OID__'+id+'__';if(dropped.data('type')=='image')insertText='![]('+url+')';else insertText='['+id+']('+url+')';let pos=codemirror.getCursor();codemirror.setSelection(pos,pos);codemirror.replaceSelection(insertText)}});codemirror.on('change',function(){let newValue=codemirror.getValue();$(textarea).val(newValue)})});$(e).find('textarea.or-editor.or-html-editor').each(function(){let textarea=this;$.trumbowyg.svgPath='./modules/editor/trumbowyg/ui/icons.svg';$(textarea).trumbowyg();$(textarea).closest('form').find('.trumbowyg-editor').droppable({accept:'.or-draggable',hoverClass:'or-droppable--hover',activeClass:'or-droppable--active',drop:function(e,t){let dropped=t.draggable;let id=dropped.data('id');let url='./?_='+dropped.data('type')+'-'+id+'&subaction=show&embed=1&__OID__'+id+'__='+id;let insertText='';if(dropped.data('type')=='image')insertText='<img src="'+url+'" alt="" />';else insertText='<a href="'+url+'" />'+id+'</a>';$(textarea).trumbowyg('execCmd',{cmd:'insertHTML',param:insertText,forceCss:!1,})}})})}); ;Openrat.Workbench.afterViewLoadedHandler.add(function(e){Openrat.Workbench.registerOpenClose($(e).find('.or-collapsible.or-group'))}); diff --git a/modules/cms/ui/themes/default/script/openrat/common.js b/modules/cms/ui/themes/default/script/openrat/common.js @@ -85,6 +85,12 @@ $( function() { let registerGlobalSearch = function() { $('.or-search-input .or-input').orSearch( { + onSearchActive: function() { + $('.or-search').addClass('search--is-active'); + }, + onSearchInactive: function() { + $('.or-search').removeClass('search--is-active'); + }, dropdown : '.or-act-search-result', resultEntryClass: 'or-search-result-entry', //openDropdown: true, // the dropdown is automatically opened by the menu. @@ -279,45 +285,56 @@ Openrat.Workbench.afterViewLoadedHandler.add( function(viewEl ) { // Selectors (Einzel-Ausahl für Dateien) initialisieren // Wurzel des Baums laden - $(viewEl).find('.or-act-load-selector-tree').each( function() { - var selectorEl = this; - /* - $(this).orTree( { type:'project',selectable:$(selectorEl).attr('data-types').split(','),id:$(selectorEl).attr('data-init-folderid'),onSelect:function(name,type,id) { - - var selector = $(selectorEl).parent(); - - //console.log( 'Selected: '+name+" #"+id ); - $(selector).find('input[type=text]' ).attr( 'value',name ); - $(selector).find('input[type=hidden]').attr( 'value',id ); - } }); - */ - - let id = $(this).data('init-folder-id'); - let type = id?'folder':'projects'; - let loadBranchUrl = './?action=tree&subaction=branch&id='+id+'&type='+type; - let $targetElement = $(this); - - $.get(loadBranchUrl).done( function (html) { - - // Den neuen Unter-Zweig erzeugen. - let $ul = $('<ul class="or-navtree-list" />'); - $ul.appendTo( $targetElement.empty() ).append( html ); - - $ul.find('li').orTree( - { - 'openAction' : function(name,action,id) { - viewEl.find('.or-selector-link-value').val(id ); - viewEl.find('.or-selector-link-name' ).val('').attr('placeholder',name); + $(viewEl).find('.or-act-selector-tree-button').click( function() { + + let $selector = $(this).parent('.or-selector'); + let $targetElement = $selector.find('.or-act-load-selector-tree'); + + if ( $selector.hasClass('selector--is-tree-active') ) { + $selector.removeClass('selector--is-tree-active'); + $targetElement.empty(); + } + else { + $selector.addClass('selector--is-tree-active'); + + var selectorEl = this; + /* + $(this).orTree( { type:'project',selectable:$(selectorEl).attr('data-types').split(','),id:$(selectorEl).attr('data-init-folderid'),onSelect:function(name,type,id) { + + var selector = $(selectorEl).parent(); + + //console.log( 'Selected: '+name+" #"+id ); + $(selector).find('input[type=text]' ).attr( 'value',name ); + $(selector).find('input[type=hidden]').attr( 'value',id ); + } }); + */ + + let id = $(this).data('init-folder-id'); + let type = id?'folder':'projects'; + let loadBranchUrl = './?action=tree&subaction=branch&id='+id+'&type='+type; + + $.get(loadBranchUrl).done( function (html) { + + // Den neuen Unter-Zweig erzeugen. + let $ul = $('<ul class="or-navtree-list" />'); + $ul.appendTo( $targetElement ).append( html ); + + $ul.find('li').orTree( + { + 'openAction' : function(name,action,id) { + $selector.find('.or-selector-link-value').val(id ); + $selector.find('.or-selector-link-name' ).val('').attr('placeholder',name); + } } - } - ); // All subnodes are getting event listener for open/close + ); // All subnodes are getting event listener for open/close - // Die Navigationspunkte sind anklickbar, hier wird der Standardmechanismus benutzt. - $ul.find('.or-act-clickable').orLinkify(); + // Die Navigationspunkte sind anklickbar, hier wird der Standardmechanismus benutzt. + $ul.find('.or-act-clickable').orLinkify(); - // Open the first node. - $ul.find('.or-navtree-node-control').first().click(); - } ); + // Open the first node. + $ul.find('.or-navtree-node-control').first().click(); + } ); + } } ); @@ -360,18 +377,26 @@ Openrat.Workbench.afterViewLoadedHandler.add( function(viewEl ) { function registerSelectorSearch( $element ) { - $($element).find('.or-selector .or-selector-link-name').orSearch( { - dropdown: '.or-dropdown.or-act-selector-search-results', - resultEntryClass: 'or-search-result-entry', - select: function(obj) { - $($element).find('.or-selector-link-value').val(obj.id ); - $($element).find('.or-selector-link-name' ).val(obj.name).attr('placeholder',obj.name); - }, - afterSelect: function() { - $('.or-dropdown.or-act-selector-search-results').empty(); - } + $($element).find('.or-act-selector-search').orSearch( { + onSearchActive: function() { + $(this).parent('or-selector').addClass('selector-search--is-active'); + }, + onSearchInactive: function() { + $(this).parent('or-selector').removeClass('selector-search--is-active' ); + }, + + dropdown: '.or-act-selector-search-results', + resultEntryClass: 'or-search-result-entry', + + select: function(obj) { + $($element).find('.or-selector-link-value').val(obj.id ); + $($element).find('.or-selector-link-name' ).val(obj.name).attr('placeholder',obj.name); + }, + + afterSelect: function() { + $('.or-dropdown.or-act-selector-search-results').empty(); + } } ); - } diff --git a/modules/cms/ui/themes/default/script/plugin/jquery-plugin-orSearch.js b/modules/cms/ui/themes/default/script/plugin/jquery-plugin-orSearch.js @@ -8,6 +8,8 @@ jQuery.fn.orSearch = function( options ) 'dropdown': $(), // empty element 'select' : function( obj ) {}, 'afterSelect' : function() {}, + 'onSearchActive' : function() {}, + 'onSearchInactive' : function() {}, 'openDropdown' : true, 'action': 'search', 'method': 'quicksearch', @@ -23,6 +25,7 @@ jQuery.fn.orSearch = function( options ) if ( searchArgument.length ) { + settings.onSearchActive(); $('.or-search').addClass('search--is-active'); dropdownEl.addClass('search-result--is-active'); @@ -74,10 +77,11 @@ jQuery.fn.orSearch = function( options ) } else { + settings.onSearchInactive(); + // No search argument. $(dropdownEl).empty(); // Leeren. - $('.or-search').removeClass('search--is-active'); dropdownEl.removeClass('search-result--is-active'); } }); diff --git a/modules/cms/ui/themes/default/style/openrat-selector.less b/modules/cms/ui/themes/default/style/openrat-selector.less @@ -0,0 +1,30 @@ +.or { + &-selector { + + &-tree { + display: none; + } + &-search { + display: none; + } + + + &--is-tree-active { + + .or-selector { + &-tree { + display: block; + } + } + } + + &--is-search-active { + .or-selector { + &-search { + display: block; + } + } + } + } + +}+ \ No newline at end of file diff --git a/modules/cms/ui/themes/default/style/openrat.css b/modules/cms/ui/themes/default/style/openrat.css @@ -1077,6 +1077,20 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. } } /*# sourceMappingURL=data:application/json,%7B%22version%22%3A3%2C%22sources%22%3A%5B%22mnt%5C%2Fdata%5C%2Fdankert%5C%2FEntwicklung%5C%2FProjekte%5C%2Fopenrat-cms%5C%2Fmodules%5C%2Fcms%5C%2Fui%5C%2Fthemes%5C%2Fdefault%5C%2Fstyle%5C%2Fopenrat-breadcrumb.less%22%5D%2C%22names%22%3A%5B%5D%2C%22mappings%22%3A%22%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3B%3BAAyBI%2CGAAC%3BCACC%3BCACA%3B%3BAAFF%2CGAAC%2CWAIG%3BCACE%3BCACA%3BCACA%3B%3BAAOJ%3BCAAA%2CGAdD%2CWAUE%3BEAEG%3B%3B%3BAAIJ%2CGAhBD%2CWAgBE%3BCAEC%3B%3BAAKF%3BCAAA%2CGAvBD%2CWAgBE%3BEAKG%3B%3B%3BAAUJ%2CGA%5C%2FBD%2CWA%2BBE%3B%3B%3B%3B%3B%3B%3B%3BAAUD%2CGAzCD%2CWAyCE%3BCAEC%3BCACA%3BCAIA%3BCACA%3BCACA%3BCACA%3B%3BAAHA%3BCAAA%2CGAhDH%2CWAyCE%3BEAKG%22%7D */ +/* Include style: /mnt/data/dankert/Entwicklung/Projekte/openrat-cms/modules/cms/ui/themes/default/style/openrat-selector */ +.or-selector-tree { + display: none; +} +.or-selector-search { + display: none; +} +.or-selector--is-tree-active .or-selector-tree { + display: block; +} +.or-selector--is-search-active .or-selector-search { + display: block; +} +/*# sourceMappingURL=data:application/json,%7B%22version%22%3A3%2C%22sources%22%3A%5B%22mnt%5C%2Fdata%5C%2Fdankert%5C%2FEntwicklung%5C%2FProjekte%5C%2Fopenrat-cms%5C%2Fmodules%5C%2Fcms%5C%2Fui%5C%2Fthemes%5C%2Fdefault%5C%2Fstyle%5C%2Fopenrat-selector.less%22%5D%2C%22names%22%3A%5B%5D%2C%22mappings%22%3A%22AAGI%2CGAFD%2CSAEE%3BCACC%3B%3BAAEF%2CGALD%2CSAKE%3BCACC%3B%3BAAOE%2CGAbL%2CSAUE%2CgBAEC%2CaACG%3BCACC%3B%3BAAOF%2CGArBL%2CSAmBE%2CkBACC%2CaACG%3BCACC%22%7D */ /* Include style: /mnt/data/dankert/Entwicklung/Projekte/openrat-cms/modules/cms/ui/themes/default/style/openrat-diff */ .or-diff-line { text-align: right; diff --git a/modules/cms/ui/themes/default/style/openrat.min.css b/modules/cms/ui/themes/default/style/openrat.min.css @@ -10,6 +10,7 @@ html,body{width: 100%;height: 100%}@media only screen and (min-width: 56rem){bod .or-info{position: relative}.or-info--open-on-hover:hover .or-info-popup,.or-info--open .or-info-popup{display: block}.or-info-popup{display: none;position: absolute;top: 1.2em;left: -2em;overflow: visible;border: 0.5em;font-size: 2em;border-radius: 0.3em;padding: 1.0em;z-index: 6}.or-info-popup > div{display: inline-block} .or-dropdown{display: none;overflow: hidden;z-index: 4;min-width: 17em;position: absolute;padding: .5em 0;font-style: normal;font-weight: normal;text-decoration: none}.or-dropdown--is-open{display: block}.or-dropdown--on-right{right: 1em}@media only screen and (max-width: 55rem){.or-dropdown-key{display: none}}.or-dropdown-entry{padding: 0}.or-dropdown-entry > .or-link{display: flex;align-items: center;padding: 0 .5em}.or-dropdown-entry > .or-link *{margin: 0.25em}.or-dropdown-entry > .or-link .or-dropdown-text{flex: 1}.or-dropdown-entry--inactive{opacity: 0.5} > .or-dropdown-text{display: block;margin: 1em}.or-dropdown-divide{height: 1px;width: 100%;margin-top: 0.5em;margin-bottom: 0.5em} .or-breadcrumb{margin-left: 1.5em;margin-right: 0.5em}.or-breadcrumb > *{vertical-align: middle;display: inline;margin-right: 0.3em}@media only screen and (min-width: 100rem){.or-breadcrumb-parent{display: none}}.or-breadcrumb-path{display: none}@media only screen and (min-width: 100rem){.or-breadcrumb-path{display: inline}}.or-breadcrumb-text{font-weight: bold;width: 12em;white-space: nowrap;text-overflow: ellipsis;overflow: hidden;display: inline-block}@media only screen and (max-width: 55rem){.or-breadcrumb-text{width: 5.5em}} +.or-selector-tree{display: none}.or-selector-search{display: none}.or-selector--is-tree-active .or-selector-tree{display: block}.or-selector--is-search-active .or-selector-search{display: block} .or-diff-line{text-align: right}.or-diff-text--old{background-color: #f88989;color: black}.or-diff-text--new{background-color: #7bad7b;color: black}.or-diff-text--notequal{background-color: #cbcb16;color: black} .or-collapsible{display: flex;flex-direction: column}.or-collapsible .or-collapsible-act-switch{cursor: pointer}.or-collapsible > .or-collapsible-value{flex: 1;display: block}.or-collapsible > .or-collapsible-title{padding-bottom: 0.1em}.or-collapsible--is-closed > * > .or-collapsible--on-closed{display: inline}.or-collapsible--is-closed > * > .or-collapsible--on-open{display: none}.or-collapsible--is-closed > .or-collapsible-value{opacity: 0;max-height: 0;overflow: hidden}.or-collapsible--is-open > .or-collapsible-value{height: auto}.or-collapsible--is-open > * > .or-collapsible--on-closed{display: none}.or-collapsible--is-open > * > .or-collapsible--on-open{display: inline} .or-form{display: flex;height: 100%;flex-direction: column;padding: 1em}.or-form-headline{height: 2em}.or-form-content{flex-grow: 1;padding-bottom: 6em}.or-form-row{display: flex;align-items: center}.or-form-row .or-form-label{width: 25%}.or-form-row .or-form-input{width: 75%}@media only screen and (max-width: 65rem){.or-form-row{flex-direction: column}.or-form-row .or-form-label,.or-form-row .or-form-input{width: 100%}}.or-form-actionbar{height: 3em;position: sticky;bottom: 0;left: 0;right: 0;display: flex;justify-content: end;padding: 1em;height: auto}@media only screen and (max-width: 65rem){.or-form .or-act-form-apply{display: none}}.or-input{width: 85%;border: 1px solid;border-radius: 4px;box-sizing: border-box;resize: vertical;padding: 2px;margin: 0;outline: none}.or-input--name{font-weight: bold}.or-input--filename,.or-input--extension{font-family: 'Source Code Pro', Monospace, Monospaced, Courier}.or-btn{padding: 0.2em;border: 1px solid #000;border-radius: .1em;-moz-border-radius: .1em;-webkit-border-radius: .1em;-khtml-border-radius: .1em;cursor: pointer}.or-btn--control{padding: 1em 2em;margin-left: 1.5em;min-width: 14em;border-radius: .5em;-moz-border-radius: .5em;-webkit-border-radius: .5em;-khtml-border-radius: .5em}@media only screen and (max-width: 65rem){.or-btn--control{padding: 1em 1em;min-width: 5em}}.or-btn--primary{font-weight: bold}@media only screen and (max-width: 65rem){.or-btn--secondary{min-width: 0}} diff --git a/modules/template_engine/components/html/component_selector/SelectorComponent.class.php b/modules/template_engine/components/html/component_selector/SelectorComponent.class.php @@ -26,18 +26,17 @@ class SelectorComponent extends Component public $param; - public function createElement() - { + public function createElement() { return (new HtmlElement('div'))->addStyleClass('selector')->addChild( (new HtmlElement('input'))->addAttribute('type','hidden')->addStyleClass('selector-link-value')->addAttribute('name',$this->param)->addAttribute('value',Value::createExpression(ValueExpression::TYPE_DATA_VAR,$this->param)) )->addChild( - (new HtmlElement('i'))->addStyleClass( ['image-icon','image-icon--menu-tree' ]) + (new HtmlElement('input'))->addAttribute('type','text')->addStyleClass(['selector-link-name','act-selector-search'])->addAttribute('name',$this->param.'_text')->addAttribute('placeholder',$this->name)->addAttribute('value',$this->name) )->addChild( - (new HtmlElement('input'))->addAttribute('type','text')->addStyleClass('selector-link-name')->addAttribute('name',$this->param.'_text')->addAttribute('placeholder',$this->name)->addAttribute('value',$this->name) + (new HtmlElement('i'))->addStyleClass( ['image-icon','image-icon--menu-tree','act-selector-tree-button' ]) )->addChild( (new HtmlElement('div'))->addStyleClass('dropdown')->addStyleClass('act-selector-search-results') )->addChild( - (new HtmlElement('div'))->addAttribute('type','hidden')->addStyleClass(['navtree','act-load-selector-tree'])->addAttribute('data-types',$this->types)->addAttribute('data-init-id',$this->id)->addAttribute('data-init-folderid',$this->folderid) + (new HtmlElement('div'))->addAttribute('type','hidden')->addStyleClass(['navtree','selector-tree','act-load-selector-tree'])->addAttribute('data-types',$this->types)->addAttribute('data-init-id',$this->id)->addAttribute('data-init-folderid',$this->folderid) ); }