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)) self.status = "Changes saved" else: zope.event.notify(ploneformbase.EditCancelledEvent(self.context)) self.status = "No changes" settings = PageSliderSettings(self.context) slides = settings.slides index = data.get('index', -1) value = { 'html': data['slide'], 'overlay': data['overlay'], 'on_hover': data['on_hover'] } if index == -1: slides.append(value) index = len(slides) - 1 else: slides[index] = value settings.slides = slides url = getMultiAdapter((self.context, self.request), name='absolute_url')() + "/@@slider-settings" self.request.response.redirect(url)
def __call__(self): order = [int(i) for i in self.request.get('order[]')] settings = PageSliderSettings(self.context) # first verify same size slides = settings.slides if len(order) != len(slides): self.request.response.setStatus(status=403, reason="missing slides") newslides = [] for index in order: newslides.append(slides[index]) settings.slides = newslides return 'done'