def load(self, pfg):
     data = self.getContent()
     if IAdding.providedBy(pfg):
         return data
     data['title'] = safe_unicode(pfg.Title())
     data['description'] = safe_unicode(pfg.Description())
     data['intro'] = safe_unicode(pfg.getRawFormPrologue())
    def load(self, pfg):
        data = self.getContent()
        if IAdding.providedBy(pfg):
            return data

        data['save_lead'] = False
        sfa = getattr(pfg, SF_LEAD_ID, None)
        if sfa is not None:
            data['save_lead'] = True
            data['lead_source'] = 'Web'
            if sfa.getSFObjectType() in [u'Contact', u'Lead']:
                data['sfobj_type'] = sfa.getSFObjectType()
            preset_map = sfa.getPresetValueMap()
            for entry in preset_map:
                if entry['sf_field'] == 'LeadSource':
                    data['lead_source'] = entry['value']
        campaign_id_field = getattr(pfg, CAMPAIGN_ID_FIELD_ID, None)
        data['campaign_id'] = ''
        if campaign_id_field is not None:
            data['campaign_id'] = safe_unicode(campaign_id_field.getFgDefault())
        data['campaign_status'] = ''
        a = getattr(pfg, SF_CAMPAIGNMEMBER_ID, None)
        if a is not None:
            preset_map = a.getPresetValueMap()
            for entry in preset_map:
                if entry['sf_field'] == 'Status':
                    data['campaign_status'] = entry['value']
 def load(self, pfg):
     data = self.getContent()
     if IAdding.providedBy(pfg):
         return data
     data['template'] = IAnnotations(pfg).get(ANNOTATION_KEY, {}).get('template', '')
     mailer = getattr(pfg, RECIPIENT_MAILER_ID, None)
     if mailer is not None:
         data['subject'] = safe_unicode(mailer.getMsg_subject())
    def load(self, pfg):
        data = self.getContent()
        if IAdding.providedBy(pfg):
            return data
        data['recipients'] = IAnnotations(pfg).get(ANNOTATION_KEY, {}).get('recipients', {})

        mailer = getattr(pfg, RECIPIENT_MAILER_ID, None)
        data['send_email'] = False
        if mailer is not None:
            data['send_email'] = (mailer.getRawExecCondition() != 'python:False')
Ejemplo n.º 5
0
    def load(self, pfg):
        data = self.getContent()
        if IAdding.providedBy(pfg):
            return data

        fields = data.setdefault('fields', {})
        i = 0
        for f in pfg.objectValues():
            if IPloneFormGenField.providedBy(f):
                if f.getServerSide():
                    continue
                fieldinfo = {
                    'field_type': None,
                    'title': safe_unicode(f.Title()),
                    'description': safe_unicode(f.Description()),
                    'required': f.getRequired(),
                    'order': i,
                }
                if hasattr(f, 'getFgDefault'):
                    fieldinfo['default'] = safe_unicode(f.getFgDefault())
                if f.portal_type == 'FormStringField':
                    fieldinfo['field_type'] = 'string'
                    fieldinfo['validator'] = f.getFgStringValidator()
                    if not fieldinfo['validator']:
                        fieldinfo['validator'] = 'vocabulary_none_text'
                    try:
                        fieldinfo['size'] = int(f.getFgsize())
                    except TypeError:
                        fieldinfo['size'] = 30
                if f.portal_type == 'FormTextField':
                    fieldinfo['field_type'] = 'text'
                if f.portal_type == 'FormBooleanField':
                    fieldinfo['field_type'] = 'boolean'
                    # make sure we match one of the vocab terms
                    if fieldinfo['default'] is not True:
                        fieldinfo['default'] = False
                if f.portal_type == 'FormSelectionField':
                    fieldinfo['field_type'] = 'selection'
                    fieldinfo['vocab'] = safe_unicode("\n".join(f.getFgVocabulary()))
                if f.portal_type == 'FormMultiSelectionField':
                    fieldinfo['field_type'] = 'multiselection'
                    fieldinfo['vocab'] = safe_unicode("\n".join(f.getFgVocabulary()))
                if f.portal_type == 'FormCaptchaField':
                    fieldinfo['field_type'] = 'captcha'
                fields[f.getId()] = fieldinfo
                i += 1
    def load(self, pfg):
        data = self.getContent()
        if IAdding.providedBy(pfg):
            return data
        data['email'] = False
        mailer = getattr(pfg, THANK_YOU_EMAIL_ID, None)
        if mailer is not None:
            data['email'] = (mailer.getId() in pfg.getActionAdapter())
            data['subject'] = safe_unicode(mailer.getMsg_subject())
            from_addr = safe_unicode(mailer.getRawSenderOverride())
            if from_addr.startswith(u'string:'):
                data['from_addr'] = from_addr[7:]
        data['template'] = IAnnotations(pfg).get(ANNOTATION_KEY, {}).get('thankyou_template', '')

        thankyou = getattr(pfg, 'thank-you', None)
        if thankyou is not None:
            data['thankyou_text'] = safe_unicode(thankyou.getRawThanksPrologue())
        else:
            data['thankyou_text'] = u''
        thanksOverride = pfg.getThanksPageOverride()
        if thanksOverride.startswith('redirect_to:string:'):
            data['thankyou_url'] = thanksOverride[19:]
        else:
            data['thankyou_url'] = ''
 def load(self, pfg):
     data = self.getContent()
     if IAdding.providedBy(pfg):
         return data
     data.update(IAnnotations(pfg).get(ANNOTATION_KEY, {}).get('signers', {}))
Ejemplo n.º 8
0
 def load(self, pfg):
     data = self.getContent()
     if IAdding.providedBy(pfg):
         return data
     data['megaphone_type'] = IAnnotations(pfg).get(ANNOTATION_KEY, {}).get('megaphone_type', 'letter')
Ejemplo n.º 9
0
    def finish(self):
        data = self.session
        if IAdding.providedBy(self.context):
            # creating a new letter
            container = self.context.context
            id = container.generateUniqueId("form-folder")
            
            # this is based on the createObject.py script from plone_scripts
            container.invokeFactory(id=id, type_name='FormFolder')
            obj=getattr(container, id, None)
            
            obj.portal_type = 'Megaphone Action'
            obj.setTitle(data['general']['title'])

            # enable preview if the type is letter
            if data.get('intro', {}).get('megaphone_type', 'letter') == 'letter':
                submit_label = _(u'Preview')
            else:
                submit_label = _(u'Send')
            obj.setSubmitLabel(utranslate(DOMAIN, submit_label, context=self.request))
            
            # delete the default form fields that come w/ PFG
            existing_ids = obj.objectIds()
            deleters = ("mailer", "replyto", "topic", "comments")
            deleters = [d for d in deleters if d in existing_ids]
            obj.manage_delObjects(deleters)
            obj.setActionAdapter(())
            if obj._at_rename_after_creation:
                obj._renameAfterCreation()
            alsoProvides(obj, IMegaphone)
            
            if not obj.getRawAfterValidationOverride():
                obj.setAfterValidationOverride('here/@@recipient_multiplexer')
            
            obj['thank-you'].setShowAll(0)
            
            self.request.response.redirect("%s/@@summary?new=1" % (obj.absolute_url()))
            self.applySteps(obj, initial_finish=True)

        else:
            # existing letter
            obj = self.context
            self.request.response.redirect("%s/@@summary" % (obj.absolute_url()))
            self.applySteps(obj, initial_finish=False)

        # make sure the saved data adapter is configured properly
        existing_ids = obj.objectIds()
        if SAVEDATA_ID not in existing_ids:
            obj.invokeFactory(id=SAVEDATA_ID, type_name="FormSaveDataAdapter")
            sda = getattr(obj, SAVEDATA_ID)
            alsoProvides(sda, IMultiplexedActionAdapter)
            sda.setTitle(utranslate(DOMAIN, _(u'Saved Signatures'), context=self.request))
        sda = getattr(obj, SAVEDATA_ID)
        adapters = list(obj.actionAdapter)
        if SAVEDATA_ID in adapters:
            adapters.remove(SAVEDATA_ID)
            obj.setActionAdapter(adapters)
        execCondition = sda.getRawExecCondition()
        if not execCondition or execCondition in ('python:True', 'python:False'):
            sda.setExecCondition('python:True')

        if RENDERED_LETTER_ID not in existing_ids:
            obj.invokeFactory(id=RENDERED_LETTER_ID, type_name='FormStringField')
            f = getattr(obj, RENDERED_LETTER_ID)
            f.setServerSide(True)
            f.setTitle(utranslate(DOMAIN, _(u'Rendered Letter'), context=self.request))
            f.setDescription(utranslate(DOMAIN, _(u'This hidden field is used to provide the rendered letter to the mailer and save data adapters.'), context=self.request))

        obj.reindexObject()
        
        if IAdding.providedBy(self.context):
            notify(ObjectInitializedEvent(obj))
        else:
            notify(ObjectEditedEvent(obj))