diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb index 73565a5ba..742fe6857 100644 --- a/app/controllers/my_controller.rb +++ b/app/controllers/my_controller.rb @@ -1,3 +1,4 @@ +<<<<<<< HEAD # Redmine - project management software # Copyright (C) 2006-2013 Jean-Philippe Lang # @@ -280,3 +281,287 @@ class MyController < ApplicationController render :nothing => true end end +======= +# Redmine - project management software +# Copyright (C) 2006-2013 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. + +class MyController < ApplicationController + layout "users_base" + before_filter :require_login + + helper :issues + helper :users + helper :custom_fields + + BLOCKS = { 'issuesassignedtome' => :label_assigned_to_me_issues, + 'issuesreportedbyme' => :label_reported_issues, + 'issueswatched' => :label_watched_issues, + 'news' => :label_news_latest, + 'calendar' => :label_calendar, + 'documents' => :label_document_plural, + 'timelog' => :label_spent_time + }.merge(Redmine::Views::MyPage::Block.additional_blocks).freeze + + DEFAULT_LAYOUT = { 'left' => ['issuesassignedtome'], + 'right' => ['issuesreportedbyme'] + }.freeze + + def index + + page + render :action => 'page' + end + + # Show user's page + def page + @user = User.current + @Issues= Issue.visible.open. + where(:assigned_to_id => ([User.current.id] + User.current.group_ids)) + @limit = 10 + @feedback_count = @Issues.count + @feedback_pages = Paginator.new @feedback_count, @limit, params['page'] + @offset ||= @feedback_pages.offset + @curse_attachments = @Issues[@offset, @limit] + + @blocks = @user.pref[:my_page_layout] || DEFAULT_LAYOUT + end + + def page2 + @limit = 10 + @user = User.current + @Issues= Issue.visible.open. + where(:assigned_to_id => ([User.current.id] + User.current.group_ids)) + @feedback_count = @Issues.count + @feedback_pages = Paginator.new @feedback_count, @limit, params['page'] + @offset ||= @feedback_pages.offset + @curse_attachments = @Issues[@offset, @limit] + @state = false + @blocks = @user.pref[:my_page_layout] || DEFAULT_LAYOUT + respond_to do |format| + format.js + end + end + + # Edit user's account + def account + @user = User.current + lg=@user.login + @pref = @user.pref + diskfile = disk_filename('User', @user.id) + diskfile1 = diskfile + 'temp' + if request.post? + @user.safe_attributes = params[:user] + @user.pref.attributes = params[:pref] + @user.pref[:no_self_notified] = (params[:no_self_notified] == '1') + @user.login = params[:login] + unless @user.user_extensions.nil? + if @user.user_extensions.identity == 2 + @user.firstname = params[:enterprise_name] + end + end + + @se = @user.extensions + @se.school_id = params[:occupation] if params[:occupation] + @se.gender = params[:gender] + @se.location = params[:province] if params[:province] + @se.location_city = params[:city] if params[:city] + @se.identity = params[:identity].to_i if params[:identity] + @se.technical_title = params[:technical_title] if params[:technical_title] + @se.student_id = params[:no] if params[:no] + + if @user.save && @se.save + # 头像保存 + if File.exist?(diskfile1) + if File.exist?(diskfile) + File.delete(diskfile) + end + File.open(diskfile1, "rb") do |f| + buffer = f.read(10) + if buffer != "DELETE" + File.open(diskfile1, "rb") do |f1| + File.open(diskfile, "wb") do |f| + buffer = "" + while (buffer = f1.read(8192)) + f.write(buffer) + end + end + end + + # File.rename(diskfile + 'temp',diskfile); + end + end + end + + # 确保文件被删除 + if File.exist?(diskfile1) + File.delete(diskfile1) + end + + @user.pref.save + @user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : []) + set_language_if_valid @user.language + flash[:notice] = l(:notice_account_updated) + redirect_to user_url(@user) + return + else + # 确保文件被删除 + if File.exist?(diskfile1) + File.delete(diskfile1) + end + @user.login = lg + end + else + # 确保文件被删除 + if File.exist?(diskfile1) + File.delete(diskfile1) + end + end + end + + # Destroys user's account + def destroy + @user = User.current + unless @user.own_account_deletable? + redirect_to my_account_url + return + end + + if request.post? && params[:confirm] + @user.destroy + if @user.destroyed? + logout_user + flash.now[:notice] = l(:notice_account_deleted) + end + redirect_to home_url + end + end + + # Manage user's password + def password + @user = User.current + unless @user.change_password_allowed? + flash.now[:error] = l(:notice_can_t_change_password) + redirect_to my_account_url + return + end + if request.post? + if @user.check_password?(params[:password]) + @user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation] + + if @user.save + flash.now[:notice] = l(:notice_account_password_updated) + redirect_to my_account_url + end + else + flash.now[:error] = l(:notice_account_wrong_password) + end + end + end + + # Create a new feeds key + def reset_rss_key + if request.post? + if User.current.rss_token + User.current.rss_token.destroy + User.current.reload + end + User.current.rss_key + flash[:notice] = l(:notice_feeds_access_key_reseted) + end + redirect_to my_account_url + end + + # Create a new API key + def reset_api_key + if request.post? + if User.current.api_token + User.current.api_token.destroy + User.current.reload + end + User.current.api_key + flash[:notice] = l(:notice_api_access_key_reseted) + end + redirect_to my_account_url + end + + # User's page layout configuration + def page_layout + @user = User.current + @blocks = @user.pref[:my_page_layout] || DEFAULT_LAYOUT.dup + @block_options = [] + BLOCKS.each do |k, v| + unless %w(top left right).detect {|f| (@blocks[f] ||= []).include?(k)} + @block_options << [l("my.blocks.#{v}", :default => [v, v.to_s.humanize]), k.dasherize] + end + end + end + + # Add a block to user's page + # The block is added on top of the page + # params[:block] : id of the block to add + def add_block + block = params[:block].to_s.underscore + if block.present? && BLOCKS.key?(block) + @user = User.current + layout = @user.pref[:my_page_layout] || {} + # remove if already present in a group + %w(top left right).each {|f| (layout[f] ||= []).delete block } + # add it on top + layout['top'].unshift block + @user.pref[:my_page_layout] = layout + @user.pref.save + end + redirect_to my_page_layout_url + end + + # Remove a block to user's page + # params[:block] : id of the block to remove + def remove_block + block = params[:block].to_s.underscore + @user = User.current + # remove block in all groups + layout = @user.pref[:my_page_layout] || {} + %w(top left right).each {|f| (layout[f] ||= []).delete block } + @user.pref[:my_page_layout] = layout + @user.pref.save + redirect_to my_page_layout_url + end + + # Change blocks order on user's page + # params[:group] : group to order (top, left or right) + # params[:list-(top|left|right)] : array of block ids of the group + def order_blocks + group = params[:group] + @user = User.current + if group.is_a?(String) + group_items = (params["blocks"] || []).collect(&:underscore) + group_items.each {|s| s.sub!(/^block_/, '')} + if group_items and group_items.is_a? Array + layout = @user.pref[:my_page_layout] || {} + # remove group blocks if they are presents in other groups + %w(top left right).each {|f| + layout[f] = (layout[f] || []) - group_items + } + layout[group] = group_items + @user.pref[:my_page_layout] = layout + @user.pref.save + end + end + render :nothing => true + end +end +>>>>>>> d2f4b38eb6fd68a67940b8ffe735d8f7437acde1 diff --git a/app/views/contestnotifications/_form.html.erb b/app/views/contestnotifications/_form.html.erb index 36bcd78c6..f3861f034 100644 --- a/app/views/contestnotifications/_form.html.erb +++ b/app/views/contestnotifications/_form.html.erb @@ -1,26 +1,80 @@ <%= error_messages_for @contestnotifications %> +
<%= l(:bale_news_notice) %>
-

- <%= f.text_field :title, - :required => true, - :size => 60, - :maxlength => 60, - :style => "width:488px;" - %> -

-

- <%= f.text_area :description, - :required => true, - :cols => 60, - :rows => 11, - :class => 'wiki-edit', - :style => "width:490px;" - %> -

- +

+ <%= f.text_field :title, + :required => true, + :size => 60, + :maxlength => 60, + :style => "width:488px;", + :onblur => "regexTitle();" + %> +

+ +

+ <%= f.text_area :description, + :required => true, + :cols => 60, + :rows => 11, + :class => 'wiki-edit', + :style => "width:490px;", + :onblur => "regexDescription();" + %> +

+
<%= wikitoolbar_for 'news_description' %> diff --git a/app/views/contestnotifications/index.html.erb b/app/views/contestnotifications/index.html.erb index 526884f49..839da8de8 100644 --- a/app/views/contestnotifications/index.html.erb +++ b/app/views/contestnotifications/index.html.erb @@ -1,3 +1,4 @@ +<<<<<<< HEAD <%= l(:label_notification) %> @@ -120,4 +121,137 @@ }); +======= + + + + <%= l(:label_notification) %> + +<% if User.current.logged? && (User.current.admin? ||User.current == @contest.author) %> +<%= link_to(l(:bale_news_notice), + new_contest_contestnotification_path(@contest), + :class => 'icon icon-add', + :onclick => 'showAndScrollTo("add-contestnotifications", "contestnotifications_title"); return false;') %> +<% end %> +<% if @contest %> + +<% end %> +
+ +
+ + <%= image_tag(url_to_avatar(@contest.author), :class => "avatar")%> + + +

+ <%= link_to(@contest.author.lastname+@contest.author.firstname, + user_path(@contest.author)) + %> + :<%= @contest.name %>

+

+ + <%= l(:label_bids_reward_method) %> + + <%= @contest.budget%> + + +

+
+ <%= @contest.description %> +
+ + <%= render :partial => "/praise_tread/praise_tread", + :locals => {:obj => @contest, + :show_flag => true, + :user_id =>User.current.id, + :horizontal => false} + %> + +
+
+ +
+ +

+ <% @contestnotificationss.each do |contestnotifications| %> + + + + + +
<%= link_to image_tag(url_to_avatar(contestnotifications.author), :class => "avatar"), user_path(contestnotifications.author) %> + + + + + + + + + + + + +
+ <%= link_to_user(contestnotifications.author) if contestnotifications.respond_to?(:author) %> + <%= l(:label_project_notice) %><%= link_to h(contestnotifications.title), contest_contestnotification_path(@contest, contestnotifications) %> + + <%= link_to l(:button_edit), edit_contest_contestnotification_path(@contest, contestnotifications) if (User.current.admin? && User.current.logged? )||(User.current == @contest.author && User.current.logged?) %> + <%= delete_link contest_contestnotification_path(@contest, contestnotifications) if (User.current.admin? && User.current.logged? )||(User.current == @contest.author && User.current.logged?) %> + +
+ <%= textilizable(contestnotifications, :description) %>
<%= l :label_update_time %> +  <%= format_time(contestnotifications.created_at) %><%= link_to l(:label_check_comment), contest_contestnotification_path(@contest, contestnotifications) %><%#= "(#{l(:label_x_comments, :count => contestnotifications.notificationcomments_count)})" if contestnotifications.notificationcomments_count >= 0 %>
+
+ <% end %> + +
+ +
+ + + <% content_for :header_tags do %> + <%= auto_discovery_link_tag(:atom, params.merge({:format => 'atom', :page => nil, :key => User.current.rss_key})) %> + <%= stylesheet_link_tag 'scm' %> + <% end %> + + <% html_title(l(:label_contest_notification)) -%> +
+ + + +>>>>>>> d2f4b38eb6fd68a67940b8ffe735d8f7437acde1 \ No newline at end of file diff --git a/app/views/contestnotifications/new.html.erb b/app/views/contestnotifications/new.html.erb index a5a1c7e58..310a68d77 100644 --- a/app/views/contestnotifications/new.html.erb +++ b/app/views/contestnotifications/new.html.erb @@ -1,11 +1,17 @@ - + <%= labelled_form_for @contestnotification, :url => contest_contestnotifications_path(@contest), :html => { :id => 'contestnotifications-form', :multipart => true } do |f| %> <%= render :partial => 'contestnotifications/form', :locals => { :f => f } %> - <%= submit_tag l(:button_create), :class => "whiteButton m3p10 h30" %> - <%= submit_tag l(:button_cancel), :class => "whiteButton m3p10 h30",:onclick => "cancel();" %> - - + + <%= link_to l(:button_cancel), contest_contestnotifications_path(@contest.id) %> <% end %>
diff --git a/app/views/courses/_join_private_course.html.erb b/app/views/courses/_join_private_course.html.erb index 509173352..f19a357ca 100644 --- a/app/views/courses/_join_private_course.html.erb +++ b/app/views/courses/_join_private_course.html.erb @@ -1,3 +1,4 @@ +<<<<<<< HEAD @@ -73,3 +74,80 @@ +======= + + + + + 快速进入课程通道 + + + + + +
+
+
+

快速进入课程通道

+

只要持有课程ID和密码,就可快速加入所在课程。课程页面搜索不到的私有课程只能从此通道进入哦!

+
+
+ <%= form_tag({:controller => 'courses', + :action => 'join'}, + :remote => true, + :method => :post, + :id => 'new-watcher-form') do %> + + <% end%> +
+
+
+ + + +>>>>>>> d2f4b38eb6fd68a67940b8ffe735d8f7437acde1 diff --git a/app/views/layouts/base_users.html.erb b/app/views/layouts/base_users.html.erb index c1c0eaf7b..97d5fc47f 100644 --- a/app/views/layouts/base_users.html.erb +++ b/app/views/layouts/base_users.html.erb @@ -281,7 +281,7 @@ <%= yield %> <%= call_hook :view_layouts_base_content %>
- <%= render_flash_messages %> + <%#= render_flash_messages %> diff --git a/app/views/projects/settings/_versions.html.erb b/app/views/projects/settings/_versions.html.erb index 778803bf3..98d7c5563 100644 --- a/app/views/projects/settings/_versions.html.erb +++ b/app/views/projects/settings/_versions.html.erb @@ -1,35 +1,65 @@ <% if @project.shared_versions.any? %> - - - - - - - - +
<%= l(:label_version) %><%= l(:field_effective_date) %><%= l(:field_description) %><%= l(:field_status) %><%= l(:field_sharing) %><%= l(:label_wiki_page) %>
+ + + + + + + + -<% for version in @project.shared_versions.sort %> - - - - - - - - - -<% end; reset_cycle %> - + <% for version in @project.shared_versions.sort %> + + + + + + + + + + <% end; reset_cycle %> +
+ <%= l(:label_version) %> + + <%= l(:field_effective_date) %> + + <%= l(:field_description) %> + + <%= l(:field_status) %> + + <%= l(:field_sharing) %> + + <%= l(:label_wiki_page) %> +
<%= link_to_version version %><%= format_date(version.effective_date) %><%=h version.description %><%= l("version_status_#{version.status}") %><%= link_to_if_authorized(h(version.wiki_page_title), {:controller => 'wiki', :action => 'show', :project_id => version.project, :id => Wiki.titleize(version.wiki_page_title)}) || h(version.wiki_page_title) unless version.wiki_page_title.blank? || version.project.wiki.nil? %> - <% if version.project == @project && User.current.allowed_to?(:manage_versions, @project) %> - <%= link_to l(:button_edit), edit_version_path(version), :class => 'icon icon-edit' %> - <%= delete_link version_path(version) %> - <% end %> -
+ <%= link_to_version version %> + + <%= format_date(version.effective_date) %> + + <%=h version.description %> + + <%= l("version_status_#{version.status}") %> + + <%= link_to_if_authorized(h(version.wiki_page_title), {:controller => 'wiki', + :action => 'show', + :project_id => version.project, + :id => Wiki.titleize(version.wiki_page_title)}) || h(version.wiki_page_title) unless version.wiki_page_title.blank? || version.project.wiki.nil? %> + + <% if version.project == @project && User.current.allowed_to?(:manage_versions, @project) %> + <%= link_to l(:button_edit), edit_version_path(version), :class => 'icon icon-edit' %> + <%= delete_link version_path(version) %> + <% end %> +
<% else %> -

<%= l(:label_no_data) %>

+

+ <%= l(:label_no_data) %> +

<% end %>
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index fd0195833..7d13e404e 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -48,353 +48,485 @@ <% if e.act_type == 'JournalsForMessage' || e.act_type == 'Bid' || e.act_type == 'Journal'|| e.act_type == 'Changeset' || e.act_type == 'Message' || e.act_type == 'Principal' || e.act_type == 'News' || e.act_type == 'Issue' || e.act_type == 'Contest'%> - + @@ -451,12 +583,19 @@ - + + + <%= format_time e.created_on %> + +
<%= image_tag(url_to_avatar(e.user), :class => "avatar") %> + <%= image_tag(url_to_avatar(e.user), :class => "avatar") %> + <% case e.act_type %> - <% when 'JournalsForMessage' %> - - - - - - - - - - <% when 'Bid' %> - - <% if act.reward_type == 3 && @show_course == 1%> - <% if e.user == User.current %> + <% when 'JournalsForMessage' %> + - <% else %> - + + - <% end %> - <% else %> - <% if e.user == User.current %> - + + - <% else %> - + <% when 'Bid' %> + + <% if act.reward_type == 3 && @show_course == 1%> + <% if e.user == User.current %> + + <% else %> + + <% end %> + <% else %> + <% if e.user == User.current %> + + <% else %> + + <% end %> + <% end %> + + + + + + + + <% when 'Journal' %> + + <% if e.user == User.current %> + + <% else %> + + <% end %> + + + <% if act.notes.nil? %> + <% desStr = '' %> + <% else %> + <% desStr= textAreailizable(act, :notes) %> + <% end %> + + + + + + <% when 'Changeset' %> + + <% if e.user == User.current %> + + <% else %> + + <% end %> + + + + + + + + <% when 'Message' %> + + <% if e.user == User.current %> + + <% else %> + + <% end %> + + + - <% end %> - <% end %> - - - - - - - - <% when 'Journal' %> - - <% if e.user == User.current %> - - <% else %> - - <% end %> - - - <% if act.notes.nil? %> - <% desStr = '' %> - <% else %> - <% desStr= textAreailizable(act, :notes) %> - <% end %> - - - - - - <% when 'Changeset' %> - - <% if e.user == User.current %> - - <% else %> - - <% end %> - - - - - - - - <% when 'Message' %> - - <% if e.user == User.current %> - - <% else %> - - <% end %> - - - - - - - - <% when 'Principal' %> - - <% if e.user == User.current %> - - <% else %> - - <% end %> - - - - - - - - <% when 'News' %> - - <% if e.user == User.current %> - - <% else %> - - <% end %> - - - - - - - - <% when 'Issue' %> - - <% if e.user == User.current %> - - <% else %> - - <% end %> - - - - - - - - <% when 'Contest' %> - - <% if e.user == User.current && @show_contest == 1%> - - <% else %> - - <% end %> - - - - - - - <% else %> - <% end %> + + + + + <% when 'Principal' %> + + <% if e.user == User.current %> + + <% else %> + + <% end %> + + + + + + + + <% when 'News' %> + + <% if e.user == User.current %> + + <% else %> + + <% end %> + + + + + + + + <% when 'Issue' %> + + <% if e.user == User.current %> + + <% else %> + + <% end %> + + + + + + + + <% when 'Contest' %> + + <% if e.user == User.current && @show_contest == 1%> + + <% else %> + + <% end %> + + + + + + + <% else %> + <% end %>
- <% if User.current.login == e.user.try(:login) %> - - <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> - -   - <% else %> - <%= link_to("#{e.user.name}", user_path(e.user_id)) %> - <% end %> - - <%= l(:label_have_feedback) %> - <%= link_to("#{e.act.user.name}", user_path(e.act.user.id)) %><%= l(:label_of_feedback) + l(:label_layouts_feedback) %> - -
-

<%= textAreailizable act.notes %>

-
- - <%= link_to(l(:label_goto), user_newfeedback_user_path(e.user_id)) %> - -
-
-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
-
- - <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> - + <% if User.current.login == e.user.try(:login) %> + + <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> + +   + <% else %> + + <%= link_to("#{e.user.name}", user_path(e.user_id)) %> + + <% end %> - <%= l(:label_i_new_activity) %> + <%= l(:label_have_feedback) %> + <%= link_to("#{e.act.user.name}", user_path(e.act.user.id)) %> + <%= l(:label_of_feedback) + l(:label_layouts_feedback) %> - <%= link_to format_activity_title("#{l(:label_active_homework)}##{act.id}:#{act.name}"), respond_path(e.act_id) %> - - <%= link_to(h(e.user), user_path(e.user_id)) %> -   - - <%= l(:label_new_activity) %> -   - <%= link_to format_activity_title("#{l(:label_active_homework)}##{act.id}:#{act.name}"), respond_path(e.act_id) %> +
+

+ <%= textAreailizable act.notes %> +

+
+ + <%= link_to(l(:label_goto), user_newfeedback_user_path(e.user_id)) %> + +
- <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> - <%= l(:label_i_new_activity) %> - <%= link_to format_activity_title("#{l(:label_active_call)}##{act.id}:#{act.name}"), respond_path(e.act_id) %> +
+
+ + <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> + +
+
- <%= link_to(h(e.user), user_path(e.user_id)) %>  - <%= l(:label_new_activity) %>  - <%= link_to format_activity_title("#{l(:label_active_call)}##{act.id}:#{act.name}"), respond_path(e.act_id) %> +
+ + <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> + + + <%= l(:label_i_new_activity) %> + + <%= link_to format_activity_title("#{l(:label_active_homework)}##{act.id}:#{act.name}"), respond_path(e.act_id) %> + + + <%= link_to(h(e.user), user_path(e.user_id)) %> +   + + <%= l(:label_new_activity) %> +   + <%= link_to format_activity_title("#{l(:label_active_homework)}##{act.id}:#{act.name}"), respond_path(e.act_id) %> + + + <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> + + + <%= l(:label_i_new_activity) %> + + <%= link_to format_activity_title("#{l(:label_active_call)}##{act.id}:#{act.name}"), respond_path(e.act_id) %> + + + <%= link_to(h(e.user), user_path(e.user_id)) %> +   + + <%= l(:label_new_activity) %> +   + <%= link_to format_activity_title("#{l(:label_active_call)}##{act.id}:#{act.name}"), respond_path(e.act_id) %> +
+

+ <%=textAreailizable act, :description %> +

+
+ + <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> + +
+
+ + <%= link_to l(:label_find_all_comments), respond_path(e.act_id) %> + + + <%= l(:label_comments_count, :count => e.act.commit) %> + +
+
+ + <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> + +   + + <%= l(:label_i_new_activity) %> + +   + <%= link_to(l(:label_activity_project)+act.issue.project.name, project_path(act.issue.project.id)) %> + <%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.id}: #{act.issue.subject}"), + {:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"} %> + + + <%= link_to(h(e.user), user_path(e.user_id)) %> + +   + + <%= l(:label_new_activity) %> + +   + <%= link_to(l(:label_activity_project)+act.issue.project.name, project_path(act.issue.project.id)) %> + <%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.id}: #{act.issue.subject}"), + {:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"} %> +
+

+ <%= desStr %> +

+
+
+ + <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> + +
+
+
+ + <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> + +   + + <%= l(:label_i_new_activity) %> + +   + <%= link_to format_activity_title(act.title), + {:controller => 'repositories', + :action => 'revision', + :id => act.repository.project, + :repository_id => act.repository.identifier_param, + :rev => act.identifier} %> + + + <%= link_to(h(e.user), user_path(e.user_id)) %> + +   + + <%= l(:label_new_activity) %> + +   + <%= link_to format_activity_title(act.title), + {:controller => 'repositories', + :action => 'revision', + :id => act.repository.project, + :repository_id => act.repository.identifier_param, + :rev => act.identifier} %> +
+

+ <%= textAreailizable act,:long_comments %> +

+
+
+ + <%= format_time(e.act.committed_on) %> + +
+
+ <%= link_to l(:label_find_all_comments), + {:controller => 'repositories', + :action => 'revision', + :id => act.repository.project, + :repository_id => act.repository.identifier_param, + :rev => act.identifier} %> + + + <%= l(:label_comments_count, :count => e.act.count) %> + +
+
+ + <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> + +   + + <%= l(:label_i_new_activity) %> + +   + <%= link_to format_activity_title("#{act.board.name}: #{act.subject}"), + {:controller => 'messages', + :action => 'show', + :board_id => act.board_id}.merge(act.parent_id.nil? ? {:id => act.id} : {:id => act.parent_id, :r => act.id, :anchor => "message-#{act.id}"}) %> + + + <%= link_to(h(e.user), user_path(e.user_id)) %> + +   + + <%= l(:label_new_activity) %> + +   + <%= link_to format_activity_title("#{act.board.name}: #{act.subject}"), + {:controller => 'messages', + :action => 'show', + :board_id => act.board_id}.merge(act.parent_id.nil? ? {:id => act.id} : {:id => act.parent_id, :r => act.id, :anchor => "message-#{act.id}"}) %> +
+

+ <%= textAreailizable(act,:content) %> +

-

<%=textAreailizable act, :description %>

-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
- <%= link_to l(:label_find_all_comments), respond_path(e.act_id) %> - <%= l(:label_comments_count, :count => e.act.commit) %> -
-
- <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %>  - <%= l(:label_i_new_activity) %>  - <%= link_to(l(:label_activity_project)+act.issue.project.name, project_path(act.issue.project.id)) %> - <%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.id}: #{act.issue.subject}"), - {:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"} %> - - <%= link_to(h(e.user), user_path(e.user_id)) %>  - <%= l(:label_new_activity) %>  - <%= link_to(l(:label_activity_project)+act.issue.project.name, project_path(act.issue.project.identifier)) %> - <%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.id}: #{act.issue.subject}"), - {:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"} %> -

<%= desStr %>

-
-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
-
- <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %>  - <%= l(:label_i_new_activity) %>  - <%= link_to format_activity_title(act.title), - {:controller => 'repositories', - :action => 'revision', - :id => act.repository.project, - :repository_id => act.repository.identifier_param, - :rev => act.identifier} %> - - <%= link_to(h(e.user), user_path(e.user_id)) %>  - <%= l(:label_new_activity) %>  - <%= link_to format_activity_title(act.title), - {:controller => 'repositories', - :action => 'revision', - :id => act.repository.project, - :repository_id => act.repository.identifier_param, - :rev => act.identifier} %> -
-

<%= textAreailizable act,:long_comments %>

-
- <%= format_time(e.act.committed_on) %> -
-
- <%= link_to l(:label_find_all_comments), - {:controller => 'repositories', - :action => 'revision', - :id => act.repository.project, - :repository_id => act.repository.identifier_param, - :rev => act.identifier} %> - - <%= l(:label_comments_count, :count => e.act.count) %> -
-
- <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %>  - <%= l(:label_i_new_activity) %>  - <%= link_to format_activity_title("#{act.board.name}: #{act.subject}"), - {:controller => 'messages', - :action => 'show', - :board_id => act.board_id}.merge(act.parent_id.nil? ? {:id => act.id} : {:id => act.parent_id, :r => act.id, :anchor => "message-#{act.id}"}) %> - - <%= link_to(h(e.user), user_path(e.user_id)) %>  - <%= l(:label_new_activity) %>  - <%= link_to format_activity_title("#{act.board.name}: #{act.subject}"), - {:controller => 'messages', - :action => 'show', - :board_id => act.board_id}.merge(act.parent_id.nil? ? {:id => act.id} : {:id => act.parent_id, :r => act.id, :anchor => "message-#{act.id}"}) %> -
-

<%= textAreailizable(act,:content) %>

-
-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
-
- <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %>  - <%= l(:label_new_user) %> - - <%= link_to(h(e.user), user_path(e.user_id)) %>  - <%= l(:label_new_user) %> -

-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
-
- <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %>  - <%= l(:label_i_new_activity) %>  - <%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id} %> - - <%= link_to(h(e.user), user_path(e.user_id)) %>  - <%= l(:label_new_activity) %>  - <%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id} %> -
-

<%= textAreailizable act,:description %>

-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
- - <%= link_to l(:label_find_all_comments), {:controller => 'news', :action => 'show', :id => act.id} %> - - - <%= l(:label_comments_count, :count => e.act.comments_count) %> - -
-
- - <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> -   - - <%= l(:label_i_new_activity) %> -   - <%= link_to format_activity_title("#{act.source_from} (#{act.status}): #{act.tracker.name} #{act.subject}"), - {:controller => 'issues', - :action => 'show', - :id => act.id} %> - - - <%= link_to(h(e.user), user_path(e.user_id)) %> -   - - <%= l(:label_new_activity) %> -   - <%= link_to format_activity_title("#{act.source_from} (#{act.status}): #{act.tracker.name} #{act.subject}"), - {:controller => 'issues', - :action => 'show', - :id => act.id} %> -
- <%= textAreailizable act, :description %> -
-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
- <%= link_to l(:label_find_all_comments), {:controller => 'issues', :action => 'show', :id => act.id} %> - <%= l(:label_comments_count, :count => e.act.journals.count) %> -
-
- <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %>  - <%= l(:label_i_new_activity) %>  - <%= link_to format_activity_title("#{l(:label_contest)}: #{act.name}"), {:controller => 'contests', :action => 'show_contest', :id => act.id} %> - - <%= link_to(h(e.user), user_path(e.user_id)) %>  - <%= l(:label_new_activity) %>  - <%= link_to format_activity_title("#{l(:label_contest)}: #{act.name}"), {:controller => 'contests', :action => 'show_contest', :id => act.id} %> -

<%= textAreailizable act, :description %>

-
-
- <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> -
-
+
+ + <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> + +
+
+
+ + <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> + +   + + <%= l(:label_new_user) %> + + + + <%= link_to(h(e.user), user_path(e.user_id)) %> + +   + + <%= l(:label_new_user) %> + +
+

+
+
+ + <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> + +
+
+
+ + <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> + +   + + <%= l(:label_i_new_activity) %> + +   + <%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id} %> + + + <%= link_to(h(e.user), user_path(e.user_id)) %> + +   + + <%= l(:label_new_activity) %> + +   + <%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id} %> +
+

+ <%= textAreailizable act,:description %> +

+
+
+ + <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> + +
+
+ + <%= link_to l(:label_find_all_comments), {:controller => 'news', :action => 'show', :id => act.id} %> + + + <%= l(:label_comments_count, :count => e.act.comments_count) %> + +
+
+ + <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> + +   + + <%= l(:label_i_new_activity) %> +   + <%= link_to format_activity_title("#{act.source_from} (#{act.status}): #{act.tracker.name} #{act.subject}"), + {:controller => 'issues', + :action => 'show', + :id => act.id} %> + + + <%= link_to(h(e.user), user_path(e.user_id)) %> +   + + <%= l(:label_new_activity) %> +   + <%= link_to format_activity_title("#{act.source_from} (#{act.status}): #{act.tracker.name} #{act.subject}"), + {:controller => 'issues', + :action => 'show', + :id => act.id} %> +
+ <%= textAreailizable act, :description %> +
+
+ + <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> + +
+
+ + <%= link_to l(:label_find_all_comments), {:controller => 'issues', :action => 'show', :id => act.id} %> + + + <%= l(:label_comments_count, :count => e.act.journals.count) %> + +
+
+ + <%= link_to("#{l(:label_i)}", user_path(e.user_id)) %> + +   + + <%= l(:label_i_new_activity) %> + +   + <%= link_to format_activity_title("#{l(:label_contest)}: #{act.name}"), {:controller => 'contests', :action => 'show_contest', :id => act.id} %> + + + <%= link_to(h(e.user), user_path(e.user_id)) %> + +   + + <%= l(:label_new_activity) %> + +   + <%= link_to format_activity_title("#{l(:label_contest)}: #{act.name}"), {:controller => 'contests', :action => 'show_contest', :id => act.id} %> +
+

+ <%= textAreailizable act, :description %> +

+
+
+ + <%= (l(:label_update_time).to_s << ':' << format_time(e.act.created_on)).to_s %> + +
+

<%= textAreailizable e.notes %>

+

+ <%= textAreailizable e.notes %> +

+
- <%= format_time e.created_on %>
@@ -466,11 +605,15 @@
<% else %> -

<%= l(:label_no_user_respond_you) %>

+

+ <%= l(:label_no_user_respond_you) %> +

<% end %> diff --git a/app/views/versions/show.html.erb b/app/views/versions/show.html.erb index 6517faca5..bce5bc771 100644 --- a/app/views/versions/show.html.erb +++ b/app/views/versions/show.html.erb @@ -1,48 +1,72 @@ -
+
<%= link_to(l(:button_edit), edit_version_path(@version), :class => 'icon icon-edit') if User.current.allowed_to?(:manage_versions, @version.project) %> -<%= link_to_if_authorized(l(:button_edit_associated_wikipage, :page_title => @version.wiki_page_title), {:controller => 'wiki', :action => 'edit', :project_id => @version.project, :id => Wiki.titleize(@version.wiki_page_title)}, :class => 'icon icon-edit') unless @version.wiki_page_title.blank? || @version.project.wiki.nil? %> -<%= delete_link version_path(@version, :back_url => url_for(:controller => 'versions', :action => 'index', :project_id => @version.project)) if User.current.allowed_to?(:manage_versions, @version.project) %> +<%= link_to_if_authorized(l(:button_edit_associated_wikipage, + :page_title => @version.wiki_page_title.truncate(30, omission: '...')), + {:controller => 'wiki', + :action => 'edit', + :project_id => @version.project, + :id => Wiki.titleize(@version.wiki_page_title)}, + :class => 'icon icon-edit') unless @version.wiki_page_title.blank? || @version.project.wiki.nil? %> +<%= delete_link version_path(@version, :back_url => url_for(:controller => 'versions', + :action => 'index', + :project_id => @version.project)) if User.current.allowed_to?(:manage_versions, @version.project) %> <%= call_hook(:view_versions_show_contextual, { :version => @version, :project => @project }) %>
-

<%= h(@version.name) %>

+

+ <%= h(@version.name) %> +

-<%= render :partial => 'versions/overview', :locals => {:version => @version} %> -<%= render(:partial => "wiki/content", :locals => {:content => @version.wiki_page.content}) if @version.wiki_page %> + <%= render :partial => 'versions/overview', :locals => {:version => @version} %> + <%= render(:partial => "wiki/content", :locals => {:content => @version.wiki_page.content}) if @version.wiki_page %> -
-<% if @version.estimated_hours > 0 || User.current.allowed_to?(:view_time_entries, @project) %> -
<%= l(:label_time_tracking) %> - - - - - -<% if User.current.allowed_to?(:view_time_entries, @project) %> - - - - -<% end %> -
<%= l(:field_estimated_hours) %><%= html_hours(l_hours(@version.estimated_hours)) %>
<%= l(:label_spent_time) %><%= html_hours(l_hours(@version.spent_hours)) %>
-
-<% end %> +
+ <% if @version.estimated_hours > 0 || User.current.allowed_to?(:view_time_entries, @project) %> +
<%= l(:label_time_tracking) %> + + + + + + <% if User.current.allowed_to?(:view_time_entries, @project) %> + + + + + <% end %> +
+ <%= l(:field_estimated_hours) %> + + <%= html_hours(l_hours(@version.estimated_hours)) %> +
+ <%= l(:label_spent_time) %> + + <%= html_hours(l_hours(@version.spent_hours)) %> +
+
+ <% end %> -
-<%= render_issue_status_by(@version, params[:status_by]) if @version.fixed_issues.count > 0 %> -
+
+ <%= render_issue_status_by(@version, params[:status_by]) if @version.fixed_issues.count > 0 %> +
<% if @issues.present? %> <%= form_tag({}) do -%> - + <%- @issues.each do |issue| -%> - - + + <% end %> diff --git a/app/views/wiki/edit.html.erb b/app/views/wiki/edit.html.erb index 5859d27f1..16512beef 100644 --- a/app/views/wiki/edit.html.erb +++ b/app/views/wiki/edit.html.erb @@ -1,3 +1,4 @@ +<<<<<<< HEAD <%= wiki_page_breadcrumb(@page) %> @@ -60,3 +61,67 @@ <%= robot_exclusion_tag %> <% end %> <% html_title @page.pretty_title %> +======= +<%= wiki_page_breadcrumb(@page) %> + + +

+ <%= h @page.pretty_title %> +

+ +<%= form_for @content, :as => :content, + :url => {:action => 'update', :id => @page.title}, + :html => {:method => :put, :multipart => true, :id => 'wiki_form'} do |f| %> + <%= f.hidden_field :version %> + <% if @section %> + <%= hidden_field_tag 'section', @section %> + <%= hidden_field_tag 'section_hash', @section_hash %> + <% end %> + <%= error_messages_for 'content' %> + +
+

+ <%=text_area_tag 'content[text]', @text, :required => true, :id => 'editor02', :cols => 100, :rows => 25 %> +

+ +
+ +
+ <% if @page.safe_attribute_names.include?('parent_id') && @wiki.pages.any? %> + <%= fields_for @page do |fp| %> +

+ + <%= fp.select :parent_id,content_tag('option', '', :value => '') + wiki_page_options_for_select(@wiki.pages.all(:include => :parent) - @page.self_and_descendants, @page.parent) %> +

+ <% end %> + <% end %> + +

+ + <%= f.text_field :comments, :style => "width:75%;" %> +

+

+ + <%= render :partial => 'attachments/form' %> +

+
+ +

+ <%= submit_tag l(:button_save) %> +

+ <%= wikitoolbar_for 'content_text' %> +<% end %> +
+<% content_for :header_tags do %> + <%= robot_exclusion_tag %> +<% end %> +<% html_title @page.pretty_title %> +>>>>>>> d2f4b38eb6fd68a67940b8ffe735d8f7437acde1 diff --git a/config/locales/zh.yml b/config/locales/zh.yml index f92fe5763..cd522dd2c 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -2165,3 +2165,7 @@ zh: lable_course_teacher: 主讲老师 lable_course_end: 课程学期已结束 lable_file_sharingarea: 资源共享区 + label_no_contest_news_description: 竞赛描述不能为空 + label_contest_news_condition: 竞赛描述超过5000个汉字 + label_no_contest_news_title: 竞赛标题不能为空 + label_contest_news_title_condition: 竞赛标题超过255个汉字