openrat-cms

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

commit 53b7d387a0886e93b5095ca895cbed54ef03e5fe
parent 1b7502ac60ace95c79781bf3a3cfda213c7c517d
Author: Jan Dankert <develop@jandankert.de>
Date:   Sun, 15 Nov 2020 21:41:39 +0100

Fix: Reordering of folder content.

Diffstat:
Mmodules/cms/action/FolderAction.class.php | 27++++++---------------------
Mmodules/cms/ui/themes/default/html/views/folder/order.php | 12++----------
Mmodules/cms/ui/themes/default/html/views/folder/order.tpl.src.xml | 88++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mmodules/cms/ui/themes/default/script/openrat.js | 27+++++++++++++--------------
Mmodules/cms/ui/themes/default/script/openrat.min.js | 2+-
Mmodules/template_engine/components/html/component_table/table.js | 27+++++++++++++--------------
6 files changed, 80 insertions(+), 103 deletions(-)

diff --git a/modules/cms/action/FolderAction.class.php b/modules/cms/action/FolderAction.class.php @@ -1097,39 +1097,24 @@ class FolderAction extends ObjectAction public function orderView() { $list = array(); - $last_objectid = 0; // Schleife ueber alle Objekte in diesem Ordner foreach( $this->folder->getObjects() as $o ) { /* @var $o BaseObject */ $id = $o->objectid; + $name = $o->getDefaultName(); if ( $o->hasRight(Acl::ACL_READ) ) { $list[$id]['id' ] = $id; - $list[$id]['name'] = \util\Text::maxLength( $o->name ,30); - $list[$id]['filename'] = \util\Text::maxLength( $o->filename ,20); - $list[$id]['desc'] = \util\Text::maxLength( $o->desc ,30); - if ( $list[$id]['desc'] == '' ) - $list[$id]['desc'] = \cms\base\Language::lang('NO_DESCRIPTION_AVAILABLE'); - $list[$id]['desc'] = 'ID '.$id.' - '.$list[$id]['desc']; - - $list[$id]['type'] = $o->getType(); - - $list[$id]['icon'] = $o->getType(); - - if ( $o->getType() == 'file' ) - { - $file = new File( $id ); - $file->load(); - $list[$id]['desc'] .= ' - '.intval($file->size/1000).'kB'; + $list[$id]['name'] = $name->name; + $list[$id]['filename'] = $o->filename; + $list[$id]['desc'] = 'ID '.$id.' - '.$name->description; - if ( $file->isImage() ) - $list[$id]['icon'] = 'image'; - } + $list[$id]['type'] = $o->getType(); + $list[$id]['icon'] = $o->getType(); - $list[$id]['url' ] = Html::url($o->getType(),'',$id); $list[$id]['date'] = $o->lastchangeDate; $list[$id]['user'] = $o->lastchangeUser; diff --git a/modules/cms/ui/themes/default/html/views/folder/order.php b/modules/cms/ui/themes/default/html/views/folder/order.php @@ -15,10 +15,6 @@ <table width="<?php echo O::escapeHtml('100%') ?>" class="<?php echo O::escapeHtml('or-table or-table--sortable') ?>"><?php echo O::escapeHtml('') ?> <tr class="<?php echo O::escapeHtml('or-headline') ?>"><?php echo O::escapeHtml('') ?> <td class="<?php echo O::escapeHtml('or-help') ?>"><?php echo O::escapeHtml('') ?> - <span><?php echo O::escapeHtml(''.@O::lang('FOLDER_ORDER').'') ?> - </span> - </td> - <td class="<?php echo O::escapeHtml('or-help') ?>"><?php echo O::escapeHtml('') ?> <span><?php echo O::escapeHtml(''.@O::lang('TYPE').'') ?> </span> </td> @@ -38,14 +34,10 @@ <?php foreach((array)$object as $list_key=>$list_value) { extract($list_value); ?> <tr data-id="<?php echo O::escapeHtml(''.@$id.'') ?>" class="<?php echo O::escapeHtml('or-data') ?>"><?php echo O::escapeHtml('') ?> <td><?php echo O::escapeHtml('') ?> - <span><?php echo O::escapeHtml(' ') ?> - </span> - </td> - <td><?php echo O::escapeHtml('') ?> - <span class="<?php echo O::escapeHtml('or-sort-value') ?>"><?php echo O::escapeHtml(''.@$icon.'') ?> - </span> <i class="<?php echo O::escapeHtml('or-image-icon or-image-icon--action-'.@$icon.'') ?>"><?php echo O::escapeHtml('') ?> </i> + <span class="<?php echo O::escapeHtml('or-sort-value') ?>"><?php echo O::escapeHtml(''.@O::lang(''.@$icon.'').'') ?> + </span> </td> <td><?php echo O::escapeHtml('') ?> <span><?php echo O::escapeHtml(''.@$name.'') ?> diff --git a/modules/cms/ui/themes/default/html/views/folder/order.tpl.src.xml b/modules/cms/ui/themes/default/html/views/folder/order.tpl.src.xml @@ -1,44 +1,46 @@ -<output xmlns="http://www.openrat.de/template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openrat.de/template ../../../../../../../template_engine/components/template.xsd"> - <form> - <table class="table--sortable"> - <row class="headline"> - <column class="help"> - <text value="${message:FOLDER_ORDER}"/> - </column> - <column class="help"> - <text value="${message:TYPE}"/> - </column> - <column class="help"> - <text value="${message:NAME}"/> - </column> - <column class="help"> - <text value="${message:FILENAME}"/> - </column> - <column class="help"> - <text value="${message:LASTCHANGE}"/> - </column> - </row> - <list list="${object}" extract="true"> - <row class="data" id="${id}"> - <column> - <text value=" "/> - </column> - <column> - <text class="sort-value" value="${icon}"/> - <image action="${icon}"/> - </column> - <column> - <text value="${name}"/> - </column> - <column> - <text value="${filename}"/> - </column> - <column> - <date date="${date}"/> - </column> - </row> - </list> - </table> - <hidden name="order" default=""/> - </form> +<output xmlns="http://www.openrat.de/template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.openrat.de/template ../../../../../../../template_engine/components/template.xsd"> + <form> + <table class="table--sortable"> + <row class="headline"> + <!-- + <column class="help"> + <text value="${message:FOLDER_ORDER}"/> + </column>--> + <column class="help"> + <text value="${message:TYPE}"/> + </column> + <column class="help"> + <text value="${message:NAME}"/> + </column> + <column class="help"> + <text value="${message:FILENAME}"/> + </column> + <column class="help"> + <text value="${message:LASTCHANGE}"/> + </column> + </row> + <list list="${object}" extract="true"> + <row class="data" id="${id}"> + <!--<column> + <text value=" "/> + </column>--> + <column> + <image action="${icon}"/> + <text class="sort-value" value="${message:${icon}}"/> + </column> + <column> + <text value="${name}"/> + </column> + <column> + <text value="${filename}"/> + </column> + <column> + <date date="${date}"/> + </column> + </row> + </list> + </table> + <hidden name="order" default=""/> + </form> </output> diff --git a/modules/cms/ui/themes/default/script/openrat.js b/modules/cms/ui/themes/default/script/openrat.js @@ -3382,25 +3382,24 @@ Openrat.Workbench.afterViewLoadedHandler.add( function(element ) { Openrat.Workbench.afterViewLoadedHandler.add( function(element ) { - // Manuelles Sortieren von Tabellen per Drag and drop. - $(element).find('.or-table--sortable > tbody').sortable(); - + let calculateOrderList = function() { - $(element).find('.or-table--sortable > tbody').closest('form').submit( function() { + // Analyse the order of the objects in this folder. + let order = new Array(); - // Analyse the order of the objects in this folder. - var order = new Array(); + $(element).find('.or-table--sortable').find('tbody > tr.or-data').each(function () { + let objectid = $(this).data('id'); + order.push(objectid); + }); - $(this).find('.or-table--sortable').find('tbody > tr.data').each(function () { - let objectid = $(this).data('id'); - order.push(objectid); - }); + // Set the comma-separated list of objects into a input field. + $(element).find('input[name=order]').val(order.join(',')); + }; - // Set the comma-separated list of objects into a input field. - $(this).find('input[name=order]').val(order.join(',')); - } - ); + calculateOrderList(); + // Manuelles Sortieren von Tabellen per Drag and drop. + $(element).find('.or-table--sortable > tbody').sortable( { update: calculateOrderList } ); // Alle Checkboxen setzen oder nicht setzen. $(element).find('tr.headline > td > input.checkbox').click( function() { diff --git a/modules/cms/ui/themes/default/script/openrat.min.js b/modules/cms/ui/themes/default/script/openrat.min.js @@ -1191,5 +1191,5 @@ else if(Notification.permission!=='denied'){Notification.requestPermission(funct ; ;Openrat.Workbench.afterViewLoadedHandler.add(function(a){$(a).find('.or-act-clickable').orLinkify()}); ;Openrat.Workbench.afterViewLoadedHandler.add(function(e){$(e).find('.or-qrcode').mouseover(function(){let e=this;if($(e).children().length>0)return;let wrapper=$('<div class="or-info-popup"></div>');$(e).append(wrapper);let qrcodetext=$(e).attr('data-qrcode');$(wrapper).qrcode({render:'div',text:qrcodetext,fill:'currentColor'});wrapper.attr('title','')});$(e).find('.or-info').click(function(){$(this).toggleClass('info--open')})}); -;Openrat.Workbench.afterViewLoadedHandler.add(function(t){$(t).find('.or-table--sortable > tbody').sortable();$(t).find('.or-table--sortable > tbody').closest('form').submit(function(){var t=[];$(this).find('.or-table--sortable').find('tbody > tr.data').each(function(){let objectid=$(this).data('id');t.push(objectid)});$(this).find('input[name=order]').val(t.join(','))});$(t).find('tr.headline > td > input.checkbox').click(function(){$(this).closest('table').find('tr.or-data > td > input.or-checkbox').attr('checked',Boolean($(this).attr('checked')))});$(t).find('.or-table-filter > input').keyup(function(){let filterExpression=$(this).val().toLowerCase();let table=$(this).parents('.or-table-wrapper').find('table');table.addClass('loader');setTimeout(()=>{table.find('tr:not(.headline)').filter(function(){$(this).toggle($(this).text().toLowerCase().indexOf(filterExpression)>-1)});table.removeClass('loader')},50)});$(t).find('table > tbody > tr.headline > td, table > tbody > tr > th').click(function(){let column=$(this);let table=column.parents('table');table.addClass('loader');let isAscending=!column.hasClass('sort-asc');table.find('tr.headline > td, tr > th').removeClass('sort-asc').removeClass('sort-desc');if(isAscending)column.addClass('sort-asc');else column.addClass('sort-desc');setTimeout(function(){let rows=table.find('tr:gt(0)').toArray().sort(a(column.index()));if(!isAscending){rows=rows.reverse()};for(var t=0;t<rows.length;t++){table.append(rows[t])};table.removeClass('loader')},50)});function a(t){return function(a,l){let valA=e(a,t),valB=e(l,t);return $.isNumeric(valA)&&$.isNumeric(valB)?valA-valB:valA.toString().localeCompare(valB)}};function e(t,e){return $(t).children('td').eq(e).text()}}); +;Openrat.Workbench.afterViewLoadedHandler.add(function(t){let calculateOrderList=function(){let order=[];$(t).find('.or-table--sortable').find('tbody > tr.or-data').each(function(){let objectid=$(this).data('id');order.push(objectid)});$(t).find('input[name=order]').val(order.join(','))};calculateOrderList();$(t).find('.or-table--sortable > tbody').sortable({update:calculateOrderList});$(t).find('tr.headline > td > input.checkbox').click(function(){$(this).closest('table').find('tr.or-data > td > input.or-checkbox').attr('checked',Boolean($(this).attr('checked')))});$(t).find('.or-table-filter > input').keyup(function(){let filterExpression=$(this).val().toLowerCase();let table=$(this).parents('.or-table-wrapper').find('table');table.addClass('loader');setTimeout(()=>{table.find('tr:not(.headline)').filter(function(){$(this).toggle($(this).text().toLowerCase().indexOf(filterExpression)>-1)});table.removeClass('loader')},50)});$(t).find('table > tbody > tr.headline > td, table > tbody > tr > th').click(function(){let column=$(this);let table=column.parents('table');table.addClass('loader');let isAscending=!column.hasClass('sort-asc');table.find('tr.headline > td, tr > th').removeClass('sort-asc').removeClass('sort-desc');if(isAscending)column.addClass('sort-asc');else column.addClass('sort-desc');setTimeout(function(){let rows=table.find('tr:gt(0)').toArray().sort(a(column.index()));if(!isAscending){rows=rows.reverse()};for(var t=0;t<rows.length;t++){table.append(rows[t])};table.removeClass('loader')},50)});function a(t){return function(a,r){let valA=e(a,t),valB=e(r,t);return $.isNumeric(valA)&&$.isNumeric(valB)?valA-valB:valA.toString().localeCompare(valB)}};function e(t,e){return $(t).children('td').eq(e).text()}}); ;Openrat.Workbench.afterViewLoadedHandler.add(function(e){var o=$(e).find('form'),r=$(e).find('div.or-dropzone-upload > div.input');r.on('dragenter',function(e){e.stopPropagation();e.preventDefault();$(this).css('border','1px dotted gray')});r.on('dragover',function(e){e.stopPropagation();e.preventDefault()});r.on('drop',function(e){$(this).css('border','1px dotted red');e.preventDefault();var r=e.originalEvent.dataTransfer.files;Openrat.Workbench.handleFileUpload(o,r)});$(e).find('input[type=file]').change(function(){var e=$(this).prop('files');Openrat.Workbench.handleFileUpload(o,e)})});Openrat.Workbench.handleFileUpload=function(e,o){for(let i=0,f;f=o[i];i++){let form_data=new FormData();form_data.append('file',f);form_data.append('action','folder');form_data.append('subaction',$(e).data('method'));form_data.append('output','json');form_data.append('token',$(e).find('input[name=token]').val());form_data.append('id',$(e).find('input[name=id]').val());var r=$('<div class="notice info"><div class="text loader"></div></div>');$('#noticebar').prepend(r);$(r).show();$.ajax({'type':'POST',url:'./api/',cache:!1,contentType:!1,processData:!1,data:form_data,success:function(o,a,n){$(r).remove();let oform=new Openrat.Form();oform.doResponse(o,a,e)},error:function(o,a,n){$(e).closest('div.content').removeClass('loader');$(r).remove();let msg;try{let error=jQuery.parseJSON(o.responseText);msg=error.error+'/'+error.description+': '+error.reason}catch(t){msg=o.responseText};Openrat.Workbench.notify('Upload error',0,msg)}})}}; diff --git a/modules/template_engine/components/html/component_table/table.js b/modules/template_engine/components/html/component_table/table.js @@ -1,25 +1,24 @@ Openrat.Workbench.afterViewLoadedHandler.add( function(element ) { - // Manuelles Sortieren von Tabellen per Drag and drop. - $(element).find('.or-table--sortable > tbody').sortable(); - + let calculateOrderList = function() { - $(element).find('.or-table--sortable > tbody').closest('form').submit( function() { + // Analyse the order of the objects in this folder. + let order = new Array(); - // Analyse the order of the objects in this folder. - var order = new Array(); + $(element).find('.or-table--sortable').find('tbody > tr.or-data').each(function () { + let objectid = $(this).data('id'); + order.push(objectid); + }); - $(this).find('.or-table--sortable').find('tbody > tr.data').each(function () { - let objectid = $(this).data('id'); - order.push(objectid); - }); + // Set the comma-separated list of objects into a input field. + $(element).find('input[name=order]').val(order.join(',')); + }; - // Set the comma-separated list of objects into a input field. - $(this).find('input[name=order]').val(order.join(',')); - } - ); + calculateOrderList(); + // Manuelles Sortieren von Tabellen per Drag and drop. + $(element).find('.or-table--sortable > tbody').sortable( { update: calculateOrderList } ); // Alle Checkboxen setzen oder nicht setzen. $(element).find('tr.headline > td > input.checkbox').click( function() {