From: <te...@us...> - 2003-08-27 09:42:01
|
Update of /cvsroot/plone/CMFPlone In directory sc8-pr-cvs1:/tmp/cvs-serv5923 Modified Files: PloneFolder.py Log Message: Added support for ordering. The UI is not in place yet. The code is provided by Kapil Thangavelu. Index: PloneFolder.py =================================================================== RCS file: /cvsroot/plone/CMFPlone/PloneFolder.py,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** PloneFolder.py 3 Aug 2003 22:08:47 -0000 1.48 --- PloneFolder.py 27 Aug 2003 09:41:29 -0000 1.49 *************** *** 77,81 **** } ! class PloneFolder ( SkinnedFolder, DefaultDublinCoreImpl ): meta_type = 'Plone Folder' --- 77,156 ---- } ! ! ! class OrderedContainer(Folder): ! ! security = ClassSecurityInfo() ! ! security.declareProtected(Permissions.copy_or_move, 'moveObject') ! def moveObject(self, id, position): ! obj_idx = self.getObjectPosition(id) ! if obj_idx == position: ! return None ! elif position < 0: ! position = 0 ! ! metadata = list(self._objects) ! obj_meta = metadata.pop(obj_idx) ! metadata.insert(position, obj_meta) ! self._objects = tuple(metadata) ! ! security.declareProtected(Permissions.copy_or_move, 'getObjectPosition') ! def getObjectPosition(self, id): ! ! objs = list(self._objects) ! om = [objs.index(om) for om in objs if om['id']==id ] ! ! if om: # only 1 in list if any ! return om[0] ! ! raise NotFound('Object %s was not found'%str(id)) ! ! security.declareProtected(Permissions.copy_or_move, 'moveObjectUp') ! def moveObjectUp(self, id, steps=1, RESPONSE=None): ! """ Move an object up """ ! self.moveObject( ! id, ! self.getObjectPosition(id) - int(steps) ! ) ! if RESPONSE is not None: ! RESPONSE.redirect('manage_workspace') ! ! security.declareProtected(Permissions.copy_or_move, 'moveObjectDown') ! def moveObjectDown(self, id, steps=1, RESPONSE=None): ! """ move an object down """ ! self.moveObject( ! id, ! self.getObjectPosition(id) + int(steps) ! ) ! if RESPONSE is not None: ! RESPONSE.redirect('manage_workspace') ! ! security.declareProtected(Permissions.copy_or_move, 'moveObjectTop') ! def moveObjectTop(self, id, RESPONSE=None): ! """ move an object to the top """ ! self.moveObject(id, 0) ! if RESPONSE is not None: ! RESPONSE.redirect('manage_workspace') ! ! security.declareProtected(Permissions.copy_or_move, 'moveObjectBottom') ! def moveObjectBottom(self, id, RESPONSE=None): ! """ move an object to the bottom """ ! self.moveObject(id, sys.maxint) ! if RESPONSE is not None: ! RESPONSE.redirect('manage_workspace') ! ! def manage_renameObject(self, id, new_id, REQUEST=None): ! " " ! objidx = self.getObjectPosition(id) ! method = OrderedContainer.inheritedAttribute('manage_renameObject') ! result = method(self, id, new_id, REQUEST) ! self.moveObject(new_id, objidx) ! ! return result ! ! InitializeClass(OrderedContainer) ! ! class PloneFolder ( SkinnedFolder, OrderedContainer, DefaultDublinCoreImpl ): meta_type = 'Plone Folder' *************** *** 124,127 **** --- 199,203 ---- manage_addFolder = manage_addPloneFolder + manage_renameObject = OrderedContainer.manage_renameObject def __browser_default__(self, request): *************** *** 138,143 **** values=SkinnedFolder.contentValues(self, spec=spec, filter=filter) if sort_on is not None: ! values.sort(lambda x, y: safe_cmp(getattr(x,sort_on), ! getattr(y,sort_on))) if reverse: values.reverse() --- 214,219 ---- values=SkinnedFolder.contentValues(self, spec=spec, filter=filter) if sort_on is not None: ! values.sort(lambda x, y, sort_on=sort_on: safe_cmp(getattr(x,sort_on), ! getattr(y,sort_on))) if reverse: values.reverse() |