Redmine 3.4.4

This commit is contained in:
Manuel Cillero 2018-02-02 22:19:29 +01:00
commit 64924a6376
2112 changed files with 259028 additions and 0 deletions

View file

@ -0,0 +1,69 @@
<%= error_messages_for 'user' %>
<div id="user_form">
<!--[form:user]-->
<div class="splitcontentleft">
<fieldset class="box tabular">
<legend><%=l(:label_information_plural)%></legend>
<p><%= f.text_field :login, :required => true, :size => 25 %></p>
<p><%= f.text_field :firstname, :required => true %></p>
<p><%= f.text_field :lastname, :required => true %></p>
<p><%= f.text_field :mail, :required => true %></p>
<% unless @user.force_default_language? %>
<p><%= f.select :language, lang_options_for_select %></p>
<% end %>
<% if Setting.openid? %>
<p><%= f.text_field :identity_url %></p>
<% end %>
<% @user.custom_field_values.each do |value| %>
<p><%= custom_field_tag_with_label :user, value %></p>
<% end %>
<p><%= f.check_box :admin, :disabled => (@user == User.current) %></p>
<%= call_hook(:view_users_form, :user => @user, :form => f) %>
</fieldset>
<fieldset class="box tabular">
<legend><%=l(:label_authentication)%></legend>
<% unless @auth_sources.empty? %>
<p><%= f.select :auth_source_id, ([[l(:label_internal), ""]] + @auth_sources.collect { |a| [a.name, a.id] }), {}, :onchange => "if (this.value=='') {$('#password_fields').show();} else {$('#password_fields').hide();}" %></p>
<% end %>
<div id="password_fields" style="<%= 'display:none;' if @user.auth_source %>">
<p><%= f.password_field :password, :required => true, :size => 25 %>
<em class="info"><%= l(:text_caracters_minimum, :count => Setting.password_min_length) %></em></p>
<p><%= f.password_field :password_confirmation, :required => true, :size => 25 %></p>
<p><%= f.check_box :generate_password %></p>
<p><%= f.check_box :must_change_passwd %></p>
</div>
</fieldset>
</div>
<div class="splitcontentright">
<fieldset class="box">
<legend><%=l(:field_mail_notification)%></legend>
<%= render :partial => 'users/mail_notifications' %>
</fieldset>
<fieldset class="box tabular">
<legend><%=l(:label_preferences)%></legend>
<%= render :partial => 'users/preferences' %>
<%= call_hook(:view_users_form_preferences, :user => @user, :form => f) %>
</fieldset>
</div>
</div>
<div style="clear:left;"></div>
<!--[eoform:user]-->
<%= javascript_tag do %>
$(document).ready(function(){
$('#user_generate_password').change(function(){
var passwd = $('#user_password, #user_password_confirmation');
if ($(this).is(':checked')){
passwd.val('').attr('disabled', true);
}else{
passwd.removeAttr('disabled');
}
}).trigger('change');
});
<% end %>

View file

@ -0,0 +1,7 @@
<%= labelled_form_for @user, :html => {:multipart => true} do |f| %>
<%= render :partial => 'form', :locals => { :f => f } %>
<% if @user.active? && email_delivery_enabled? && @user != User.current -%>
<p><label><%= check_box_tag 'send_information', 1, params[:send_information] %> <%= l(:label_send_information) %></label></p>
<% end -%>
<p><%= submit_tag l(:button_save) %></p>
<% end %>

View file

@ -0,0 +1,13 @@
<%= form_for(:user, :url => { :action => 'update' }, :html => {:method => :put}) do %>
<div class="box">
<div id="user_group_ids">
<% user_group_ids = @user.group_ids %>
<% Group.givable.sort.each do |group| %>
<label><%= check_box_tag 'user[group_ids][]', group.id, user_group_ids.include?(group.id), :id => nil %> <%= group %></label><br />
<% end %>
<%= hidden_field_tag 'user[group_ids][]', '' %>
</div>
<p><%= check_all_links 'user_group_ids' %></p>
</div>
<%= submit_tag l(:button_save) %>
<% end %>

View file

@ -0,0 +1,30 @@
<p>
<%= label_tag "user_mail_notification", l(:description_user_mail_notification), :class => "hidden-for-sighted" %>
<%= select_tag(
'user[mail_notification]',
options_for_select(
user_mail_notification_options(@user), @user.mail_notification),
:onchange => 'if (this.value == "selected") {$("#notified-projects").show();} else {$("#notified-projects").hide();}'
) %>
</p>
<%= content_tag 'div', :id => 'notified-projects', :style => (@user.mail_notification == 'selected' ? '' : 'display:none;') do %>
<%= render_project_nested_lists(@user.projects) do |project|
content_tag('label',
check_box_tag(
'user[notified_project_ids][]',
project.id,
@user.notified_projects_ids.include?(project.id),
:id => nil
) + ' ' + h(project.name)
)
end %>
<%= hidden_field_tag 'user[notified_project_ids][]', '' %>
<p><em class="info"><%= l(:text_user_mail_option) %></em></p>
<% end %>
<%= fields_for :pref, @user.pref do |pref_fields| %>
<p>
<%= pref_fields.check_box :no_self_notified %>
<label for="pref_no_self_notified"><%= l(:label_user_mail_no_self_notified) %></label>
</p>
<% end %>

View file

@ -0,0 +1 @@
<%= render_principal_memberships @user %>

View file

@ -0,0 +1,7 @@
<%= labelled_fields_for :pref, @user.pref do |pref_fields| %>
<p><%= pref_fields.check_box :hide_mail %></p>
<p><%= pref_fields.time_zone_select :time_zone, nil, :include_blank => true %></p>
<p><%= pref_fields.select :comments_sorting, [[l(:label_chronological_order), 'asc'], [l(:label_reverse_chronological_order), 'desc']] %></p>
<p><%= pref_fields.check_box :warn_on_leaving_unsaved %></p>
<p><%= pref_fields.select :textarea_font, textarea_font_options %></p>
<% end %>

View file

@ -0,0 +1 @@
$('#tab-content-memberships').html('<%= escape_javascript(render :partial => 'users/memberships') %>');

View file

@ -0,0 +1,10 @@
<div class="contextual">
<%= link_to l(:label_profile), user_path(@user), :class => 'icon icon-user' %>
<%= additional_emails_link(@user) %>
<%= change_status_link(@user) %>
<%= delete_link user_path(@user) if User.current != @user %>
</div>
<%= title [l(:label_user_plural), users_path], @user.login %>
<%= render_tabs user_settings_tabs %>

View file

@ -0,0 +1,6 @@
<% if @membership.valid? %>
$('#tab-content-memberships').html('<%= escape_javascript(render :partial => 'users/memberships') %>');
$("#member-<%= @membership.id %>").effect("highlight");
<% else %>
alert('<%= raw(escape_javascript(l(:notice_failed_to_save_members, :errors => @membership.errors.full_messages.join(', ')))) %>');
<% end %>

View file

@ -0,0 +1,15 @@
api.array :users, api_meta(:total_count => @user_count, :offset => @offset, :limit => @limit) do
@users.each do |user|
api.user do
api.id user.id
api.login user.login
api.firstname user.firstname
api.lastname user.lastname
api.mail user.mail
api.created_on user.created_on
api.last_login_on user.last_login_on
render_api_custom_values user.visible_custom_field_values, api
end
end
end

View file

@ -0,0 +1,62 @@
<div class="contextual">
<%= link_to l(:label_user_new), new_user_path, :class => 'icon icon-add' %>
</div>
<h2><%=l(:label_user_plural)%></h2>
<%= form_tag(users_path, :method => :get) do %>
<fieldset><legend><%= l(:label_filter_plural) %></legend>
<label for='status'><%= l(:field_status) %>:</label>
<%= select_tag 'status', users_status_options_for_select(@status), :class => "small", :onchange => "this.form.submit(); return false;" %>
<% if @groups.present? %>
<label for='group_id'><%= l(:label_group) %>:</label>
<%= select_tag 'group_id', content_tag('option') + options_from_collection_for_select(@groups, :id, :name, params[:group_id].to_i), :onchange => "this.form.submit(); return false;" %>
<% end %>
<label for='name'><%= l(:label_user) %>:</label>
<%= text_field_tag 'name', params[:name], :size => 30 %>
<%= submit_tag l(:button_apply), :class => "small", :name => nil %>
<%= link_to l(:button_clear), users_path, :class => 'icon icon-reload' %>
</fieldset>
<% end %>
&nbsp;
<% if @users.any? %>
<div class="autoscroll">
<table class="list users">
<thead><tr>
<%= sort_header_tag('login', :caption => l(:field_login)) %>
<%= sort_header_tag('firstname', :caption => l(:field_firstname)) %>
<%= sort_header_tag('lastname', :caption => l(:field_lastname)) %>
<th><%= l(:field_mail) %></th>
<%= sort_header_tag('admin', :caption => l(:field_admin), :default_order => 'desc') %>
<%= sort_header_tag('created_on', :caption => l(:field_created_on), :default_order => 'desc') %>
<%= sort_header_tag('last_login_on', :caption => l(:field_last_login_on), :default_order => 'desc') %>
<th></th>
</tr></thead>
<tbody>
<% for user in @users -%>
<tr class="<%= user.css_classes %>">
<td class="username"><%= avatar(user, :size => "14") %><%= link_to user.login, edit_user_path(user) %></td>
<td class="firstname"><%= user.firstname %></td>
<td class="lastname"><%= user.lastname %></td>
<td class="email"><%= mail_to(user.mail) %></td>
<td class="tick"><%= checked_image user.admin? %></td>
<td class="created_on"><%= format_time(user.created_on) %></td>
<td class="last_login_on"><%= format_time(user.last_login_on) unless user.last_login_on.nil? %></td>
<td class="buttons">
<%= change_status_link(user) %>
<%= delete_link user_path(user, :back_url => request.original_fullpath) unless User.current == user %>
</td>
</tr>
<% end -%>
</tbody>
</table>
</div>
<span class="pagination"><%= pagination_links_full @user_pages, @user_count %></span>
<% else %>
<p class="nodata"><%= l(:label_no_data) %></p>
<% end %>
<% html_title(l(:label_user_plural)) -%>

View file

@ -0,0 +1,30 @@
<%= title [l(:label_user_plural), users_path], l(:label_user_new) %>
<%= labelled_form_for @user, :html => {:multipart => true} do |f| %>
<%= render :partial => 'form', :locals => { :f => f } %>
<% if email_delivery_enabled? %>
<p><label><%= check_box_tag 'send_information', 1, params[:send_information] %> <%= l(:label_send_information) %></label></p>
<% end %>
<p>
<%= submit_tag l(:button_create) %>
<%= submit_tag l(:button_create_and_continue), :name => 'continue' %>
</p>
<% end %>
<% if @auth_sources.present? && @auth_sources.any?(&:searchable?) %>
<%= javascript_tag do %>
observeAutocompleteField('user_login', '<%= escape_javascript autocomplete_for_new_user_auth_sources_path %>', {
select: function(event, ui) {
$('input#user_firstname').val(ui.item.firstname);
$('input#user_lastname').val(ui.item.lastname);
$('input#user_mail').val(ui.item.mail);
$('select#user_auth_source_id option').each(function(){
if ($(this).attr('value') == ui.item.auth_source_id) {
$(this).attr('selected', true);
$('select#user_auth_source_id').trigger('change');
}
});
}
});
<% end %>
<% end %>

View file

@ -0,0 +1,37 @@
api.user do
api.id @user.id
api.login @user.login if User.current.admin? || (User.current == @user)
api.firstname @user.firstname
api.lastname @user.lastname
api.mail @user.mail if User.current.admin? || !@user.pref.hide_mail
api.created_on @user.created_on
api.last_login_on @user.last_login_on
api.api_key @user.api_key if User.current.admin? || (User.current == @user)
api.status @user.status if User.current.admin?
render_api_custom_values @user.visible_custom_field_values, api
api.array :groups do |groups|
@user.groups.each do |group|
api.group :id => group.id, :name => group.name
end
end if User.current.admin? && include_in_api_response?('groups')
api.array :memberships do
@memberships.each do |membership|
api.membership do
api.id membership.id
api.project :id => membership.project.id, :name => membership.project.name
api.array :roles do
membership.member_roles.each do |member_role|
if member_role.role
attrs = {:id => member_role.role.id, :name => member_role.role.name}
attrs.merge!(:inherited => true) if member_role.inherited_from.present?
api.role attrs
end
end
end
end if membership.project
end
end if include_in_api_response?('memberships') && @memberships
end

View file

@ -0,0 +1,81 @@
<div class="contextual">
<%= link_to(l(:button_edit), edit_user_path(@user), :class => 'icon icon-edit') if User.current.admin? && @user.logged? %>
</div>
<h2><%= avatar @user, :size => "50" %> <%= @user.name %></h2>
<div class="splitcontentleft">
<ul>
<% if User.current.admin? %>
<li><%=l(:field_login)%>: <%= @user.login %></li>
<% end %>
<% unless @user.pref.hide_mail %>
<li><%=l(:field_mail)%>: <%= mail_to(@user.mail, nil, :encode => 'javascript') %></li>
<% end %>
<% @user.visible_custom_field_values.each do |custom_value| %>
<% if !custom_value.value.blank? %>
<li><%= custom_value.custom_field.name %>: <%= show_value(custom_value) %></li>
<% end %>
<% end %>
<li><%=l(:label_registered_on)%>: <%= format_date(@user.created_on) %></li>
<% unless @user.last_login_on.nil? %>
<li><%=l(:field_last_login_on)%>: <%= format_date(@user.last_login_on) %></li>
<% end %>
</ul>
<h3><%=l(:label_issue_plural)%></h3>
<ul>
<li><%= link_to l(:label_assigned_issues),
issues_path(:set_filter => 1, :assigned_to_id => ([@user.id] + @user.group_ids).join("|"), :sort => 'priority:desc,updated_on:desc') %>:
<%= Issue.visible.open.assigned_to(@user).count %>
<li><%= link_to l(:label_reported_issues),
issues_path(:set_filter => 1, :status_id => '*', :author_id => @user.id) %>:
<%= Issue.visible.where(:author_id => @user.id).count %>
</ul>
<% unless @memberships.empty? %>
<h3><%=l(:label_project_plural)%></h3>
<ul>
<% for membership in @memberships %>
<li><%= link_to_project(membership.project) %>
(<%= membership.roles.sort.collect(&:to_s).join(', ') %>, <%= format_date(membership.created_on) %>)</li>
<% end %>
</ul>
<% end %>
<%= call_hook :view_account_left_bottom, :user => @user %>
</div>
<div class="splitcontentright">
<% unless @events_by_day.empty? %>
<h3><%= link_to l(:label_activity), :controller => 'activities',
:action => 'index', :id => nil, :user_id => @user,
:from => @events_by_day.keys.first %></h3>
<div id="activity">
<% @events_by_day.keys.sort.reverse.each do |day| %>
<h4><%= format_activity_day(day) %></h4>
<dl>
<% @events_by_day[day].sort {|x,y| y.event_datetime <=> x.event_datetime }.each do |e| -%>
<dt class="<%= e.event_type %>">
<span class="time"><%= format_time(e.event_datetime, false) %></span>
<%= content_tag('span', e.project, :class => 'project') %>
<%= link_to format_activity_title(e.event_title), e.event_url %></dt>
<dd><span class="description"><%= format_activity_description(e.event_description) %></span></dd>
<% end -%>
</dl>
<% end -%>
</div>
<% other_formats_links do |f| %>
<%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => nil, :user_id => @user, :key => User.current.rss_key} %>
<% end %>
<% content_for :header_tags do %>
<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :user_id => @user, :format => :atom, :key => User.current.rss_key) %>
<% end %>
<% end %>
<%= call_hook :view_account_right_bottom, :user => @user %>
</div>
<% html_title @user.name %>