summaryrefslogtreecommitdiffstats
path: root/app/helpers
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2014-10-23 21:46:40 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2014-10-23 21:46:40 +0000
commitc2e73160daa7782d7a91f2b6a974a936c6f084da (patch)
tree62e174df69aba43cb5a84f2ddd278dc4562963f0 /app/helpers
parentca5946d82ebb96464a3d283be657bc24ce0c47f1 (diff)
downloadredmine-c2e73160daa7782d7a91f2b6a974a936c6f084da.tar.gz
redmine-c2e73160daa7782d7a91f2b6a974a936c6f084da.zip
Adds a single controller for users and groups memberships and support for adding multiple projects at once (#11702).
git-svn-id: http://svn.redmine.org/redmine/trunk@13498 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/helpers')
-rw-r--r--app/helpers/application_helper.rb4
-rw-r--r--app/helpers/principal_memberships_helper.rb56
2 files changed, 58 insertions, 2 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 7e9cdce90..923dff581 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -252,7 +252,7 @@ module ApplicationHelper
# Renders a tree of projects as a nested set of unordered lists
# The given collection may be a subset of the whole project tree
# (eg. some intermediate nodes are private and can not be seen)
- def render_project_nested_lists(projects)
+ def render_project_nested_lists(projects, &block)
s = ''
if projects.any?
ancestors = []
@@ -272,7 +272,7 @@ module ApplicationHelper
end
classes = (ancestors.empty? ? 'root' : 'child')
s << "<li class='#{classes}'><div class='#{classes}'>"
- s << h(block_given? ? yield(project) : project.name)
+ s << h(block_given? ? capture(project, &block) : project.name)
s << "</div>\n"
ancestors << project
end
diff --git a/app/helpers/principal_memberships_helper.rb b/app/helpers/principal_memberships_helper.rb
new file mode 100644
index 000000000..e734f42c9
--- /dev/null
+++ b/app/helpers/principal_memberships_helper.rb
@@ -0,0 +1,56 @@
+# encoding: utf-8
+#
+# Redmine - project management software
+# Copyright (C) 2006-2014 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+module PrincipalMembershipsHelper
+ def render_principal_memberships(principal)
+ render :partial => 'principal_memberships/index', :locals => {:principal => principal}
+ end
+
+ def call_table_header_hook(principal)
+ if principal.is_a?(Group)
+ call_hook :view_groups_memberships_table_header, :group => principal
+ else
+ call_hook :view_users_memberships_table_header, :user => principal
+ end
+ end
+
+ def call_table_row_hook(principal, membership)
+ if principal.is_a?(Group)
+ call_hook :view_groups_memberships_table_row, :group => principal, :membership => membership
+ else
+ call_hook :view_users_memberships_table_row, :user => principal, :membership => membership
+ end
+ end
+
+ def new_principal_membership_path(principal, *args)
+ if principal.is_a?(Group)
+ new_group_membership_path(principal, *args)
+ else
+ new_user_membership_path(principal, *args)
+ end
+ end
+
+ def principal_membership_path(principal, membership, *args)
+ if principal.is_a?(Group)
+ group_membership_path(principal, membership, *args)
+ else
+ user_membership_path(principal, membership, *args)
+ end
+ end
+end