• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • Examples
  • File List
  • Globals

cms/openid/js/openid-jquery.js.php

Go to the documentation of this file.
00001 <?php
00002 header('Content-type: application/javascript');
00003 
00004 $str=<<<OPENID
00005 /*
00006 Simple OpenID Plugin
00007 http://code.google.com/p/openid-selector/
00008 
00009 This code is licenced under the New BSD License.
00010 */
00011 
00012 var providers_large = {
00013     google: {
00014         name: 'Google',
00015         url: 'https://www.google.com/accounts/o8/id'
00016     },
00017     yahoo: {
00018         name: 'Yahoo',      
00019         url: 'http://yahoo.com/'
00020     },    
00021     aol: {
00022         name: 'AOL',     
00023         label: 'Enter your AOL screenname.',
00024         url: 'http://openid.aol.com/{username}/'
00025     },
00026     openid: {
00027         name: 'OpenID',     
00028         label: 'Enter your OpenID.',
00029         url: null
00030     }
00031 };
00032 var providers_small = {
00033     myopenid: {
00034         name: 'MyOpenID',
00035         label: 'Enter your MyOpenID username.',
00036         url: 'http://{username}.myopenid.com/'
00037     },
00038     livejournal: {
00039         name: 'LiveJournal',
00040         label: 'Enter your Livejournal username.',
00041         url: 'http://{username}.livejournal.com/'
00042     },
00043     flickr: {
00044         name: 'Flickr',        
00045         label: 'Enter your Flickr username.',
00046         url: 'http://flickr.com/{username}/'
00047     },
00048     technorati: {
00049         name: 'Technorati',
00050         label: 'Enter your Technorati username.',
00051         url: 'http://technorati.com/people/technorati/{username}/'
00052     },
00053     wordpress: {
00054         name: 'Wordpress',
00055         label: 'Enter your Wordpress.com username.',
00056         url: 'http://{username}.wordpress.com/'
00057     },
00058     blogger: {
00059         name: 'Blogger',
00060         label: 'Your Blogger account',
00061         url: 'http://{username}.blogspot.com/'
00062     },
00063     verisign: {
00064         name: 'Verisign',
00065         label: 'Your Verisign username',
00066         url: 'http://{username}.pip.verisignlabs.com/'
00067     },
00068     vidoop: {
00069         name: 'Vidoop',
00070         label: 'Your Vidoop username',
00071         url: 'http://{username}.myvidoop.com/'
00072     },
00073     verisign: {
00074         name: 'Verisign',
00075         label: 'Your Verisign username',
00076         url: 'http://{username}.pip.verisignlabs.com/'
00077     },
00078     claimid: {
00079         name: 'ClaimID',
00080         label: 'Your ClaimID username',
00081         url: 'http://claimid.com/{username}'
00082     }
00083 };
00084 var providers = $.extend({}, providers_large, providers_small);
00085 var openid_called = new Array();
00086 var openid = {
00087 
00088         cookie_expires: 6*30,   // 6 months.
00089         cookie_name: 'openid_provider',
00090         cookie_path: '/',
00091         
00092         img_path: '$_GET[imgpath]',
00093         
00094         input_id: null,
00095         provider_url: null,
00096         
00097     init: function(input_id) {
00098         
00099         var openid_btns = $('#openid_btns');
00100         
00101         this.input_id = input_id;
00102         if(!$('#openid_choice').is(':visible'))
00103           $('#openid_choice').show();
00104         else
00105           return '';
00106         $('#openid_input_area').empty();
00107         
00108         // add box for each provider
00109         for (id in providers_large) {
00110         
00111                 openid_btns.append(this.getBoxHTML(providers_large[id], 'large', '.gif'));
00112         }
00113         if (providers_small) {
00114                 openid_btns.append('<br/>');
00115                 
00116                 for (id in providers_small) {
00117                 
00118                         openid_btns.append(this.getBoxHTML(providers_small[id], 'small', '.ico'));
00119                 }
00120         }
00121         
00122         $('#openid_form').submit(this.submit);
00123         
00124         var box_id = this.readCookie();
00125         if (box_id) {
00126                 this.signin(box_id, true);
00127         }  
00128     },
00129     getBoxHTML: function(provider, box_size, image_ext) {
00130             
00131         var box_id = provider["name"].toLowerCase();
00132         return '<a title="'+provider["name"]+'" href="javascript: openid.signin(\''+ box_id +'\');"' +
00133                         ' style="background: #FFF url(' + this.img_path + box_id + image_ext+') no-repeat center center" ' + 
00134                         'class="' + box_id + ' openid_' + box_size + '_btn"></a>';    
00135     
00136     },
00137     /* Provider image click */
00138     signin: function(box_id, onload) {
00139     
00140         var provider = providers[box_id];
00141                 if (! provider) {
00142                         return;
00143                 }
00144                 
00145                 this.highlight(box_id);
00146                 this.setCookie(box_id);
00147                 
00148                 // prompt user for input?
00149                 if (provider['label']) {
00150                         
00151                         this.useInputBox(provider);
00152                         this.provider_url = provider['url'];
00153                         
00154                 } else {
00155                         
00156                         this.setOpenIdUrl(provider['url']);
00157                         if (! onload) {
00158                                 $('#openid_form').submit();
00159                         }       
00160                 }
00161     },
00162     /* Sign-in button click */
00163     submit: function() {
00164         
00165         var url = openid.provider_url; 
00166         if (url) {
00167                 url = url.replace('{username}', $('#openid_username').val());
00168                 openid.setOpenIdUrl(url);
00169         }
00170         return true;
00171     },
00172     setOpenIdUrl: function (url) {
00173     
00174         var hidden = $('#'+this.input_id);
00175         if (hidden.length > 0) {
00176                 hidden.value = url;
00177         } else {
00178                 $('#openid_form').append('<input type="hidden" id="' + this.input_id + '" name="' + this.input_id + '" value="'+url+'"/>');
00179         }
00180     },
00181     highlight: function (box_id) {
00182         
00183         // remove previous highlight.
00184         var highlight = $('#openid_highlight');
00185         if (highlight) {
00186                 highlight.replaceWith($('#openid_highlight a')[0]);
00187         }
00188         // add new highlight.
00189         $('.'+box_id).wrap('<div id="openid_highlight"></div>');
00190     },
00191     setCookie: function (value) {
00192     
00193                 var date = new Date();
00194                 date.setTime(date.getTime()+(this.cookie_expires*24*60*60*1000));
00195                 var expires = "; expires="+date.toGMTString();
00196                 
00197                 document.cookie = this.cookie_name+"="+value+expires+"; path=" + this.cookie_path;
00198     },
00199     readCookie: function () {
00200                 var nameEQ = this.cookie_name + "=";
00201                 var ca = document.cookie.split(';');
00202                 for(var i=0;i < ca.length;i++) {
00203                         var c = ca[i];
00204                         while (c.charAt(0)==' ') c = c.substring(1,c.length);
00205                         if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
00206                 }
00207                 return null;
00208     },
00209     useInputBox: function (provider) {
00210         
00211                 var input_area = $('#openid_input_area');
00212                 
00213                 var html = '';
00214                 var id = 'openid_username';
00215                 var value = '';
00216                 var label = provider['label'];
00217                 var style = '';
00218                 
00219                 if (label) {
00220                         html = '<p>' + label + '</p>';
00221                 }
00222                 if (provider['name'] == 'OpenID') {
00223                         id = this.input_id;
00224                         value = 'http://';
00225                         style = 'background:#FFF url('+this.img_path+'openid-inputicon.gif) no-repeat scroll 0 50%; padding-left:18px;';
00226                 }
00227                 html += '<input id="'+id+'" type="text" style="'+style+'" name="'+id+'" value="'+value+'" />' + 
00228                                         '<input id="openid_submit" type="submit" value="Sign-In"/>';
00229                 
00230                 input_area.empty();
00231                 input_area.append(html);
00232 
00233                 $('#'+id).focus();
00234     }
00235 };
00236 OPENID;
00237 echo $str;
00238 
00239 ?>

Generated on Sun Jan 2 2011 04:55:32 for Pragyan CMS by  doxygen 1.7.1