Commit 7ba08b4b authored by Rafael Monnerat's avatar Rafael Monnerat

Implemented javascript extensions and support flowplayer in adition to HTML5...

Implemented javascript extensions and support flowplayer in adition to HTML5 (Contributed by Gabriel Oliveira)

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@43327 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 4c7af909
...@@ -11,7 +11,7 @@ class AudioWidget(Widget.TextWidget): ...@@ -11,7 +11,7 @@ class AudioWidget(Widget.TextWidget):
""" """
property_names = Widget.TextWidget.property_names + \ property_names = Widget.TextWidget.property_names + \
['audio_controls', 'audio_error_message', 'audio_loop', \ ['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', audio_controls = fields.StringField('audio_controls',
title='Audio Controls', title='Audio Controls',
...@@ -47,6 +47,22 @@ class AudioWidget(Widget.TextWidget): ...@@ -47,6 +47,22 @@ class AudioWidget(Widget.TextWidget):
default='', default='',
required=0) 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): def render(self, field, key, value, REQUEST, render_prefix=None):
return self.render_view(field, value, REQUEST, render_prefix) return self.render_view(field, value, REQUEST, render_prefix)
...@@ -62,6 +78,31 @@ class AudioWidget(Widget.TextWidget): ...@@ -62,6 +78,31 @@ class AudioWidget(Widget.TextWidget):
autoplay=field.get_value('audio_autoplay'), autoplay=field.get_value('audio_autoplay'),
contents=field.get_value('audio_error_message')) 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() AudioWidgetInstance = AudioWidget()
class AudioField(ZMIField): class AudioField(ZMIField):
......
...@@ -12,7 +12,7 @@ class VideoWidget(Widget.TextWidget): ...@@ -12,7 +12,7 @@ class VideoWidget(Widget.TextWidget):
property_names = Widget.TextWidget.property_names + \ property_names = Widget.TextWidget.property_names + \
['video_controls', 'video_error_message', 'video_loop', \ ['video_controls', 'video_error_message', 'video_loop', \
'video_width', 'video_height', 'video_preload', \ 'video_width', 'video_height', 'video_preload', \
'video_autoplay'] 'video_autoplay', 'js_enabled', 'video_player']
video_controls = fields.StringField('video_controls', video_controls = fields.StringField('video_controls',
title='Video Controls', title='Video Controls',
...@@ -62,6 +62,22 @@ class VideoWidget(Widget.TextWidget): ...@@ -62,6 +62,22 @@ class VideoWidget(Widget.TextWidget):
default='', default='',
required=0) 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): def render(self, field, key, value, REQUEST, render_prefix=None):
return self.render_view(field, value, REQUEST, render_prefix) return self.render_view(field, value, REQUEST, render_prefix)
...@@ -79,6 +95,32 @@ class VideoWidget(Widget.TextWidget): ...@@ -79,6 +95,32 @@ class VideoWidget(Widget.TextWidget):
autoplay=field.get_value('video_autoplay'), autoplay=field.get_value('video_autoplay'),
contents=field.get_value('video_error_message')) 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() VideoWidgetInstance = VideoWidget()
class VideoField(ZMIField): class VideoField(ZMIField):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment