diff --git a/browser/common.py b/browser/common.py index 8639958..d8886e3 100644 --- a/browser/common.py +++ b/browser/common.py @@ -481,7 +481,7 @@ class BaseView(GenericView, I18NView): return absoluteURL(provider, self.request) return None - def renderText(self, text, contentType): + def renderText(self, text, contentType='text/restructured'): text = util.toUnicode(text) typeKey = util.renderingFactories.get(contentType, None) if typeKey is None: diff --git a/locales/de/LC_MESSAGES/loops.mo b/locales/de/LC_MESSAGES/loops.mo index b031719..ad3d320 100644 Binary files a/locales/de/LC_MESSAGES/loops.mo and b/locales/de/LC_MESSAGES/loops.mo differ diff --git a/locales/de/LC_MESSAGES/loops.po b/locales/de/LC_MESSAGES/loops.po index 3d0a6bb..1a93a8d 100644 --- a/locales/de/LC_MESSAGES/loops.po +++ b/locales/de/LC_MESSAGES/loops.po @@ -774,7 +774,7 @@ msgstr "Die Passwort-Wiederholung stimmt nicht mit dem eingegebenen Passwort üb msgid "confirmation_mail_subject" msgstr "Benutzer-Registrierung" -msgid "confirmation_mail_text." +msgid "confirmation_mail_text" msgstr "Bitte clicken Sie auf den folgenden Link, um die Anmeldung abzschließen." msgid "The user account has been created." diff --git a/organize/README.txt b/organize/README.txt index e013d9f..110efe6 100644 --- a/organize/README.txt +++ b/organize/README.txt @@ -185,7 +185,7 @@ sure that a principal object can be served by a corresponding factory): ... 'lastName': u'Sawyer', ... 'firstName': u'Tom', ... 'email': u'tommy@sawyer.com', - ... 'action': 'update',} + ... 'form.action': 'update',} and register it. diff --git a/organize/browser/member.py b/organize/browser/member.py index 502c71f..28e13f0 100644 --- a/organize/browser/member.py +++ b/organize/browser/member.py @@ -83,6 +83,7 @@ class BaseMemberRegistration(NodeView): interface = IMemberRegistration # TODO: add company, create institution message = _(u'The user account has been created.') + template = form_macros formErrors = dict( confirm_nomatch=FormError(_(u'Password and password confirmation do not match.')), @@ -95,6 +96,17 @@ class BaseMemberRegistration(NodeView): permissions_key = u'registration.permissions' roles_key = u'registration.roles' registration_adapter_key = u'registration.adapter' + text_names_prefix = 'organize.member.registration' + # texts: reg_info, reg_feedback, conf_mail, conf_info, conf_feedback + info_key = 'reg_info' + feedback_key = 'reg_feedback' + + isInnerHtml = False + showAssignments = False + form_action = 'register' + + def closeAction(self, submit=True): + return u'' @Lazy def macro(self): @@ -118,6 +130,21 @@ class BaseMemberRegistration(NodeView): def getPrincipalAnnotation(self, principal): return annotations(principal).get(ANNOTATION_KEY, None) + @Lazy + def infoText(self): + name = '.'.join((self.text_names_prefix, self.info_key)) + text = self.resourceManager.get(name) + if text: + return self.renderText(text.data) + return u'' + + @Lazy + def feedbackUrl(self): + name = '.'.join((self.text_names_prefix, self.feedback_key)) + text = self.resourceManager.get(name) + if text: + return self.getUrlForTarget(text) + class MemberRegistration(BaseMemberRegistration, CreateForm): @@ -135,7 +162,7 @@ class MemberRegistration(BaseMemberRegistration, CreateForm): def update(self): form = self.request.form - if not form.get('action'): + if not form.get('form.action'): return True instance = component.getAdapter(self.object, IInstance, name='editor') instance.template = self.schema @@ -186,13 +213,17 @@ class SecureMemberRegistration(BaseMemberRegistration, CreateForm): #schema.fields.reorder(-2, 'loginName') return schema + @Lazy + def macro(self): + return organize_macros.macros['register'] + @Lazy def object(self): return Person(Concept()) def update(self): form = self.request.form - if not form.get('action'): + if not form.get('form.action'): return True instance = component.getAdapter(self.object, IInstance, name='editor') instance.template = self.schema @@ -205,7 +236,7 @@ class SecureMemberRegistration(BaseMemberRegistration, CreateForm): regMan = IMemberRegistrationManager(self.context.getLoopsRoot()) pw = generateName() email = form.get('email') - try: + try: result = regMan.register(login, pw, form.get('lastName'), form.get('firstName'), email=email,) @@ -221,8 +252,11 @@ class SecureMemberRegistration(BaseMemberRegistration, CreateForm): pa['id'] = generateName() pa['timestamp'] = datetime.utcnow() self.notifyEmail(login, email, pa['id']) - msg = self.message - self.request.response.redirect('%s?loops.message=%s' % (self.url, msg)) + if self.feedbackUrl: + self.request.response.redirect(self.feedbackUrl) + else: + msg = self.message + self.request.response.redirect('%s?loops.message=%s' % (self.url, msg)) return False def notifyEmail(self, userid, recipient, id): @@ -230,11 +264,18 @@ class SecureMemberRegistration(BaseMemberRegistration, CreateForm): url = u'%s/selfservice_confirmation.html?login=%s&id=%s' % ( baseUrl, userid, id,) recipients = [recipient] - message = _(u'confirmation_mail_text') + u':\n\n' - message = (message + url).encode('UTF-8') + subject = _(u'confirmation_mail_subject') + name = '.'.join((self.text_names_prefix, self.feedback_key)) + text = self.resourceManager.get(name) + if text: + message = text.data % url + subject = text.description or subject + else: + message = _(u'confirmation_mail_text') + u':\n\n' + message = (message + url).encode('UTF-8') sender = 'helmutm@cy55.de' msg = MIMEText(message, 'plain', 'utf-8') - msg['Subject'] = _(u'confirmation_mail_subject') + msg['Subject'] = subject msg['From'] = sender msg['To'] = ', '.join(recipients) mailhost = component.getUtility(IMailDelivery, 'Mail') @@ -245,15 +286,11 @@ class ConfirmMemberRegistration(BaseMemberRegistration, Form): permissions_key = u'secure_registration.permissions' roles_key = u'secure_registration.roles' + info_key = 'conf_info' + feedback_key = 'conf_feedback' - template = form_macros - isInnerHtml = False - showAssignments = False form_action = 'confirm_registration' - def closeAction(self, submit=True): - return u'' - @Lazy def macro(self): return organize_macros.macros['confirm'] @@ -306,8 +343,11 @@ class ConfirmMemberRegistration(BaseMemberRegistration, Form): del pa['timestamp'] ip = getInternalPrincipal(userId) ip.setPassword(pw) - url = '%s?loops.message=%s' % (self.url, self.message) - self.request.response.redirect(url) + if self.feedbackUrl: + self.request.response.redirect(self.feedbackUrl) + else: + url = '%s?loops.message=%s' % (self.url, self.message) + self.request.response.redirect(url) return False diff --git a/organize/browser/view_macros.pt b/organize/browser/view_macros.pt index ecc21ad..bff4b91 100644 --- a/organize/browser/view_macros.pt +++ b/organize/browser/view_macros.pt @@ -1,7 +1,14 @@ + + + + + + +