From e365cc896a44e80574d559208df393201d6abb9e Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 17 Jan 2017 12:01:36 +0200 Subject: [PATCH] admin area: use default layout path, remove turbolinks, load js in async mode, extract menu partial #341 --- app/assets/javascripts/admin-manifest.coffee | 1 - .../javascripts/admin/application.coffee | 88 +++++++++---------- app/controllers/admin/sessions_controller.rb | 1 - app/controllers/admin_controller.rb | 1 - app/views/admin/_menu.haml | 44 ++++++++++ app/views/layouts/admin.haml | 36 ++++++++ app/views/layouts/admin/application.haml | 85 ------------------ 7 files changed, 123 insertions(+), 133 deletions(-) create mode 100644 app/views/admin/_menu.haml create mode 100644 app/views/layouts/admin.haml delete mode 100644 app/views/layouts/admin/application.haml diff --git a/app/assets/javascripts/admin-manifest.coffee b/app/assets/javascripts/admin-manifest.coffee index 51bc5f419..c386c45e6 100644 --- a/app/assets/javascripts/admin-manifest.coffee +++ b/app/assets/javascripts/admin-manifest.coffee @@ -1,6 +1,5 @@ #= require jquery #= require jquery_ujs -#= require turbolinks #= require bootstrap-sprockets #= require typeahead.bundle.min #= require admin/autocomplete diff --git a/app/assets/javascripts/admin/application.coffee b/app/assets/javascripts/admin/application.coffee index 1b3335d63..95d86c8d8 100644 --- a/app/assets/javascripts/admin/application.coffee +++ b/app/assets/javascripts/admin/application.coffee @@ -1,53 +1,51 @@ -$(document).on 'page:change', -> - $('.selectize').selectize({ - allowEmptyOption: true - }) - $('.selectize_create').selectize({ - allowEmptyOption: true, create: true - }) +$('.selectize').selectize({ + allowEmptyOption: true +}) +$('.selectize_create').selectize({ + allowEmptyOption: true, create: true +}) - $('.js-datepicker').datepicker({ - showAnim: "", - autoclose: true, - dateFormat: "dd.mm.yy", - changeMonth: true, - changeYear: true - }) +$('.js-datepicker').datepicker({ + showAnim: "", + autoclose: true, + dateFormat: "dd.mm.yy", + changeMonth: true, + changeYear: true +}) - # client side validate all forms - $('form').each -> - $(this).validate() - - $('[data-toggle="popover"]').popover() +# client side validate all forms +$('form').each -> + $(this).validate() + +$('[data-toggle="popover"]').popover() - # doublescroll - $('[data-doublescroll]').doubleScroll({ - onlyIfScroll: false, - scrollCss: - 'overflow-x': 'auto' - 'overflow-y': 'hidden' - contentCss: - 'overflow-x': 'auto' - 'overflow-y': 'hidden' - resetOnWindowResize: true - }) +# doublescroll +$('[data-doublescroll]').doubleScroll({ + onlyIfScroll: false, + scrollCss: + 'overflow-x': 'auto' + 'overflow-y': 'hidden' + contentCss: + 'overflow-x': 'auto' + 'overflow-y': 'hidden' + resetOnWindowResize: true +}) - positionSlider = -> - for scroll in document.querySelectorAll('[data-doublescroll]') - wrapper = scroll.previousSibling - if $(scroll).offset().top < $(window).scrollTop() - wrapper.style.position = 'fixed' - wrapper.style.top = '-5px' - else - wrapper.style.position = 'relative' - wrapper.style.top = '0' - return - - positionSlider() - $(window).scroll(positionSlider).resize positionSlider - #due .report-table width: auto top scrollbar appears after resize so we do fake resize action - $(window).resize() +positionSlider = -> + for scroll in document.querySelectorAll('[data-doublescroll]') + wrapper = scroll.previousSibling + if $(scroll).offset().top < $(window).scrollTop() + wrapper.style.position = 'fixed' + wrapper.style.top = '-5px' + else + wrapper.style.position = 'relative' + wrapper.style.top = '0' + return +positionSlider() +$(window).scroll(positionSlider).resize positionSlider +#due .report-table width: auto top scrollbar appears after resize so we do fake resize action +$(window).resize() diff --git a/app/controllers/admin/sessions_controller.rb b/app/controllers/admin/sessions_controller.rb index 5dc244398..d907fe1f3 100644 --- a/app/controllers/admin/sessions_controller.rb +++ b/app/controllers/admin/sessions_controller.rb @@ -1,6 +1,5 @@ class Admin::SessionsController < Devise::SessionsController skip_authorization_check only: :create - layout 'admin/application' def login @admin_user = AdminUser.new diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index 29b7be698..ec335ae65 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -1,5 +1,4 @@ class AdminController < ApplicationController - layout 'admin/application' before_action :authenticate_user! helper_method :head_title_sufix diff --git a/app/views/admin/_menu.haml b/app/views/admin/_menu.haml new file mode 100644 index 000000000..4077e58f2 --- /dev/null +++ b/app/views/admin/_menu.haml @@ -0,0 +1,44 @@ +.navbar-collapse.collapse + %ul.nav.navbar-nav + - if can? :show, Domain + %li= link_to t(:domains), admin_domains_path + - if can? :show, Contact + %li= link_to t(:contacts), admin_contacts_path + - if can? :show, Registrar + %li= link_to t(:registrars), admin_registrars_path + - if can? :show, Keyrelay + %li= link_to t(:keyrelays), admin_keyrelays_path + - if can?(:access, :settings_menu) + %li.dropdown + %a.dropdown-toggle{"data-toggle" => "dropdown", href: "#"} + = t(:settings) + %span.caret + %ul.dropdown-menu{role: "menu"} + %li.dropdown-header= t(:users) + %li= link_to t(:api_users), admin_api_users_path + %li= link_to t(:admin_users), admin_admin_users_path + %li.divider + %li.dropdown-header= t(:billing) + - if can? :view, Pricelist + %li= link_to t(:pricelists), admin_pricelists_path + %li= link_to t(:bank_statements), admin_bank_statements_path + %li= link_to t(:invoices), admin_invoices_path + %li= link_to t(:account_activities), admin_account_activities_path(created_after: 'today') + %li.divider + %li.dropdown-header= t(:archive) + %li= link_to t(:domains_history), admin_domain_versions_path + %li= link_to t(:contacts_history), admin_contact_versions_path + %li.divider + %li.dropdown-header= t(:system) + %li= link_to t(:settings), admin_settings_path + %li= link_to t(:zonefile), admin_zonefile_settings_path + %li= link_to t(:blocked_domains), admin_blocked_domains_path + %li= link_to t(:reserved_domains), admin_reserved_domains_path + %li= link_to t(:mail_templates), admin_mail_templates_path + %li= link_to t(:epp_logs), admin_epp_logs_path(created_after: 'today') + %li= link_to t(:repp_logs), admin_repp_logs_path(created_after: 'today') + %li= link_to t(:que), '/admin/que' + + - if signed_in? + %ul.nav.navbar-nav.navbar-right + %li= link_to t(:log_out, user: current_user), '/admin/logout' diff --git a/app/views/layouts/admin.haml b/app/views/layouts/admin.haml new file mode 100644 index 000000000..8e8e3230e --- /dev/null +++ b/app/views/layouts/admin.haml @@ -0,0 +1,36 @@ +!!! 5 +%html{lang: I18n.locale.to_s} + %head + %meta{charset: "utf-8"}/ + %meta{content: "width=device-width, initial-scale=1", name: "viewport"}/ + - if content_for? :head_title + = yield :head_title + - else + %title= t(:admin_head_title) + = csrf_meta_tags + = stylesheet_link_tag 'admin-manifest', media: 'all' + = favicon_link_tag 'favicon.ico' + %body{:style => env_style} + .navbar.navbar-inverse.navbar-static-top{role: "navigation"} + .container + .navbar-header + %button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"} + %span.sr-only Toggle navigation + %span.icon-bar + %span.icon-bar + %span.icon-bar + = link_to admin_dashboard_path, class: 'navbar-brand' do + = ENV['app_name'] + - if unstable_env.present? + .text-center + %small{style: 'color: #0074B3;'}= unstable_env + + = render 'menu' + .container + = render 'shared/flash' + = yield + + .footer.text-right + Version + = CURRENT_COMMIT_HASH + = javascript_include_tag 'admin-manifest', async: true diff --git a/app/views/layouts/admin/application.haml b/app/views/layouts/admin/application.haml deleted file mode 100644 index 9937937e6..000000000 --- a/app/views/layouts/admin/application.haml +++ /dev/null @@ -1,85 +0,0 @@ -!!! 5 -%html{lang: I18n.locale.to_s} - %head - %meta{charset: "utf-8"}/ - %meta{content: "IE=edge", "http-equiv" => "X-UA-Compatible"}/ - %meta{content: "width=device-width, initial-scale=1", name: "viewport"}/ - %meta{content: "Full stack top-level domain (TLD) management.", name: "description"}/ - %meta{content: "Gitlab LTD", name: "author"}/ - - if content_for? :head_title - = yield :head_title - - else - %title= t(:admin_head_title) - = csrf_meta_tags - = stylesheet_link_tag 'admin-manifest', media: 'all', 'data-turbolinks-track' => true - = javascript_include_tag 'admin-manifest', 'data-turbolinks-track' => true - = favicon_link_tag 'favicon.ico' - %body{:style => env_style} - / Static navbar - .navbar.navbar-inverse.navbar-static-top{role: "navigation"} - .container - .navbar-header - %button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"} - %span.sr-only Toggle navigation - %span.icon-bar - %span.icon-bar - %span.icon-bar - = link_to admin_dashboard_path, class: 'navbar-brand' do - = ENV['app_name'] - - if unstable_env.present? - .text-center - %small{style: 'color: #0074B3;'}= unstable_env - - .navbar-collapse.collapse - %ul.nav.navbar-nav - - if can? :show, Domain - %li= link_to t(:domains), admin_domains_path - - if can? :show, Contact - %li= link_to t(:contacts), admin_contacts_path - - if can? :show, Registrar - %li= link_to t(:registrars), admin_registrars_path - - if can? :show, Keyrelay - %li= link_to t(:keyrelays), admin_keyrelays_path - - if can?(:access, :settings_menu) - %li.dropdown - %a.dropdown-toggle{"data-toggle" => "dropdown", href: "#"} - = t(:settings) - %span.caret - %ul.dropdown-menu{role: "menu"} - %li.dropdown-header= t(:users) - %li= link_to t(:api_users), admin_api_users_path - %li= link_to t(:admin_users), admin_admin_users_path - %li.divider - %li.dropdown-header= t(:billing) - - if can? :view, Pricelist - %li= link_to t(:pricelists), admin_pricelists_path - %li= link_to t(:bank_statements), admin_bank_statements_path - %li= link_to t(:invoices), admin_invoices_path - %li= link_to t(:account_activities), admin_account_activities_path(created_after: 'today') - %li.divider - %li.dropdown-header= t(:archive) - %li= link_to t(:domains_history), admin_domain_versions_path - %li= link_to t(:contacts_history), admin_contact_versions_path - %li.divider - %li.dropdown-header= t(:system) - %li= link_to t(:settings), admin_settings_path - %li= link_to t(:zonefile), admin_zonefile_settings_path - %li= link_to t(:blocked_domains), admin_blocked_domains_path - %li= link_to t(:reserved_domains), admin_reserved_domains_path - %li= link_to t(:mail_templates), admin_mail_templates_path - -# %li= link_to t(:domains_history), admin_domain_versions_path - %li= link_to t(:epp_logs), admin_epp_logs_path(created_after: 'today') - %li= link_to t(:repp_logs), admin_repp_logs_path(created_after: 'today') - %li= link_to t(:que), '/admin/que' - - - if signed_in? - %ul.nav.navbar-nav.navbar-right - %li= link_to t(:log_out, user: current_user), '/admin/logout' - - .container - = render 'shared/flash' - = yield - - .footer.text-right - Version - = CURRENT_COMMIT_HASH