Browse Source

- Merge with edhelas

pull/16/head
Jaussoin Timothée 11 years ago
parent
commit
f000fde447
  1. 33
      app/widgets/Login/Login.php
  2. 14
      app/widgets/Login/_login_sessions.tpl
  3. 1
      app/widgets/Login/locales.ini
  4. 60
      app/widgets/Login/login.css
  5. 65
      app/widgets/Login/login.js
  6. 6
      app/widgets/Login/login.tpl

33
app/widgets/Login/Login.php

@ -268,17 +268,46 @@ class Login extends WidgetBase
$warning = \Moxl\API::login();
if($warning != 'OK') {
RPC::call('movim_redirect', Route::urlize('login', $warning));
RPC::call('movim_redirect', Route::urlize('login', $warning));
RPC::commit();
} else {
$pd = new modl\PresenceDAO();
$pd->clearPresence($element['login']);
RPC::call('movim_reload', Route::urlize('root'));
RPC::call('movim_remember_session', $element['login']);
RPC::call('movim_reload', Route::urlize('root'));
RPC::commit();
}
}
function ajaxGetRememberedSession($sessions)
{
$sessions = json_decode($sessions);
$sessions_grabbed = array();
$cd = new \Modl\ContactDAO;
foreach($sessions as $s) {
$c = $cd->get($s);
if($c != null) {
array_push($sessions_grabbed, $c);
} else {
$c = new \Modl\Contact;
$c->jid = $s;
array_push($sessions_grabbed, $c);
}
}
$sessionshtml = $this->tpl();
$sessionshtml->assign('sessions', $sessions_grabbed);
$sessionshtml->assign('empty', new \Modl\Contact);
RPC::call('movim_fill', 'sessions', $sessionshtml->draw('_login_sessions', true));
RPC::commit();
}
function ajaxGetConfig()
{
$s = new moxl\StorageGet();

14
app/widgets/Login/_login_sessions.tpl

@ -0,0 +1,14 @@
<ul>
{loop="$sessions"}
<li>
<img onclick="chooseSession('{$value->jid}')" src="{$value->getPhoto('m')}"/>
<span onclick="chooseSession('{$value->jid}')">{$value->getTrueName()}</span>
<a class="button oppose color alone transparent" onclick="removeSession('{$value->jid}')"><i class="fa fa-times"></i></a>
</li>
{/loop}
<li>
<img onclick="chooseSession('')" src="{$empty->getPhoto('m')}"/>
<span onclick="chooseSession('')">{$c->__('form.another_account')}</span>
</li>
</ul>

1
app/widgets/Login/locales.ini

@ -22,6 +22,7 @@ form.username = 'My address'
form.password = 'Password'
form.create_one = 'Create one !'
form.no_account = 'No account yet ?'
form.another_account = 'Login with an another account'
whitelist.info = 'This server accept only connection with xmpp accounts from these servers :'
whitelist.info2 = "If you don't have such xmpp account, you can try %sanother public Movim%s client."
connected = 'Connected'

60
app/widgets/Login/login.css

@ -38,6 +38,7 @@ body {
}
#loginpage form {
transition: background-color 0.5s ease;
box-shadow: 0 0.1em 0px rgba(0, 0, 0, 0.2);
padding: 0.5em;
background-color: rgba(255, 255, 255, 0.2);
@ -114,6 +115,65 @@ body {
#loginpage #loginhelp li#gmail { background-image: url(img/envelope.png); }
#loginpage #loginhelp li#facebook { background-image: url(img/facebook.png); }
/* Sessions */
#loginpage #sessions {
display: none;
}
#loginpage #sessions ul {
list-style-type: none;
}
#loginpage #sessions ul li {
box-shadow: 0 0.1em 0px rgba(0, 0, 0, 0.2);
padding: 0.5em;
transition: background-color 0.5s ease;
background-color: rgba(255, 255, 255, 0.2);
border-radius: 0.1em;
height: 3em;
margin-bottom: 0.5em;
}
#loginpage #sessions ul li a.button {
margin-top: 0.3em;
}
#loginpage #sessions ul li:hover {
background-color: rgba(255, 255, 255, 0.4);
cursor: pointer;
}
#loginpage #sessions ul li img {
height: 3em;
float: left;
}
#loginpage #sessions ul li span {
color: white;
line-height: 2.8em;
padding: 1em;
}
/* States */
#loginpage.choose #loginhelp,
#loginpage.choose form .element {
display: none;
}
#loginpage.choose form {
box-shadow: none;
background-color: transparent;
}
#loginpage.choose #sessions {
display: block;
height: 100%;
}
#loginpage.choose #return_sessions {
display: none;
}
footer {
display: none;
}

65
app/widgets/Login/login.js

@ -3,6 +3,62 @@ function fillExample(login, pass) {
document.querySelector('#pass').value = pass;
}
Storage.prototype.setObject = function(key, value) {
this.setItem(key, JSON.stringify(value));
}
Storage.prototype.getObject = function(key) {
return JSON.parse(this.getItem(key));
}
/**
* @brief Save a jid in the local storage
* @param The jid to remember
*/
function rememberSession(jid) {
if(localStorage['previousSessions'] == null) {
localStorage.setObject('previousSessions', new Array());
}
var s = localStorage.getObject('previousSessions');
s.push(jid);
localStorage.setObject('previousSessions', s);
}
/**
* @brief Choose a session to connect and show the login form
* @param The jid to choose
*/
function chooseSession(jid) {
movim_remove_class('#loginpage', 'choose');
document.querySelector('#login').value = jid;
}
/**
* @brief Remove a remembered session
* @param The jid to choose
*/
function removeSession(jid) {
var s = localStorage.getObject('previousSessions');
s.splice(s.indexOf(jid), 1);
if(s.length == 0) {
localStorage.removeItem('previousSessions');
movim_remove_class('#loginpage', 'choose');
} else {
localStorage.setObject('previousSessions', s);
}
Login_ajaxGetRememberedSession(localStorage.getItem('previousSessions'));
}
/**
* @brief Back to the choosing panel
*/
function backToChoose() {
movim_add_class('#loginpage', 'choose');
}
movim_add_onload(function()
{
if(localStorage.username != null)
@ -20,5 +76,12 @@ movim_add_onload(function()
eval(this.dataset.action);
localStorage.username = document.querySelector('#login').value;
};
rememberSession(localStorage.username);
};
Login_ajaxGetRememberedSession(localStorage.getItem('previousSessions'));
if(localStorage.getItem('previousSessions') != null) {
movim_add_class('#loginpage', 'choose');
}
});

6
app/widgets/Login/login.tpl

@ -4,6 +4,9 @@
{$c->__('error.too_old')}
</div>
{else}
<div id="sessions">
</div>
{if="isset($info) && $info != ''"}
<div class="message warning">
{$info}
@ -33,6 +36,9 @@
<div class="clear"></div>
<p class="create">
<a id="return_sessions" class="button color transparent alone" href="#" onclick="backToChoose()">
<i class="fa fa-chevron-left"></i>
</a>
<a class="button color transparent oppose" href="{$c->route('account')}">
<i class="fa fa-user"></i> {$c->__('form.create_one')}
</a>

Loading…
Cancel
Save