from Products.Formulator.Field import ZMIField from Products.Formulator import Widget, Validator from Products.Formulator.DummyField import fields from Products.Formulator import Validator 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'] 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) 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, 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')) VideoWidgetInstance = VideoWidget() class VideoField(ZMIField): """ Video field """ meta_type = "VideoField" widget = VideoWidgetInstance validator = Validator.SuppressValidatorInstance