Skip to content

Commit

Permalink
[gui] Move plugin settings under "settings" tab
Browse files Browse the repository at this point in the history
This will save a bit Redmine menu bar space by moving
"new issue alert" tab under Project->Settings->Email on New Issue

Permission got reworked so editing/creating new issue alert
implies being allowed to view them.

Setting tab is implemented based on "redmine settings" plugin:
http://projects.andriylesyuk.com/projects/redmine-settings/wiki
  • Loading branch information
chantra committed Jul 25, 2011
1 parent dc7cd7a commit d2fe17e
Show file tree
Hide file tree
Showing 8 changed files with 78 additions and 26 deletions.
2 changes: 2 additions & 0 deletions Changelog
Expand Up @@ -3,9 +3,11 @@
* Remove support for redmine 0.8
* Fixes:
* showing %s instead of project name
* make sure that view alerts is allowed for people that can create/edit them
* Features:
* Dont send notification for private issues (tks jbutz)
* Allow setting Email priority (fixes GH#6)
* Move NIA settings under Project->Settings->Email on New Issue

0.0.2 (2009-08-01):
* Improved documentation and licensing
Expand Down
12 changes: 4 additions & 8 deletions app/controllers/newissuealerts_controller.rb
Expand Up @@ -2,11 +2,7 @@ class NewissuealertsController < ApplicationController
unloadable
before_filter :find_project, :authorize, :only => [:index, :new, :edit]
def index
@newissuealerts = Newissuealert.find(:all, :conditions => { :project_id => @project.id } )
@projects = []
Project.all.each do |proj|
@projects[proj.id] = proj
end
render('projects/settings/_newissuealerts')
end

def new
Expand All @@ -24,7 +20,7 @@ def new
else
flash.now[:error] = l(:newissuealerts_creation_failed)
end
redirect_to :action => 'index', :project_id => @project.identifier
redirect_to :controller => "projects", :action => 'settings', :id => @project.identifier, :tab => 'newissuealerts'
end
end

Expand All @@ -44,9 +40,9 @@ def edit
flash.now[:error] = l(:newissuealerts_save_failed)
end
end
redirect_to :action => 'index', :project_id => @project.identifier
end
redirect_to :controller => "projects", :action => 'settings', :id => @project.identifier, :tab => 'newissuealerts'
end
end


private
Expand Down
2 changes: 1 addition & 1 deletion app/views/newissuealerts/edit.html.erb
@@ -1,5 +1,5 @@
<h2><%= l(:newissuealerts_edit, :project => @project.name) %></h2>
<% form_for :newissuealert, @newissuealert , :url => { :project_id => @project.id }do |f| %>
<% form_for :newissuealert, @newissuealert , :url => { :project_id => @project.identifier, :id => @newissuealert.id }do |f| %>
<%= f.error_messages %>
<div class="box tabular settings">
<p>
Expand Down
12 changes: 0 additions & 12 deletions app/views/newissuealerts/index.html.erb

This file was deleted.

21 changes: 21 additions & 0 deletions app/views/projects/settings/_newissuealerts.erb
@@ -0,0 +1,21 @@
<% can_new = User.current.allowed_to?(:new_newissuealerts, @project)
can_edit = User.current.allowed_to?(:edit_newissuealerts, @project)
%>
<h2><%= l(:newissuealerts_index, :project => @project.name) %></h2>
<% if can_new %>
<p>
<%= link_to(l(:newissuealerts_text), {:controller => 'newissuealerts', :action => 'new', :project_id => @project.identifier}, :class => 'icon icon-add' ) %>
</p>
<% end %>
<% @newissuealerts = Newissuealert.find(:all, :conditions => { :project_id => @project.id } ) %>
<% for newissuealert in @newissuealerts %>
<div class="box tabular settings">
<p><label><%= l(:email_addresses) %>:</label> <%= newissuealert.mail_addresses %></p>
<p><label><%= l(:enabled) %>:</label> <%= newissuealert.enabled ? l(:general_text_yes) : l(:general_text_no) %></p>
<p><label><%= l(:newissuealerts_set_priority) %>:</label> <%= newissuealert.priority ? l(:general_text_yes) : l(:general_text_no) %></p>
<% if can_edit %>
<p><%= link_to l(:edit_delete), {:controller => 'newissuealerts', :action => 'edit', :id => newissuealert.id, :project_id => @project.identifier } %></p>
<% end %>
</div>
<% end %>

18 changes: 13 additions & 5 deletions init.rb
Expand Up @@ -9,8 +9,16 @@
unless Issue.included_modules.include? RedmineNewissuealerts::IssuePatch
Issue.send(:include, RedmineNewissuealerts::IssuePatch)
end

require_dependency 'projects_helper'
unless ProjectsHelper.included_modules.include? RedmineNewissuealerts::ProjectsHelperPatch
ProjectsHelper.send(:include, RedmineNewissuealerts::ProjectsHelperPatch)
end
end

# It requires the file in lib/redmine_newissuealerts/hooks.rb
require_dependency 'redmine_newissuealerts/hooks'

Redmine::Plugin.register :redmine_newissuealerts do
name 'Redmine Newissuealerts plugin'
author 'Emmanuel Bretelle'
Expand All @@ -27,12 +35,12 @@
#
# The commented line will make all elements public
#permission :newissuealerts, {:newissuealerts => [:index, :edit, :new]}, :public => true
permission :view_newissuealerts, :newissuealerts => :index
permission :edit_newissuealerts, :newissuealerts => :edit
permission :new_newissuealerts, :newissuealerts => :new
#permission :view_newissuealerts, :newissuealerts => :index
permission :edit_newissuealerts, {:projects => :settings, :newissuealerts => [:index, :edit]}, :require => :member
permission :new_newissuealerts, {:projects => :settings, :newissuealerts => [:index, :new]}, :require => :member
permission :view_newissuealerts, {:projects => :settings, :newissuealerts => :index}, :require => :member
end

# A new item is added to the project menu
#menu :project_menu, :newissuealerts, { :controller => 'newissuealerts', :action => 'index' }, :caption => 'New Issue Alerts', :after => :activity, :param => :project_id
menu :project_menu, :newissuealerts, { :controller => 'newissuealerts', :action => 'index' }, :caption => :newissuealert_menuitem, :param => :project_id
#menu :project_menu, :newissuealerts, { :controller => 'newissuealerts', :action => 'index' }, :caption => :newissuealert_menuitem, :param => :project_id
end
13 changes: 13 additions & 0 deletions lib/redmine_newissuealerts/hooks.rb
@@ -0,0 +1,13 @@
module RedmineNewissuealerts
class Hooks < Redmine::Hook::ViewListener
def newissuealerts_settings_tabs(context = {})
@project = context[:project]
if @project.module_enabled?('newissuealerts') and User.current.allowed_to?({:controller => :newissuealerts, :action => :index}, context[:project])
context[:tabs].push({ :name => 'newissuealerts',
:action => :view_newissuealerts,
:partial => 'projects/settings/newissuealerts',
:label => :newissuealert_menuitem})
end
end
end
end
24 changes: 24 additions & 0 deletions lib/redmine_newissuealerts/projects_helper_patch.rb
@@ -0,0 +1,24 @@

module RedmineNewissuealerts
module ProjectsHelperPatch
def self.included(base)
base.extend(ClassMethods)
base.send(:include, InstanceMethods)
base.class_eval do
unloadable
alias_method_chain :project_settings_tabs, :hook
end
end

module ClassMethods
end

module InstanceMethods
def project_settings_tabs_with_hook
tabs = project_settings_tabs_without_hook
call_hook(:newissuealerts_settings_tabs, { :tabs => tabs })
return tabs
end
end
end
end

0 comments on commit d2fe17e

Please sign in to comment.