eggification
[MosaicDocument.git] / Products / MosaicDocument / MosaicDocument.py
diff --git a/Products/MosaicDocument/MosaicDocument.py b/Products/MosaicDocument/MosaicDocument.py
new file mode 100755 (executable)
index 0000000..4bac153
--- /dev/null
@@ -0,0 +1,133 @@
+# -*- coding: utf-8 -*-
+# (c) 2003 Centre de Recherche en Informatique ENSMP Fontainebleau <http://cri.ensmp.fr>
+# (c) 2003 BenoĆ®t PIN <mailto:pin@cri.ensmp.fr>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+#
+
+
+
+from AccessControl import ClassSecurityInfo
+from Globals import InitializeClass
+from Products.CMFCore.permissions import View, ModifyPortalContent, AccessContentsInformation
+from Products.CMFCore.PortalContent import PortalContent
+from Products.CMFDefault.DublinCore import DefaultDublinCoreImpl
+from Products.CMFCore.utils import getToolByName
+
+from MosaicBlock import MosaicBlock
+
+factory_type_information = (
+    {'id': 'Mosaic Document',
+     'title': '_mosaic_document_',
+     'content_icon': 'mosaic_icon.png',
+     'product': 'MosaicDocument',
+     'factory': 'addMosaicDocument',
+     'meta_type': 'Mosaic Document',
+     'immediate_view': 'mosaicdocument_edit_form',
+     'allow_discussion': 0,
+     'filter_content_types': 0,
+     'actions': ({'id': 'view',
+                  'name': 'View',
+                  'action': 'mosaicdocument_view',
+                  'permissions': (View,)},
+                 
+                 {'id': 'edit',
+                  'name': 'Edit',
+                  'action': 'mosaicdocument_edit_form',
+                  'permissions': (ModifyPortalContent,)},
+                 
+                 {'id': 'metadata',
+                  'name': 'Metadata',
+                  'action': 'metadata_edit_form',
+                  'visible': 0,
+                  'permissions': (ModifyPortalContent, )},
+
+                 ),
+     },
+    )
+
+
+class MosaicDocument(MosaicBlock, PortalContent, DefaultDublinCoreImpl) :
+    """
+    Mosaic Document
+    """
+    meta_type = 'Mosaic Document'
+    _isRootBlock = 1
+    isPrincipiaFolderish = 0
+
+    security = ClassSecurityInfo()
+
+    def indexObject(self) :
+        if getattr(self, 'noIndex', None) : return
+        PortalContent.indexObject(self)
+        
+    unindexObject = PortalContent.unindexObject
+        
+    def reindexObject(self, idxs=[]) :
+        if getattr(self, 'noIndex', None) : return
+        PortalContent.reindexObject(self, idxs=idxs)
+    
+    setTitle =          DefaultDublinCoreImpl.setTitle
+    setDescription =    DefaultDublinCoreImpl.setDescription
+    
+    Title =             DefaultDublinCoreImpl.Title
+    Description =       DefaultDublinCoreImpl.Description
+    Type =              DefaultDublinCoreImpl.Type
+
+    
+    def __init__(self, id, rules=None, initSubObjects=None, **kw) :
+        DefaultDublinCoreImpl.__init__(self, **kw)
+        self.id = id
+        self._blockRules = rules
+        self._initSubObjects(initSubObjects)
+
+    def _initSubObjects(self, subObjects) :
+        pass
+
+    security.declareProtected(View, 'SearchableText')
+    def SearchableText(self) :
+        """
+        Sets new permissions/roles after this object changed levels
+        or after one of its levels changed of reviewers/readers.
+        """
+        return '%s %s %s' % (self.title, self.description, MosaicBlock.SearchableText(self))
+    
+
+InitializeClass(MosaicDocument)
+    
+# factory
+def addMosaicDocument(dispatcher, id, REQUEST=None, **kw) :
+    """Ajoute Mosaic Document"""
+    ob = MosaicDocument(id, **kw)
+    dispatcher.Destination()._setObject(id, ob)
+    if REQUEST :
+        REQUEST.RESPONSE.redirect(dispatcher.DestinationURL() + 'manage_main')
+
+
+
+
+from Products.CMFCore.Expression import Expression as CMFExpression
+
+class Expression(CMFExpression) :
+    def __call__(self, econtext=None) :
+        """ render the result of expression if an expression context is given
+            else the source text
+        """
+        if econtext :
+            return CMFExpression.__call__(self, econtext)
+        else :
+            return self.text
+    
+    def __len__(self) : return 0
\ No newline at end of file