From c842e5e6424e39757c43950456c66e7bb14c32c8 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Benoi=CC=82t=20Pin?= <pin@cri.ensmp.fr>
Date: Thu, 16 Apr 2015 12:58:21 +0200
Subject: [PATCH] Modernisation de l'inscription (suite).

---
 .../Plinn/skins/custom_generic/join_form.py   | 35 ++++++++++++++-----
 .../skins/custom_generic/join_template.pt     |  6 ++--
 2 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/Products/Plinn/skins/custom_generic/join_form.py b/Products/Plinn/skins/custom_generic/join_form.py
index 579a38f..0e07d03 100644
--- a/Products/Plinn/skins/custom_generic/join_form.py
+++ b/Products/Plinn/skins/custom_generic/join_form.py
@@ -1,4 +1,4 @@
-##parameters=b_start=0, member_id='', given_name='', name='', member_email='', password='', confirm='', send_password='', add='', ajax=''
+##parameters=member_id='', given_name='', name='', member_email='', email_as_login='', password='', confirm='', add='', ajax=''
 ##
 from Products.CMFCore.utils import getToolByName
 from Products.CMFDefault.permissions import ManageUsers
@@ -20,11 +20,31 @@ is_usermanager = mtool.checkPermission(ManageUsers, mtool)
 
 
 form = context.REQUEST.form
-if add and \
-		context.validatePassword(**form) and \
-		context.members_add_control(**form) and \
-		context.setRedirect(atool, 'user/join', b_start=b_start, ajax=ajax):
-	return
+
+if add :
+    if validate_email :
+        password = confirm = rtool.generatePassword()
+    else :
+        ok = context.validatePassword(**form)
+    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})
+        context.setStatus(True, _('Success!'))
+    except ValueError, errmsg:
+    	context.setStatus(False, errmsg)
+    
+        
+
+# if add and \
+#         context.validatePassword(**form) and \
+#         context.members_add_control(**form) and \
+#         context.setRedirect(atool, 'user/join', b_start=b_start, ajax=ajax):
+#     return
 
 options = {}
 
@@ -37,12 +57,9 @@ options['given_name'] = given_name
 options['name'] = name
 options['member_email'] = member_email
 options['password'] = is_newmember and context.REQUEST.get('password', '') or ''
-options['send_password'] = send_password
 options['portal_url'] = portal_url
 options['isAnon'] = is_anon
-options['isAnonOrUserManager'] = is_anon or is_usermanager
 options['isNewMember'] = is_newmember
-options['isOrdinaryMember'] = not (is_anon or is_newmember or is_usermanager)
 options['validate_email'] = validate_email
 options['isAnonRegistration'] = rtool.getMode() == MODE_ANONYMOUS
 options['isReviewedRegistration'] = rtool.getMode() == MODE_REVIEWED
diff --git a/Products/Plinn/skins/custom_generic/join_template.pt b/Products/Plinn/skins/custom_generic/join_template.pt
index aa53178..337aa94 100644
--- a/Products/Plinn/skins/custom_generic/join_template.pt
+++ b/Products/Plinn/skins/custom_generic/join_template.pt
@@ -11,7 +11,7 @@
                 tal:define="form options/form">
       <h1 i18n:translate="">Become a member</h1>
       <div class="Desktop">
-        <p tal:condition="options/isOrdinaryMember" i18n:translate="">
+        <p tal:condition="not:options/isAnon" i18n:translate="">
             You are already authenticated. You may use the
             <a tal:attributes="href string:$portal_url/personalize_form"
                i18n:name="personalize_form"
@@ -53,7 +53,7 @@
           </p>
         </div>
         
-        <div tal:condition="options/isAnonOrUserManager">
+        <div tal:condition="options/isAnon">
           <form method="post" tal:attributes="action form/action">
             <table>
               <tr>
@@ -74,7 +74,7 @@
                          placeholder="Email address" i18n:attributes="placeholder"
                          tal:attributes="value options/member_email|nothing"/>
                   <label>
-                    <input type="checkbox" name="email_as_login"
+                    <input type="checkbox" name="email_as_login" value="email_as_login"
                            tal:attributes="checked python:options.get('email_as_login', True)"/>
                     <span tal:omit-tag="" i18n:translate="">use as login</span>
                   </label>
-- 
2.20.1