Add group_users macro

This commit is contained in:
Alexander Meindl
2017-09-07 13:10:28 +02:00
parent aa954d857c
commit c0bab90c75
8 changed files with 75 additions and 6 deletions

View File

@ -1,6 +1,13 @@
Changelog
=========
2.0.4 - untagged and not released
+++++
- Add group_users macro
- Fix bug with REST-API and assigned_id for issues
- Use user name setting for sort order in macros
2.0.3
+++++

View File

@ -4,8 +4,8 @@
users.each {|user| %>
<div class="user box <%= cycle("odd", "even") %>">
<div style="float: left; display: block; margin-right: 5px;"><%= avatar(user, :size => "50") %></div>
<div class="user line" style="font-weight: bold;"><%= link_to(user.firstname + ' ' + user.lastname, '/users/' + user.id.to_s()) %></div>
<% if user_roles[user.id] %><div class="user line"><%= l(:field_role) %>: <%= user_roles[user.id].join(", ").html_safe %></div><% end %>
<div class="user line" style="font-weight: bold;"><%= link_to_user(user) %></div>
<% if !user_roles.nil? && user_roles[user.id] %><div class="user line"><%= l(:field_role) %>: <%= user_roles[user.id].join(", ").html_safe %></div><% end %>
<div class="user line"><%= l(:field_login) %>: <%= link_to user.login, '/users/' + user.id.to_s() %></div>
<% if !user.pref.hide_mail %>
<div class="user line"><%= l(:field_mail) %>: <%= mail_to("#{user.mail}", nil, :encode => 'javascript') %></div>

View File

@ -96,7 +96,7 @@ Features
* welcome text for login page
* global sidebar content support
* set info message above new ticket (e.g. for guidelines)
* Wiki macros for: date, Gihub gist, issues, members, projects slideshare, twitter, reddit, tradingview, cryptocompare, user, youtube and vimeo
* Wiki macros for: date, Gihub gist, group_users, issues, members, projects slideshare, twitter, reddit, tradingview, cryptocompare, user, youtube and vimeo
* option to remove "my page" from top menu
* customize "Help" url in top menu
* customize top menu items

View File

@ -9,6 +9,7 @@ If a parameter is in brackets, this parameter is optional.
.. include:: macros/cryptocompare.rst
.. include:: macros/date.rst
.. include:: macros/gist.rst
.. include:: macros/group_users.rst
.. include:: macros/issue.rst
.. include:: macros/last_updated_at.rst
.. include:: macros/last_updated_by.rst

View File

@ -0,0 +1,19 @@
Members
-------
Groupo users macro for Redmine.
.. function:: {{group_users(group_name)}}
Show list of users in a user group (an respect permissions)
:param string group_name: group name
Examples
++++++++
List all users of user group ``Team A``
.. code-block:: smarty
{{group_users(Team A)}}

View File

@ -74,9 +74,9 @@ if ActiveRecord::Base.connection.table_exists?(:settings)
require_dependency 'additionals/hooks'
# Macros
Additionals.load_macros(%w[calendar cryptocompare date gist issue last_updated_at last_updated_by
member project recently_updated reddit slideshare tradingview
twitter user vimeo youtube])
Additionals.load_macros(%w[calendar cryptocompare date gist group_users issue last_updated_at
last_updated_by member project recently_updated reddit slideshare
tradingview twitter user vimeo youtube])
end
# include deface overwrites

View File

@ -0,0 +1,32 @@
# Group wiki macros
module Additionals
module WikiMacros
Redmine::WikiFormatting::Macros.register do
desc <<-EOHELP
Display users of group.
Syntax:
{{group_users(GROUP_NAME}}
Examples:
{{group_users(Team)}}
...List all users in user group "Team" (with the current user permission)
EOHELP
macro :group_users do |_obj, args|
raise 'The correct usage is {{group_users(<group_name>)}}' if args.empty?
group_name = args[0].strip
group = Group.named(group_name).first
raise 'Invalid group' unless group
users = Principal.visible.where(id: group.users).order(User.name_formatter[:order])
render partial: 'wiki/user_macros', locals: { users: users,
user_roles: nil,
list_title: group_name }
end
end
end
end

View File

@ -167,6 +167,16 @@ class WikiControllerTest < ActionController::TestCase
assert_select 'div.wiki div.user'
end
def test_show_with_group_users_macro
@request.session[:user_id] = 1
@page.content.text = '{{group_users(A Team)}}'
@page.content.save!
get :show, project_id: 1, id: @page_name
assert_response :success
assert_template 'show'
assert_select 'div.wiki div.user'
end
def test_show_with_projects_macro
@request.session[:user_id] = 1
@page.content.text = '{{projects}}'