]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Removed comercial openid providers and refactored openid login form.
authorSem <sembrestels@riseup.net>
Sat, 22 Sep 2012 03:06:19 +0000 (05:06 +0200)
committerSem <sembrestels@riseup.net>
Sat, 22 Sep 2012 03:06:19 +0000 (05:06 +0200)
actions/openid_client/login.php
classes/ElggOpenIDConsumer.php
graphics/openid_providers.png [deleted file]
languages/en.php
start.php
views/default/forms/openid_client/login.php
views/default/openid_client/css.php
views/default/openid_client/js.php
views/default/openid_client/login.php [deleted file]

index cf991ea0fe31f5cd9df6bfc686d925dfed5899f2..604374ced4ad437320f413fd96e463bd564d428b 100644 (file)
@@ -6,11 +6,13 @@
 elgg_load_library('openid_consumer');
 
 $provider = get_input('openid_provider');
-$username = get_input('openid_username');
+
+if ($provider == 'others') {
+       $provider = get_input('openid_url');
+}
 
 $consumer = new ElggOpenIDConsumer($store);
-$consumer->setProvider($provider);
-$consumer->setUsername($username);
+$consumer->setURL($provider);
 $consumer->setReturnURL(elgg_get_site_url() . 'mod/openid_client/return.php');
 
 $html = $consumer->requestAuthentication();
@@ -18,7 +20,12 @@ if ($html) {
        echo $html;
        exit;
 } else {
-       $provider_name = elgg_echo("openid_client:provider:$provider");
+       $flipped_providers = array_flip(elgg_get_config('openid_providers'));
+       if (isset($flipped_providers[$provider])) {
+               $provider_name = $flipped_providers[$provider];
+       } else {
+               $provider_name = $provider;
+       }
        register_error(elgg_echo('openid_client:error:no_html', array($provider_name)));
        forward();
 }
index 3918086ab95964865a6d350cf9364a210ae60dcf..09820134368a648cf0592f8c7d199e2f64700858 100644 (file)
@@ -5,8 +5,7 @@
 
 class ElggOpenIDConsumer {
 
-       protected $provider;
-       protected $username;
+       protected $openIdUrl;
        protected $returnURL;
 
        protected $store;
@@ -27,22 +26,13 @@ class ElggOpenIDConsumer {
                }
        }
 
-       /**
-        * Set the name of the OpenID provider
-        * 
-        * @param string $provider
-        */
-       public function setProvider($provider) {
-               $this->provider = $provider;
-       }
-
        /**
         * Set the OpenID username
         *
         * @param string $username
         */
-       public function setUsername($username) {
-               $this->username = $username;
+       public function setURL($url) {
+               $this->openIdUrl = $url;
        }
 
        /**
@@ -70,7 +60,7 @@ class ElggOpenIDConsumer {
                        return false;
                }
 
-               $url = $this->getProviderURL();
+               $url = $this->openIdUrl;
                if (!$url) {
                        return false;
                }
@@ -122,56 +112,6 @@ class ElggOpenIDConsumer {
                return $data;
        }
 
-       /**
-        * Get the OpenID provider URL based on name
-        * 
-        * @return string
-        */
-       protected function getProviderURL() {
-               $url = null;
-               $provider = $this->provider;
-               $username = $this->username;
-               switch ($provider) {
-                       case 'google':
-                               $url = 'https://www.google.com/accounts/o8/id';
-                               break;
-                       case 'yahoo':
-                               $url = 'https://me.yahoo.com/';
-                               break;
-                       case 'blogger':
-                               $url = "http://$username.blogspot.com/";
-                               break;
-                       case 'wordpress':
-                               // username is actually the blog name
-                               $url = "http://$username.wordpress.com/";
-                               break;
-                       case 'livejournal':
-                               $url = "http://$username.livejournal.com/";
-                               break;
-                       case 'aol':
-                               $url = "https://openid.aol.com/";
-                               break;
-                       case 'verisign':
-                               $url = "https://pip.verisignlabs.com/ ";
-                               break;
-                       case 'myopenid':
-                               $url = 'https://myopenid.com/';
-                               break;
-                       case 'myspace':
-                               $url = 'https://api.myspace.com/openid';
-                               break;
-                       default:
-                               $params = array(
-                                       'provider' => $provider,
-                                       'username' => $username,
-                               );
-                               $url = elgg_trigger_plugin_hook('set', 'openid_client:url', $params);
-                               break;
-               }
-
-               return $url;
-       }
-
        /**
         * Add attribute requests to the OpenID authentication request
         * 
diff --git a/graphics/openid_providers.png b/graphics/openid_providers.png
deleted file mode 100644 (file)
index 179e6d1..0000000
Binary files a/graphics/openid_providers.png and /dev/null differ
index 34afb3700ee7aaa445c26f93e69ca469420d4b0e..4af3bf06a981ed02e5a395e3f799e3f4414606f7 100644 (file)
@@ -5,13 +5,11 @@
 \r
 $english = array(\r
 \r
+       'openid_client' => 'OpenID',\r
        'openid_client:login:header' => 'Log in with',\r
-       'openid_client:or:header' => 'or',\r
-       'openid_client:login:instructs' => 'Login in with %s',\r
-       'openid_client:provider:google' => 'Google',\r
-       'openid_client:provider:yahoo' => 'Yahoo',\r
-       'openid_client:provider:blogger' => 'Blogger',\r
-       'openid_client:provider:wordpress' => 'Wordpress',\r
+       'openid_client:login' => 'Login in with OpenID',\r
+       'openid_client:others' => 'Others...',\r
+       'openid_client:url' => 'OpenID URL',\r
 \r
        'openid_client:create' => 'Create an account',\r
        'openid_client:create:instructs' => 'Your account has been approved. We just need you to confirm or set the below information.',\r
index 82dcd5c1101ecadabeb6a7777c31e1b01db3f86e..1bf85eb74c9f63576c3b9294ff9472ad2ddcdfa6 100644 (file)
--- a/start.php
+++ b/start.php
@@ -15,7 +15,6 @@ function openid_client_init() {
        elgg_extend_view('css/elgg', 'openid_client/css');\r
        elgg_extend_view('js/elgg', 'openid_client/js');\r
 \r
-       elgg_extend_view('core/account/login_box', 'openid_client/login');\r
        elgg_register_plugin_hook_handler('register', 'menu:openid_login', 'openid_client_setup_menu');\r
        \r
        $base = elgg_get_plugins_path() . 'openid_client/actions/openid_client';\r
@@ -24,6 +23,13 @@ function openid_client_init() {
 \r
        $base = elgg_get_plugins_path() . 'openid_client/lib';\r
        elgg_register_library('openid_client', "$base/helpers.php");\r
+       \r
+       elgg_set_config('openid_providers', array(\r
+               'N-1'                   => 'https://n-1.cc/openid/',\r
+               'Ecoxarxes'             => 'https://cooperativa.ecoxarxes.cat/openid/',\r
+               'Anillosur'             => 'https://anillosur.cc/openid/',\r
+               // ...\r
+       ));\r
 \r
        // don't let OpenID users set their passwords\r
        elgg_register_event_handler('pagesetup', 'system', 'openid_client_remove_password');\r
@@ -47,58 +53,6 @@ function openid_client_set_subtype($user) {
        update_data($query);\r
 }\r
 \r
-/**\r
- * Register login options\r
- *\r
- * @param string $hook\r
- * @param string $type\r
- * @param array  $menu\r
- * @param array  $params\r
- * @return array\r
- */\r
-function openid_client_setup_menu($hook, $type, $menu, $params) {\r
-\r
-       $items = array(\r
-               'large' => array(\r
-                       'google' => '',\r
-                       'yahoo' => '',\r
-               ),\r
-               'small' => array(\r
-                       'blogger' => 'toggle',\r
-                       'wordpress' => 'toggle',\r
-               ),\r
-       );\r
-       $items = elgg_trigger_plugin_hook('register', 'openid_client:login', null, $items);\r
-\r
-       $priority = 100;\r
-       foreach ($items as $type => $providers) {\r
-               foreach ($providers as $provider => $toggle) {\r
-                       $provider_name = elgg_echo("openid_client:provider:$provider");\r
-\r
-                       $options = array(\r
-                               'name' => $provider,\r
-                               'text' => '<span></span>',\r
-                               'title' => elgg_echo('openid_client:login:instructs', array($provider_name)),\r
-                               'href' => "action/openid_client/login?openid_provider=$provider",\r
-                               'is_action' => true,\r
-                               'section' => $type,\r
-                               'priority' => $priority,\r
-                       );\r
-\r
-                       if ($toggle) {\r
-                               $options['link_class'] = 'openid-client-toggle';\r
-                               $options['rel'] = $provider;\r
-                       }\r
-\r
-                       $menu[] = ElggMenuItem::factory($options);\r
-\r
-                       $priority += 10;\r
-               }\r
-       }\r
-\r
-       return $menu;\r
-}\r
-\r
 /**\r
  * Remove the password view from the account settings form\r
  */\r
index eba6dbe4b41d56102f455d24bbe53fb4cd66745d..1f440dc491e172d3f5574d9502287f3672eefdb4 100644 (file)
@@ -3,11 +3,41 @@
  * OpenID login if username or full url required
  */
 
-echo '<label>';
-echo elgg_echo('username');
-echo '</label>';
-echo elgg_view('input/text', array('name' => 'openid_username', 'class' => 'mbs'));
+$options_values = array_flip(elgg_get_config('openid_providers'));
+$options_values['others'] = elgg_echo('openid_client:others');
 
-echo elgg_view('input/hidden', array('name' => 'openid_provider'));
+?>
+<div>
+<label><?php echo elgg_echo('openid_client:login:header'); ?></label>
+<br />
+<?php
+echo elgg_view('input/dropdown', array(
+       'name' => 'openid_provider',
+       'options_values' => $options_values,
+));
+?>
+</div>
+
+<div class="openid-client-url hidden">
+<label><?php echo elgg_echo('openid_client:url'); ?> </label>
+
+<?php
+echo elgg_view('input/text', array('name' => 'openid_url', 'class' => 'mbs'));
+?>
+
+</div>
 
-echo elgg_view('input/submit', array('value' => elgg_echo('submit')));
\ No newline at end of file
+<div class="elgg-foot">
+       <label class="mtm float-alt">
+               <input type="checkbox" name="persistent" value="true" />
+               <?php echo elgg_echo('user:persistent'); ?>
+       </label>
+       
+       <?php echo elgg_view('input/submit', array('value' => elgg_echo('login'))); ?>
+       
+       <?php 
+       if (isset($vars['returntoreferer'])) {
+               echo elgg_view('input/hidden', array('name' => 'returntoreferer', 'value' => 'true'));
+       }
+       ?>
+</div>
\ No newline at end of file
index 900de7e6e72bbc92516778c72025f917fa82cdfc..d01fc6b5ac1a9a3defe737866bac63700773b698 100644 (file)
@@ -2,53 +2,12 @@
 /**\r
  * OpenID client CSS\r
  */\r
-\r
-$site_url = elgg_get_site_url();\r
-\r
 ?>\r
 \r
-.openid-client-login-or {\r
-       margin-top: 5px;\r
-       text-align: center;\r
-       color: #333;\r
-}\r
-\r
-.elgg-menu-openid-login {\r
-       text-align: center;\r
-}\r
-\r
-.elgg-menu-openid-login > li {\r
-       margin: 3px;\r
-}\r
-\r
-.elgg-menu-openid-login span {\r
-       display: block;\r
-       background: url("<?php echo $site_url; ?>mod/openid_client/graphics/openid_providers.png") no-repeat left;\r
-       border: 1px solid #ccc;\r
-}\r
-\r
-.elgg-menu-openid-login-large span {\r
-       height: 32px;\r
-       width: 92px;\r
+.elgg-icon-openid {\r
+       background-image: url(<?php echo elgg_get_site_url(); ?>mod/openid_client/graphics/openid_icon.png);\r
 }\r
 \r
-.elgg-menu-openid-login-small span {\r
-       height: 20px;\r
-       width: 20px;\r
-}\r
-\r
-.elgg-menu-item-google span {\r
-       background-position: -5px -14px;\r
-}\r
-\r
-.elgg-menu-openid-login-large > .elgg-menu-item-yahoo span {\r
-       background-position: -105px -14px;\r
-}\r
-\r
-.elgg-menu-item-blogger span {\r
-       background-position: -170px -62px;\r
-}\r
-\r
-.elgg-menu-item-wordpress span {\r
-       background-position: -146px -62px;\r
-}\r
+.elgg-form-login {\r
+       margin-bottom: 10px;\r
+}
\ No newline at end of file
index 175577719ab85f1bef38958df7e1c856ceed6569..171215593e405fd217cf3a89f9a2e0809ba3503c 100644 (file)
@@ -7,12 +7,20 @@
 
 // OpenID toggle
 elgg.register_hook_handler('init', 'system', function() {
-       $(".openid-client-toggle").click(function(event) {
-               $("#openid-client-login-form").slideDown();
-
-               var provider_input = $("#openid-client-login-form input[name=openid_provider]");
-               provider_input.attr('value', $(this).attr('rel'));
-
-               event.preventDefault();
+       $('.openid-login-icon').click(function(e) {
+               var openid_box = $(this).prev('.elgg-form-openid-client-login');
+               var shown = openid_box.is(':visible') ? openid_box : openid_box.prev(); 
+               var hidden = !openid_box.is(':visible') ? openid_box : openid_box.prev();
+               shown.fadeOut(function() {
+                       hidden.fadeIn();
+               });
+               e.preventDefault();
+       });
+       $(".elgg-form-openid-client-login [name='openid_provider']").change(function(event) {
+               if (this.value == 'others') {
+                       $(".openid-client-url").slideDown().find('input').focus();
+               } else {
+                       $(".openid-client-url").slideUp();
+               }
        });
 });
diff --git a/views/default/openid_client/login.php b/views/default/openid_client/login.php
deleted file mode 100644 (file)
index 30685fe..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/**
- * OpenID client login choices
- */
-
-echo '<h3 class="openid-client-login-or">' . elgg_echo('openid_client:or:header') . '</h3>';
-echo '<h3>' . elgg_echo('openid_client:login:header') . '</h3>';
-
-echo elgg_view_menu('openid_login', array(
-       'class' => 'elgg-menu-hz',
-       'sort_by' => 'priority',
-));
-
-$form_vars = array(
-       'class' => 'hidden',
-       'id' => 'openid-client-login-form',
-);
-echo elgg_view_form('openid_client/login', $form_vars);