diff --git a/browser/common.py b/browser/common.py index d485e4c..3c128fc 100644 --- a/browser/common.py +++ b/browser/common.py @@ -690,6 +690,11 @@ class BaseView(GenericView, I18NView): #cm.register('css', identifier='dojo.css', position=1, # resourceName='ajax.dojo/dojo/resources/dojo.css', media='all') + def registerDojoDnd(self): + self.registerDojo() + jsCall = 'dojo.require("dojo.dnd.Source")' + self.controller.macros.register('js-execute', jsCall, jsCall=jsCall) + def registerDojoDialog(self): self.registerDojo() jsCall = 'dojo.require("dijit.Dialog")' diff --git a/browser/concept.py b/browser/concept.py index be05b75..3f327ba 100644 --- a/browser/concept.py +++ b/browser/concept.py @@ -269,7 +269,23 @@ class ConceptView(BaseView): instance.view = self return instance + def reorderChildren(self, tokens): + for r in self.context.getChildRelations(sort=None): + token = ':'.join((util.getUidForObject(r.second), + util.getUidForObject(r.predicate))) + if token in tokens: + pos = tokens.index(token) + 1 + if r.order != pos: + r.order = pos + def getChildren(self, topLevelOnly=True, sort=True, noDuplicates=True): + form = self.request.form + if form.get('loops.viewName') == 'index.html' and self.editable: + self.registerDojoDnd() + if 'children_change_order' in form: + tokens = form.get('child_tokens') + if tokens: + self.reorderChildren(tokens) cm = self.loopsRoot.getConceptManager() hasType = cm.getTypePredicate() params = self.params diff --git a/browser/concept_macros.pt b/browser/concept_macros.pt index fb9ee85..2445e8b 100644 --- a/browser/concept_macros.pt +++ b/browser/concept_macros.pt @@ -97,12 +97,14 @@ -
-

Children

+
+

Children

+
@@ -112,16 +114,18 @@ + - + +
TitleInfo
- Resource Title @@ -136,12 +140,26 @@ style nothing" tal:condition="view/showObjectActions">
+
-
+ + + + +