[FIX] auth_openid: add data-modes attribute on <li> tags to be compatible with auth_s...
authorChristophe Simonis <chs@openerp.com>
Thu, 14 Mar 2013 11:09:27 +0000 (12:09 +0100)
committerChristophe Simonis <chs@openerp.com>
Thu, 14 Mar 2013 11:09:27 +0000 (12:09 +0100)
show()/hide() elements explicitly instead of setting a specific class for this job.

bzr revid: chs@openerp.com-20130314110927-rvb21ii1lbfpmmna

addons/auth_openid/static/src/css/openid.css
addons/auth_openid/static/src/js/auth_openid.js
addons/auth_openid/static/src/xml/auth_openid.xml

index ab01ffd..dc3ffcf 100644 (file)
@@ -8,11 +8,6 @@
     padding-left: 20px;
 }
 
-.auth_choice {
-    position: static;
-    display: none;
-}
-
 .openid_providers {
     padding: 0;
     list-style: none;
@@ -50,7 +45,3 @@
 .openid_providers a[title="Yahoo!"]      { background-image: url(../img/yahoo.png); }
 .openid_providers a[title="Launchpad"]   { background-image: url(../img/launchpad.png); }
 
-
-li.auth_choice.selected {
-    display: table-row;
-}
index f861548..c8e2c71 100644 (file)
@@ -14,6 +14,16 @@ instance.web.Login = instance.web.Login.extend({
             self.$openid_selected_input = $();
             self.$openid_selected_provider = null;
     
+
+            // Hook auth_signup events. noop if module is not installed.
+            self.on('change:login_mode', self, function() {
+                var mode = self.get('login_mode') || 'default';
+                if (mode !== 'default') {
+                    return;
+                }
+                self.do_openid_select(self.$openid_selected_button, self.$openid_selected_provider, true);
+            });
+
     
             var openIdProvider = null;
             if (self.has_local_storage && self.remember_credentials) {
@@ -21,12 +31,10 @@ instance.web.Login = instance.web.Login.extend({
             }
     
             if (openIdProvider) {
-                $openid_selected_provider = openIdProvider;
+                self.$openid_selected_provider = openIdProvider;
                 self.do_openid_select('a[href="#' + openIdProvider + '"]', openIdProvider, true);
     
-                if (self.has_local_storage && self.remember_credentials) {
-                    self.$openid_selected_input.find('input').val(localStorage.getItem('openid-login'));
-                }
+                self.$openid_selected_input.find('input').val(localStorage.getItem('openid-login') || '');
             }
             else {
                 self.do_openid_select('a[data-url=""]', 'login,password', true);
@@ -49,11 +57,12 @@ instance.web.Login = instance.web.Login.extend({
     do_openid_select: function (button, provider, noautosubmit) {
         var self = this;
 
+            self.$('li[data-provider]').hide();
             self.$openid_selected_button.add(self.$openid_selected_input).removeClass('selected');
             self.$openid_selected_button = self.$el.find(button).addClass('selected');
 
             var input = _(provider.split(',')).map(function(p) { return 'li[data-provider="'+p+'"]'; }).join(',');
-            self.$openid_selected_input = self.$el.find(input).addClass('selected');
+            self.$openid_selected_input = self.$el.find(input).show().addClass('selected');
 
             self.$openid_selected_input.find('input:first').focus();
             self.$openid_selected_provider = (self.$openid_selected_button.attr('href') || '').substr(1);
@@ -62,7 +71,7 @@ instance.web.Login = instance.web.Login.extend({
                 localStorage.setItem('openid-provider', self.$openid_selected_provider);
             }
 
-            if (!noautosubmit && self.$openid_selected_input.length == 0) {
+            if (!noautosubmit && self.$openid_selected_input.length === 0) {
                 self.$el.find('form').submit();
             }
 
index 6a40439..9802b8a 100644 (file)
@@ -4,7 +4,7 @@
 
     <t t-extend="Login">
         <t t-jquery=".oe_login .oe_login_logo" t-operation="after">
-            <ul class="openid_providers oe_semantic_html_override">
+            <ul class="openid_providers oe_semantic_html_override" data-modes="default openid">
                 <li><a href="#login,password" title="Password" data-url="" id="btn_password">Password</a></li>
                 <li><a href="#google" title="Google" data-url="https://www.google.com/accounts/o8/id">Google</a></li>
                 <li><a href="#googleapps" title="Google Apps" data-url="https://www.google.com/accounts/o8/site-xrds?hd={id}">Google</a></li>
         </t>
     </t>
     <t t-extend="Login">
-        <t t-jquery=".oe_login .oe_login_pane form ul li:nth-child(4)" t-operation="after">
-            <li>
+        <t t-jquery=".oe_login .oe_login_pane form ul li:last-child()" t-operation="before">
+            <li data-modes="openid" data-provider='googleapps'>
                 Google Apps Domain
             </li>
-            <li>
+            <li data-modes="openid" data-provider='googleapps'>
                 <input type="text" name="googleapps" />
             </li>
-            <li>
+            <li data-modes="openid" data-provider='launchpad'>
                 Username
             </li>
-            <li>
+            <li data-modes="openid" data-provider='launchpad'>
                 <input type="text" name="launchpad" />
             </li>
-            <li>
+            <li data-modes="openid" data-provider='openid_url'>
                 OpenID URL
             </li>
-            <li>
+            <li data-modes="openid" data-provider='openid_url'>
                 <input type="text" name="openid_url" />
             </li>
         </t>
     </t>
 
     <t t-extend="Login">
-        <t t-jquery=".oe_login .oe_login_pane form ul li:has(input)">
+        <t t-jquery=".oe_login .oe_login_pane form ul li:has(input[name=password])">
+            this.each(function() {
+                var $i = $(this);
+                $i.add($i.prev()).attr('data-provider', 'password');
+            });
+        </t>
+        <t t-jquery=".oe_login .oe_login_pane form ul li:has(input[name=login])">
             this.each(function() {
                 var $i = $(this),
-                    dp = $i.find('input').attr('name');
-                $i.add($i.prev()).attr('class', 'auth_choice').attr('data-provider', dp);
+                    dp = $i.find('input').attr('name'),
+                    $p = $i.prev();
+                // $p may not be the correct label when auth_signup is installed.
+                while(($p.attr('data-modes') || 'default') !== 'default') { $p = $p.prev(); }
+                $i.add($p).attr('data-provider', dp);
             });
         </t>
     </t>