From 92fd3ccee05acdfd5e498734ed287458a8dd21a3 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Fri, 1 May 2015 10:39:11 +0200 Subject: Add helpers for header title and sidebar, and move setting those from controllers to layouts. --- app/assets/javascripts/dispatcher.js.coffee | 1 - app/controllers/admin/application_controller.rb | 8 +------ app/controllers/application_controller.rb | 1 + .../dashboard/application_controller.rb | 10 +-------- app/controllers/explore/application_controller.rb | 10 +-------- app/controllers/groups/application_controller.rb | 8 +------ app/controllers/groups_controller.rb | 8 ++++--- app/controllers/help_controller.rb | 7 +----- app/controllers/oauth/applications_controller.rb | 11 ++++----- app/controllers/oauth/authorizations_controller.rb | 9 ++------ .../oauth/authorized_applications_controller.rb | 12 +++------- app/controllers/profiles/application_controller.rb | 10 +-------- app/controllers/profiles/passwords_controller.rb | 9 ++++---- app/controllers/projects_controller.rb | 5 ----- app/controllers/search_controller.rb | 9 +------- app/controllers/snippets_controller.rb | 9 +------- app/helpers/application_helper.rb | 8 ------- app/helpers/page_layout_helper.rb | 26 ++++++++++++++++++++++ app/views/groups/new.html.haml | 2 ++ app/views/layouts/admin.html.haml | 5 +++++ app/views/layouts/application.html.haml | 11 ++++----- app/views/layouts/dashboard.html.haml | 5 +++++ app/views/layouts/explore.html.haml | 5 +++++ app/views/layouts/group.html.haml | 5 +++++ app/views/layouts/help.html.haml | 4 ++++ app/views/layouts/profile.html.haml | 5 +++++ app/views/layouts/project.html.haml | 20 ++++++----------- app/views/layouts/project_settings.html.haml | 4 +++- app/views/layouts/search.html.haml | 4 ++++ app/views/layouts/snippets.html.haml | 5 +++++ app/views/profiles/passwords/new.html.haml | 2 ++ app/views/projects/edit.html.haml | 1 - app/views/projects/new.html.haml | 2 ++ 33 files changed, 112 insertions(+), 129 deletions(-) create mode 100644 app/helpers/page_layout_helper.rb create mode 100644 app/views/layouts/admin.html.haml create mode 100644 app/views/layouts/dashboard.html.haml create mode 100644 app/views/layouts/explore.html.haml create mode 100644 app/views/layouts/group.html.haml create mode 100644 app/views/layouts/help.html.haml create mode 100644 app/views/layouts/profile.html.haml create mode 100644 app/views/layouts/search.html.haml create mode 100644 app/views/layouts/snippets.html.haml diff --git a/app/assets/javascripts/dispatcher.js.coffee b/app/assets/javascripts/dispatcher.js.coffee index 9aee3b281f3..06787ddf874 100644 --- a/app/assets/javascripts/dispatcher.js.coffee +++ b/app/assets/javascripts/dispatcher.js.coffee @@ -8,7 +8,6 @@ class Dispatcher initPageScripts: -> page = $('body').attr('data-page') - project_id = $('body').attr('data-project-id') unless page return false diff --git a/app/controllers/admin/application_controller.rb b/app/controllers/admin/application_controller.rb index cfbeb035c0e..56e24386463 100644 --- a/app/controllers/admin/application_controller.rb +++ b/app/controllers/admin/application_controller.rb @@ -3,15 +3,9 @@ # Automatically sets the layout and ensures an administrator is logged in class Admin::ApplicationController < ApplicationController before_action :authenticate_admin! - before_action :set_title + layout 'admin' def authenticate_admin! return render_404 unless current_user.is_admin? end - - def set_title - @title = "Admin area" - @title_url = admin_root_path - @sidebar = "admin" - end end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 69fd7901832..c9b34eac4b0 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -3,6 +3,7 @@ require 'gon' class ApplicationController < ActionController::Base include Gitlab::CurrentSettings include GitlabRoutingHelper + include PageLayoutHelper PER_PAGE = 20 diff --git a/app/controllers/dashboard/application_controller.rb b/app/controllers/dashboard/application_controller.rb index 0a0af3d4ce2..962ea38d6c9 100644 --- a/app/controllers/dashboard/application_controller.rb +++ b/app/controllers/dashboard/application_controller.rb @@ -1,11 +1,3 @@ class Dashboard::ApplicationController < ApplicationController - before_action :set_title - - private - - def set_title - @title = "Dashboard" - @title_url = root_path - @sidebar = "dashboard" - end + layout 'dashboard' end diff --git a/app/controllers/explore/application_controller.rb b/app/controllers/explore/application_controller.rb index 8d94fd238a6..4b275033d26 100644 --- a/app/controllers/explore/application_controller.rb +++ b/app/controllers/explore/application_controller.rb @@ -1,11 +1,3 @@ class Explore::ApplicationController < ApplicationController - before_action :set_title - - private - - def set_title - @title = "Explore GitLab" - @title_url = explore_root_path - @sidebar = "explore" - end + layout 'explore' end diff --git a/app/controllers/groups/application_controller.rb b/app/controllers/groups/application_controller.rb index e0fd4befae9..4df9d1b7533 100644 --- a/app/controllers/groups/application_controller.rb +++ b/app/controllers/groups/application_controller.rb @@ -1,5 +1,5 @@ class Groups::ApplicationController < ApplicationController - before_action :set_title + layout 'group' private @@ -18,10 +18,4 @@ class Groups::ApplicationController < ApplicationController return render_404 end end - - def set_title - @title = group.name - @title_url = group_path(group) - @sidebar = "group" - end end diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index 66e92abff8d..34f0b257db3 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -12,6 +12,8 @@ class GroupsController < Groups::ApplicationController before_action :load_projects, except: [:new, :create, :projects, :edit, :update] before_action :event_filter, only: :show + layout :determine_layout + def new @group = Group.new end @@ -116,11 +118,11 @@ class GroupsController < Groups::ApplicationController end end - def set_title + def determine_layout if [:new, :create].include?(action_name.to_sym) - @title = 'New Group' + 'application' else - super + 'group' end end diff --git a/app/controllers/help_controller.rb b/app/controllers/help_controller.rb index 2842151e3bd..8a45dc8860d 100644 --- a/app/controllers/help_controller.rb +++ b/app/controllers/help_controller.rb @@ -1,5 +1,5 @@ class HelpController < ApplicationController - before_action :set_title + layout 'help' def index end @@ -46,11 +46,6 @@ class HelpController < ApplicationController private - def set_title - @title = "Help" - @title_url = help_path - end - def path_params params.require(:category) params.require(:file) diff --git a/app/controllers/oauth/applications_controller.rb b/app/controllers/oauth/applications_controller.rb index f30a85564d4..507b8290a2b 100644 --- a/app/controllers/oauth/applications_controller.rb +++ b/app/controllers/oauth/applications_controller.rb @@ -1,6 +1,9 @@ class Oauth::ApplicationsController < Doorkeeper::ApplicationsController + include PageLayoutHelper + before_action :authenticate_user! - before_action :set_title + + layout 'profile' def index head :forbidden and return @@ -36,10 +39,4 @@ class Oauth::ApplicationsController < Doorkeeper::ApplicationsController rescue_from ActiveRecord::RecordNotFound do |exception| render "errors/not_found", layout: "errors", status: 404 end - - def set_title - @title = "Profile" - @title_url = profile_path - @sidebar = "profile" - end end diff --git a/app/controllers/oauth/authorizations_controller.rb b/app/controllers/oauth/authorizations_controller.rb index c62890ba85b..24025d8c723 100644 --- a/app/controllers/oauth/authorizations_controller.rb +++ b/app/controllers/oauth/authorizations_controller.rb @@ -1,6 +1,7 @@ class Oauth::AuthorizationsController < Doorkeeper::AuthorizationsController before_action :authenticate_resource_owner! - before_action :set_title + + layout 'profile' def new if pre_auth.authorizable? @@ -54,10 +55,4 @@ class Oauth::AuthorizationsController < Doorkeeper::AuthorizationsController def strategy @strategy ||= server.authorization_request(pre_auth.response_type) end - - def set_title - @title = "Profile" - @title_url = profile_path - @sidebar = "profile" - end end diff --git a/app/controllers/oauth/authorized_applications_controller.rb b/app/controllers/oauth/authorized_applications_controller.rb index 63c634f376b..3ab6def511c 100644 --- a/app/controllers/oauth/authorized_applications_controller.rb +++ b/app/controllers/oauth/authorized_applications_controller.rb @@ -1,16 +1,10 @@ class Oauth::AuthorizedApplicationsController < Doorkeeper::AuthorizedApplicationsController - before_action :set_title + include PageLayoutHelper + + layout 'profile' def destroy Doorkeeper::AccessToken.revoke_all_for(params[:id], current_resource_owner) redirect_to applications_profile_url, notice: I18n.t(:notice, scope: [:doorkeeper, :flash, :authorized_applications, :destroy]) end - - private - - def set_title - @title = "Profile" - @title_url = profile_path - @sidebar = "profile" - end end diff --git a/app/controllers/profiles/application_controller.rb b/app/controllers/profiles/application_controller.rb index 8373ff7a758..c8be288b9a0 100644 --- a/app/controllers/profiles/application_controller.rb +++ b/app/controllers/profiles/application_controller.rb @@ -1,11 +1,3 @@ class Profiles::ApplicationController < ApplicationController - before_action :set_title - - private - - def set_title - @title = "Profile" - @title_url = profile_path - @sidebar = "profile" - end + layout 'profile' end diff --git a/app/controllers/profiles/passwords_controller.rb b/app/controllers/profiles/passwords_controller.rb index 86976ae39e3..c780e0983f9 100644 --- a/app/controllers/profiles/passwords_controller.rb +++ b/app/controllers/profiles/passwords_controller.rb @@ -2,9 +2,10 @@ class Profiles::PasswordsController < Profiles::ApplicationController skip_before_action :check_password_expiration, only: [:new, :create] before_action :set_user - before_action :set_title before_action :authorize_change_password! + layout :determine_layout + def new end @@ -64,11 +65,11 @@ class Profiles::PasswordsController < Profiles::ApplicationController @user = current_user end - def set_title + def determine_layout if [:new, :create].include?(action_name.to_sym) - @title = "New password" + 'application' else - super + 'profile' end end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index da6b0c3c91a..dc430351551 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -6,7 +6,6 @@ class ProjectsController < ApplicationController # Authorize before_action :authorize_admin_project!, only: [:edit, :update, :destroy, :transfer, :archive, :unarchive] - before_action :set_title, only: [:new, :create] before_action :event_filter, only: :show layout :determine_layout @@ -160,10 +159,6 @@ class ProjectsController < ApplicationController private - def set_title - @title = 'New Project' - end - def determine_layout if [:new, :create].include?(action_name.to_sym) 'application' diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb index ba6f2a41fdc..4e2ea6c5710 100644 --- a/app/controllers/search_controller.rb +++ b/app/controllers/search_controller.rb @@ -1,7 +1,7 @@ class SearchController < ApplicationController include SearchHelper - before_action :set_title + layout 'search' def show return if params[:search].nil? || params[:search].blank? @@ -57,11 +57,4 @@ class SearchController < ApplicationController render json: search_autocomplete_opts(term).to_json end - - private - - def set_title - @title = "Search" - @title_url = search_path - end end diff --git a/app/controllers/snippets_controller.rb b/app/controllers/snippets_controller.rb index c960724b47a..cf672c5c093 100644 --- a/app/controllers/snippets_controller.rb +++ b/app/controllers/snippets_controller.rb @@ -7,10 +7,9 @@ class SnippetsController < ApplicationController # Allow destroy snippet before_action :authorize_admin_snippet!, only: [:destroy] - before_action :set_title - skip_before_action :authenticate_user!, only: [:index, :user_index, :show, :raw] + layout 'snippets' respond_to :html def index @@ -96,12 +95,6 @@ class SnippetsController < ApplicationController return render_404 unless can?(current_user, :admin_personal_snippet, @snippet) end - def set_title - @title = 'Snippets' - @title_url = snippets_path - @sidebar = "snippets" - end - def snippet_params params.require(:personal_snippet).permit(:title, :content, :file_name, :private, :visibility_level) end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 399e49e352d..6e86400a4f6 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -332,12 +332,4 @@ module ApplicationHelper end "#{entity_title}#{count}" end - - def page_title(*titles) - @page_title ||= [] - - @page_title.push(*titles.compact) if titles.any? - - @page_title.join(" | ") - end end diff --git a/app/helpers/page_layout_helper.rb b/app/helpers/page_layout_helper.rb new file mode 100644 index 00000000000..01b6a63552c --- /dev/null +++ b/app/helpers/page_layout_helper.rb @@ -0,0 +1,26 @@ +module PageLayoutHelper + def page_title(*titles) + @page_title ||= [] + + @page_title.push(*titles.compact) if titles.any? + + @page_title.join(" | ") + end + + def header_title(title = nil, title_url = nil) + if title + @header_title = title + @header_title_url = title_url + else + @header_title_url ? link_to(@header_title, @header_title_url) : @header_title + end + end + + def sidebar(name = nil) + if name + @sidebar = name + else + @sidebar + end + end +end diff --git a/app/views/groups/new.html.haml b/app/views/groups/new.html.haml index 6e17cdaef6f..edb882bea19 100644 --- a/app/views/groups/new.html.haml +++ b/app/views/groups/new.html.haml @@ -1,3 +1,5 @@ +- page_title 'New Group' +- header_title 'New Group' = form_for @group, html: { class: 'group-form form-horizontal' } do |f| - if @group.errors.any? .alert.alert-danger diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml new file mode 100644 index 00000000000..1c738719bd8 --- /dev/null +++ b/app/views/layouts/admin.html.haml @@ -0,0 +1,5 @@ +- page_title "Admin area" +- header_title "Admin area", admin_root_path +- sidebar "admin" + += render template: "layouts/application" diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index e0829d40bc4..a97feeb1ecd 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -1,13 +1,10 @@ -- page_title @title !!! 5 %html{ lang: "en"} = render "layouts/head" - %body{class: "#{app_theme} application", :'data-page' => body_data_page} - - title = defined?(@title_url) ? link_to(@title, @title_url) : @title - + %body{class: "#{app_theme}", :'data-page' => body_data_page} - if current_user - = render "layouts/head_panel", title: title + = render "layouts/head_panel", title: header_title - else - = render "layouts/public_head_panel", title: title + = render "layouts/public_head_panel", title: header_title - = render 'layouts/page', sidebar: @sidebar + = render 'layouts/page', sidebar: sidebar diff --git a/app/views/layouts/dashboard.html.haml b/app/views/layouts/dashboard.html.haml new file mode 100644 index 00000000000..c72eca10bf4 --- /dev/null +++ b/app/views/layouts/dashboard.html.haml @@ -0,0 +1,5 @@ +- page_title "Dashboard" +- header_title "Dashboard", root_path +- sidebar "dashboard" + += render template: "layouts/application" diff --git a/app/views/layouts/explore.html.haml b/app/views/layouts/explore.html.haml new file mode 100644 index 00000000000..56bb92a536e --- /dev/null +++ b/app/views/layouts/explore.html.haml @@ -0,0 +1,5 @@ +- page_title "Explore" +- header_title "Explore GitLab", explore_root_path +- sidebar "explore" + += render template: "layouts/application" diff --git a/app/views/layouts/group.html.haml b/app/views/layouts/group.html.haml new file mode 100644 index 00000000000..5edc03129d2 --- /dev/null +++ b/app/views/layouts/group.html.haml @@ -0,0 +1,5 @@ +- page_title @group.name +- header_title @group.name, group_path(@group) +- sidebar "group" + += render template: "layouts/application" diff --git a/app/views/layouts/help.html.haml b/app/views/layouts/help.html.haml new file mode 100644 index 00000000000..224b24befbe --- /dev/null +++ b/app/views/layouts/help.html.haml @@ -0,0 +1,4 @@ +- page_title "Help" +- header_title "Help", help_path + += render template: "layouts/application" diff --git a/app/views/layouts/profile.html.haml b/app/views/layouts/profile.html.haml new file mode 100644 index 00000000000..9799b4cc4d7 --- /dev/null +++ b/app/views/layouts/profile.html.haml @@ -0,0 +1,5 @@ +- page_title "Profile" +- header_title "Profile", profile_path +- sidebar "profile" + += render template: "layouts/application" diff --git a/app/views/layouts/project.html.haml b/app/views/layouts/project.html.haml index 62a6f5ddf4d..4aeb9d397d2 100644 --- a/app/views/layouts/project.html.haml +++ b/app/views/layouts/project.html.haml @@ -1,14 +1,8 @@ -- page_title @project.name_with_namespace -!!! 5 -%html{ lang: "en"} - = render "layouts/head" - %body{class: "#{app_theme} project", :'data-page' => body_data_page, :'data-project-id' => @project.id } - - title = project_title(@project) +- page_title @project.name_with_namespace +- header_title project_title(@project) +- sidebar "project" unless sidebar - - if current_user - = render "layouts/head_panel", title: project_title(@project) - = render "layouts/init_auto_complete" - - else - = render "layouts/public_head_panel", title: project_title(@project) - - = render 'layouts/page', sidebar: @sidebar || 'project' +- content_for :embedded_scripts do + = render "layouts/init_auto_complete" if current_user + += render template: "layouts/application" diff --git a/app/views/layouts/project_settings.html.haml b/app/views/layouts/project_settings.html.haml index d12d07273f3..43401668334 100644 --- a/app/views/layouts/project_settings.html.haml +++ b/app/views/layouts/project_settings.html.haml @@ -1,2 +1,4 @@ -- @sidebar = "project_settings" +- page_title "Settings" +- sidebar "project_settings" + = render template: "layouts/project" diff --git a/app/views/layouts/search.html.haml b/app/views/layouts/search.html.haml new file mode 100644 index 00000000000..fd4c7ad21a7 --- /dev/null +++ b/app/views/layouts/search.html.haml @@ -0,0 +1,4 @@ +- page_title "Search" +- header_title "Search", search_path + += render template: "layouts/application" diff --git a/app/views/layouts/snippets.html.haml b/app/views/layouts/snippets.html.haml new file mode 100644 index 00000000000..9b0f40073ab --- /dev/null +++ b/app/views/layouts/snippets.html.haml @@ -0,0 +1,5 @@ +- page_title 'Snippets' +- header_title 'Snippets', snippets_path +- sidebar "snippets" + += render template: "layouts/application" diff --git a/app/views/profiles/passwords/new.html.haml b/app/views/profiles/passwords/new.html.haml index 8bed6e0dbee..9c6204963e0 100644 --- a/app/views/profiles/passwords/new.html.haml +++ b/app/views/profiles/passwords/new.html.haml @@ -1,3 +1,5 @@ +- page_title "New Password" +- header_title "New Password" %h3.page-title Setup new password %hr = form_for @user, url: profile_password_path, method: :post, html: { class: 'form-horizontal '} do |f| diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml index 1fe6a24e89f..c09d794ef7f 100644 --- a/app/views/projects/edit.html.haml +++ b/app/views/projects/edit.html.haml @@ -1,4 +1,3 @@ -- page_title "Settings" .project-edit-container .project-edit-errors .project-edit-content diff --git a/app/views/projects/new.html.haml b/app/views/projects/new.html.haml index 47c69f89a97..e56d8615132 100644 --- a/app/views/projects/new.html.haml +++ b/app/views/projects/new.html.haml @@ -1,3 +1,5 @@ +- page_title 'New Project' +- header_title 'New Project' .project-edit-container .project-edit-errors = render 'projects/errors' -- cgit v1.2.3