diff options
-rw-r--r-- | IkiWiki/Plugin/openid.pm | 2 | ||||
-rw-r--r-- | templates/openid-selector.tmpl | 31 | ||||
-rw-r--r-- | underlays/openid-selector/ikiwiki/openid/openid-jquery.js | 39 |
3 files changed, 51 insertions, 21 deletions
diff --git a/IkiWiki/Plugin/openid.pm b/IkiWiki/Plugin/openid.pm index bfd130ace..b8ebbe228 100644 --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm @@ -89,6 +89,8 @@ sub openid_selector { (defined $openid_url ? (openid_url => $openid_url) : ()), ($real_cgi_signin ? (otherform => $real_cgi_signin->($q, $session, 1)) : ()), otherform_label => $otherform_label, + login_selector_openid => 1, + login_selector_email => 1, ); IkiWiki::printheader($session); diff --git a/templates/openid-selector.tmpl b/templates/openid-selector.tmpl index 03eb5d779..a055203a4 100644 --- a/templates/openid-selector.tmpl +++ b/templates/openid-selector.tmpl @@ -2,14 +2,18 @@ <script type="text/javascript" src="ikiwiki/openid/openid-jquery.js"></script> <script type="text/javascript"> $(document).ready(function() { - selector.init('openid_identifier','<TMPL_IF OTHERFORM>otherform</TMPL_IF>', '<TMPL_VAR OTHERFORM_LABEL>'); + selector.init( + 'openid_identifier', + { + <TMPL_IF LOGIN_SELECTOR_OPENID>'openid': 1,</TMPL_IF> + <TMPL_IF LOGIN_SELECTOR_EMAIL>'email': 1,</TMPL_IF> + }, + '<TMPL_IF OTHERFORM>otherform</TMPL_IF>', + '<TMPL_VAR OTHERFORM_LABEL>' + ); }); </script> -<noscript> -<h2>Login:</h2> -</noscript> - <form action="<TMPL_VAR CGIURL>" method="get" id="login_selector_form"> <div> <script> @@ -21,11 +25,26 @@ $(document).ready(function() { <div id="login_choice"> <div id="login_btns"></div> </div> + <div id="login_input_area"> + <div> + <h3>OpenId login:</h3> + <TMPL_IF LOGIN_SELECTOR_OPENID> <label for="openid_identifier" class="block">Enter your OpenID:</label> <input id="openid_identifier" name="openid_identifier" type="text" value="<TMPL_VAR ESCAPE=HTML OPENID_URL>"/> <input id="openid_submit" type="submit" value="Login"/> + </TMPL_IF> </div> + <div> + <h3>Email login:</h3> + <TMPL_IF LOGIN_SELECTOR_EMAIL> + <label for="email_address" class="block">Enter your email address:</label> + <input id="email_address" name="Email_entry" type="text" value="<TMPL_VAR ESCAPE=HTML EMAIL_ADDRESS>"/> + <input id="email_submit" type="submit" value="Login"/> + </TMPL_IF> + </div> + </div> + <TMPL_IF LOGIN_ERROR> <div class="error"><TMPL_VAR LOGIN_ERROR></div> </TMPL_IF> @@ -36,7 +55,7 @@ $(document).ready(function() { <TMPL_IF OTHERFORM> <br /> <noscript> -<h2><TMPL_VAR OTHERFORM_LABEL>:</h2> +<h3><TMPL_VAR OTHERFORM_LABEL> login:</h3> </noscript> </TMPL_IF> <TMPL_VAR OTHERFORM> diff --git a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js index db8dca235..eaac50315 100644 --- a/underlays/openid-selector/ikiwiki/openid/openid-jquery.js +++ b/underlays/openid-selector/ikiwiki/openid/openid-jquery.js @@ -5,21 +5,23 @@ http://code.google.com/p/openid-selector/ This code is licenced under the New BSD License. */ -var selections_large = { +var selections_email_large = { email: { name: 'Email', icon: 'wikiicons/email.png', label: 'Enter your email address:', url: null - }, + } +}; +var selections_openid_large = { openid: { name: 'OpenID', icon: 'wikiicons/openidlogin-bg.gif', label: 'Enter your OpenID:', url: null - }, + } }; -var selections_small = { +var selections_openid_small = { verisign: { name: 'Verisign', icon: 'ikiwiki/openid/verisign.png', @@ -50,7 +52,7 @@ var selections_small = { url: 'http://openid.aol.com/{username}' } }; -var selections = $.extend({}, selections_large, selections_small); +var selections = $.extend({}, selections_email_large, selections_openid_large, selections_openid_small); var selector = { @@ -66,7 +68,7 @@ var selector = { selection_id: null, othersignin_id: null, - init: function(input_id, othersignin_id, othersignin_label) { + init: function(input_id, login_methods, othersignin_id, othersignin_label) { var selector_btns = $('#login_btns'); @@ -76,9 +78,17 @@ var selector = { $('#login_input_area').empty(); // add box for each selection - for (id in selections_large) { - selector_btns.append(this.getBoxHTML(selections_large[id], 'large')); - } + if (login_methods['openid']) { + for (id in selections_openid_large) { + selector_btns.append(this.getBoxHTML(selections_openid_large[id], 'large')); + } + } + if (login_methods['email']) { + for (id in selections_email_large) { + selector_btns.prepend(this.getBoxHTML(selections_email_large[id], 'large')); + } + } + if (othersignin_label != "") { this.othersignin_label=othersignin_label; } @@ -98,11 +108,11 @@ var selector = { $('#'+this.othersignin_id).hide(); } - if (selections_small) { + if (login_methods['openid'] && selections_openid_small) { selector_btns.append('<br/>'); - for (id in selections_small) { - selector_btns.append(this.getBoxHTML(selections_small[id], 'small')); + for (id in selections_openid_small) { + selector_btns.append(this.getBoxHTML(selections_openid_small[id], 'small')); } } @@ -179,7 +189,7 @@ var selector = { else { selector.setOpenIdUrl(""); } - if(selector.ajaxHandler) { + if (selector.ajaxHandler) { selector.ajaxHandler(selector.selection_id, document.getElementById(selector.input_id).value); return false; } @@ -227,7 +237,7 @@ var selector = { var input_area = $('#login_input_area'); var html = ''; - var id = 'entry'; + var id = selection['name']+'_entry'; var value = ''; var label = selection['label']; var style = ''; @@ -240,7 +250,6 @@ var selector = { if (label) { html = '<label for="'+ id +'" class="block">' + label + '</label>'; } - html += '<input name="selection" type="hidden" value="' + selection['name'] + '" />' html += '<input id="'+id+'" type="text" style="'+style+'" name="'+id+'" value="'+value+'" />' + '<input id="selector_submit" type="submit" value="Login"/>'; |