From d67e3baf6b02431928da239f5f3566296852e285 Mon Sep 17 00:00:00 2001 From: xamgore <xamgore@ya.ru> Date: Sat, 9 Jul 2016 14:10:15 +0300 Subject: [PATCH] Refactor semester switch & username sliders --- media/js/profile.js | 94 +++++++------------ media/js/semesterSwitcher.js | 41 ++------ media/less/common.less | 5 + .../classes/Controller/Handler/Settings.php | 10 +- 4 files changed, 53 insertions(+), 97 deletions(-) diff --git a/media/js/profile.js b/media/js/profile.js index aea86e7cb..5845af5cd 100644 --- a/media/js/profile.js +++ b/media/js/profile.js @@ -1,51 +1,29 @@ $(function () { - var jProfiler = $('#profileInfo').first(); - var isOpened = false; - var flag = false; - var jLogin = $('#login'); - var jPass = $('#password'); - var jError = $('.auth_error'); - var jSignButton = $('#signin_b'); - - // Показ профиля при нажатии + let $username = $('#username'), - $('#settingsButton').click(function () { - $.get(URLdir + "window/settings", function (data) { - wnd.open(JSON.parse(data)); - onSettingsPopup(); - }); - }); + $profileInfo = $('#profileInfo').first(), + $login = $('#login'), + $password = $('#password'), - $(document).click(function () { - if (flag === true) { - flag = false; - } else if (isOpened === true) { - jProfiler.slideUp(200);//css('display', 'none'); - isOpened = false; - } - }); + $error = $('.auth_error'), + $signInButton = $('#signin_b'); - $(".profile_wrapper").click(function () { - flag = true; - }); - $('#username').click(function () { - flag = true; - if (isOpened) { - jProfiler.slideUp(200);//css('display', 'none'); - isOpened = false; - } - else { - jProfiler.slideDown(200);//css('display', 'block'); - isOpened = true; - } - }); + // Показ профиля при нажатии + $('#settingsButton').click(() => + $.getJSON(URLdir + 'window/settings') + .done(data => { wnd.open(data); onSettingsPopup() })); + + + let isUsernameLayer = node => (node == $username[0]) || $.contains($profileInfo[0], node); + + $(document).click(e => isUsernameLayer(e.target) || $profileInfo.slideUp(200)); + $username.click(_ => $profileInfo.slideToggle(200)); function closeSession() { $.post(URLdir + 'handler/Session/closeSession') - .done(_ => { $('.popup_overlay').show(); jLogin.focus() }); - } + .done(_ => { $('.popup_overlay').show(); $login.focus() }) } function setSessionTimer(time) { let updateTime = () => @@ -58,28 +36,24 @@ $(function () { setSessionTimer(1); - Auth.onAllow = function() { - jSignButton.removeAttr('disabled'); - }; - // todo: animation - Auth.onDeprecate = function() { - jSignButton.attr('disabled', 'disabled'); - }; - + Auth.onAllow = () => $signInButton.turnOn(); + Auth.onDeprecate = () => $signInButton.turnOff(); + + function tryToAuthorize() { - var login = jLogin.val(); - var pass = jPass.val(); + var login = $login.val(); + var pass = $password.val(); - // check fields are empty + // check fields are empty if (login.length == 0 || pass.length == 0) { - login.length ? jPass.focus() : jLogin.focus(); + login.length ? $password.focus() : $login.focus(); return; } - + // send ajax request Auth.signIn(login, pass) - .fail(_ => jError.show()) + .fail(_ => $error.show()) .done(_ => { // global var at base.twig User.login == login @@ -87,18 +61,18 @@ $(function () { : window.location.replace(URLdir); $('.popup_overlay').hide(); - jError.hide(); - jLogin.val(''); - jPass.val(''); + $error.hide(); + $login.val(''); + $password.val(''); }); } - - jLogin.add(jPass).keypress(function (event) { + + $login.add($password).keypress(function (event) { if (event.keyCode == 13) tryToAuthorize(); - else jError.fadeOut(600); + else $error.fadeOut(600); }); - jSignButton.click(tryToAuthorize); + $signInButton.click(tryToAuthorize); }); diff --git a/media/js/semesterSwitcher.js b/media/js/semesterSwitcher.js index 7088b29ee..7a59244aa 100644 --- a/media/js/semesterSwitcher.js +++ b/media/js/semesterSwitcher.js @@ -1,36 +1,15 @@ -$(function() -{ - var jSemester = $('.semesterSwitcher').first(); - var isSOpened = false; - var sFlag = false; +$(function () { + let $semesters = $('.semesterSwitcher').first(), + $switch = $('#changeSemester'), + $layer = $('.semesterLayer'); - $(document).click(function() { - if (sFlag === true) { - sFlag = false; - } else if (isSOpened === true) { - jSemester.slideUp(200);//css('display', 'none'); - isSOpened = false; - } - }); + $(document).click(e => $.contains($layer[0], e.target) || $semesters.slideUp(200)); - $('#changeSemester').click(function() { - sFlag = true; - if(isSOpened) - { - jSemester.slideUp(200);//css('display', 'none'); - isSOpened = false; - } - else - { - jSemester.slideDown(200);//css('display', 'block'); - isSOpened = true; - } - }); + $switch.click(_ => $semesters.slideToggle(200)); - $('.switchSemester').click(function(){ - var ID = this.id.split('-'); - $.post(URLdir + "handler/Settings/setSemesterID", {semesterID: ID[1]}, function(data){ - window.location.replace(URLdir); - }); + $('.switchSemester').click(e => { + $.post(URLdir + "handler/Settings/setSemesterID", { + id: e.target.id.split('-')[1] + }).done(_ => window.location.replace(URLdir)); }); }); \ No newline at end of file diff --git a/media/less/common.less b/media/less/common.less index 0eeeb2a60..adf41ce60 100644 --- a/media/less/common.less +++ b/media/less/common.less @@ -274,6 +274,11 @@ input[type="checkbox"] { padding-bottom: 10px; } +#username { + cursor: pointer; + user-select: none; +} + // --------------------------------------------------------------------------------------------------------------------- // Main layer // --------------------------------------------------------------------------------------------------------------------- diff --git a/~dev_rating/application/classes/Controller/Handler/Settings.php b/~dev_rating/application/classes/Controller/Handler/Settings.php index e3d820673..8a4124a8b 100644 --- a/~dev_rating/application/classes/Controller/Handler/Settings.php +++ b/~dev_rating/application/classes/Controller/Handler/Settings.php @@ -81,11 +81,9 @@ class Controller_Handler_Settings extends Controller_Handler } public function action_setSemesterID() { - $this->post - ->rule('semesterID', 'not_empty') - ->rule('semesterID', 'digit'); - if ($this->post->check()) { - $this->user->SemesterID = (int) $this->post['semesterID']; - } + $this->post->rule('id', 'not_empty')->rule('id', 'digit'); + + if ($this->post->check()) + $this->user->SemesterID = (int) $_POST['id']; } } -- GitLab