示例#1
0
 def getOrdering(self):
     if IPloneSiteRoot.providedBy(self.context):
         return self.context
     if getattr(self.context, "getOrdering", None):
         ordering = self.context.getOrdering()
         if IExplicitOrdering.providedBy(ordering):
             return ordering
示例#2
0
 def orderObjects(self, key=None, reverse=None):
     """ Order sub-objects by key and direction. """
     ordering = self.getOrdering()
     if IExplicitOrdering.providedBy(ordering):
         return ordering.orderObjects(key, reverse)
     else:
         return 0
示例#3
0
 def moveObjectsToBottom(self, ids, subset_ids=None):
     """ Move specified sub-objects to bottom of container. """
     ordering = self.getOrdering()
     if IExplicitOrdering.providedBy(ordering):
         return ordering.moveObjectsToBottom(ids, subset_ids)
     else:
         return 0
示例#4
0
 def moveObjectToPosition(self, id, position, suppress_events=False):
     """ Move specified object to absolute position. """
     ordering = self.getOrdering()
     if IExplicitOrdering.providedBy(ordering):
         return ordering.moveObjectToPosition(id, position, suppress_events)
     else:
         return 0
示例#5
0
 def moveObjectToPosition(self, id, position, suppress_events=False):
     """ Move specified object to absolute position. """
     ordering = self.getOrdering()
     if IExplicitOrdering.providedBy(ordering):
         return ordering.moveObjectToPosition(id, position, suppress_events)
     else:
         return 0
示例#6
0
 def moveObjectsDown(self, ids, delta=1, subset_ids=None):
     """ Move specified sub-objects down by delta in container. """
     ordering = self.getOrdering()
     if IExplicitOrdering.providedBy(ordering):
         return ordering.moveObjectsDown(ids, delta, subset_ids)
     else:
         return 0
示例#7
0
 def moveObjectsToBottom(self, ids, subset_ids=None):
     """ Move specified sub-objects to bottom of container. """
     ordering = self.getOrdering()
     if IExplicitOrdering.providedBy(ordering):
         return ordering.moveObjectsToBottom(ids, subset_ids)
     else:
         return 0
示例#8
0
 def getOrdering(self):
     if IPloneSiteRoot.providedBy(self.context):
         return self.context
     ordering = self.context.getOrdering()
     if not IExplicitOrdering.providedBy(ordering):
         return None
     return ordering
示例#9
0
 def orderable(self):
     if _is_collection(self.context):
         return False
     if IPloneSiteRoot.providedBy(self.context):
         return True
     ordering = self.context.getOrdering()
     return IExplicitOrdering.providedBy(ordering)
示例#10
0
 def orderObjects(self, key, reverse=None):
     """ Order sub-objects by key and direction. """
     ordering = self.getOrdering()
     if IExplicitOrdering.providedBy(ordering):
         return ordering.orderObjects(key, reverse)
     else:
         return 0
def _supports_explicit_ordering(context):
    if IPloneSiteRoot.providedBy(context):
        return True
    if not IOrderableFolder.providedBy(context):
        return False
    ordering = context.getOrdering()
    return IExplicitOrdering.providedBy(ordering)
示例#12
0
    def __call__(self, item_id, delta, subset_ids=None):
        context = aq_inner(self.context)
        try:
            if not IOrderableFolder.providedBy(context):
                if not base_hasattr(context, 'moveObjectsByDelta'):
                    # for instance, plone site root does not use plone.folder
                    raise ValueError("Not an ordered folder.")
            else:
                ordering = context.getOrdering()
                if not IExplicitOrdering.providedBy(ordering):
                    raise ValueError("Ordering disable on folder.")

            delta = int(delta)
            if subset_ids is not None:
                objectPos = self.context.getObjectPosition
                position_id = [(objectPos(id), id) for id in subset_ids]
                position_id.sort()
                if subset_ids != [id for position, id in position_id]:
                    raise ValueError("Client/server ordering mismatch.")
                self.context.moveObjectsByDelta(item_id, delta, subset_ids)
        except ValueError as e:
            self.context.REQUEST.response.setStatus('BadRequest')
            return str(e)

        ploneUtils = getToolByName(self.context, 'plone_utils')
        ploneUtils.reindexOnReorder(self.context)
        return "<done />"
示例#13
0
 def moveObjectsDown(self, ids, delta=1, subset_ids=None):
     """ Move specified sub-objects down by delta in container. """
     ordering = self.getOrdering()
     if IExplicitOrdering.providedBy(ordering):
         return ordering.moveObjectsDown(ids, delta, subset_ids)
     else:
         return 0
 def getOrdering(self):
     if IPloneSiteRoot.providedBy(self.context):
         return self.context
     ordering = self.context.getOrdering()
     if not IExplicitOrdering.providedBy(ordering):
         return None
     return ordering
示例#15
0
def getOrdering(context):
    if IPloneSiteRoot.providedBy(context):
        return context
    else:
        ordering = context.getOrdering()
        if not IExplicitOrdering.providedBy(ordering):
            return None
        return ordering
示例#16
0
def getOrdering(context):
    if IPloneSiteRoot.providedBy(context):
        return context
    else:
        ordering = context.getOrdering()
        if not IExplicitOrdering.providedBy(ordering):
            return None
        return ordering
示例#17
0
 def moveObjectsByDelta(self, ids, delta, subset_ids=None,
         suppress_events=False):
     """ Move specified sub-objects by delta. """
     ordering = self.getOrdering()
     if IExplicitOrdering.providedBy(ordering):
         return ordering.moveObjectsByDelta(ids, delta, subset_ids,
             suppress_events)
     else:
         return 0
示例#18
0
 def moveObjectsByDelta(self,
                        ids,
                        delta,
                        subset_ids=None,
                        suppress_events=False):
     """ Move specified sub-objects by delta. """
     ordering = self.getOrdering()
     if IExplicitOrdering.providedBy(ordering):
         return ordering.moveObjectsByDelta(ids, delta, subset_ids,
                                            suppress_events)
     else:
         return 0
示例#19
0
 def orderable(self):
     """
     """
     context = aq_inner(self.context)
     if not IOrderableFolder.providedBy(context):
         if hasattr(context, 'moveObjectsByDelta'):
             # for instance, plone site root does not use plone.folder
             return True
         else:
             return False
     ordering = context.getOrdering()
     return IExplicitOrdering.providedBy(ordering)
示例#20
0
 def getOrdering(self):
     if IPloneSiteRoot.providedBy(self.context):
         return self.context
     try:
         ordering = self.context.aq_base.getOrdering()
     except AttributeError:
         if IOrderedContainer.providedBy(self.context):
             # Archetype
             return IOrderedContainer(self.context)
         return None
     if not IExplicitOrdering.providedBy(ordering):
         return None
     return ordering
示例#21
0
def orderable(self):
    if IPloneSiteRoot.providedBy(self.context):
        return True
    ordering = self.context.getOrdering()
    return IExplicitOrdering.providedBy(ordering)