Prise en charge de la redirection vers « came_from » lors de la ré-initialisation...
[Plinn.git] / Products / Plinn / skins / custom_generic / join_form.py
index d65c8ef..3badc16 100644 (file)
@@ -1,4 +1,4 @@
-##parameters=member_id='', given_name='', name='', member_email='', email_as_login='', password='', confirm='', add='', ajax=''
+##parameters=member_id='', given_name='', name='', member_email='', password='', confirm='', add='', came_from='', ajax=''
 ##
 from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.permissions import ManageUsers
@@ -6,7 +6,6 @@ from Products.Plinn.RegistrationTool import MODE_ANONYMOUS, MODE_REVIEWED
 from Products.Plinn.utils import translate
 def _(message) : return translate(message, context).encode('utf-8')
 
-
 mtool = getToolByName(script, 'portal_membership')
 ptool = getToolByName(script, 'portal_properties')
 rtool = getToolByName(script, 'portal_registration')
@@ -18,8 +17,8 @@ is_anon = mtool.isAnonymousUser()
 is_newmember = False
 is_usermanager = mtool.checkPermission(ManageUsers, mtool)
 
-
 form = context.REQUEST.form
+email_as_login = bool(form.get('email_as_login', True if context.REQUEST.method == 'GET' else False))
 
 if add :
     if validate_email :
@@ -31,24 +30,27 @@ if add :
         try :
             if email_as_login :
                 member_id = member_email
-               rtool.addMember(id=member_id, password=password,
-                                               properties={'username': member_id,
-                                                                       'given_name' : given_name,
-                                                                       'name' : name,
-                                                                       'email': member_email})
+
+            rtool.addMember(id=member_id, password=password,
+                            properties={'username': member_id,
+                                        'given_name' : given_name,
+                                        'name' : name,
+                                        'email': member_email})
             if validate_email :
-                rtool.requestPasswordReset(member_id, initial=True)
+                rtool.requestPasswordReset(member_id, initial=True, came_from=came_from)
             context.setStatus(True, _('Success!'))
             is_newmember = True
             is_anon = False
         except ValueError, errmsg:
-               context.setStatus(False, errmsg)
+            raise
+            context.setStatus(False, errmsg)
     
 options = {}
 options['member_id'] = member_id
 options['given_name'] = given_name
 options['name'] = name
 options['member_email'] = member_email
+options['email_as_login'] = email_as_login
 options['password'] = is_newmember and context.REQUEST.get('password', '') or ''
 options['portal_url'] = portal_url
 options['isAnon'] = is_anon
@@ -57,15 +59,16 @@ options['isOrdinaryMember'] = not (mtool.isAnonymousUser() or is_newmember)
 options['validate_email'] = validate_email
 options['isAnonRegistration'] = rtool.getMode() == MODE_ANONYMOUS
 options['isReviewedRegistration'] = rtool.getMode() == MODE_REVIEWED
+options['came_from'] = came_from
 
 buttons = []
 if is_newmember:
-       target = atool.getActionInfo('user/logged_in')['url']
-       buttons.append( {'name': 'login', 'value': 'Log in'} )
+    target = atool.getActionInfo('user/logged_in')['url']
+    buttons.append( {'name': 'login', 'value': 'Log in'} )
 else:
-       target = atool.getActionInfo('user/join')['url']
-       buttons.append( {'name': 'add', 'value': _('Join')} )
+    target = atool.getActionInfo('user/join')['url']
+    buttons.append( {'name': 'add', 'value': _('Join')} )
 options['form'] = { 'action': target,
-                                       'listButtonInfos': tuple(buttons) }
+                    'listButtonInfos': tuple(buttons) }
 options['ajax']=ajax
 return context.join_template(**options)