openrat-cms

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

commit 3be33ace7b7315a5548578ddea5e664f933d1d0a
parent 5a1afdb09433de18dc0b68e00911d2aa0d1c91db
Author: Jan Dankert <develop@jandankert.de>
Date:   Sat, 21 Nov 2020 12:13:03 +0100

Fix: Dirty marker.

Diffstat:
Mmodules/cms/ui/themes/default/script/openrat.js | 8++++++--
Mmodules/cms/ui/themes/default/script/openrat.min.js | 6+++---
Mmodules/cms/ui/themes/default/script/openrat/common.js | 2+-
Mmodules/cms/ui/themes/default/script/openrat/form.js | 3+++
Mmodules/cms/ui/themes/default/script/openrat/workbench.js | 3++-
Mmodules/cms/ui/themes/default/style/openrat-view.less | 3+++
Mmodules/cms/ui/themes/default/style/openrat.css | 2+-
7 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/modules/cms/ui/themes/default/script/openrat.js b/modules/cms/ui/themes/default/script/openrat.js @@ -1921,6 +1921,9 @@ Openrat.Form = function() { form.doResponse(responseData,textStatus,form.element, function() { + // Remove dirty-flag from view + $(form.element).closest('.or-view.or-view--is-dirty').removeClass('view--is-dirty'); + let afterSuccess = $(form.element).data('afterSuccess'); let forwardTo = $(form.element).data('forwardTo' ); let async = $(form.element).data('async' ); @@ -2549,7 +2552,8 @@ Openrat.Workbench = new function() if ( $('.or-dialog').hasClass('or-dialog--modal') ) return; - $('.or-view.or-view--is-dirty').removeClass('or-view--is-dirty'); + // Remove dirty-flag from view + $('.or-view.or-view--is-dirty').removeClass('view--is-dirty'); $('#dialog .or-view').html(''); $('#dialog').removeClass('dialog--is-open').addClass('dialog--is-closed'); // Dialog schließen @@ -2973,7 +2977,7 @@ Openrat.Workbench.afterViewLoadedHandler.add( function(viewEl ) { // Bei Änderungen in der View das Tab als 'dirty' markieren $(viewEl).find('.or-input').change( function() { - $(this).closest('.view').addClass('dirty'); + $(this).closest('.or-view').addClass('view--is-dirty'); }); // Theme-Auswahl mit Preview diff --git a/modules/cms/ui/themes/default/script/openrat.min.js b/modules/cms/ui/themes/default/script/openrat.min.js @@ -1174,7 +1174,7 @@ jQuery.trumbowyg={langs:{en:{viewHTML:"View HTML",undo:"Undo",redo:"Redo",format else if(typeof extraid==='object'){jQuery.each(extraid,function(e,t){url=url+'&'+e+'='+t})} else{};return url}}; ;Openrat.Form=function(){const modes={showBrowserNotice:1,keepOpen:2,closeAfterSubmit:4,closeAfterSuccess:8,};this.setLoadStatus=function(e){$(this.element).closest('div.content').toggleClass('loader',e)};this.initOnElement=function(e){this.element=e;let form=this;if($(this.element).data('autosave')){$(this.element).find('input[type="checkbox"]').click(function(){form.submit(modes.keepOpen)});$(this.element).find('select').change(function(){form.submit(modes.keepOpen)})};$(e).find('.or-act-form-cancel').click(function(){form.cancel()});$(e).find('.or-act-form-reset').click(function(){form.rollback()});$(e).find('.or-act-form-apply').click(function(){form.submit(modes.keepOpen)});$(e).find('.or-act-form-save').click(function(){form.submit()});$(e).submit(function(e){if($(this).data('target')=='view'){form.submit();e.preventDefault()}})};this.cancel=function(){this.close()};this.rollback=function(){this.element.trigger('reset')};this.close=function(){};this.forwardTo=function(e,t,o,r){};this.submit=function(e){if(e===undefined)if($(this.element).data('async'))e=modes.closeAfterSubmit;else e=modes.closeAfterSuccess;let status=$('<div class="or-notice or-notice--info"><div class="or-text or-loader"></div></div>');$('.or-notices').prepend(status);$(status).show();$(this.element).find('.or-input.or-error').removeClass('error');let params=$(this.element).serializeArray();let data={};$(params).each(function(e,t){data[t.name]=t.value});if(!data.id)data.id=Openrat.Workbench.state.id;if(!data.action)data.action=Openrat.Workbench.state.action;let formMethod=$(this.element).attr('method').toUpperCase();if(formMethod=='GET'){this.forwardTo(data.action,data.subaction,data.id,data);$(status).remove()} -else{let url='./api/';this.setLoadStatus(!0);url+='';data.output='json';if(e==modes.closeAfterSubmit)this.close();let form=this;$.ajax({'type':'POST',url:url,data:data,success:function(t,o,r){form.setLoadStatus(!1);$(status).remove();form.doResponse(t,o,form.element,function(){let afterSuccess=$(form.element).data('afterSuccess');let forwardTo=$(form.element).data('forwardTo');let async=$(form.element).data('async');if(afterSuccess=='forward')e=modes.keepOpen;if(e==modes.closeAfterSuccess){form.close();$(form.element).closest('div.panel').find('div.header ul.views li.action.active').removeClass('dirty')};if(afterSuccess){if(afterSuccess=='reloadAll'){Openrat.Workbench.reloadAll()} +else{let url='./api/';this.setLoadStatus(!0);url+='';data.output='json';if(e==modes.closeAfterSubmit)this.close();let form=this;$.ajax({'type':'POST',url:url,data:data,success:function(t,o,r){form.setLoadStatus(!1);$(status).remove();form.doResponse(t,o,form.element,function(){$(form.element).closest('.or-view.or-view--is-dirty').removeClass('view--is-dirty');let afterSuccess=$(form.element).data('afterSuccess');let forwardTo=$(form.element).data('forwardTo');let async=$(form.element).data('async');if(afterSuccess=='forward')e=modes.keepOpen;if(e==modes.closeAfterSuccess){form.close();$(form.element).closest('div.panel').find('div.header ul.views li.action.active').removeClass('dirty')};if(afterSuccess){if(afterSuccess=='reloadAll'){Openrat.Workbench.reloadAll()} else if(afterSuccess=='forward'){if(forwardTo)form.forwardTo(data.action,forwardTo,data.id,[])}} else{if(async);else Openrat.Workbench.reloadViews()}})},error:function(e,t,o){form.setLoadStatus(!1);$(status).remove();try{let error=jQuery.parseJSON(e.responseText);Openrat.Workbench.notify('',0,'','error',error.error,[error.description])}catch(r){let msg=e.responseText;Openrat.Workbench.notify('',0,'','error','Server Error',[msg])}}});$(form.element).fadeIn()}};this.doResponse=function(e,t,o,onSuccess=$.noop){if(t!='success'){alert('Server error: '+t);return};let form=this;$.each(e['notices'],function(t,e){let notifyBrowser=$(o).data('async');Openrat.Workbench.notify(e.type,e.id,e.name,e.status,e.text,e.log,notifyBrowser);if(e.status=='ok'){onSuccess();Openrat.Workbench.dataChangedHandler.fire()} else{}});$.each(e['errors'],function(e,t){$('.or-input[name='+t+']').addClass('error').parent().addClass('error').parents('fieldset').removeClass('closed').addClass('show').addClass('open')})}}; @@ -1182,9 +1182,9 @@ else{}});$.each(e['errors'],function(e,t){$('.or-input[name='+t+']').addClass('e else{return undefined}})};this.openModalDialog=function(){if($('#dialog').data('action')){this.startDialog('',$('#dialog').data('action'),$('#dialog').data('action'),0,{})}};this.initializeState=function(){let parts=window.location.hash.split('/');let state={action:'index',id:0};if(parts.length>=2)state.action=parts[1].toLowerCase();if(parts.length>=3)state.id=parts[2].replace(/[^0-9_]/gim,'');Openrat.Workbench.state=state;Openrat.Navigator.toActualHistory(state)};this.initializePingTimer=function(){let ping=function(){let pingPromise=$.getJSON(Openrat.View.createUrl('profile','ping',0,{},!0));pingPromise.fail(function(){console.warn('The server ping has failed.');if($('.view.dirty').length>0){window.alert('The server session is lost, please save your data.')} else{}})};let timeoutMinutes=5;window.setInterval(ping,timeoutMinutes*60*1000)};this.loadNewActionState=function(e){Openrat.Workbench.state=e;Openrat.Workbench.loadNewAction(e.action,e.id,e.data);this.afterNewActionHandler.fire()};this.afterNewActionHandler=$.Callbacks();this.afterAllViewsLoaded=$.Callbacks();this.loadNewAction=function(e,t,i){this.reloadViews()};this.reloadViews=function(){$('.or-workbench-section--is-closed .or-act-view-loader').empty();let promise=Openrat.Workbench.loadViews($('.or-workbench .or-act-view-loader'));promise.done(function(){Openrat.Workbench.afterAllViewsLoaded.fire()});return promise};this.reloadAll=function(){let promise=Openrat.Workbench.loadViews($('.or-act-view-loader,.or-act-view-static').empty());promise.done(function(){Openrat.Workbench.afterAllViewsLoaded.fire()});this.loadUserStyle();this.loadLanguage();this.loadUISettings();return promise};this.loadUserStyle=function(){let url=Openrat.View.createUrl('profile','userinfo',0,{},!0);$.getJSON(url,function(e){let style=e.output['style'];Openrat.Workbench.setUserStyle(style);let color=e.output['theme-color'];Openrat.Workbench.setThemeColor(color)})};this.settings={};this.language={};this.loadLanguage=function(){let url=Openrat.View.createUrl('profile','language',0,{},!0);$.getJSON(url,function(e){Openrat.Workbench.language=e.output.language})};this.loadUISettings=function(){let url=Openrat.View.createUrl('profile','uisettings',0,{},!0);$.getJSON(url,function(e){Openrat.Workbench.settings=e.output.settings.settings})};this.loadViews=function(e){let promises=[];e.each(function(e){let $targetDOMElement=$(this);promises.push(Openrat.Workbench.loadNewActionIntoElement($targetDOMElement))});return $.when.apply($,promises)};this.loadNewActionIntoElement=function(e){let action;if(e.is('.or-act-view-static'))action=e.attr('data-action');else action=Openrat.Workbench.state.action;let id=Openrat.Workbench.state.id;let params=Openrat.Workbench.state.extra;let method=e.data('method');let view=new Openrat.View(action,method,id,params);return view.start(e)};this.setUserStyle=function(e){var t=$('html'),i=t.attr('class').split(/\s+/);$.each(i,function(e,i){if(i.startsWith('or-theme-')){t.removeClass(i.substring(3))}});t.addClass('theme-'+e.toLowerCase())};this.setThemeColor=function(e){$('#theme-color').attr('content',e)};let notifyBrowser=function(e){if(!('Notification' in window)){return} 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,n,o,a,log=null,notifyTheBrowser=!1){if(notifyTheBrowser)notifyBrowser(a);let notice=$('<div class="or-notice or-notice--'+o+'"></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(n)$(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> '+n+'</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(o=='ok')timeout=20;if(o=='info')timeout=60;if(o=='warning')timeout=120;if(o=='error')timeout=120;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(){$('#dialog > .view').html('<div class="header"><img class="or-icon" title="" src="./themes/default/images/icon/'+i+'.png" />'+e+'</div>');$('#dialog > .view').data('id',o);$('#dialog').removeClass('dialog--is-closed').addClass('dialog--is-open');let view=this;this.escapeKeyClosingHandler=function(e){if(e.keyCode==27){view.close();$(document).off('keyup')}};$(document).keyup(this.escapeKeyClosingHandler);$('.or-dialog-filler').click(function(){view.close()})};view.close=function(){if($('.or-dialog').hasClass('or-dialog--modal'))return;$('.or-view.or-view--is-dirty').removeClass('or-view--is-dirty');$('#dialog .or-view').html('');$('#dialog').removeClass('dialog--is-open').addClass('dialog--is-closed');$(document).unbind('keyup',this.escapeKeyClosingHandler)};return view.start($('.or-dialog > .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)}})}}; +else if(Notification.permission!=='denied'){Notification.requestPermission(function(t){if(t==='granted'){let notification=new Notification(e)}})}};this.notify=function(t,i,n,o,a,log=null,notifyTheBrowser=!1){if(notifyTheBrowser)notifyBrowser(a);let notice=$('<div class="or-notice or-notice--'+o+'"></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(n)$(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> '+n+'</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(o=='ok')timeout=20;if(o=='info')timeout=60;if(o=='warning')timeout=120;if(o=='error')timeout=120;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(){$('#dialog > .view').html('<div class="header"><img class="or-icon" title="" src="./themes/default/images/icon/'+i+'.png" />'+e+'</div>');$('#dialog > .view').data('id',o);$('#dialog').removeClass('dialog--is-closed').addClass('dialog--is-open');let view=this;this.escapeKeyClosingHandler=function(e){if(e.keyCode==27){view.close();$(document).off('keyup')}};$(document).keyup(this.escapeKeyClosingHandler);$('.or-dialog-filler').click(function(){view.close()})};view.close=function(){if($('.or-dialog').hasClass('or-dialog--modal'))return;$('.or-view.or-view--is-dirty').removeClass('view--is-dirty');$('#dialog .or-view').html('');$('#dialog').removeClass('dialog--is-open').addClass('dialog--is-closed');$(document).unbind('keyup',this.escapeKeyClosingHandler)};return view.start($('.or-dialog > .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 e(){function e(e){$(e).closest('div.panel').fadeOut('fast',function(){$(this).toggleClass('fullscreen').fadeIn('fast')})};$('div.header').dblclick(function(){e(this)})};e();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)});$('section.toggle-open-close .on-click-open-close').click(function(){var n=$(this).closest('section');if(n.hasClass('disabled'))return;var e=n.find('div.view-loader');if(e.children().length==0)Openrat.Workbench.loadNewActionIntoElement(e)})};$('.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-workbench-workplace').click(function(){$('.or-workbench-navigation').removeClass('workbench-navigation--is-open')})};closeMobileNavigation();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(e){console.warn(e);console.warn('failed to load path from '+url)}).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-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,o){Openrat.Workbench.openNewAction(e,n,o)}});$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,o,t){e.find('.or-selector-link-value').val(t);e.find('.or-selector-link-name').val(n).attr('placeholder',n)}});$ul.find('.or-act-clickable').orLinkify();$ul.find('.or-navtree-node-control').first().click()})});o(e);$(e).find('.or-input').change(function(){$(this).closest('.view').addClass('dirty')});$(e).find('.or-theme-chooser').change(function(){Openrat.Workbench.setUserStyle(this.value)});function t(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-search .or-input').orSearch({dropdown:'.or-dropdown.or-act-global-search-results',openDropdown:!1,select:function(e){Openrat.Workbench.openNewAction(e.name,e.action,e.id)}})};function a(e){$(e).find('.or-selector .or-selector-link-name').orSearch({dropdown:'.or-dropdown.or-act-selector-search-results',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 i(e){};t(e);r(e);a(e);i(e);function o(e){Openrat.Workbench.registerDraggable(e);Openrat.Workbench.registerDroppable(e)};o(e)}); +;$(function(){$('html').removeClass('nojs');$('.or--initial-hidden').removeClass('-initial-hidden');function e(){function e(e){$(e).closest('div.panel').fadeOut('fast',function(){$(this).toggleClass('fullscreen').fadeIn('fast')})};$('div.header').dblclick(function(){e(this)})};e();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)});$('section.toggle-open-close .on-click-open-close').click(function(){var n=$(this).closest('section');if(n.hasClass('disabled'))return;var e=n.find('div.view-loader');if(e.children().length==0)Openrat.Workbench.loadNewActionIntoElement(e)})};$('.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-workbench-workplace').click(function(){$('.or-workbench-navigation').removeClass('workbench-navigation--is-open')})};closeMobileNavigation();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(e){console.warn(e);console.warn('failed to load path from '+url)}).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-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,o){Openrat.Workbench.openNewAction(e,n,o)}});$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,o,t){e.find('.or-selector-link-value').val(t);e.find('.or-selector-link-name').val(n).attr('placeholder',n)}});$ul.find('.or-act-clickable').orLinkify();$ul.find('.or-navtree-node-control').first().click()})});o(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 t(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-search .or-input').orSearch({dropdown:'.or-dropdown.or-act-global-search-results',openDropdown:!1,select:function(e){Openrat.Workbench.openNewAction(e.name,e.action,e.id)}})};function a(e){$(e).find('.or-selector .or-selector-link-name').orSearch({dropdown:'.or-dropdown.or-act-selector-search-results',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 i(e){};t(e);r(e);a(e);i(e);function o(e){Openrat.Workbench.registerDraggable(e);Openrat.Workbench.registerDroppable(e)};o(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 @@ -321,7 +321,7 @@ Openrat.Workbench.afterViewLoadedHandler.add( function(viewEl ) { // Bei Änderungen in der View das Tab als 'dirty' markieren $(viewEl).find('.or-input').change( function() { - $(this).closest('.view').addClass('dirty'); + $(this).closest('.or-view').addClass('view--is-dirty'); }); // Theme-Auswahl mit Preview diff --git a/modules/cms/ui/themes/default/script/openrat/form.js b/modules/cms/ui/themes/default/script/openrat/form.js @@ -148,6 +148,9 @@ Openrat.Form = function() { form.doResponse(responseData,textStatus,form.element, function() { + // Remove dirty-flag from view + $(form.element).closest('.or-view.or-view--is-dirty').removeClass('view--is-dirty'); + let afterSuccess = $(form.element).data('afterSuccess'); let forwardTo = $(form.element).data('forwardTo' ); let async = $(form.element).data('async' ); diff --git a/modules/cms/ui/themes/default/script/openrat/workbench.js b/modules/cms/ui/themes/default/script/openrat/workbench.js @@ -510,7 +510,8 @@ Openrat.Workbench = new function() if ( $('.or-dialog').hasClass('or-dialog--modal') ) return; - $('.or-view.or-view--is-dirty').removeClass('or-view--is-dirty'); + // Remove dirty-flag from view + $('.or-view.or-view--is-dirty').removeClass('view--is-dirty'); $('#dialog .or-view').html(''); $('#dialog').removeClass('dialog--is-open').addClass('dialog--is-closed'); // Dialog schließen diff --git a/modules/cms/ui/themes/default/style/openrat-view.less b/modules/cms/ui/themes/default/style/openrat-view.less @@ -34,6 +34,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. &-header { font-size: 1.2em; } + &--is-dirty { + // Only JS-Handling + } } &-act-view-loader { diff --git a/modules/cms/ui/themes/default/style/openrat.css b/modules/cms/ui/themes/default/style/openrat.css @@ -580,7 +580,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -webkit-border-radius: 0.5em; -khtml-border-radius: 0.5em; } -/*# 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-view.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%3B%3BAAiCQ%2CGADH%2CKACI%3BCACG%3B%3BAAIR%2CGAAC%3BCACG%3BCAfJ%2CoBAAA%3BCACA%2CyBAAA%3BCACA%2C4BAAA%3BCACA%2C2BAAA%22%7D */ +/*# 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-view.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%3B%3BAAiCQ%2CGADH%2CKACI%3BCACG%3B%3BAAOR%2CGAAC%3BCACG%3BCAlBJ%2CoBAAA%3BCACA%2CyBAAA%3BCACA%2C4BAAA%3BCACA%2C2BAAA%22%7D */ /* Include style: /mnt/data/dankert/Entwicklung/Projekte/openrat-cms/modules/cms/ui/themes/default/style/openrat-font */ /* oxygen-regular - latin */ @font-face {