Add helpers for header title and sidebar, and move setting those from controllers to layouts.

This commit is contained in:
Douwe Maan 2015-05-01 10:39:11 +02:00
parent ae09c2a6db
commit 92fd3ccee0
33 changed files with 112 additions and 129 deletions

View file

@ -8,7 +8,6 @@ class Dispatcher
initPageScripts: ->
page = $('body').attr('data-page')
project_id = $('body').attr('data-project-id')
unless page
return false

View file

@ -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

View file

@ -3,6 +3,7 @@ require 'gon'
class ApplicationController < ActionController::Base
include Gitlab::CurrentSettings
include GitlabRoutingHelper
include PageLayoutHelper
PER_PAGE = 20

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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'

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,5 @@
- page_title "Admin area"
- header_title "Admin area", admin_root_path
- sidebar "admin"
= render template: "layouts/application"

View file

@ -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

View file

@ -0,0 +1,5 @@
- page_title "Dashboard"
- header_title "Dashboard", root_path
- sidebar "dashboard"
= render template: "layouts/application"

View file

@ -0,0 +1,5 @@
- page_title "Explore"
- header_title "Explore GitLab", explore_root_path
- sidebar "explore"
= render template: "layouts/application"

View file

@ -0,0 +1,5 @@
- page_title @group.name
- header_title @group.name, group_path(@group)
- sidebar "group"
= render template: "layouts/application"

View file

@ -0,0 +1,4 @@
- page_title "Help"
- header_title "Help", help_path
= render template: "layouts/application"

View file

@ -0,0 +1,5 @@
- page_title "Profile"
- header_title "Profile", profile_path
- sidebar "profile"
= render template: "layouts/application"

View file

@ -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"

View file

@ -1,2 +1,4 @@
- @sidebar = "project_settings"
- page_title "Settings"
- sidebar "project_settings"
= render template: "layouts/project"

View file

@ -0,0 +1,4 @@
- page_title "Search"
- header_title "Search", search_path
= render template: "layouts/application"

View file

@ -0,0 +1,5 @@
- page_title 'Snippets'
- header_title 'Snippets', snippets_path
- sidebar "snippets"
= render template: "layouts/application"

View file

@ -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|

View file

@ -1,4 +1,3 @@
- page_title "Settings"
.project-edit-container
.project-edit-errors
.project-edit-content

View file

@ -1,3 +1,5 @@
- page_title 'New Project'
- header_title 'New Project'
.project-edit-container
.project-edit-errors
= render 'projects/errors'