0
1
Fork 0
hedera-web-mindshore/js/hedera/login.js

142 lines
2.6 KiB
JavaScript

Vn.includeCss ('js/hedera/login.css');
Vn.resource ('js/hedera/login.xml');
Vn.define (function () {
Vn.Login = new Class
({
Extends: Htk.Widget,
Properties:
{
conn:
{
type: Db.Conn
,set: function (x)
{
this.link ({_conn: x}, {'loading-changed': this._onConnLoadChange});
x.execQuery (
'SELECT title, link, icon FROM social ORDER BY priority',
this._onSocialQueryDone.bind (this));
}
,get: function ()
{
return this._conn;
}
}
}
,initialize: function (props)
{
this.builderInit ('js/hedera/login.xml');
var self = this;
this.$('form').onsubmit = function ()
{
self._onSubmit ();
return false;
};
this.parent (props);
}
,_onConnLoadChange: function (conn, isLoading)
{
this._disableUi (isLoading);
}
,_disableUi: function (disabled)
{
if (disabled)
this.$('spinner').start ();
else
this.$('spinner').stop ();
this.$('user').disabled = disabled;
this.$('pass').disabled = disabled;
this.$('submit').disabled = disabled;
}
,show: function ()
{
document.body.appendChild (this.node);
if (Vn.Cookie.check ('vn_user'))
this.$('user').value = Vn.Cookie.get ('vn_user');
this._focusUserInput ();
}
,hide: function ()
{
Vn.Node.remove (this.node);
}
,_focusUserInput: function ()
{
var userEntry = this.$('user');
userEntry.focus ();
userEntry.select ();
}
,_onSubmit: function ()
{
this._conn.open (
this.$('user').value,
this.$('pass').value,
this.$('remember').checked,
this._onConnOpen.bind (this)
);
}
,_onConnOpen: function (conn, success, error)
{
this.$('pass').value = '';
if (success)
this.signalEmit ('login');
else
this._focusUserInput ();
}
,onPasswordLost: function ()
{
var user = this.$('user').value;
if (!user)
Htk.Toast.showError (_('Please write your user name'));
else
this._conn.send ('core/recover-password', {'user': user},
this._onPasswordRecovered.bind (this));
}
,_onPasswordRecovered: function (json, error)
{
if (json)
Htk.Toast.showMessage (_('A mail has been sent with your new password'));
else
Htk.Toast.showError (error.message);
}
,_onSocialQueryDone: function (resultSet)
{
var res = resultSet.fetchResult ();
var social = this.$('social');
while (res.next ())
{
var a = document.createElement ('a');
a.href = res.get ('link');
a.target = '_blank';
social.appendChild (a);
var img = document.createElement ('img');
imt.src = 'image/social/'+ res.get ('icon');
img.alt = res.get ('title');
img.title = res.get ('title');
a.appendChild (img);
}
}
});
});