Example #1
0
def slider_effect_choices(context):
    return SimpleVocabulary([
        SimpleTerm(title=_(u"Horizontal"), value='scrollHorz'),
        SimpleTerm(title=_(u"Vertical"), value='scrollVert'),
        SimpleTerm(title=_(u"Tile slide"), value='tileSlide'),
        SimpleTerm(title=_(u"Tile blind"), value='tileBlind')
    ])
Example #2
0
def slider_navigation_type_choices(context):
    return SimpleVocabulary([
        SimpleTerm(title=_(u"Arrows"), value='arrows'),
        SimpleTerm(title=_(u"Bullets"), value='bullets'),
        SimpleTerm(title=_(u"Both"), value='both'),
        SimpleTerm(title=_(u"None"), value='none'),
    ])
Example #3
0
class ISlide(Interface):

    configuration = schema.Choice(
        source="slide_configuration_choices",
        title=_(u"Layout"),
        description=_(u"Choose a layout for this slide."),
        required=False)

    heading = schema.TextLine(
        title=_(u"Heading"),
        required=False,
    )

    image = schema.Bytes(title=_(u"Image"), required=False)

    slide = schema.Text(title=_(u"Text"), required=False)

    link_reference = schema.Choice(
        title=_(u"Link to content"),
        description=_(u"Choose a content item to link this slide to."),
        source=SearchableTextSourceBinder({}, default_query='path:'),
        required=False,
    )

    url = schema.URI(
        title=_(u'External link'),
        description=_(
            u'Please enter a full URL. Has precedence before the above field.'
        ),
        required=False,
    )

    index = schema.Int(title=u'', required=False)
Example #4
0
class IPageSliderSettings(Interface):
    """
    difference here is the user creates all his slides
    """

    show = schema.Bool(title=_(u"Show the slider"),
                       description=_(u"Uncheck to hide the slider."),
                       default=True,
                       required=True)

    sliderposition = schema.Choice(title=_(u"Slider position"),
                                   default="portal_top",
                                   vocabulary=SimpleVocabulary([
                                       SimpleTerm(title=_(u"Portal top"),
                                                  value='portal_top'),
                                       SimpleTerm(title=_(u"Above content"),
                                                  value='above_content'),
                                       SimpleTerm(title=_(u"Below title"),
                                                  value='below_content_title'),
                                       SimpleTerm(title=_(u"Below content"),
                                                  value='below_content'),
                                   ]),
                                   required=True)

    slides = schema.List(
        title=_(u"Slides"),
        description=_(u"Reorder the slides with drag & drop."),
        default=[])
Example #5
0
    def handle_save_action(self, action, data):
        if form.applyChanges(self.context, self.form_fields, data,
                             self.adapters):
            zope.event.notify(
                zope.lifecycleevent.ObjectModifiedEvent(self.context))
            zope.event.notify(ploneformbase.EditSavedEvent(self.context))
            IStatusMessage(self.request).addStatusMessage(_("Changes saved."),
                                                          type="info")
        else:
            zope.event.notify(ploneformbase.EditCancelledEvent(self.context))
            IStatusMessage(self.request).addStatusMessage(
                _("No changes made."), type="info")

        self.settings = PageSliderSettings(self.context)
        slides = self.settings.slides
        index = data.get('index', -1)

        image = data.get('image')
        image_type = None
        if image != None:
            scale_width = getUtility(IRegistry)[
                'tx.slider.configlet.ISliderControlPanel.image_scale_width']
            (image, image_type, image_size) = scaleImage(image,
                                                         width=scale_width)
        else:
            if index != -1:
                image = slides[index].get('image')
                image_type = slides[index].get('image_type')

        # create new uuid on each save
        uuid = uuid4().hex

        value = {
            'configuration': data.get('configuration'),
            'heading': data.get('heading'),
            'html': data.get('slide'),
            'image': image,
            'image_type': image_type,
            'link_reference': data.get('link_reference'),
            'url': data.get('url'),
            'uuid': uuid
        }

        if index == -1:
            slides.append(value)
            index = len(slides) - 1
        else:
            slides[index] = value

        self.settings.slides = slides

        url = getMultiAdapter((self.context, self.request),
                              name='absolute_url')() + "/@@tx-slider-settings"
        self.request.response.redirect(url)
Example #6
0
    def handle_cancel_action(self, action, data):
        IStatusMessage(self.request).addStatusMessage(_("Changes canceled."),
                                                      type="info")

        url = getMultiAdapter((self.context, self.request),
                              name='absolute_url')() + "/@@tx-slider-settings"
        self.request.response.redirect(url)
        return ''
Example #7
0
class SliderPageSettingsForm(FieldsetsEditForm):
    """
    The page that holds all the slider settings
    """
    settings = FormFieldsets(ISliderSettings)
    settings.id = 'settings'
    settings.label = _(u'Settings')

    slides = FormFieldsets(IPageSliderSettings)
    slides.id = 'slides'
    slides.label = _(u'Slides')

    form_fields = FormFieldsets(slides, settings)

    #our revised SlidesWidget that only displays slides really
    form_fields['slides'].custom_widget = SlidesWidget
    label = _(u"Slider Settings")
    description = _(u'Configure this slider.')
Example #8
0
class ISliderSettings(Interface):
    """
    The actual slider settings
    """

    configuration = schema.Choice(
        source="slider_configuration_choices",
        title=_(u"Slider layout"),
        description=_(u"Choose a layout for all sliders."),
        required=False)

    only_here = schema.Bool(
        title=_(u'Show only on this page'),
        description=_(u"If unchecked slider will be shown on subpages"),
        default=True,
        required=True)

    effect = schema.Choice(
        source="slider_effect_choices",
        title=_(u"Effect"),
        description=_(u"Leave on 'nothing selected' for default effect."),
        required=False)

    speed = schema.Int(
        title=_(u"Speed"),
        description=
        _(u"Speed at which the slides will transition (in milliseconds). '0' for Default."
          ),
        default=0,
        required=False)

    pause = schema.Int(
        title=_(u"Pause"),
        description=
        _(u"Duration of the pause between transitions (in milliseconds). '0' for Default."
          ),
        default=0,
        required=False)

    continuous = schema.Bool(title=_(u"Continuous"),
                             description=_(u"Loop the slider continuously."),
                             default=True)

    navigation_type = schema.Choice(
        source="slider_navigation_type_choices",
        title=_(u"Type of navigation"),
        description=_(
            u"Leave on 'nothing selected' for default navigation type."),
        required=False)

    randomize = schema.Bool(title=_(u"Randomize the slides"),
                            default=False,
                            required=False)
Example #9
0
class AddSlideForm(formbase.EditFormBase):
    """
    The add/edit form for a slide
    """
    form_fields = form.FormFields(ISlide)
    form_fields['index'].custom_widget = HiddenWidget
    #form_fields['image'].custom_widget = ImageWidget
    form_fields['slide'].custom_widget = WYSIWYGWidget
    form_fields['link_reference'].custom_widget = UberSelectionWidget

    label = _(u"Edit slide")
    #description = _(u'description_add_slide_form', default=u"")
    form_name = _(u"Add/Update Slide")

    @form.action(_(u"Save"), condition=form.haveInputWidgets, name=u'save')
    def handle_save_action(self, action, data):
        if form.applyChanges(self.context, self.form_fields, data,
                             self.adapters):
            zope.event.notify(
                zope.lifecycleevent.ObjectModifiedEvent(self.context))
            zope.event.notify(ploneformbase.EditSavedEvent(self.context))
            IStatusMessage(self.request).addStatusMessage(_("Changes saved."),
                                                          type="info")
        else:
            zope.event.notify(ploneformbase.EditCancelledEvent(self.context))
            IStatusMessage(self.request).addStatusMessage(
                _("No changes made."), type="info")

        self.settings = PageSliderSettings(self.context)
        slides = self.settings.slides
        index = data.get('index', -1)

        image = data.get('image')
        image_type = None
        if image != None:
            scale_width = getUtility(IRegistry)[
                'tx.slider.configlet.ISliderControlPanel.image_scale_width']
            (image, image_type, image_size) = scaleImage(image,
                                                         width=scale_width)
        else:
            if index != -1:
                image = slides[index].get('image')
                image_type = slides[index].get('image_type')

        # create new uuid on each save
        uuid = uuid4().hex

        value = {
            'configuration': data.get('configuration'),
            'heading': data.get('heading'),
            'html': data.get('slide'),
            'image': image,
            'image_type': image_type,
            'link_reference': data.get('link_reference'),
            'url': data.get('url'),
            'uuid': uuid
        }

        if index == -1:
            slides.append(value)
            index = len(slides) - 1
        else:
            slides[index] = value

        self.settings.slides = slides

        url = getMultiAdapter((self.context, self.request),
                              name='absolute_url')() + "/@@tx-slider-settings"
        self.request.response.redirect(url)

    @form.action(_(u'Cancel'), validator=null_validator, name=u'cancel')
    def handle_cancel_action(self, action, data):
        IStatusMessage(self.request).addStatusMessage(_("Changes canceled."),
                                                      type="info")

        url = getMultiAdapter((self.context, self.request),
                              name='absolute_url')() + "/@@tx-slider-settings"
        self.request.response.redirect(url)
        return ''
Example #10
0
class ISliderControlPanel(Interface):
    """
    The actual slider settings
    """

    configuration = schema.List(
        title=_(u'Configuration'),
        description=
        _(u"Enter one configuration per line. Format: 'Name|css-class-name'. First entry is default."
          ),
        value_type=schema.TextLine(),
        required=True)

    slide_configuration = schema.List(
        title=_(u'Slide configuration'),
        description=
        _(u"Additional configuration for individual slides. Format: 'Name|css-class-name'."
          ),
        value_type=schema.TextLine(),
        required=False)

    effect = schema.Choice(
        source="slider_effect_choices",
        title=_(u"Effect"),
        description=_(u"Please choose the default effect type."),
        default="scrollHorz",
        required=True)

    speed = schema.Int(
        title=_(u"Speed"),
        description=_(
            u"Speed at which the slides will transition (in milliseconds)."),
        default=800,
        required=True)

    pause = schema.Int(
        title=_(u"Pause"),
        description=_(
            u"Duration of the pause between transitions (in milliseconds)."),
        default=4000,
        required=True)

    navigation_type = schema.Choice(
        source="slider_navigation_type_choices",
        title=_(u"Type of navigation"),
        description=_(u"Please choose the default navigation type."),
        default="arrows",
        required=True)

    image_scale_width = schema.Int(
        title=_(u"Image scale width"),
        description=_(
            u"All uploaded images will be scaled down to this value."),
        default=1200,
        required=True)
Example #11
0
class ControlPanelForm(RegistryEditForm):

    form.extends(RegistryEditForm)
    schema = ISliderControlPanel
    label = _(u"Slider default settings")
    description = _(u'Default settings to use for all sliders.')