+++ /dev/null
-# -*- coding: utf-8 -*-
-############################################################
-# Copyright © 2005-2008 Benoît PIN <benoit.pin@ensmp.fr> #
-# Plinn - http://plinn.org #
-# #
-# This program is free software; you can redistribute it #
-# and/or modify it under the terms of the Creative Commons #
-# "Attribution-Noncommercial 2.0 Generic" #
-# http://creativecommons.org/licenses/by-nc/2.0/ #
-############################################################
-""" Lightboxes contains references to images.
- References are made with CMFUid stuff.
-"""
-
-from Globals import InitializeClass
-from AccessControl import ClassSecurityInfo
-from Products.CMFCore.permissions import View, ModifyPortalContent
-from Products.CMFCore.PortalContent import PortalContent
-from Products.CMFDefault.DublinCore import DefaultDublinCoreImpl
-from zope.component.factory import Factory
-
-class Lightbox( PortalContent, DefaultDublinCoreImpl):
- "lightbox holds references to photos"
-
- security = ClassSecurityInfo()
-
- def __init__( self, id, title='', uids=[], description=''):
- DefaultDublinCoreImpl.__init__(self)
- self.id=id
- self.uids = tuple(uids)
- self._editMetadata(title=title, description=description)
-
- security.declareProtected(View, 'getUidList')
- def getUidList(self):
- return list(self.uids)
-
- security.declareProtected(ModifyPortalContent, 'append')
- def append(self, uid):
- if uid not in self.uids :
- self.uids = self.uids + (uid,)
- self.notifyModified()
- self.reindexObject(idxs=['modified'])
- return True
- else :
- return False
-
- security.declareProtected(ModifyPortalContent, 'extend')
- def extend(self, uids):
- already = 0
- new = []
- for uid in uids :
- if uid not in self.uids :
- new.append(uid)
- else :
- already = already + 1
- self.uids = self.uids + tuple(new)
- if len(already < uids) :
- self.notifyModified()
- self.reindexObject(idxs=['modified'])
- return already
-
- security.declareProtected(ModifyPortalContent, 'pop')
- def pop(self, index=None):
- i = index
- if i is None :
- i = len(self.uids) -1
-
- self.uids = self.uids[:i] + self.uids[i+1:]
-
- self.notifyModified()
- self.reindexObject(idxs=['modified'])
-
- security.declareProtected(ModifyPortalContent, 'remove')
- def remove(self, value):
- for i, v in enumerate(self.uids) :
- if value == v :
- self.pop(i)
- break
- else :
- return
- self.notifyModified()
- self.reindexObject(idxs=['modified'])
-
-InitializeClass(Lightbox)
-
-LightboxFactory = Factory(Lightbox)
\ No newline at end of file