+++ /dev/null
-# -*- 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 Products.CMFCore.permissions import View, ModifyPortalContent
-
-factory_type_information = ( {'id' : 'String Slot',
- 'meta_type' : 'String Slot',
- 'description' : "String Slot for Mosaic Document",
- 'icon' : 'mosaic_tool/str_icon.gif',
- 'product' : 'MosaicDocument',
- 'factory' : 'addStringSlot',
- 'immediate_view' : 'view',
- 'actions' :
- ({'id' : 'view',
- 'name' : 'View',
- 'action' : 'slot_string_view',
- 'permissions' : (View, )
- },
-
- {'id' : 'edit',
- 'name' : 'Edit',
- 'action' : 'slot_string_form',
- 'permissions' : (ModifyPortalContent, )
- },
- )
- },
-
- {'id' : 'Text Slot',
- 'meta_type' : 'Text Slot',
- 'description' : "Text Slot for Mosaic Document",
- 'icon' : 'mosaic_tool/txt_icon.gif',
- 'product' : 'MosaicDocument',
- 'factory' : 'addStringSlot',
- 'immediate_view' : 'view',
- 'actions' :
- ({'id' : 'view',
- 'name' : 'View',
- 'action' : 'slot_text_view',
- 'permissions' : (View, )
- },
-
- {'id' : 'edit',
- 'name' : 'Edit',
- 'action' : 'slot_text_form',
- 'permissions' : (ModifyPortalContent, )
- },
- )
- },
-
- {'id' : 'List Slot',
- 'meta_type' : 'List Slot',
- 'description' : "List Slot for Mosaic Document",
- 'icon' : 'mosaic_tool/str_icon.gif',
- 'product' : 'MosaicDocument',
- 'factory' : 'addStringSlot',
- 'immediate_view' : 'view',
- 'actions' :
- ({'id' : 'view',
- 'name' : 'View',
- 'action' : 'slot_list_view',
- 'permissions' : (View, )
- },
-
- {'id' : 'edit',
- 'name' : 'Edit',
- 'action' : 'slot_text_form',
- 'permissions' : (ModifyPortalContent, )
- },
- )
- },
- )
-
-from AccessControl import ClassSecurityInfo
-from Globals import InitializeClass
-from Products.CMFCore.Expression import Expression
-from Products.CMFDefault.Document import Document
-from OFS.PropertyManager import PropertyManager
-from BaseSlot import BaseSlot
-
-class StringSlot(BaseSlot, Document, PropertyManager) :
- """String Slot"""
- meta_type = 'String Slot'
- _editableFields = ('text', 'text_format', 'size', 'cols', 'rows')
- _indexableFields = ('text',)
-
- manage_options = Document.manage_options[:2] + PropertyManager.manage_options + Document.manage_options[2:]
-
- _properties = ({'id' : 'choices', 'type' : 'lines', 'mode' : 'w'},
- {'id' : 'castOperator', 'type' : 'string', 'mode' : 'w'},
- {'id' : 'size', 'type' : 'int', 'mode' : 'w'},
- {'id' : 'cols', 'type' : 'int', 'mode' : 'w'},
- {'id' : 'rows', 'type' : 'int', 'mode' : 'w'},
- {'id' : 'url_expression', 'type': 'expr', 'mode' : 'w'})
-
- security = ClassSecurityInfo()
-
-
- def __init__(self, id, text='', text_format='plain',
- choices = [], castOperator = 'string', size = 60,
- cols=50, rows=50, url_expression = None) :
-
- Document.__init__(self, id, text_format = text_format, text = text)
-
- self.choices = choices
- self.castOperator = castOperator
- self.size = size
- self.cols = cols
- self.rows = rows
- if url_expression is None :
- self.url_expression = Expression("python:None")
- else :
- self.url_expression = url_expression
-
- security.declareProtected(ModifyPortalContent, 'setFormat')
- def setFormat(self, format):
- """ Set text format and Dublin Core resource format.
- """
- value = str(format)
- if value == 'text/html' or value == 'html':
- self.text_format = 'html'
- elif value == 'text/plain':
- if self.text_format not in ('structured-text', 'plain'):
- self.text_format = 'structured-text'
- elif value == 'plain':
- self.text_format = 'plain'
- else:
- self.text_format = 'structured-text'
-
-
-InitializeClass(StringSlot)
-
-
-def addStringSlot(dispatcher, id, text='', text_format='plain',
- choices = [], castOperator = 'string', size=60,
- cols=50, rows=50, url_expression = None) :
- """
- Add a new TextSlot object.
- """
- stringSlot = StringSlot(id,
- text=text,
- text_format=text_format,
- choices=choices,
- castOperator=castOperator,
- size=size,
- cols=cols,
- rows=rows,
- url_expression=url_expression)
- parentContainer = dispatcher.Destination()
- parentContainer._setObject(id, stringSlot)