';
$item += '';
if((libClass == 'lib' && item.type != 'execution') || (item.type == 'execution' && item.hasAction)) $item += '';
@@ -301,7 +302,7 @@ $(function()
if(item.versions) versionsData[item.id] = item.versions;
$li.append($item);
- $li.addClass(libClass).addClass(moduleClass).attr('data-order', item.order);
+ $li.addClass(libClass).addClass(moduleClass).attr('data-order', item.order).attr('data-type', item.type);
if(item.active) $li.addClass('active');
},
});
@@ -687,7 +688,28 @@ $(function()
},
finish: function(e)
{
+ $('a.sort-module').removeClass('dragging-shadow');
if(!e.changed) return;
+
+ var orders = {};
+ var link = '';
+ var module = e.list.context;
+ var moduleType = $(module).attr('data-type');
+ $('#fileTree').find("li[data-type='" + moduleType + "'].catalog").each(function()
+ {
+ var $li = $(this);
+ var item = $li.data();
+ orders['orders[' + item.id + ']'] = $li.attr('data-order') || item.order;
+ });
+
+ var moduleName = moduleType == 'apiDoc' ? 'api' : 'doc';
+ link = createLink(moduleName, 'sortCatalog');
+
+ $.post(link, orders, function(data){}).error(function()
+ {
+ bootbox.alert(lang.timeout);
+ });
+
}
});
})
diff --git a/module/tree/model.php b/module/tree/model.php
index 583f366afd..1f8c61c4c3 100644
--- a/module/tree/model.php
+++ b/module/tree/model.php
@@ -1837,8 +1837,14 @@ class treeModel extends model
if($self)
{
- $self->parent = $module->parent;
if($self->root and !isset($module->root)) $module->root = $self->root;
+ if($self->parent != $module->parent or $self->root != $module->root)
+ {
+ $maxOrder = $this->dao->select('MAX(`order`) AS `order`')->from(TABLE_MODULE)->where('parent')->eq($module->parent)->andWhere('root')->eq($module->root)->fetch('order');
+ $module->order = $maxOrder ? ++ $maxOrder : $self->order;
+ }
+
+ if($module->parent) $self->parent = $module->parent;
}
$repeatName = $this->checkUnique($self, array("id{$self->id}" => $module->name), array("id{$self->id}" => $module->branch));