var App = App || {}; App.Presenters = App.Presenters || {}; App.Presenters.LoginPresenter = function( jQuery, util, topNavigationPresenter, messagePresenter, auth, router, appState) { topNavigationPresenter.select('login'); var $el = jQuery('#content'); var $messages; var template; util.loadTemplate('login-form').then(function(html) { template = _.template(html); render(); }); var eventHandlers = { loginFormSubmit: function(e) { e.preventDefault(); messagePresenter.hideMessages($messages); var userName = $el.find('[name=user]').val(); var password = $el.find('[name=password]').val(); var remember = $el.find('[name=remember]').val(); //todo: client side error reporting auth.loginFromCredentials(userName, password, remember) .then(function(response) { router.navigateToMainPage(); //todo: "redirect" to main page }).catch(function(response) { messagePresenter.showError($messages, response.json && response.json.error || response); }); }, }; if (appState.get('loggedIn')) router.navigateToMainPage(); function render() { $el.html(template()); $el.find('form').submit(eventHandlers.loginFormSubmit); $messages = $el.find('.messages'); $messages.width($el.find('form').width()); }; return { render: render, }; }; App.DI.register('loginPresenter', App.Presenters.LoginPresenter);