Skip to content
This repository has been archived by the owner on Jan 23, 2021. It is now read-only.

Commit

Permalink
Refactoring: Not to use project setting tab but to use project menu.
Browse files Browse the repository at this point in the history
Related to #127
Update test code and css.
  • Loading branch information
akiko-pusu committed Feb 11, 2020
1 parent 0038f92 commit 5c0aba8
Show file tree
Hide file tree
Showing 11 changed files with 78 additions and 116 deletions.
17 changes: 13 additions & 4 deletions app/controllers/banner_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,24 @@ def project_banner_off
render action: '_project_banner_off', layout: false
end

def show
@banner = Banner.find_or_create(@project.id)
render layout: !request.xhr?
end

def edit
return if params[:setting].nil?

@banner = Banner.find_or_create(@project.id)
@banner.safe_attributes = banner_params
@banner.save
flash[:notice] = l(:notice_successful_update)
redirect_to controller: 'projects',
action: 'settings', id: @project, tab: 'banner'

if @banner.save
flash[:notice] = l(:notice_successful_update)
else
flash[:error] = @banner.errors.messages
end
redirect_to action: 'show'
nil
end

private
Expand Down
47 changes: 47 additions & 0 deletions app/views/banner/show.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<% banner = @banner %>

<%= form_tag({ action: 'edit' }, id: 'banner') do %>

<div id="banner_setting'>
<%= error_messages_for 'banner' %>
<div class='box tabular'>
<p>
<%= content_tag(:label, l(:button_activate))%>
<%= hidden_field_tag('setting[enabled]', false).html_safe %>
<%= check_box_tag 'setting[enabled]', true, banner['enabled'] %>
</p>
<p>
<%= content_tag(:label, l(:label_message_type))%>
<%= radio_button_tag 'setting[style]', 'info', banner['style'] == 'info' %> <span class="banner_info'>Info</span><br/>
<%= radio_button_tag 'setting[style]', 'warn', banner['style'] == 'warn' %> <span class='banner_warn'>Warn</span><br/>
<%= radio_button_tag 'setting[style]', 'alert', banner['style'] == 'alert' %> <span class='banner_alert'>Alert </span><br/>
<%= radio_button_tag 'setting[style]', 'normal', banner['style'] == 'normal' %> <span class='banner_normal'>Normal </span><br/>
<%= radio_button_tag 'setting[style]', 'nodata', banner['style'] == 'nodata' %> <span class='banner_normal'>Nodata (Like Redmine.org style) </span>
</p>

<p>
<%= content_tag(:label, l(:setting_banner_display_part))%>
<%= select_tag('setting[display_part]',
options_for_select([[l(:page_overview_only), 'overview'],
[l(:page_new_issue_only), 'new_issue'],
[l(:page_overview_and_issues), 'overview_and_issues'], [l(:page_all), 'all']],
banner['display_part'])) %>
<br/>Now project banner is displayed at the top only, but you can select which page to show banner.
</p>

<p>
<%=content_tag(:label, l(:label_banner_message)) %>
<%= text_area_tag 'setting[banner_description]', banner['banner_description'], size: '40x3',
class: 'wiki-edit', required: true %><br/>
<%= wikitoolbar_for "setting_banner_description" %>

<div id='banner_description_preview' class='wiki'></div>

</div>
<%= submit_tag l(:button_save) %>

<% end %>
</div>

2 changes: 1 addition & 1 deletion assets/stylesheets/banner.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.banner {
div.banner {
border: 1px solid;
margin: 2px 0;
padding: 2px 20px;
Expand Down
6 changes: 3 additions & 3 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
end

resources :projects do
resources :banner do
patch 'edit', on: :member
put 'edit', on: :collection
resources :banner, only: %i[show] do
get '/', to: 'banner#show', on: :collection
post '/', to: 'banner#edit', on: :collection
post 'project_banner_off', on: :collection
get 'project_banner_off', on: :collection
end
Expand Down
7 changes: 6 additions & 1 deletion init.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
require 'redmine'
require_relative 'app/models/global_banner'
require 'banners/application_hooks'
require 'banners/projects_helper_patch'

# NOTE: Keep error message for a while to support Redmine3.x users.
def banner_version_message(original_message = nil)
Expand All @@ -21,6 +20,10 @@ def banner_admin?
GlobalBanner.banner_admin?(User.current)
end

def project_menu_allowed?
proc { |p| User.current.allowed_to?({ controller: 'banner', action: 'show' }, p) }
end

Redmine::Plugin.register :redmine_banner do
begin
name 'Redmine Banner plugin'
Expand All @@ -37,6 +40,8 @@ def banner_admin?
menu :top_menu, :redmine_banner, { controller: 'global_banner', action: 'show', "id": nil }, caption: :banner,
last: true,
if: proc { banner_admin? }
menu :project_menu, :banner, { controller: 'banner', action: 'show', "id": nil },
caption: :banner, param: :project_id, after: :settings, if: project_menu_allowed?

project_module :banner do
permission :manage_banner, { banner: %I[show edit project_banner_off] }, require: :member
Expand Down
31 changes: 0 additions & 31 deletions lib/banners/projects_helper_patch.rb

This file was deleted.

2 changes: 1 addition & 1 deletion test/controller/api_global_banner_controller_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def test_routing
def test_get_global_banner_when_api_disable
Setting.rest_api_enabled = '0'
get '/banners/api/global_banner.json', headers: { 'X-Redmine-API-Key' => @user.api_key }
assert_response 403
assert_response :forbidden
end

def test_get_global_banner_when_api_enable
Expand Down
3 changes: 1 addition & 2 deletions test/functional/banner_controller_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,7 @@ def test_redirect_post
setting: { enabled: '1', description: 'Edit test',
display_part: 'all', style: 'alert' } }
assert_response :redirect
assert_redirected_to controller: 'projects',
action: 'settings', id: @project, tab: 'banner'
assert_redirected_to controller: 'banner', action: 'show'
end

def test_return_success_when_banner_off_with_manage_permission
Expand Down
14 changes: 4 additions & 10 deletions test/functional/projects_controller_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,26 +28,20 @@ def setup
@banner.save!
end

def test_settings
get :settings, params: { id: 1 }
assert_response :success
assert_select 'a#tab-banner'
assert_select 'div#project_banner_area div.banner_info', false,
'Banner should be displayed Overview only.'
end

# project 1 is enabled banner and type is info, display_part is overview only.
def test_show_overview
get :show, params: { id: 1 }
assert_response :success
assert_select 'div#project_banner_area div.banner_info'
assert_select '#main-menu ul li a.banner'
assert_select 'div#project_banner_area div.banner_info', true,
'Banner should be displayed Overview only.'
end

def test_show_all
@banner.display_part = 'all'
@banner.style = 'warn'
@banner.save!
get :settings, params: { id: 1 }
get :show, params: { id: 1 }
assert_response :success
assert_select 'div#project_banner_area div.banner_warn'
end
Expand Down
4 changes: 2 additions & 2 deletions test/integration/layout_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ def test_project_banner_visible_when_module_on
get '/projects/ecookbook/issues'
assert_select 'div#project_banner_area div.banner_info', 0

put '/projects/ecookbook/banner/edit',
params: { setting: { enabled: '1', style: 'warn', display_part: 'all', banner_description: 'Test banner message.' }, project_id: 'ecookbook' }
post '/projects/ecookbook/banner',
params: { setting: { enabled: '1', style: 'warn', display_part: 'all', banner_description: 'Test banner message.' }, project_id: 'ecookbook' }
assert_response :redirect

get '/projects/ecookbook/issues'
Expand Down
61 changes: 0 additions & 61 deletions test/unit/projects_helper_patch_test.rb

This file was deleted.

0 comments on commit 5c0aba8

Please sign in to comment.