From 21c97c6a1376a38a3951c57069317c17c81029f8 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Fri, 14 Sep 2007 11:34:08 +0000 Subject: 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 --- app/views/projects/_boards.rhtml | 24 ------- app/views/projects/_edit.rhtml | 4 ++ app/views/projects/_form.rhtml | 26 ------- app/views/projects/_members.rhtml | 43 ------------ app/views/projects/_repository.rhtml | 3 - app/views/projects/add.rhtml | 11 ++- app/views/projects/settings.rhtml | 82 ++-------------------- app/views/projects/settings/_boards.rhtml | 24 +++++++ .../projects/settings/_issue_categories.rhtml | 22 ++++++ app/views/projects/settings/_members.rhtml | 43 ++++++++++++ app/views/projects/settings/_modules.rhtml | 14 ++++ app/views/projects/settings/_repository.rhtml | 20 ++++++ app/views/projects/settings/_versions.rhtml | 25 +++++++ app/views/projects/settings/_wiki.rhtml | 18 +++++ app/views/projects/show.rhtml | 2 + 15 files changed, 189 insertions(+), 172 deletions(-) delete mode 100644 app/views/projects/_boards.rhtml create mode 100644 app/views/projects/_edit.rhtml delete mode 100644 app/views/projects/_members.rhtml delete mode 100644 app/views/projects/_repository.rhtml create mode 100644 app/views/projects/settings/_boards.rhtml create mode 100644 app/views/projects/settings/_issue_categories.rhtml create mode 100644 app/views/projects/settings/_members.rhtml create mode 100644 app/views/projects/settings/_modules.rhtml create mode 100644 app/views/projects/settings/_repository.rhtml create mode 100644 app/views/projects/settings/_versions.rhtml create mode 100644 app/views/projects/settings/_wiki.rhtml (limited to 'app/views/projects') diff --git a/app/views/projects/_boards.rhtml b/app/views/projects/_boards.rhtml deleted file mode 100644 index e3f4629c1..000000000 --- a/app/views/projects/_boards.rhtml +++ /dev/null @@ -1,24 +0,0 @@ - - - -<% @project.boards.each do |board| - next if board.new_record? %> - - - - - - - -<% end %> - -
<%= l(:label_board) %><%= l(:field_description) %>
<%=h board.name %><%=h board.description %> - <% if authorize_for("boards", "edit") %> - <%= link_to image_tag('2uparrow.png', :alt => l(:label_sort_highest)), {:controller => 'boards', :action => 'edit', :project_id => @project, :id => board, :position => 'highest'}, :method => :post, :title => l(:label_sort_highest) %> - <%= link_to image_tag('1uparrow.png', :alt => l(:label_sort_higher)), {:controller => 'boards', :action => 'edit', :project_id => @project, :id => board, :position => 'higher'}, :method => :post, :title => l(:label_sort_higher) %> - - <%= link_to image_tag('1downarrow.png', :alt => l(:label_sort_lower)), {:controller => 'boards', :action => 'edit', :project_id => @project, :id => board, :position => 'lower'}, :method => :post, :title => l(:label_sort_lower) %> - <%= link_to image_tag('2downarrow.png', :alt => l(:label_sort_lowest)), {:controller => 'boards', :action => 'edit', :project_id => @project, :id => board, :position => 'lowest'}, :method => :post, :title => l(:label_sort_lowest) %> - <% end %> - <%= link_to_if_authorized l(:button_edit), {:controller => 'boards', :action => 'edit', :project_id => @project, :id => board}, :class => 'icon icon-edit' %><%= link_to_if_authorized l(:button_delete), {:controller => 'boards', :action => 'destroy', :project_id => @project, :id => board}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %>
-  -

<%= link_to_if_authorized l(:label_board_new), {:controller => 'boards', :action => 'new', :project_id => @project} %>

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

<%= check_box_tag "repository_enabled", 1, !@project.repository.nil?, :onclick => "Element.toggle('repository');" %> <%= l(:label_repository) %>

- <%= hidden_field_tag "repository_enabled", 0 %> -
-

<%= scm_select_tag %>

-
- <%= render :partial => 'projects/repository', :locals => {:repository => @project.repository} if @project.repository %> -
-
-
-<%= javascript_tag "Element.hide('repository');" if @project.repository.nil? %> - -
-

<%= check_box_tag "wiki_enabled", 1, !@project.wiki.nil?, :onclick => "Element.toggle('wiki');" %> <%= l(:label_wiki) %>

-<%= hidden_field_tag "wiki_enabled", 0 %> -
-<% fields_for :wiki, @project.wiki, { :builder => TabularFormBuilder, :lang => current_language} do |wiki| %> -

<%= wiki.text_field :start_page, :size => 60, :required => true %>
<%= l(:text_unallowed_characters) %>: , . / ? ; : |

-<% # 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 %> -
-<%= javascript_tag "Element.hide('wiki');" if @project.wiki.nil? %> -
- <% 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/_members.rhtml b/app/views/projects/_members.rhtml deleted file mode 100644 index affaf7854..000000000 --- a/app/views/projects/_members.rhtml +++ /dev/null @@ -1,43 +0,0 @@ -<%= error_messages_for 'member' %> -<% roles = Role.find_all_givable %> -<% users = User.find_active(:all) - @project.users %> - - - - - - - - - <% @project.members.find(:all, :include => [:role, :user]).sort{|x,y| x.role.position <=> y.role.position}.each do |member| %> - <% next if member.new_record? %> - - - - - - -<% end; reset_cycle %> -
<%= l(:label_user) %><%= l(:label_role) %>
<%= member.name %> - <% if authorize_for('members', 'edit') %> - <% remote_form_for(:member, member, :url => {:controller => 'members', :action => 'edit', :id => member}, :method => :post) do |f| %> - <%= f.select :role_id, roles.collect{|role| [role.name, role.id]}, {}, :class => "small" %> - <%= submit_tag l(:button_change), :class => "small" %> - <% end %> - <% end %> - - <%= link_to_remote l(:button_delete), { :url => {:controller => 'members', :action => 'destroy', :id => member}, - :method => :post - }, :title => l(:button_delete), - :class => 'icon icon-del' %> -
-  - -<% 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| %> -


- <%= 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 %> - <%= submit_tag l(:button_add) %>

- <% end %> -<% end %> 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 } %> + +
+

+<% Redmine::AccessControl.available_project_modules.each do |m| %> +<%= check_box_tag 'enabled_modules[]', m, @project.module_enabled?(m) %> <%= m.to_s.humanize %> +<% end %>

+
+ + <%= 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 @@
-
- -
-<% 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| %> +
  • <%= link_to l(tab[:label]), {}, :id => "tab-#{tab[:name]}", :onclick => "showTab('#{tab[:name]}'); this.blur(); return false;" %>
  • <% end %> +
    - - - - - - - -<%= 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/settings/_boards.rhtml b/app/views/projects/settings/_boards.rhtml new file mode 100644 index 000000000..e3f4629c1 --- /dev/null +++ b/app/views/projects/settings/_boards.rhtml @@ -0,0 +1,24 @@ + + + +<% @project.boards.each do |board| + next if board.new_record? %> + + + + + + + +<% end %> + +
    <%= l(:label_board) %><%= l(:field_description) %>
    <%=h board.name %><%=h board.description %> + <% if authorize_for("boards", "edit") %> + <%= link_to image_tag('2uparrow.png', :alt => l(:label_sort_highest)), {:controller => 'boards', :action => 'edit', :project_id => @project, :id => board, :position => 'highest'}, :method => :post, :title => l(:label_sort_highest) %> + <%= link_to image_tag('1uparrow.png', :alt => l(:label_sort_higher)), {:controller => 'boards', :action => 'edit', :project_id => @project, :id => board, :position => 'higher'}, :method => :post, :title => l(:label_sort_higher) %> - + <%= link_to image_tag('1downarrow.png', :alt => l(:label_sort_lower)), {:controller => 'boards', :action => 'edit', :project_id => @project, :id => board, :position => 'lower'}, :method => :post, :title => l(:label_sort_lower) %> + <%= link_to image_tag('2downarrow.png', :alt => l(:label_sort_lowest)), {:controller => 'boards', :action => 'edit', :project_id => @project, :id => board, :position => 'lowest'}, :method => :post, :title => l(:label_sort_lowest) %> + <% end %> + <%= link_to_if_authorized l(:button_edit), {:controller => 'boards', :action => 'edit', :project_id => @project, :id => board}, :class => 'icon icon-edit' %><%= link_to_if_authorized l(:button_delete), {:controller => 'boards', :action => 'destroy', :project_id => @project, :id => board}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %>
    +  +

    <%= link_to_if_authorized l(:label_board_new), {:controller => 'boards', :action => 'new', :project_id => @project} %>

    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 @@ + + + + + + + + +<% for category in @project.issue_categories %> + <% unless category.new_record? %> + + + + + + + <% end %> +<% end %> + +
    <%= l(:label_issue_category) %><%= l(:field_assigned_to) %>
    <%=h(category.name) %><%=h(category.assigned_to.name) if category.assigned_to %><%= link_to_if_authorized l(:button_edit), { :controller => 'issue_categories', :action => 'edit', :id => category }, :class => 'icon icon-edit' %><%= 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' %>
    +  +

    <%= link_to_if_authorized l(:label_issue_category_new), :controller => 'projects', :action => 'add_issue_category', :id => @project %>

    diff --git a/app/views/projects/settings/_members.rhtml b/app/views/projects/settings/_members.rhtml new file mode 100644 index 000000000..1cd69bdfe --- /dev/null +++ b/app/views/projects/settings/_members.rhtml @@ -0,0 +1,43 @@ +<%= error_messages_for 'member' %> +<% roles = Role.find_all_givable %> +<% users = User.find_active(:all) - @project.users %> + + + + + + + + + <% @project.members.find(:all, :include => [:role, :user]).sort{|x,y| x.role.position <=> y.role.position}.each do |member| %> + <% next if member.new_record? %> + + + + + + +<% end; reset_cycle %> +
    <%= l(:label_user) %><%= l(:label_role) %>
    <%= member.name %> + <% if authorize_for('members', 'edit') %> + <% remote_form_for(:member, member, :url => {:controller => 'members', :action => 'edit', :id => member}, :method => :post) do |f| %> + <%= f.select :role_id, roles.collect{|role| [role.name, role.id]}, {}, :class => "small" %> + <%= submit_tag l(:button_change), :class => "small" %> + <% end %> + <% end %> + + <%= link_to_remote l(:button_delete), { :url => {:controller => 'members', :action => 'destroy', :id => member}, + :method => :post + }, :title => l(:button_delete), + :class => 'icon icon-del' %> +
    +  + +<% if authorize_for('members', 'new') && !users.empty? %> + <% remote_form_for(:member, @member, :url => {:controller => 'members', :action => 'new', :id => @project}, :method => :post) do |f| %> +


    + <%= 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 %> + <%= submit_tag l(:button_add) %>

    + <% end %> +<% end %> 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| %> + +
    +<% Redmine::AccessControl.available_project_modules.each do |m| %> +

    +<% end %> +
    + +

    <%= check_all_links 'modules-form' %>

    +

    <%= submit_tag l(:button_save) %>

    + +<% 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' %> + +
    +

    <%= scm_select_tag(@repository) %>

    +<%= repository_field_tags(f, @repository) if @repository %> +
    + +
    +<%= 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? %> +
    + +<%= 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 @@ + + + + + + + + + + +<% for version in @project.versions.sort %> + + + + + + + + + +<% end; reset_cycle %> + +
    <%= l(:label_version) %><%= l(:field_effective_date) %><%= l(:field_description) %><%= l(:label_wiki_page) unless @project.wiki.nil? %>
    <%=h version.name %><%= format_date(version.effective_date) %><%=h version.description %><%= link_to(version.wiki_page_title, :controller => 'wiki', :page => Wiki.titleize(version.wiki_page_title)) unless version.wiki_page_title.blank? || @project.wiki.nil? %><%= link_to_if_authorized l(:button_edit), { :controller => 'versions', :action => 'edit', :id => version }, :class => 'icon icon-edit' %><%= 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' %>
    +  +

    <%= link_to_if_authorized l(:label_version_new), :controller => 'projects', :action => 'add_version', :id => @project %>

    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' %> + +
    +

    <%= f.text_field :start_page, :size => 60, :required => true %>
    +<%= l(:text_unallowed_characters) %>: , . / ? ; : |

    +
    + +
    +<%= link_to(l(:button_delete), {:controller => 'wikis', :action => 'destroy', :id => @project}, + :class => 'icon icon-del') if @wiki && !@wiki.new_record? %> +
    + +<%= 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 %> + <% if User.current.allowed_to?(:view_issues, @project) %>
    <% if authorize_for('projects', 'add_issue') %><%= l(:label_issue_new) %>: <%= new_issue_selector %><% end %>

    <%=l(:label_issue_tracking)%>

    @@ -33,6 +34,7 @@

    <%= link_to l(:label_issue_view_all), :controller => 'projects', :action => 'list_issues', :id => @project, :set_filter => 1 %>

    + <% end %>
    -- cgit v1.2.3