diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-09-14 11:34:08 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-09-14 11:34:08 +0000 |
commit | 21c97c6a1376a38a3951c57069317c17c81029f8 (patch) | |
tree | 8d38f129585767d4c1eb2c78d0b9b978aff14d70 /app/views/projects | |
parent | 29348fafb7ca43cb00ef80f29e61167647df0cd8 (diff) | |
download | redmine-21c97c6a1376a38a3951c57069317c17c81029f8.tar.gz redmine-21c97c6a1376a38a3951c57069317c17c81029f8.zip |
Added project module concept.
A project module (eg. issue tracking, news, wiki,...) is a set of permissions that can enabled/disabled at project level.
For each project, modules can be enabled on the project settings view ('Modules' tab).
This requires a specific permission: 'Select project modules' (if this permission is turned off, only Redmine administrators can choose which modules a project uses).
When applying this migration, all modules are enabled for all existing projects.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@725 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/views/projects')
-rw-r--r-- | app/views/projects/_edit.rhtml | 4 | ||||
-rw-r--r-- | app/views/projects/_form.rhtml | 26 | ||||
-rw-r--r-- | app/views/projects/_repository.rhtml | 3 | ||||
-rw-r--r-- | app/views/projects/add.rhtml | 11 | ||||
-rw-r--r-- | app/views/projects/settings.rhtml | 82 | ||||
-rw-r--r-- | app/views/projects/settings/_boards.rhtml (renamed from app/views/projects/_boards.rhtml) | 0 | ||||
-rw-r--r-- | app/views/projects/settings/_issue_categories.rhtml | 22 | ||||
-rw-r--r-- | app/views/projects/settings/_members.rhtml (renamed from app/views/projects/_members.rhtml) | 4 | ||||
-rw-r--r-- | app/views/projects/settings/_modules.rhtml | 14 | ||||
-rw-r--r-- | app/views/projects/settings/_repository.rhtml | 20 | ||||
-rw-r--r-- | app/views/projects/settings/_versions.rhtml | 25 | ||||
-rw-r--r-- | app/views/projects/settings/_wiki.rhtml | 18 | ||||
-rw-r--r-- | app/views/projects/show.rhtml | 2 |
13 files changed, 124 insertions, 107 deletions
diff --git a/app/views/projects/_edit.rhtml b/app/views/projects/_edit.rhtml new file mode 100644 index 000000000..b7c2987d2 --- /dev/null +++ b/app/views/projects/_edit.rhtml @@ -0,0 +1,4 @@ +<% labelled_tabular_form_for :project, @project, :url => { :action => "edit", :id => @project } do |f| %> +<%= render :partial => 'form', :locals => { :f => f } %> +<%= submit_tag l(:button_save) %> +<% end %> diff --git a/app/views/projects/_form.rhtml b/app/views/projects/_form.rhtml index 7edf17e30..aa30f1eaa 100644 --- a/app/views/projects/_form.rhtml +++ b/app/views/projects/_form.rhtml @@ -28,32 +28,6 @@ <!--[eoform:project]--> </div> -<div class="box"> - <h3><%= check_box_tag "repository_enabled", 1, !@project.repository.nil?, :onclick => "Element.toggle('repository');" %> <%= l(:label_repository) %></h3> - <%= hidden_field_tag "repository_enabled", 0 %> - <div id="repository"> - <p class="tabular"><label>SCM</label><%= scm_select_tag %></p> - <div id="repository_fields"> - <%= render :partial => 'projects/repository', :locals => {:repository => @project.repository} if @project.repository %> - </div> - </div> -</div> -<%= javascript_tag "Element.hide('repository');" if @project.repository.nil? %> - -<div class="box"> -<h3><%= check_box_tag "wiki_enabled", 1, !@project.wiki.nil?, :onclick => "Element.toggle('wiki');" %> <%= l(:label_wiki) %></h3> -<%= hidden_field_tag "wiki_enabled", 0 %> -<div id="wiki"> -<% fields_for :wiki, @project.wiki, { :builder => TabularFormBuilder, :lang => current_language} do |wiki| %> -<p><%= wiki.text_field :start_page, :size => 60, :required => true %><br /><em><%= l(:text_unallowed_characters) %>: , . / ? ; : |</em></p> -<% # content_tag("div", "", :id => "wiki_start_page_auto_complete", :class => "auto_complete") + - # auto_complete_field("wiki_start_page", { :url => { :controller => 'wiki', :action => 'auto_complete_for_wiki_page', :id => @project } }) -%> -<% end %> -</div> -<%= javascript_tag "Element.hide('wiki');" if @project.wiki.nil? %> -</div> - <% content_for :header_tags do %> <%= javascript_include_tag 'calendar/calendar' %> <%= javascript_include_tag "calendar/lang/calendar-#{current_language}.js" %> diff --git a/app/views/projects/_repository.rhtml b/app/views/projects/_repository.rhtml deleted file mode 100644 index 6f79c615f..000000000 --- a/app/views/projects/_repository.rhtml +++ /dev/null @@ -1,3 +0,0 @@ -<% fields_for :repository, repository, { :builder => TabularFormBuilder, :lang => current_language} do |f| %> -<%= repository_field_tags(f, repository) %> -<% end %> diff --git a/app/views/projects/add.rhtml b/app/views/projects/add.rhtml index bafbf9145..4818cae4a 100644 --- a/app/views/projects/add.rhtml +++ b/app/views/projects/add.rhtml @@ -2,5 +2,14 @@ <% labelled_tabular_form_for :project, @project, :url => { :action => "add" } do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> + +<div class="box"> +<p><label><%= l(:label_module_plural) %></label> +<% Redmine::AccessControl.available_project_modules.each do |m| %> +<%= check_box_tag 'enabled_modules[]', m, @project.module_enabled?(m) %> <%= m.to_s.humanize %> +<% end %></p> +</div> + + <%= submit_tag l(:button_save) %> -<% end %>
\ No newline at end of file +<% end %> diff --git a/app/views/projects/settings.rhtml b/app/views/projects/settings.rhtml index 410b72e77..13359de61 100644 --- a/app/views/projects/settings.rhtml +++ b/app/views/projects/settings.rhtml @@ -2,83 +2,15 @@ <div class="tabs"> <ul> -<li><%= link_to l(:label_information_plural), {}, :id=> "tab-info", :onclick => "showTab('info'); this.blur(); return false;" %></li> -<li><%= link_to l(:label_member_plural), {}, :id=> "tab-members", :onclick => "showTab('members'); this.blur(); return false;" %></li> -<li><%= link_to l(:label_version_plural), {}, :id=> "tab-versions", :onclick => "showTab('versions'); this.blur(); return false;" %></li> -<li><%= link_to l(:label_issue_category_plural), {}, :id=> "tab-categories", :onclick => "showTab('categories'); this.blur(); return false;" %></li> -<li><%= link_to l(:label_board_plural), {}, :id=> "tab-boards", :onclick => "showTab('boards'); this.blur(); return false;" %></li> -</ul> -</div> - -<div id="tab-content-info" class="tab-content"> -<% if authorize_for('projects', 'edit') %> - <% labelled_tabular_form_for :project, @project, :url => { :action => "edit", :id => @project } do |f| %> - <%= render :partial => 'form', :locals => { :f => f } %> - <%= submit_tag l(:button_save) %> - <% end %> +<% project_settings_tabs.each do |tab| %> + <li><%= link_to l(tab[:label]), {}, :id => "tab-#{tab[:name]}", :onclick => "showTab('#{tab[:name]}'); this.blur(); return false;" %></li> <% end %> +</ul> </div> -<div id="tab-content-members" class="tab-content" style="display:none;"> - <%= render :partial => 'members' %> -</div> - -<div id="tab-content-versions" class="tab-content" style="display:none;"> -<table class="list"> - <thead> - <th><%= l(:label_version) %></th> - <th><%= l(:field_effective_date) %></th> - <th><%= l(:field_description) %></th> - <th><%= l(:label_wiki_page) unless @project.wiki.nil? %></th> - <th style="width:15%"></th> - <th style="width:15%"></th> - </thead> - <tbody> -<% for version in @project.versions.sort %> - <tr class="<%= cycle 'odd', 'even' %>"> - <td><%=h version.name %></td> - <td align="center"><%= format_date(version.effective_date) %></td> - <td><%=h version.description %></td> - <td><%= link_to(version.wiki_page_title, :controller => 'wiki', :page => Wiki.titleize(version.wiki_page_title)) unless version.wiki_page_title.blank? || @project.wiki.nil? %></td> - <td align="center"><small><%= link_to_if_authorized l(:button_edit), { :controller => 'versions', :action => 'edit', :id => version }, :class => 'icon icon-edit' %></small></td> - <td align="center"><small><%= link_to_if_authorized l(:button_delete), {:controller => 'versions', :action => 'destroy', :id => version}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %></small></td> - </td> - </tr> -<% end; reset_cycle %> - </tbody> -</table> - -<p><%= link_to_if_authorized l(:label_version_new), :controller => 'projects', :action => 'add_version', :id => @project %></p> -</div> - -<div id="tab-content-categories" class="tab-content" style="display:none;"> -<table class="list"> - <thead> - <th><%= l(:label_issue_category) %></th> - <th><%= l(:field_assigned_to) %></th> - <th style="width:15%"></th> - <th style="width:15%"></th> - </thead> - <tbody> -<% for category in @project.issue_categories %> - <% unless category.new_record? %> - <tr class="<%= cycle 'odd', 'even' %>"> - <td><%=h(category.name) %></td> - <td><%=h(category.assigned_to.name) if category.assigned_to %></td> - <td align="center"><small><%= link_to_if_authorized l(:button_edit), { :controller => 'issue_categories', :action => 'edit', :id => category }, :class => 'icon icon-edit' %></small></td> - <td align="center"><small><%= link_to_if_authorized l(:button_delete), {:controller => 'issue_categories', :action => 'destroy', :id => category}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %></small></td> - </tr> - <% end %> +<% project_settings_tabs.each do |tab| %> +<%= content_tag('div', render(:partial => tab[:partial]), :id => "tab-content-#{tab[:name]}", :class => 'tab-content') %> <% end %> - </tbody> -</table> - -<p><%= link_to_if_authorized l(:label_issue_category_new), :controller => 'projects', :action => 'add_issue_category', :id => @project %></p> -</div> - -<div id="tab-content-boards" class="tab-content" style="display:none;"> - <%= render :partial => 'boards' %> -</div> -<%= tab = params[:tab] ? h(params[:tab]) : 'info' -javascript_tag "showTab('#{tab}');" %>
\ No newline at end of file +<%= tab = params[:tab] ? h(params[:tab]) : project_settings_tabs.first[:name] +javascript_tag "showTab('#{tab}');" %> diff --git a/app/views/projects/_boards.rhtml b/app/views/projects/settings/_boards.rhtml index e3f4629c1..e3f4629c1 100644 --- a/app/views/projects/_boards.rhtml +++ b/app/views/projects/settings/_boards.rhtml diff --git a/app/views/projects/settings/_issue_categories.rhtml b/app/views/projects/settings/_issue_categories.rhtml new file mode 100644 index 000000000..bad330e20 --- /dev/null +++ b/app/views/projects/settings/_issue_categories.rhtml @@ -0,0 +1,22 @@ +<table class="list"> + <thead> + <th><%= l(:label_issue_category) %></th> + <th><%= l(:field_assigned_to) %></th> + <th style="width:15%"></th> + <th style="width:15%"></th> + </thead> + <tbody> +<% for category in @project.issue_categories %> + <% unless category.new_record? %> + <tr class="<%= cycle 'odd', 'even' %>"> + <td><%=h(category.name) %></td> + <td><%=h(category.assigned_to.name) if category.assigned_to %></td> + <td align="center"><small><%= link_to_if_authorized l(:button_edit), { :controller => 'issue_categories', :action => 'edit', :id => category }, :class => 'icon icon-edit' %></small></td> + <td align="center"><small><%= link_to_if_authorized l(:button_delete), {:controller => 'issue_categories', :action => 'destroy', :id => category}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %></small></td> + </tr> + <% end %> +<% end %> + </tbody> +</table> + +<p><%= link_to_if_authorized l(:label_issue_category_new), :controller => 'projects', :action => 'add_issue_category', :id => @project %></p> diff --git a/app/views/projects/_members.rhtml b/app/views/projects/settings/_members.rhtml index affaf7854..1cd69bdfe 100644 --- a/app/views/projects/_members.rhtml +++ b/app/views/projects/settings/_members.rhtml @@ -33,8 +33,8 @@ </table> -<% if authorize_for('projects', 'add_member') && !users.empty? %> - <% remote_form_for(:member, @member, :url => {:controller => 'projects', :action => 'add_member', :tab => 'members', :id => @project}, :method => :post) do |f| %> +<% if authorize_for('members', 'new') && !users.empty? %> + <% remote_form_for(:member, @member, :url => {:controller => 'members', :action => 'new', :id => @project}, :method => :post) do |f| %> <p><label for="member_user_id"><%=l(:label_member_new)%></label><br /> <%= f.select :user_id, users.collect{|user| [user.name, user.id]} %> <%= l(:label_role) %>: <%= f.select :role_id, roles.collect{|role| [role.name, role.id]}, :selected => nil %> diff --git a/app/views/projects/settings/_modules.rhtml b/app/views/projects/settings/_modules.rhtml new file mode 100644 index 000000000..9916225b0 --- /dev/null +++ b/app/views/projects/settings/_modules.rhtml @@ -0,0 +1,14 @@ +<% form_for :project, @project, + :url => { :action => 'modules', :id => @project }, + :html => {:id => 'modules-form'} do |f| %> + +<div class=box> +<% Redmine::AccessControl.available_project_modules.each do |m| %> +<p><label><%= check_box_tag 'enabled_modules[]', m, @project.module_enabled?(m) %> <%= m.to_s.humanize %></label></p> +<% end %> +</div> + +<p><%= check_all_links 'modules-form' %></p> +<p><%= submit_tag l(:button_save) %></p> + +<% end %> diff --git a/app/views/projects/settings/_repository.rhtml b/app/views/projects/settings/_repository.rhtml new file mode 100644 index 000000000..10530a296 --- /dev/null +++ b/app/views/projects/settings/_repository.rhtml @@ -0,0 +1,20 @@ +<% remote_form_for :repository, @repository, + :url => { :controller => 'repositories', :action => 'edit', :id => @project }, + :builder => TabularFormBuilder do |f| %> + +<%= error_messages_for 'repository' %> + +<div class="box tabular"> +<p><label>SCM</label><%= scm_select_tag(@repository) %></p> +<%= repository_field_tags(f, @repository) if @repository %> +</div> + +<div class="contextual"> +<%= link_to(l(:button_delete), {:controller => 'repositories', :action => 'destroy', :id => @project}, + :confirm => l(:text_are_you_sure), + :method => :post, + :class => 'icon icon-del') if @repository && !@repository.new_record? %> +</div> + +<%= submit_tag((@repository.nil? || @repository.new_record?) ? l(:button_create) : l(:button_save)) %> +<% end %> diff --git a/app/views/projects/settings/_versions.rhtml b/app/views/projects/settings/_versions.rhtml new file mode 100644 index 000000000..a710a847d --- /dev/null +++ b/app/views/projects/settings/_versions.rhtml @@ -0,0 +1,25 @@ +<table class="list"> + <thead> + <th><%= l(:label_version) %></th> + <th><%= l(:field_effective_date) %></th> + <th><%= l(:field_description) %></th> + <th><%= l(:label_wiki_page) unless @project.wiki.nil? %></th> + <th style="width:15%"></th> + <th style="width:15%"></th> + </thead> + <tbody> +<% for version in @project.versions.sort %> + <tr class="<%= cycle 'odd', 'even' %>"> + <td><%=h version.name %></td> + <td align="center"><%= format_date(version.effective_date) %></td> + <td><%=h version.description %></td> + <td><%= link_to(version.wiki_page_title, :controller => 'wiki', :page => Wiki.titleize(version.wiki_page_title)) unless version.wiki_page_title.blank? || @project.wiki.nil? %></td> + <td align="center"><small><%= link_to_if_authorized l(:button_edit), { :controller => 'versions', :action => 'edit', :id => version }, :class => 'icon icon-edit' %></small></td> + <td align="center"><small><%= link_to_if_authorized l(:button_delete), {:controller => 'versions', :action => 'destroy', :id => version}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %></small></td> + </td> + </tr> +<% end; reset_cycle %> + </tbody> +</table> + +<p><%= link_to_if_authorized l(:label_version_new), :controller => 'projects', :action => 'add_version', :id => @project %></p> diff --git a/app/views/projects/settings/_wiki.rhtml b/app/views/projects/settings/_wiki.rhtml new file mode 100644 index 000000000..267c077e1 --- /dev/null +++ b/app/views/projects/settings/_wiki.rhtml @@ -0,0 +1,18 @@ +<% remote_form_for :wiki, @wiki, + :url => { :controller => 'wikis', :action => 'edit', :id => @project }, + :builder => TabularFormBuilder do |f| %> + +<%= error_messages_for 'wiki' %> + +<div class="box tabular"> +<p><%= f.text_field :start_page, :size => 60, :required => true %><br /> +<em><%= l(:text_unallowed_characters) %>: , . / ? ; : |</em></p> +</div> + +<div class="contextual"> +<%= link_to(l(:button_delete), {:controller => 'wikis', :action => 'destroy', :id => @project}, + :class => 'icon icon-del') if @wiki && !@wiki.new_record? %> +</div> + +<%= submit_tag((@wiki.nil? || @wiki.new_record?) ? l(:button_create) : l(:button_save)) %> +<% end %> diff --git a/app/views/projects/show.rhtml b/app/views/projects/show.rhtml index f0a09fc9a..e5234f2f7 100644 --- a/app/views/projects/show.rhtml +++ b/app/views/projects/show.rhtml @@ -19,6 +19,7 @@ <% end %> </ul> + <% if User.current.allowed_to?(:view_issues, @project) %> <div class="box"> <div class="contextual"><% if authorize_for('projects', 'add_issue') %><%= l(:label_issue_new) %>: <%= new_issue_selector %><% end %></div> <h3 class="icon22 icon22-tracker"><%=l(:label_issue_tracking)%></h3> @@ -33,6 +34,7 @@ </ul> <p class="textcenter"><small><%= link_to l(:label_issue_view_all), :controller => 'projects', :action => 'list_issues', :id => @project, :set_filter => 1 %></small></p> </div> + <% end %> </div> <div class="splitcontentright"> |