diff --git a/bundle/ezpublish_legacy/ngadminui/design/ngadminui/javascript/admin2pp_dragndrop_children.js b/bundle/ezpublish_legacy/ngadminui/design/ngadminui/javascript/admin2pp_dragndrop_children.js new file mode 100644 index 00000000..adb7a811 --- /dev/null +++ b/bundle/ezpublish_legacy/ngadminui/design/ngadminui/javascript/admin2pp_dragndrop_children.js @@ -0,0 +1,93 @@ +/** + * $Id: admin2pp_dragndrop_children.js 79 2010-03-14 11:19:58Z dpobel $ + * $HeadURL: http://svn.projects.ez.no/admin2pp/trunk/extension/admin2pp/design/admin2/javascript/admin2pp_dragndrop_children.js $ + * + */ + +function admin2ppDragNDropChildren() { + this.sortOrder = 1; +} + +admin2ppDragNDropChildren.PRIORITY_OFFSET = 2; +admin2ppDragNDropChildren.TABLE_ID = 'content-sub-items-list > table'; + +admin2ppDragNDropChildren.prototype = { + init:function() { + var instance = this; + this.sortOrder = subItemsTable.get('sortedBy').dir === 'yui-dt-asc' ? 1 : -1; + jQuery('#' + admin2ppDragNDropChildren.TABLE_ID + ' .yui-dt-data').sortable( { + // Using a custom place holder, because the default one is pushing the table to the left. + placeholder: { + /** + * Function to create the placeholder + */ + element: function(currentItem) { + var tr = $('
 
'); + + return tr; + }, + update: function(container, p) { + return; + } + }, + axis:'y', + opacity:0.8, + items:'> tr', + cursor:'move', + stop:function( evt, ui ) { + instance.fixBackgrounds(); + instance.setPriorities(); + } + } ) + .css( 'cursor', 'move' ); + jQuery('#' + admin2ppDragNDropChildren.TABLE_ID + ' .yui-dt-data').disableSelection(); + }, + + setPriorities:function() { + var inputs = jQuery( '#' + admin2ppDragNDropChildren.TABLE_ID + ' .yui-dt0-col-priority > .yui-dt-liner' ); + // Fetch the starting point + var start = +inputs.first().text(); + var increments = admin2ppDragNDropChildren.PRIORITY_OFFSET * this.sortOrder; + var instance = this; + inputs.each(function() { + jQuery( this ).text( start ); + var recordId = jQuery( this ).closest('tr').attr('id'); + var record = subItemsTable.getRecordSet().getRecord(recordId); + instance.updatePriority(record, start); + start = start + increments; + }); + }, + + updatePriority: function(record, priority) { + var sortedBy = subItemsTable.get('sortedBy'), + paginator = subItemsTable.get('paginator') + ; + record.setData('priority', priority); + + jQuery.ez('ezjscnode::updatepriority', { + ContentNodeID: record.getData('parent_node_id'), + ContentObjectID: record.getData('contentobject_id'), + PriorityID: [record.getData('node_id')], + Priority: [priority] + }, onSuccess); + + var onSuccess = function(data) { + record.setData('priority', priority); + } + }, + + fixBackgrounds:function() { + var cssClass = 'yui-dt-odd'; + jQuery('#' + admin2ppDragNDropChildren.TABLE_ID + ' tbody tr').each(function() { + var $this = jQuery( this ); + $this.removeClass('yui-dt-odd yui-dt-even'); + $this.addClass( cssClass ); + if ( cssClass == 'yui-dt-odd' ) { + cssClass = 'yui-dt-even'; + } else { + cssClass = 'yui-dt-odd'; + } + }); + } + +}; diff --git a/bundle/ezpublish_legacy/ngadminui/design/ngadminui/javascript/ezajaxsubitems_datatable.js b/bundle/ezpublish_legacy/ngadminui/design/ngadminui/javascript/ezajaxsubitems_datatable.js index 768178c9..135ae935 100644 --- a/bundle/ezpublish_legacy/ngadminui/design/ngadminui/javascript/ezajaxsubitems_datatable.js +++ b/bundle/ezpublish_legacy/ngadminui/design/ngadminui/javascript/ezajaxsubitems_datatable.js @@ -258,6 +258,12 @@ var sortableSubitems = function () { // Table options + // Triggering jQuery event, when the table is rendered + subItemsTable.subscribe("renderEvent", function (oArgs) { + window.subItemsTable = subItemsTable; + jQuery('#content-sub-items-list').trigger('datatable:rendered'); + }); + // Shows dialog, creating one when necessary var colLayoutHasChanged = true; var showTblOptsDialog = function(e) { diff --git a/bundle/ezpublish_legacy/ngadminui/design/ngadminui/stylesheets/core.css b/bundle/ezpublish_legacy/ngadminui/design/ngadminui/stylesheets/core.css index 7812210b..5ec732c7 100644 --- a/bundle/ezpublish_legacy/ngadminui/design/ngadminui/stylesheets/core.css +++ b/bundle/ezpublish_legacy/ngadminui/design/ngadminui/stylesheets/core.css @@ -715,3 +715,8 @@ div.attribute-multioption li padding: 0; list-style-type: none; } + +/* This is necessary to prevent the dragged row elements collapse while is being dragged */ +.ui-sortable-helper { + display: table!important; +} diff --git a/bundle/ezpublish_legacy/ngadminui/design/ngadminui/templates/children.tpl b/bundle/ezpublish_legacy/ngadminui/design/ngadminui/templates/children.tpl index 9a26f54d..efcf23e3 100644 --- a/bundle/ezpublish_legacy/ngadminui/design/ngadminui/templates/children.tpl +++ b/bundle/ezpublish_legacy/ngadminui/design/ngadminui/templates/children.tpl @@ -13,8 +13,9 @@ $children_count = fetch( content, list_count, hash( 'parent_node_id', $node.node_id, 'objectname_filter', $view_parameters.namefilter ) ) $children = array() - $priority = and( eq( $node.sort_array[0][0], 'priority' ), $node.can_edit, $children_count ) } - + $priority = and( eq( $node.sort_array[0][0], 'priority' ), $node.can_edit, $children_count ) + $priority_dd = and( $priority, $admin_children_viewmode|ne( 'thumbnail' ), $view_parameters.offset|eq( 0 ) ) +} @@ -90,6 +91,19 @@ {ezscript_require( array('ezjsc::yui2', 'ezajaxsubitems_datatable.js') )} +{if $priority_dd} + +{/if} {undef $item_type $number_of_items $can_remove $can_move $can_edit $can_create $can_copy $current_path $admin_children_viewmode $children_count $children} diff --git a/bundle/ezpublish_legacy/ngadminui/settings/design.ini.append.php b/bundle/ezpublish_legacy/ngadminui/settings/design.ini.append.php index 6cff8000..47cbdaa8 100644 --- a/bundle/ezpublish_legacy/ngadminui/settings/design.ini.append.php +++ b/bundle/ezpublish_legacy/ngadminui/settings/design.ini.append.php @@ -2,4 +2,9 @@ [ExtensionSettings] DesignExtensions[]=ngadminui + +[JavaScriptSettings] +BackendJavaScriptList[]=ezjsc::jqueryUI +BackendJavaScriptList[]=admin2pp_dragndrop_children.js + */ ?>