[Erp5-report] r43327 rafael - in /erp5/trunk/products/ERP5Form: AudioField.py VideoField.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Feb 14 19:07:53 CET 2011


Author: rafael
Date: Mon Feb 14 19:07:52 2011
New Revision: 43327

URL: http://svn.erp5.org?rev=43327&view=rev
Log:
Implemented javascript extensions and support flowplayer in adition to HTML5 (Contributed by Gabriel Oliveira)

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=43327&r1=43326&r2=43327&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/AudioField.py [utf8] (original)
+++ erp5/trunk/products/ERP5Form/AudioField.py [utf8] Mon Feb 14 19:07:52 2011
@@ -11,7 +11,7 @@ class AudioWidget(Widget.TextWidget):
     """
     property_names = Widget.TextWidget.property_names + \
             ['audio_controls', 'audio_error_message', 'audio_loop', \
-                'audio_preload', 'audio_autoplay']
+                'audio_preload', 'audio_autoplay', 'js_enabled', 'audio_player']
 
     audio_controls = fields.StringField('audio_controls',
                            title='Audio Controls',
@@ -47,6 +47,22 @@ class AudioWidget(Widget.TextWidget):
                            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)
 
@@ -62,6 +78,31 @@ class AudioWidget(Widget.TextWidget):
                               autoplay=field.get_value('audio_autoplay'),
                               contents=field.get_value('audio_error_message'))
 
+    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 getContext(field, REQUEST):
+    """Return the context of rendering this VideoField.
+    """
+    value = REQUEST.get('here')
+    if value is None:
+        value = getForm(field).aq_parent
+    return value
+
 AudioWidgetInstance = AudioWidget()
 
 class AudioField(ZMIField):

Modified: erp5/trunk/products/ERP5Form/VideoField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/VideoField.py?rev=43327&r1=43326&r2=43327&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/VideoField.py [utf8] (original)
+++ erp5/trunk/products/ERP5Form/VideoField.py [utf8] Mon Feb 14 19:07:52 2011
@@ -12,7 +12,7 @@ class VideoWidget(Widget.TextWidget):
     property_names = Widget.TextWidget.property_names + \
             ['video_controls', 'video_error_message', 'video_loop', \
                 'video_width', 'video_height', 'video_preload', \
-                'video_autoplay']
+                'video_autoplay', 'js_enabled', 'video_player']
 
     video_controls = fields.StringField('video_controls',
                            title='Video Controls',
@@ -62,6 +62,22 @@ class VideoWidget(Widget.TextWidget):
                            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)
 
@@ -79,6 +95,32 @@ class VideoWidget(Widget.TextWidget):
                               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 []
+
+def getContext(field, REQUEST):
+    """Return the context of rendering this VideoField.
+    """
+    value = REQUEST.get('here')
+    if value is None:
+        value = getForm(field).aq_parent
+    return value
+
 VideoWidgetInstance = VideoWidget()
 
 class VideoField(ZMIField):



More information about the Erp5-report mailing list