[Erp5-report] r43330 rafael - in /erp5/trunk/products/ERP5Form: AudioField.py VideoField.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Feb 14 20:43:45 CET 2011
Author: rafael
Date: Mon Feb 14 20:43:44 2011
New Revision: 43330
URL: http://svn.erp5.org?rev=43330&view=rev
Log:
Small improvements, still experimental and requires erp5_dms_media for now.
Modified:
erp5/trunk/products/ERP5Form/AudioField.py
erp5/trunk/products/ERP5Form/VideoField.py
Modified: erp5/trunk/products/ERP5Form/AudioField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/AudioField.py?rev=43330&r1=43329&r2=43330&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/AudioField.py [utf8] (original)
+++ erp5/trunk/products/ERP5Form/AudioField.py [utf8] Mon Feb 14 20:43:44 2011
@@ -1,75 +1,78 @@
from Products.Formulator.Field import ZMIField
-from Products.Formulator import Widget, Validator
+from Products.Formulator import Widget
from Products.Formulator.DummyField import fields
from Products.Formulator import Validator
+from Products.ERP5Form.ListBox import lazyMethod
class AudioWidget(Widget.TextWidget):
- """
- A widget that displays a Audio HTML element.
- This widget is intended to be used in
- conjunction with WebSite.
- """
- property_names = Widget.TextWidget.property_names + \
- ['audio_controls', 'audio_error_message', 'audio_loop', \
- 'audio_preload', 'audio_autoplay', 'js_enabled', 'audio_player']
-
- audio_controls = fields.StringField('audio_controls',
- title='Audio Controls',
- description=("Controls to be used in Audio Player."),
- default='controls',
- required=0)
-
- audio_error_message = fields.StringField('audio_error_message',
- title='Audio Error Message',
- description=("Error message to be showed when \
- user's browser does not support the audio tag."),
- default='Your browser does not support audio tag.',
- required=0)
-
- audio_loop = fields.StringField('audio_loop',
- title='Audio Loop',
- description=("Specifies that the audio file \
- will start over again, every time it is finished."),
- default='none',
- required=0)
-
- audio_preload = fields.StringField('audio_preload',
- title='Audio Preload',
- description=("Configure that you would like to \
- start downloading the audio file as soon as possible."),
- default='preload',
- required=0)
-
- audio_autoplay = fields.StringField('audio_autoplay',
- title='Audio Autoplay',
- description=("Configure that you would like to \
- start downloading and playing the audio file as soon as possible."),
- default='',
- required=0)
-
- js_enabled = fields.CheckBoxField('js_enabled',
- title='Enable on the fly video player change (based on java script)',
- description='Define if javascript is enabled or not on the current Video',
- default=1,
- required=1)
-
- audio_player = fields.ListField('audio_player',
- title='Audio Player',
- description=(
- "The video player to be used to show video."),
- default="html5_audio",
- required=1,
- size=1,
- items=[('HTML5 Audio', 'html5_audio'),
- ('Flowplayer', 'flowplayer'),])
-
- def render(self, field, key, value, REQUEST, render_prefix=None):
- return self.render_view(field, value, REQUEST, render_prefix)
-
- def render_view(self, field, value, REQUEST=None, render_prefix=None):
- if value is None:
- return ''
- return Widget.render_element("audio",
+ """
+ A widget that displays a Audio HTML element.
+ This widget is intended to be used in
+ conjunction with WebSite.
+ """
+ property_names = Widget.TextWidget.property_names + \
+ ['audio_controls', 'audio_error_message', 'audio_loop', \
+ 'audio_preload', 'audio_autoplay', 'js_enabled', 'audio_player']
+
+ audio_controls = fields.StringField('audio_controls',
+ title='Audio Controls',
+ description=("Controls to be used in Audio Player."),
+ default='controls',
+ required=0)
+
+ audio_error_message = fields.StringField('audio_error_message',
+ title='Audio Error Message',
+ description=("Error message to be showed when \
+ user's browser does not support the audio tag."),
+ default='Your browser does not support audio tag.',
+ required=0)
+
+ audio_loop = fields.StringField('audio_loop',
+ title='Audio Loop',
+ description=("Specifies that the audio file \
+ will start over again, every time it is finished."),
+ default='none',
+ required=0)
+
+ audio_preload = fields.StringField('audio_preload',
+ title='Audio Preload',
+ description=("Configure that you would like to \
+ start downloading the audio file as soon as possible."),
+ default='preload',
+ required=0)
+
+ audio_autoplay = fields.StringField('audio_autoplay',
+ title='Audio Autoplay',
+ description=("Configure that you would like to \
+ start downloading and playing the audio file as soon as possible."),
+ default='',
+ required=0)
+
+ js_enabled = fields.CheckBoxField('js_enabled',
+ title='Enable on the fly video player change (based on java script)',
+ description='Define if javascript is enabled or not on the current Video',
+ default=1,
+ required=1)
+
+ audio_player = fields.ListField('audio_player',
+ title='Audio Player',
+ description=(
+ "The video player to be used to show video."),
+ default="html5_audio",
+ required=1,
+ size=1,
+ items=[('HTML5 Audio', 'html5_audio'),
+ ('Flowplayer', 'flowplayer'),])
+
+ def render(self, field, key, value, REQUEST, render_prefix=None):
+ return self.render_view(field, value, REQUEST, render_prefix)
+
+ def render_view(self, field, value, REQUEST=None, render_prefix=None):
+ if value is None:
+ return ''
+ audio_player = field.get_value('audio_player')
+ if audio_player == 'html5_audio':
+ return Widget.render_element("audio",
src=value,
extra=field.get_value('extra'),
controls=field.get_value('audio_controls'),
@@ -77,39 +80,60 @@ class AudioWidget(Widget.TextWidget):
preload=field.get_value('audio_preload'),
autoplay=field.get_value('audio_autoplay'),
contents=field.get_value('audio_error_message'))
+ elif audio_player == 'flowplayer':
+ a_element = Widget.render_element("a",
+ href="%s" % value,
+ style="display:block;width:%spx;height:%spx;" % \
+ (field.get_value('video_width'),
+ field.get_value('video_height'),),
+ id="player")
+
+ script_element = """<script language="JavaScript">
+ flowplayer("player", "%s/flowplayer.swf");
+ </script>""" % self.getContext(field, REQUEST).getPortalObject().portal_url()
+ return ' '.join(a_element,script_element)
+
- def get_javascript_list(self, field, REQUEST=None):
- """
- Returns list of javascript needed by the widget
- """
- if field.get_value('js_enabled'):
- audio_player = field.get_value('audio_player')
- context = getContext(field, REQUEST)
- if audio_player == 'html5_audio':
- # XXX Instead of harcoding library name
- # it should be better to call a python script, as
- # it is done on type base method.
- return ['%s/html5media.min.js' % context.portal_url()]
- elif audio_player == 'flowplayer':
- return ['%s/flowplayer.min.js' % context.portal_url()]
- else:
- return []
+ def get_javascript_list(self, field, REQUEST=None):
+ """
+ Returns list of javascript needed by the widget
+ """
+ if field.get_value('js_enabled'):
+ audio_player = field.get_value('audio_player')
+ context = self.getContext(field, REQUEST)
+ if audio_player == 'html5_audio':
+ # XXX Instead of harcoding library name
+ # it should be better to call a python script, as
+ # it is done on type base method.
+ return ['%s/html5media.min.js' % context.portal_url()]
+ elif audio_player == 'flowplayer':
+ return ['%s/flowplayer.min.js' % context.portal_url()]
+ else:
+ return []
-def getContext(field, REQUEST):
- """Return the context of rendering this VideoField.
+ def getContext(self):
+ """Return the context of rendering this Field..
"""
- value = REQUEST.get('here')
+ value = self.request.get('here')
if value is None:
- value = getForm(field).aq_parent
+ value = self.getForm().aq_parent
return value
-AudioWidgetInstance = AudioWidget()
+ getContext = lazyMethod(getContext)
-class AudioField(ZMIField):
- """ Audio field
+ def getForm(self):
+ """Return the form which contains the Field.
"""
- meta_type = "AudioField"
+ return self.field.aq_parent
+
+ getForm = lazyMethod(getForm)
- widget = AudioWidgetInstance
- validator = Validator.SuppressValidatorInstance
+AudioWidgetInstance = AudioWidget()
+
+class AudioField(ZMIField):
+ """ Audio field
+ """
+ meta_type = "AudioField"
+ widget = AudioWidgetInstance
+ validator = Validator.SuppressValidatorInstance
Modified: erp5/trunk/products/ERP5Form/VideoField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/VideoField.py?rev=43330&r1=43329&r2=43330&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/VideoField.py [utf8] (original)
+++ erp5/trunk/products/ERP5Form/VideoField.py [utf8] Mon Feb 14 20:43:44 2011
@@ -1,126 +1,149 @@
from Products.Formulator.Field import ZMIField
-from Products.Formulator import Widget, Validator
+from Products.Formulator import Widget
from Products.Formulator.DummyField import fields
from Products.Formulator import Validator
+from Products.ERP5Form.ListBox import lazyMethod
class VideoWidget(Widget.TextWidget):
+ """
+ A widget that displays a Video HTML element.
+ This widget is intended to be used in
+ conjunction with WebSite.
+ """
+ property_names = Widget.TextWidget.property_names + \
+ ['video_controls', 'video_error_message', 'video_loop', \
+ 'video_width', 'video_height', 'video_preload', \
+ 'video_autoplay', 'js_enabled', 'video_player']
+
+ video_controls = fields.StringField('video_controls',
+ title='Video Controls',
+ description=("Controls to be used in Video Player."),
+ default='controls',
+ required=0)
+
+ video_error_message = fields.StringField('video_error_message',
+ title='Video Error Message',
+ description=("Error message to be showed when \
+ user's browser does not support the video tag."),
+ default='Your browser does not support video tag.',
+ required=0)
+
+ video_loop = fields.StringField('video_loop',
+ title='Video Loop',
+ description=("Specifies that the video file \
+ will start over again, every time it is finished."),
+ default='none',
+ required=0)
+
+ video_width = fields.IntegerField('video_width',
+ title='Video Width',
+ description=(
+ "The width to be used when playing the video."),
+ default=160,
+ required=0)
+
+ video_height = fields.IntegerField('video_height',
+ title='Video Height',
+ description=(
+ "The height to be used when playing the video."),
+ default=85,
+ required=0)
+
+ video_preload = fields.StringField('video_preload',
+ title='Video Preload',
+ description=("Configure that you would like to \
+ start downloading the video file as soon as possible."),
+ default='preload',
+ required=0)
+
+ video_autoplay = fields.StringField('video_autoplay',
+ title='Video Autoplay',
+ description=("Configure that you would like to \
+ start downloading and playing the video file as soon as possible."),
+ default='',
+ required=0)
+
+ js_enabled = fields.CheckBoxField('js_enabled',
+ title='Enable on the fly video player change (based on java script)',
+ description='Define if javascript is enabled or not on the current Video',
+ default=1,
+ required=1)
+
+ video_player = fields.ListField('video_player',
+ title='Video Player',
+ description=(
+ "The video player to be used to show video."),
+ default="html5_video",
+ required=1,
+ size=1,
+ items=[('HTML5 Video', 'html5_video'),
+ ('Flowplayer', 'flowplayer'),])
+
+ def render(self, field, key, value, REQUEST, render_prefix=None):
+ return self.render_view(field, value, REQUEST, render_prefix)
+
+ def render_view(self, field, value, REQUEST=None, render_prefix=None):
+ if value is None:
+ return ''
+ video_player = field.get_value('video_player')
+ if video_player == 'html5_video':
+ return Widget.render_element("video",
+ src=value,
+ extra=field.get_value('extra'),
+ controls=field.get_value('video_controls'),
+ loop=field.get_value('video_loop'),
+ width=field.get_value('video_width'),
+ height=field.get_value('video_height'),
+ preload=field.get_value('video_preload'),
+ autoplay=field.get_value('video_autoplay'),
+ contents=field.get_value('video_error_message'))
+ elif video_player == 'flowplayer':
+ a_element = Widget.render_element("a",
+ href="%s" % value,
+ style="display:block;width:%spx;height:%spx;" % \
+ (field.get_value('video_width'),
+ field.get_value('video_height'),),
+ id="player")
+
+ script_element = """<script language="JavaScript">
+ flowplayer("player", "%s/flowplayer.swf");
+ </script>""" % self.getContext(field, REQUEST).getPortalObject().portal_url()
+ return ' '.join(a_element,script_element)
+
+ def get_javascript_list(self, field, REQUEST=None):
"""
- A widget that displays a Video HTML element.
- This widget is intended to be used in
- conjunction with WebSite.
+ Returns list of javascript needed by the widget
"""
- property_names = Widget.TextWidget.property_names + \
- ['video_controls', 'video_error_message', 'video_loop', \
- 'video_width', 'video_height', 'video_preload', \
- 'video_autoplay', 'js_enabled', 'video_player']
-
- video_controls = fields.StringField('video_controls',
- title='Video Controls',
- description=("Controls to be used in Video Player."),
- default='controls',
- required=0)
-
- video_error_message = fields.StringField('video_error_message',
- title='Video Error Message',
- description=("Error message to be showed when \
- user's browser does not support the video tag."),
- default='Your browser does not support video tag.',
- required=0)
-
- video_loop = fields.StringField('video_loop',
- title='Video Loop',
- description=("Specifies that the video file \
- will start over again, every time it is finished."),
- default='none',
- required=0)
-
- video_width = fields.IntegerField('video_width',
- title='Video Width',
- description=(
- "The width to be used when playing the video."),
- default=160,
- required=0)
-
- video_height = fields.IntegerField('video_height',
- title='Video Height',
- description=(
- "The height to be used when playing the video."),
- default=85,
- required=0)
-
- video_preload = fields.StringField('video_preload',
- title='Video Preload',
- description=("Configure that you would like to \
- start downloading the video file as soon as possible."),
- default='preload',
- required=0)
-
- video_autoplay = fields.StringField('video_autoplay',
- title='Video Autoplay',
- description=("Configure that you would like to \
- start downloading and playing the video file as soon as possible."),
- default='',
- required=0)
-
- js_enabled = fields.CheckBoxField('js_enabled',
- title='Enable on the fly video player change (based on java script)',
- description='Define if javascript is enabled or not on the current Video',
- default=1,
- required=1)
-
- video_player = fields.ListField('video_player',
- title='Video Player',
- description=(
- "The video player to be used to show video."),
- default="html5_video",
- required=1,
- size=1,
- items=[('HTML5 Video', 'html5_video'),
- ('Flowplayer', 'flowplayer'),])
-
- def render(self, field, key, value, REQUEST, render_prefix=None):
- return self.render_view(field, value, REQUEST, render_prefix)
-
- def render_view(self, field, value, REQUEST=None, render_prefix=None):
- if value is None:
- return ''
- return Widget.render_element("video",
- src=value,
- extra=field.get_value('extra'),
- controls=field.get_value('video_controls'),
- loop=field.get_value('video_loop'),
- width=field.get_value('video_width'),
- height=field.get_value('video_height'),
- preload=field.get_value('video_preload'),
- autoplay=field.get_value('video_autoplay'),
- contents=field.get_value('video_error_message'))
-
- def get_javascript_list(self, field, REQUEST=None):
- """
- Returns list of javascript needed by the widget
- """
- if field.get_value('js_enabled'):
- video_player = field.get_value('video_player')
- context = getContext(field, REQUEST)
- if video_player == 'html5_video':
- # XXX Instead of harcoding library name
- # it should be better to call a python script, as
- # it is done on type base method.
- return []
-# return ['%s/html5media.min.js' % context.portal_url()]
- elif video_player == 'flowplayer':
- return ['%s/flowplayer.min.js' % context.portal_url()]
- else:
- return []
+ if field.get_value('js_enabled'):
+ video_player = field.get_value('video_player')
+ context = self.getContext(field, REQUEST)
+ if video_player == 'html5_video':
+ # XXX Instead of harcoding library name
+ # it should be better to call a python script, as
+ # it is done on type base method.
+ return ['%s/html5media.min.js' % context.portal_url()]
+ elif video_player == 'flowplayer':
+ return ['%s/flowplayer.min.js' % context.portal_url()]
+ else:
+ return []
-def getContext(field, REQUEST):
- """Return the context of rendering this VideoField.
+ def getContext(self):
+ """Return the context of rendering this Field..
"""
- value = REQUEST.get('here')
+ value = self.request.get('here')
if value is None:
- value = getForm(field).aq_parent
+ value = self.getForm().aq_parent
return value
+ getContext = lazyMethod(getContext)
+
+ def getForm(self):
+ """Return the form which contains the Field.
+ """
+ return self.field.aq_parent
+
+ getForm = lazyMethod(getForm)
+
VideoWidgetInstance = VideoWidget()
class VideoField(ZMIField):
More information about the Erp5-report
mailing list