Merge branch 'dev_hjq' of http://repository.trustie.net/xianbo/trustie2 into dev_hjq
This commit is contained in:
commit
7fa2338ce6
|
@ -128,6 +128,15 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def link_to_isuue_user(user, options={})
|
||||||
|
if user.is_a?(User)
|
||||||
|
name = h(user.name(options[:format]))
|
||||||
|
link_to name, {:controller=> 'users', :action => 'show', id: user.id, host: Setting.user_domain}, :class => "pro_info_p"
|
||||||
|
else
|
||||||
|
h(user.to_s)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def link_to_settings_user(user, options={})
|
def link_to_settings_user(user, options={})
|
||||||
if user.is_a?(User)
|
if user.is_a?(User)
|
||||||
name = h(user.name(options[:format]))
|
name = h(user.name(options[:format]))
|
||||||
|
@ -201,7 +210,7 @@ module ApplicationHelper
|
||||||
route_method = options.delete(:download) ? :download_named_attachment_path : :named_attachment_path
|
route_method = options.delete(:download) ? :download_named_attachment_path : :named_attachment_path
|
||||||
html_options = options.slice!(:only_path)
|
html_options = options.slice!(:only_path)
|
||||||
url = send(route_method, attachment, attachment.filename, options)
|
url = send(route_method, attachment, attachment.filename, options)
|
||||||
url << "?token=#{token}" unless token.nil?
|
url << "?token=#{token}" unless token.nil?
|
||||||
link_to text, url, html_options
|
link_to text, url, html_options
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -226,18 +235,18 @@ module ApplicationHelper
|
||||||
h(text),
|
h(text),
|
||||||
{:controller => 'repositories', :action => 'revision', :id => repository.project, :repository_id => repository.identifier_param, :rev => rev},
|
{:controller => 'repositories', :action => 'revision', :id => repository.project, :repository_id => repository.identifier_param, :rev => rev},
|
||||||
:title => l(:label_revision_id, format_revision(revision))
|
:title => l(:label_revision_id, format_revision(revision))
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Generates a link to a message
|
# Generates a link to a message
|
||||||
def link_to_message(message, options={}, html_options = nil)
|
def link_to_message(message, options={}, html_options = nil)
|
||||||
link_to(
|
link_to(
|
||||||
truncate(message.subject, :length => 60),
|
truncate(message.subject, :length => 60),
|
||||||
board_message_path(message.board_id, message.parent_id || message.id, {
|
board_message_path(message.board_id, message.parent_id || message.id, {
|
||||||
:r => (message.parent_id && message.id),
|
:r => (message.parent_id && message.id),
|
||||||
:anchor => (message.parent_id ? "message-#{message.id}" : nil)
|
:anchor => (message.parent_id ? "message-#{message.id}" : nil)
|
||||||
}.merge(options)),
|
}.merge(options)),
|
||||||
html_options
|
html_options
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -289,8 +298,8 @@ module ApplicationHelper
|
||||||
|
|
||||||
def thumbnail_tag(attachment)
|
def thumbnail_tag(attachment)
|
||||||
link_to image_tag(thumbnail_path(attachment)),
|
link_to image_tag(thumbnail_path(attachment)),
|
||||||
named_attachment_path(attachment, attachment.filename),
|
named_attachment_path(attachment, attachment.filename),
|
||||||
:title => attachment.filename
|
:title => attachment.filename
|
||||||
end
|
end
|
||||||
|
|
||||||
# 图片缩略图链接
|
# 图片缩略图链接
|
||||||
|
@ -318,9 +327,9 @@ module ApplicationHelper
|
||||||
def image_to_function(name, function, html_options = {})
|
def image_to_function(name, function, html_options = {})
|
||||||
html_options.symbolize_keys!
|
html_options.symbolize_keys!
|
||||||
tag(:input, html_options.merge({
|
tag(:input, html_options.merge({
|
||||||
:type => "image", :src => image_path(name),
|
:type => "image", :src => image_path(name),
|
||||||
:onclick => (html_options[:onclick] ? "#{html_options[:onclick]}; " : "") + "#{function};"
|
:onclick => (html_options[:onclick] ? "#{html_options[:onclick]}; " : "") + "#{function};"
|
||||||
}))
|
}))
|
||||||
end
|
end
|
||||||
|
|
||||||
def format_activity_title(text)
|
def format_activity_title(text)
|
||||||
|
@ -354,7 +363,7 @@ module ApplicationHelper
|
||||||
# The given collection may be a subset of the whole project tree
|
# The given collection may be a subset of the whole project tree
|
||||||
# (eg. some intermediate nodes are private and can not be seen)
|
# (eg. some intermediate nodes are private and can not be seen)
|
||||||
#Modified by nie.
|
#Modified by nie.
|
||||||
def render_project_nested_lists(projects)
|
def render_project_nested_lists(projects)
|
||||||
s = ''
|
s = ''
|
||||||
if projects.any?
|
if projects.any?
|
||||||
ancestors = []
|
ancestors = []
|
||||||
|
@ -383,9 +392,9 @@ module ApplicationHelper
|
||||||
|
|
||||||
if project.try(:project_type) == Project::ProjectType_project
|
if project.try(:project_type) == Project::ProjectType_project
|
||||||
unless User.current.member_of?(@project)
|
unless User.current.member_of?(@project)
|
||||||
s << "<span style = 'float: right;'>"
|
s << "<span style = 'float: right;'>"
|
||||||
s << watcher_link(@project, User.current)#, ['whiteButton'])
|
s << watcher_link(@project, User.current)#, ['whiteButton'])
|
||||||
s << "</span>"
|
s << "</span>"
|
||||||
end
|
end
|
||||||
s << (render :partial => 'projects/project', :locals => {:project => project}).to_s
|
s << (render :partial => 'projects/project', :locals => {:project => project}).to_s
|
||||||
else
|
else
|
||||||
|
@ -398,7 +407,7 @@ module ApplicationHelper
|
||||||
@project = original_project
|
@project = original_project
|
||||||
end
|
end
|
||||||
s.html_safe
|
s.html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
def render_course_nested_lists(courses)
|
def render_course_nested_lists(courses)
|
||||||
s = ''
|
s = ''
|
||||||
|
@ -433,7 +442,7 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
#added by young
|
#added by young
|
||||||
def render_project_nested_lists_new(projects)
|
def render_project_nested_lists_new(projects)
|
||||||
s = ''
|
s = ''
|
||||||
if projects.any?
|
if projects.any?
|
||||||
|
@ -462,7 +471,7 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
s.html_safe
|
s.html_safe
|
||||||
end
|
end
|
||||||
#end
|
#end
|
||||||
def render_page_hierarchy(pages, node=nil, options={})
|
def render_page_hierarchy(pages, node=nil, options={})
|
||||||
content = ''
|
content = ''
|
||||||
if pages[node]
|
if pages[node]
|
||||||
|
@ -511,8 +520,8 @@ module ApplicationHelper
|
||||||
projects = User.current.memberships.collect(&:project).compact.select(&:active?).uniq
|
projects = User.current.memberships.collect(&:project).compact.select(&:active?).uniq
|
||||||
if projects.any?
|
if projects.any?
|
||||||
options =
|
options =
|
||||||
("<option value=''>#{ l(:label_jump_to_a_project) }</option>" +
|
("<option value=''>#{ l(:label_jump_to_a_project) }</option>" +
|
||||||
'<option value="" disabled="disabled">---</option>').html_safe
|
'<option value="" disabled="disabled">---</option>').html_safe
|
||||||
|
|
||||||
options << project_tree_options_for_select(projects, :selected => @project) do |p|
|
options << project_tree_options_for_select(projects, :selected => @project) do |p|
|
||||||
{ :value => project_path(:id => p, :jump => current_menu_item) }
|
{ :value => project_path(:id => p, :jump => current_menu_item) }
|
||||||
|
@ -702,15 +711,15 @@ module ApplicationHelper
|
||||||
link_to(image_tag('2uparrow.png', :alt => l(:label_sort_highest)),
|
link_to(image_tag('2uparrow.png', :alt => l(:label_sort_highest)),
|
||||||
url.merge({"#{name}[move_to]" => 'highest'}),
|
url.merge({"#{name}[move_to]" => 'highest'}),
|
||||||
:method => method, :title => l(:label_sort_highest)) +
|
:method => method, :title => l(:label_sort_highest)) +
|
||||||
link_to(image_tag('1uparrow.png', :alt => l(:label_sort_higher)),
|
link_to(image_tag('1uparrow.png', :alt => l(:label_sort_higher)),
|
||||||
url.merge({"#{name}[move_to]" => 'higher'}),
|
url.merge({"#{name}[move_to]" => 'higher'}),
|
||||||
:method => method, :title => l(:label_sort_higher)) +
|
:method => method, :title => l(:label_sort_higher)) +
|
||||||
link_to(image_tag('1downarrow.png', :alt => l(:label_sort_lower)),
|
link_to(image_tag('1downarrow.png', :alt => l(:label_sort_lower)),
|
||||||
url.merge({"#{name}[move_to]" => 'lower'}),
|
url.merge({"#{name}[move_to]" => 'lower'}),
|
||||||
:method => method, :title => l(:label_sort_lower)) +
|
:method => method, :title => l(:label_sort_lower)) +
|
||||||
link_to(image_tag('2downarrow.png', :alt => l(:label_sort_lowest)),
|
link_to(image_tag('2downarrow.png', :alt => l(:label_sort_lowest)),
|
||||||
url.merge({"#{name}[move_to]" => 'lowest'}),
|
url.merge({"#{name}[move_to]" => 'lowest'}),
|
||||||
:method => method, :title => l(:label_sort_lowest))
|
:method => method, :title => l(:label_sort_lowest))
|
||||||
end
|
end
|
||||||
|
|
||||||
def breadcrumb(*args)
|
def breadcrumb(*args)
|
||||||
|
@ -794,15 +803,15 @@ module ApplicationHelper
|
||||||
def textilizable(*args)
|
def textilizable(*args)
|
||||||
options = args.last.is_a?(Hash) ? args.pop : {}
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
||||||
case args.size
|
case args.size
|
||||||
when 1
|
when 1
|
||||||
obj = options[:object]
|
obj = options[:object]
|
||||||
text = args.shift
|
text = args.shift
|
||||||
when 2
|
when 2
|
||||||
obj = args.shift
|
obj = args.shift
|
||||||
attr = args.shift
|
attr = args.shift
|
||||||
text = obj.send(attr).to_s
|
text = obj.send(attr).to_s
|
||||||
else
|
else
|
||||||
raise ArgumentError, 'invalid arguments to textilizable'
|
raise ArgumentError, 'invalid arguments to textilizable'
|
||||||
end
|
end
|
||||||
return '' if text.blank?
|
return '' if text.blank?
|
||||||
project = options[:project] || @project || (obj && obj.respond_to?(:project) ? obj.project : nil)
|
project = options[:project] || @project || (obj && obj.respond_to?(:project) ? obj.project : nil)
|
||||||
|
@ -958,18 +967,18 @@ module ApplicationHelper
|
||||||
# check if page exists
|
# check if page exists
|
||||||
wiki_page = link_project.wiki.find_page(page)
|
wiki_page = link_project.wiki.find_page(page)
|
||||||
url = if anchor.present? && wiki_page.present? && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)) && obj.page == wiki_page
|
url = if anchor.present? && wiki_page.present? && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)) && obj.page == wiki_page
|
||||||
"##{anchor}"
|
"##{anchor}"
|
||||||
else
|
else
|
||||||
case options[:wiki_links]
|
case options[:wiki_links]
|
||||||
when :local; "#{page.present? ? Wiki.titleize(page) : ''}.html" + (anchor.present? ? "##{anchor}" : '')
|
when :local; "#{page.present? ? Wiki.titleize(page) : ''}.html" + (anchor.present? ? "##{anchor}" : '')
|
||||||
when :anchor; "##{page.present? ? Wiki.titleize(page) : title}" + (anchor.present? ? "_#{anchor}" : '') # used for single-file wiki export
|
when :anchor; "##{page.present? ? Wiki.titleize(page) : title}" + (anchor.present? ? "_#{anchor}" : '') # used for single-file wiki export
|
||||||
else
|
else
|
||||||
wiki_page_id = page.present? ? Wiki.titleize(page) : nil
|
wiki_page_id = page.present? ? Wiki.titleize(page) : nil
|
||||||
parent = wiki_page.nil? && obj.is_a?(WikiContent) && obj.page && project == link_project ? obj.page.title : nil
|
parent = wiki_page.nil? && obj.is_a?(WikiContent) && obj.page && project == link_project ? obj.page.title : nil
|
||||||
url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project,
|
url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project,
|
||||||
:id => wiki_page_id, :version => nil, :anchor => anchor, :parent => parent)
|
:id => wiki_page_id, :version => nil, :anchor => anchor, :parent => parent)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
link_to(title.present? ? title.html_safe : h(page), url, :class => ('wiki-page' + (wiki_page ? '' : ' new')))
|
link_to(title.present? ? title.html_safe : h(page), url, :class => ('wiki-page' + (wiki_page ? '' : ' new')))
|
||||||
else
|
else
|
||||||
# project or wiki doesn't exist
|
# project or wiki doesn't exist
|
||||||
|
@ -1044,110 +1053,110 @@ module ApplicationHelper
|
||||||
# project.changesets.visible raises an SQL error because of a double join on repositories
|
# project.changesets.visible raises an SQL error because of a double join on repositories
|
||||||
if repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(repository.id, identifier))
|
if repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(repository.id, identifier))
|
||||||
link = link_to(h("#{project_prefix}#{repo_prefix}r#{identifier}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.revision},
|
link = link_to(h("#{project_prefix}#{repo_prefix}r#{identifier}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.revision},
|
||||||
:class => 'changeset',
|
:class => 'changeset',
|
||||||
:title => truncate_single_line(changeset.comments, :length => 100))
|
:title => truncate_single_line(changeset.comments, :length => 100))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elsif sep == '#'
|
elsif sep == '#'
|
||||||
oid = identifier.to_i
|
oid = identifier.to_i
|
||||||
case prefix
|
case prefix
|
||||||
when nil
|
when nil
|
||||||
if oid.to_s == identifier && issue = Issue.visible.find_by_id(oid, :include => :status)
|
if oid.to_s == identifier && issue = Issue.visible.find_by_id(oid, :include => :status)
|
||||||
anchor = comment_id ? "note-#{comment_id}" : nil
|
anchor = comment_id ? "note-#{comment_id}" : nil
|
||||||
link = link_to("##{oid}", {:only_path => only_path, :controller => 'issues', :action => 'show', :id => oid, :anchor => anchor},
|
link = link_to("##{oid}", {:only_path => only_path, :controller => 'issues', :action => 'show', :id => oid, :anchor => anchor},
|
||||||
:class => issue.css_classes,
|
:class => issue.css_classes,
|
||||||
:title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})")
|
:title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})")
|
||||||
end
|
end
|
||||||
when 'document'
|
when 'document'
|
||||||
if document = Document.visible.find_by_id(oid)
|
if document = Document.visible.find_by_id(oid)
|
||||||
link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document},
|
link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document},
|
||||||
:class => 'document'
|
:class => 'document'
|
||||||
end
|
end
|
||||||
when 'version'
|
when 'version'
|
||||||
if version = Version.visible.find_by_id(oid)
|
if version = Version.visible.find_by_id(oid)
|
||||||
link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version},
|
link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version},
|
||||||
:class => 'version'
|
:class => 'version'
|
||||||
end
|
end
|
||||||
when 'message'
|
when 'message'
|
||||||
if message = Message.visible.find_by_id(oid, :include => :parent)
|
if message = Message.visible.find_by_id(oid, :include => :parent)
|
||||||
link = link_to_message(message, {:only_path => only_path}, :class => 'message')
|
link = link_to_message(message, {:only_path => only_path}, :class => 'message')
|
||||||
end
|
end
|
||||||
when 'forum'
|
when 'forum'
|
||||||
if board = Board.visible.find_by_id(oid)
|
if board = Board.visible.find_by_id(oid)
|
||||||
link = link_to h(board.name), {:only_path => only_path, :controller => 'boards', :action => 'show', :id => board, :project_id => board.project},
|
link = link_to h(board.name), {:only_path => only_path, :controller => 'boards', :action => 'show', :id => board, :project_id => board.project},
|
||||||
:class => 'board'
|
:class => 'board'
|
||||||
end
|
end
|
||||||
when 'news'
|
when 'news'
|
||||||
if news = News.visible.find_by_id(oid)
|
if news = News.visible.find_by_id(oid)
|
||||||
link = link_to h(news.title), {:only_path => only_path, :controller => 'news', :action => 'show', :id => news},
|
link = link_to h(news.title), {:only_path => only_path, :controller => 'news', :action => 'show', :id => news},
|
||||||
:class => 'news'
|
:class => 'news'
|
||||||
end
|
end
|
||||||
when 'project'
|
when 'project'
|
||||||
if p = Project.visible.find_by_id(oid)
|
if p = Project.visible.find_by_id(oid)
|
||||||
link = link_to_project(p, {:only_path => only_path}, :class => 'project')
|
link = link_to_project(p, {:only_path => only_path}, :class => 'project')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elsif sep == ':'
|
elsif sep == ':'
|
||||||
# removes the double quotes if any
|
# removes the double quotes if any
|
||||||
name = identifier.gsub(%r{^"(.*)"$}, "\\1")
|
name = identifier.gsub(%r{^"(.*)"$}, "\\1")
|
||||||
case prefix
|
case prefix
|
||||||
when 'document'
|
when 'document'
|
||||||
if project && document = project.documents.visible.find_by_title(name)
|
if project && document = project.documents.visible.find_by_title(name)
|
||||||
link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document},
|
link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document},
|
||||||
:class => 'document'
|
:class => 'document'
|
||||||
end
|
|
||||||
when 'version'
|
|
||||||
if project && version = project.versions.visible.find_by_name(name)
|
|
||||||
link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version},
|
|
||||||
:class => 'version'
|
|
||||||
end
|
|
||||||
when 'forum'
|
|
||||||
if project && board = project.boards.visible.find_by_name(name)
|
|
||||||
link = link_to h(board.name), {:only_path => only_path, :controller => 'boards', :action => 'show', :id => board, :project_id => board.project},
|
|
||||||
:class => 'board'
|
|
||||||
end
|
|
||||||
when 'news'
|
|
||||||
if project && news = project.news.visible.find_by_title(name)
|
|
||||||
link = link_to h(news.title), {:only_path => only_path, :controller => 'news', :action => 'show', :id => news},
|
|
||||||
:class => 'news'
|
|
||||||
end
|
|
||||||
when 'commit', 'source', 'export'
|
|
||||||
if project
|
|
||||||
repository = nil
|
|
||||||
if name =~ %r{^(([a-z0-9\-_]+)\|)(.+)$}
|
|
||||||
repo_prefix, repo_identifier, name = $1, $2, $3
|
|
||||||
repository = project.repositories.detect {|repo| repo.identifier == repo_identifier}
|
|
||||||
else
|
|
||||||
repository = project.repository
|
|
||||||
end
|
end
|
||||||
if prefix == 'commit'
|
when 'version'
|
||||||
if repository && (changeset = Changeset.visible.where("repository_id = ? AND scmid LIKE ?", repository.id, "#{name}%").first)
|
if project && version = project.versions.visible.find_by_name(name)
|
||||||
link = link_to h("#{project_prefix}#{repo_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.identifier},
|
link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version},
|
||||||
:class => 'changeset',
|
:class => 'version'
|
||||||
:title => truncate_single_line(changeset.comments, :length => 100)
|
end
|
||||||
end
|
when 'forum'
|
||||||
else
|
if project && board = project.boards.visible.find_by_name(name)
|
||||||
if repository && User.current.allowed_to?(:browse_repository, project)
|
link = link_to h(board.name), {:only_path => only_path, :controller => 'boards', :action => 'show', :id => board, :project_id => board.project},
|
||||||
name =~ %r{^[/\\]*(.*?)(@([^/\\@]+?))?(#(L\d+))?$}
|
:class => 'board'
|
||||||
path, rev, anchor = $1, $3, $5
|
end
|
||||||
link = link_to h("#{project_prefix}#{prefix}:#{repo_prefix}#{name}"), {:controller => 'repositories', :action => (prefix == 'export' ? 'raw' : 'entry'), :id => project, :repository_id => repository.identifier_param,
|
when 'news'
|
||||||
:path => to_path_param(path),
|
if project && news = project.news.visible.find_by_title(name)
|
||||||
:rev => rev,
|
link = link_to h(news.title), {:only_path => only_path, :controller => 'news', :action => 'show', :id => news},
|
||||||
:anchor => anchor},
|
:class => 'news'
|
||||||
:class => (prefix == 'export' ? 'source download' : 'source')
|
end
|
||||||
end
|
when 'commit', 'source', 'export'
|
||||||
|
if project
|
||||||
|
repository = nil
|
||||||
|
if name =~ %r{^(([a-z0-9\-_]+)\|)(.+)$}
|
||||||
|
repo_prefix, repo_identifier, name = $1, $2, $3
|
||||||
|
repository = project.repositories.detect {|repo| repo.identifier == repo_identifier}
|
||||||
|
else
|
||||||
|
repository = project.repository
|
||||||
|
end
|
||||||
|
if prefix == 'commit'
|
||||||
|
if repository && (changeset = Changeset.visible.where("repository_id = ? AND scmid LIKE ?", repository.id, "#{name}%").first)
|
||||||
|
link = link_to h("#{project_prefix}#{repo_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :repository_id => repository.identifier_param, :rev => changeset.identifier},
|
||||||
|
:class => 'changeset',
|
||||||
|
:title => truncate_single_line(changeset.comments, :length => 100)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if repository && User.current.allowed_to?(:browse_repository, project)
|
||||||
|
name =~ %r{^[/\\]*(.*?)(@([^/\\@]+?))?(#(L\d+))?$}
|
||||||
|
path, rev, anchor = $1, $3, $5
|
||||||
|
link = link_to h("#{project_prefix}#{prefix}:#{repo_prefix}#{name}"), {:controller => 'repositories', :action => (prefix == 'export' ? 'raw' : 'entry'), :id => project, :repository_id => repository.identifier_param,
|
||||||
|
:path => to_path_param(path),
|
||||||
|
:rev => rev,
|
||||||
|
:anchor => anchor},
|
||||||
|
:class => (prefix == 'export' ? 'source download' : 'source')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
repo_prefix = nil
|
||||||
|
end
|
||||||
|
when 'attachment'
|
||||||
|
attachments = options[:attachments] || (obj && obj.respond_to?(:attachments) ? obj.attachments : nil)
|
||||||
|
if attachments && attachment = Attachment.latest_attach(attachments, name)
|
||||||
|
link = link_to_attachment(attachment, :only_path => only_path, :download => true, :class => 'attachment')
|
||||||
|
end
|
||||||
|
when 'project'
|
||||||
|
if p = Project.visible.where("identifier = :s OR LOWER(name) = :s", :s => name.downcase).first
|
||||||
|
link = link_to_project(p, {:only_path => only_path}, :class => 'project')
|
||||||
end
|
end
|
||||||
repo_prefix = nil
|
|
||||||
end
|
|
||||||
when 'attachment'
|
|
||||||
attachments = options[:attachments] || (obj && obj.respond_to?(:attachments) ? obj.attachments : nil)
|
|
||||||
if attachments && attachment = Attachment.latest_attach(attachments, name)
|
|
||||||
link = link_to_attachment(attachment, :only_path => only_path, :download => true, :class => 'attachment')
|
|
||||||
end
|
|
||||||
when 'project'
|
|
||||||
if p = Project.visible.where("identifier = :s OR LOWER(name) = :s", :s => name.downcase).first
|
|
||||||
link = link_to_project(p, {:only_path => only_path}, :class => 'project')
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1164,9 +1173,9 @@ module ApplicationHelper
|
||||||
@current_section += 1
|
@current_section += 1
|
||||||
if @current_section > 1
|
if @current_section > 1
|
||||||
content_tag('div',
|
content_tag('div',
|
||||||
link_to(image_tag('edit.png'), options[:edit_section_links].merge(:section => @current_section)),
|
link_to(image_tag('edit.png'), options[:edit_section_links].merge(:section => @current_section)),
|
||||||
:class => 'contextual',
|
:class => 'contextual',
|
||||||
:title => l(:button_edit_section)) + heading.html_safe
|
:title => l(:button_edit_section)) + heading.html_safe
|
||||||
else
|
else
|
||||||
heading
|
heading
|
||||||
end
|
end
|
||||||
|
@ -1285,10 +1294,10 @@ module ApplicationHelper
|
||||||
# Same as Rails' simple_format helper without using paragraphs
|
# Same as Rails' simple_format helper without using paragraphs
|
||||||
def simple_format_without_paragraph(text)
|
def simple_format_without_paragraph(text)
|
||||||
text.to_s.
|
text.to_s.
|
||||||
gsub(/\r\n?/, "\n"). # \r\n and \r -> \n
|
gsub(/\r\n?/, "\n"). # \r\n and \r -> \n
|
||||||
gsub(/\n\n+/, "<br /><br />"). # 2+ newline -> 2 br
|
gsub(/\n\n+/, "<br /><br />"). # 2+ newline -> 2 br
|
||||||
gsub(/([^\n]\n)(?=[^\n])/, '\1<br />'). # 1 newline -> br
|
gsub(/([^\n]\n)(?=[^\n])/, '\1<br />'). # 1 newline -> br
|
||||||
html_safe
|
html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
def wiki_simple_format_without_paragraph(text)
|
def wiki_simple_format_without_paragraph(text)
|
||||||
|
@ -1303,7 +1312,7 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def lang_options_for_select(blank=true)
|
def lang_options_for_select(blank=true)
|
||||||
{ 'Chinese简体中文 '=> 'zh', :English => :en}
|
{ 'Chinese简体中文 '=> 'zh', :English => :en}
|
||||||
end
|
end
|
||||||
|
|
||||||
def label_tag_for(name, option_tags = nil, options = {})
|
def label_tag_for(name, option_tags = nil, options = {})
|
||||||
|
@ -1395,7 +1404,7 @@ module ApplicationHelper
|
||||||
:href => "#",
|
:href => "#",
|
||||||
:onclick => %|submitPreview("#{escape_javascript url_for(url)}", "#{escape_javascript form}", "#{escape_javascript target}"); return false;|,
|
:onclick => %|submitPreview("#{escape_javascript url_for(url)}", "#{escape_javascript form}", "#{escape_javascript target}"); return false;|,
|
||||||
:accesskey => accesskey(:preview)
|
:accesskey => accesskey(:preview)
|
||||||
}.merge(options)
|
}.merge(options)
|
||||||
end
|
end
|
||||||
|
|
||||||
def link_to_function(name, function, html_options={})
|
def link_to_function(name, function, html_options={})
|
||||||
|
@ -1422,7 +1431,7 @@ module ApplicationHelper
|
||||||
|
|
||||||
def check_all_links(form_name)
|
def check_all_links(form_name)
|
||||||
link_to_function(l(:button_check_all), "checkAll('#{form_name}', true)") + " ".html_safe + " | "+ " ".html_safe +
|
link_to_function(l(:button_check_all), "checkAll('#{form_name}', true)") + " ".html_safe + " | "+ " ".html_safe +
|
||||||
link_to_function(l(:button_uncheck_all), "checkAll('#{form_name}', false)")
|
link_to_function(l(:button_uncheck_all), "checkAll('#{form_name}', false)")
|
||||||
end
|
end
|
||||||
|
|
||||||
def progress_bar(pcts, options={})
|
def progress_bar(pcts, options={})
|
||||||
|
@ -1433,12 +1442,12 @@ module ApplicationHelper
|
||||||
width = options[:width] || '100px;'
|
width = options[:width] || '100px;'
|
||||||
legend = options[:legend] || ''
|
legend = options[:legend] || ''
|
||||||
content_tag('table',
|
content_tag('table',
|
||||||
content_tag('tr',
|
content_tag('tr',
|
||||||
(pcts[0] > 0 ? content_tag('td', '', :style => "width: #{pcts[0]}%;", :class => 'closed') : ''.html_safe) +
|
(pcts[0] > 0 ? content_tag('td', '', :style => "width: #{pcts[0]}%;", :class => 'closed') : ''.html_safe) +
|
||||||
(pcts[1] > 0 ? content_tag('td', '', :style => "width: #{pcts[1]}%;", :class => 'done') : ''.html_safe) +
|
(pcts[1] > 0 ? content_tag('td', '', :style => "width: #{pcts[1]}%;", :class => 'done') : ''.html_safe) +
|
||||||
(pcts[2] > 0 ? content_tag('td', '', :style => "width: #{pcts[2]}%;", :class => 'todo') : ''.html_safe)
|
(pcts[2] > 0 ? content_tag('td', '', :style => "width: #{pcts[2]}%;", :class => 'todo') : ''.html_safe)
|
||||||
), :class => 'progress', :style => "width: #{width};").html_safe +
|
), :class => 'progress', :style => "width: #{width};").html_safe +
|
||||||
content_tag('p', legend, :class => 'percent').html_safe
|
content_tag('p', legend, :class => 'percent').html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
def checked_image(checked=true)
|
def checked_image(checked=true)
|
||||||
|
@ -1451,7 +1460,7 @@ module ApplicationHelper
|
||||||
unless @context_menu_included
|
unless @context_menu_included
|
||||||
content_for :header_tags do
|
content_for :header_tags do
|
||||||
javascript_include_tag('context_menu') +
|
javascript_include_tag('context_menu') +
|
||||||
stylesheet_link_tag('context_menu')
|
stylesheet_link_tag('context_menu')
|
||||||
end
|
end
|
||||||
if l(:direction) == 'rtl'
|
if l(:direction) == 'rtl'
|
||||||
content_for :header_tags do
|
content_for :header_tags do
|
||||||
|
@ -1797,11 +1806,11 @@ module ApplicationHelper
|
||||||
html << (content_tag "span", l(:label_no_current_watchers))
|
html << (content_tag "span", l(:label_no_current_watchers))
|
||||||
end
|
end
|
||||||
for user in User.watched_by(obj.id)
|
for user in User.watched_by(obj.id)
|
||||||
html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => "#{user.name}")
|
html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => "#{user.name}")
|
||||||
count = count + 1
|
count = count + 1
|
||||||
if count >= 12
|
if count >= 12
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
html.html_safe
|
html.html_safe
|
||||||
end
|
end
|
||||||
|
@ -1827,13 +1836,13 @@ module ApplicationHelper
|
||||||
html.html_safe
|
html.html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
def show_bid_fans_picture(obj)
|
def show_bid_fans_picture(obj)
|
||||||
html = ''
|
html = ''
|
||||||
if obj.watcher_users.count == 0
|
if obj.watcher_users.count == 0
|
||||||
html << (content_tag "span", l(:label_project_no_follow))
|
html << (content_tag "span", l(:label_project_no_follow))
|
||||||
else
|
else
|
||||||
obj.watcher_users.take(12).each do |user|
|
obj.watcher_users.take(12).each do |user|
|
||||||
html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => user.name)
|
html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => user.name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
html.html_safe
|
html.html_safe
|
||||||
|
@ -1868,7 +1877,7 @@ module ApplicationHelper
|
||||||
html.html_safe
|
html.html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
def show_contest_project(contest)
|
def show_contest_project(contest)
|
||||||
html = ''
|
html = ''
|
||||||
if contest.projects.where('is_public = 1').count == 0
|
if contest.projects.where('is_public = 1').count == 0
|
||||||
html << (content_tag "p", l(:label_no_bid_project), :class => "font_lighter")
|
html << (content_tag "p", l(:label_no_bid_project), :class => "font_lighter")
|
||||||
|
@ -1880,7 +1889,7 @@ module ApplicationHelper
|
||||||
html.html_safe
|
html.html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
def show_contest_softapplication(contest)
|
def show_contest_softapplication(contest)
|
||||||
html = ''
|
html = ''
|
||||||
if contest.softapplications.where('is_public = 1').count == 0
|
if contest.softapplications.where('is_public = 1').count == 0
|
||||||
html << (content_tag "p", l(:label_no_contest_softapplication), :class => "font_lighter")
|
html << (content_tag "p", l(:label_no_contest_softapplication), :class => "font_lighter")
|
||||||
|
@ -1892,17 +1901,17 @@ module ApplicationHelper
|
||||||
html.html_safe
|
html.html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
def show_contest_fans_picture(obj)
|
def show_contest_fans_picture(obj)
|
||||||
html = ''
|
html = ''
|
||||||
if obj.watcher_users.count == 0
|
if obj.watcher_users.count == 0
|
||||||
html << (content_tag "span", l(:label_project_no_follow))
|
html << (content_tag "span", l(:label_project_no_follow))
|
||||||
else
|
else
|
||||||
obj.watcher_users.take(12).each do |user|
|
obj.watcher_users.take(12).each do |user|
|
||||||
html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => user.name)
|
html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => user.name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
html.html_safe
|
html.html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
#display fans picture
|
#display fans picture
|
||||||
def show_more_fans?(obj)
|
def show_more_fans?(obj)
|
||||||
|
@ -1919,13 +1928,13 @@ module ApplicationHelper
|
||||||
html << (content_tag "span", l(:label_no_current_fans))
|
html << (content_tag "span", l(:label_no_current_fans))
|
||||||
else
|
else
|
||||||
obj.watcher_users.take(12).each do |user|
|
obj.watcher_users.take(12).each do |user|
|
||||||
html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => user.name)
|
html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => user.name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
html.html_safe
|
html.html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
# added by bai
|
# added by bai
|
||||||
def show_more_participate?(obj)
|
def show_more_participate?(obj)
|
||||||
if obj.join_in_contests.count > 12
|
if obj.join_in_contests.count > 12
|
||||||
return true
|
return true
|
||||||
|
@ -1934,18 +1943,18 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def show_participate_picture(obj)
|
def show_participate_picture(obj)
|
||||||
html = ''
|
html = ''
|
||||||
count = 0
|
count = 0
|
||||||
if obj.join_in_contests.count == 0
|
if obj.join_in_contests.count == 0
|
||||||
html << (content_tag "span", l(:label_no_current_participate))
|
html << (content_tag "span", l(:label_no_current_participate))
|
||||||
end
|
end
|
||||||
for temp in obj.join_in_contests
|
for temp in obj.join_in_contests
|
||||||
html << (link_to image_tag(url_to_avatar(temp.user), :class => "avatar"), user_path(temp.user), :class => "avatar", :title => "#{temp.user.name}")
|
html << (link_to image_tag(url_to_avatar(temp.user), :class => "avatar"), user_path(temp.user), :class => "avatar", :title => "#{temp.user.name}")
|
||||||
count = count + 1
|
count = count + 1
|
||||||
if count >= 12
|
if count >= 12
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
html.html_safe
|
html.html_safe
|
||||||
end
|
end
|
||||||
|
@ -1954,14 +1963,14 @@ module ApplicationHelper
|
||||||
|
|
||||||
# add by huang
|
# add by huang
|
||||||
def show_watcher_list(user)
|
def show_watcher_list(user)
|
||||||
html = ''
|
html = ''
|
||||||
count = 0
|
count = 0
|
||||||
for user in User.watched_by(user.id)
|
for user in User.watched_by(user.id)
|
||||||
html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => "#{user.name}")
|
html << (link_to image_tag(url_to_avatar(user), :class => "avatar"), user_path(user), :class => "avatar", :title => "#{user.name}")
|
||||||
count = count + 1
|
count = count + 1
|
||||||
if count >= 12
|
if count >= 12
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
html.html_safe
|
html.html_safe
|
||||||
end
|
end
|
||||||
|
@ -1979,14 +1988,14 @@ module ApplicationHelper
|
||||||
return true if bid.nil?
|
return true if bid.nil?
|
||||||
|
|
||||||
case bid.homework_type
|
case bid.homework_type
|
||||||
when Bid::HomeworkFile
|
when Bid::HomeworkFile
|
||||||
attaches = HomeworkAttach.where(bid_id: curb)
|
attaches = HomeworkAttach.where(bid_id: curb)
|
||||||
attaches.map(&:user_id).include? cur
|
attaches.map(&:user_id).include? cur
|
||||||
when Bid::HomeworkProject
|
when Bid::HomeworkProject
|
||||||
attaches = BidingProject.where(user_id: User.current, bid_id: bid)
|
attaches = BidingProject.where(user_id: User.current, bid_id: bid)
|
||||||
attaches.count > 0 # > 0 则有提交记录
|
attaches.count > 0 # > 0 则有提交记录
|
||||||
else
|
else
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -2048,12 +2057,12 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
# def hadcommittedforcontest(curu)
|
# def hadcommittedforcontest(curu)
|
||||||
# message = JournalsForMessage.find_by_sql("select * from journals_for_messages where jour_type = 'Softapplication' ")
|
# message = JournalsForMessage.find_by_sql("select * from journals_for_messages where jour_type = 'Softapplication' ")
|
||||||
# message.each do |createmessage|
|
# message.each do |createmessage|
|
||||||
# if createmessage.user_id == curu
|
# if createmessage.user_id == curu
|
||||||
# return true
|
# return true
|
||||||
# end
|
# end
|
||||||
# end
|
# end
|
||||||
# end
|
# end
|
||||||
|
|
||||||
def footer_logo(ul_class=nil, li_class=nil)
|
def footer_logo(ul_class=nil, li_class=nil)
|
||||||
|
@ -2073,63 +2082,63 @@ module ApplicationHelper
|
||||||
|
|
||||||
def sort_homework_path(bid, sort, direction)
|
def sort_homework_path(bid, sort, direction)
|
||||||
case self.action_name
|
case self.action_name
|
||||||
when 'show_courseEx'
|
when 'show_courseEx'
|
||||||
get_not_batch_homework_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: 'asc')
|
get_not_batch_homework_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: 'asc')
|
||||||
when 'get_not_batch_homework'
|
when 'get_not_batch_homework'
|
||||||
get_not_batch_homework_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: direction)
|
get_not_batch_homework_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: direction)
|
||||||
when 'get_batch_homeworks'
|
when 'get_batch_homeworks'
|
||||||
get_batch_homeworks_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: direction)
|
get_batch_homeworks_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: direction)
|
||||||
when 'get_homeworks'
|
when 'get_homeworks'
|
||||||
get_homeworks_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: direction)
|
get_homeworks_homework_attach_index_path(bid_id: bid.id, sort: sort, direction: direction)
|
||||||
else
|
else
|
||||||
'#'
|
'#'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def anonymous_comment_link(bid, course)
|
def anonymous_comment_link(bid, course)
|
||||||
link = case bid.comment_status
|
link = case bid.comment_status
|
||||||
when 0
|
when 0
|
||||||
confirm_info = "开启匿评后学生将不能对作业进行提交、修改、删除等操作\n"
|
confirm_info = "开启匿评后学生将不能对作业进行提交、修改、删除等操作\n"
|
||||||
confirm_info += anonymous_comment_notice(bid,course)
|
confirm_info += anonymous_comment_notice(bid,course)
|
||||||
confirm_info += '是否确定开启匿评?'
|
confirm_info += '是否确定开启匿评?'
|
||||||
link_to '启动匿评', start_anonymous_comment_bid_path(bid), id: "#{bid.id}_start_anonymous_comment", remote: true, :confirm => confirm_info, disable_with: '加载中...'
|
link_to '启动匿评', start_anonymous_comment_bid_path(bid), id: "#{bid.id}_start_anonymous_comment", remote: true, :confirm => confirm_info, disable_with: '加载中...'
|
||||||
when 1
|
when 1
|
||||||
confirm_info = "关闭匿评后所有同学将不能继续进行匿评,且将公开已提交作业列表\n"
|
confirm_info = "关闭匿评后所有同学将不能继续进行匿评,且将公开已提交作业列表\n"
|
||||||
confirm_info += anonymous_comment_notice(bid,course)
|
confirm_info += anonymous_comment_notice(bid,course)
|
||||||
confirm_info += '是否确定关闭匿评?'
|
confirm_info += '是否确定关闭匿评?'
|
||||||
link_to '关闭匿评', stop_anonymous_comment_bid_path(bid), id: "#{bid.id}_stop_anonymous_comment", remote: true, :confirm => confirm_info
|
link_to '关闭匿评', stop_anonymous_comment_bid_path(bid), id: "#{bid.id}_stop_anonymous_comment", remote: true, :confirm => confirm_info
|
||||||
when 2
|
when 2
|
||||||
'匿评结束'
|
'匿评结束'
|
||||||
end
|
end
|
||||||
content_tag('span', link, id: "#{bid.id}_anonymous_comment")
|
content_tag('span', link, id: "#{bid.id}_anonymous_comment")
|
||||||
end
|
end
|
||||||
|
|
||||||
def anonymous_comment_notice(bid, course)
|
def anonymous_comment_notice(bid, course)
|
||||||
case bid.comment_status
|
case bid.comment_status
|
||||||
when 0
|
when 0
|
||||||
@student_size ||= searchStudent(course).size
|
@student_size ||= searchStudent(course).size
|
||||||
@homework_size = bid.homeworks.size
|
@homework_size = bid.homeworks.size
|
||||||
percent = @homework_size.to_f / (@student_size == 0 ? 1 : @student_size)
|
percent = @homework_size.to_f / (@student_size == 0 ? 1 : @student_size)
|
||||||
confirm_info = "目前#{@student_size}个学生,总共提交了#{@homework_size}份作业,占#{number_to_percentage(percent * 100, precision: 1)}\n"
|
confirm_info = "目前#{@student_size}个学生,总共提交了#{@homework_size}份作业,占#{number_to_percentage(percent * 100, precision: 1)}\n"
|
||||||
when 1
|
when 1
|
||||||
@homework_evaluations = 0
|
@homework_evaluations = 0
|
||||||
bid.homeworks.map { |homework| @homework_evaluations += homework.homework_evaluations.count}
|
bid.homeworks.map { |homework| @homework_evaluations += homework.homework_evaluations.count}
|
||||||
teachers = "("
|
teachers = "("
|
||||||
teacher_members = searchTeacherAndAssistant(course)
|
teacher_members = searchTeacherAndAssistant(course)
|
||||||
teacher_members.each do |member|
|
teacher_members.each do |member|
|
||||||
if member == teacher_members.last
|
if member == teacher_members.last
|
||||||
teachers += member.user_id.to_s + ")"
|
teachers += member.user_id.to_s + ")"
|
||||||
else
|
else
|
||||||
teachers += member.user_id.to_s + ","
|
teachers += member.user_id.to_s + ","
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@has_evaluations = 0
|
@has_evaluations = 0
|
||||||
bid.homeworks.map { |homework| @has_evaluations += homework.rates(:quality).where("seems_rateable_rates.rater_id not in #{teachers}").count}
|
bid.homeworks.map { |homework| @has_evaluations += homework.rates(:quality).where("seems_rateable_rates.rater_id not in #{teachers}").count}
|
||||||
|
|
||||||
percent = @has_evaluations.to_f / (@homework_evaluations == 0 ? 1 : @homework_evaluations)
|
percent = @has_evaluations.to_f / (@homework_evaluations == 0 ? 1 : @homework_evaluations)
|
||||||
confirm_info = "目前总共分配了#{@homework_evaluations}份匿评作业,已评价#{@has_evaluations}份作业,占#{number_to_percentage(percent * 100, precision: 1)}\n"
|
confirm_info = "目前总共分配了#{@homework_evaluations}份匿评作业,已评价#{@has_evaluations}份作业,占#{number_to_percentage(percent * 100, precision: 1)}\n"
|
||||||
end
|
end
|
||||||
confirm_info
|
confirm_info
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_technical_title user
|
def get_technical_title user
|
||||||
|
|
|
@ -73,6 +73,35 @@ module JournalsHelper
|
||||||
content_tag('div', content.html_safe, :id => "journal-#{journal.id}-notes", :class => css_classes ,:style => "width:580px")
|
content_tag('div', content.html_safe, :id => "journal-#{journal.id}-notes", :class => css_classes ,:style => "width:580px")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# 缺陷回复内容、引用内容
|
||||||
|
# Redo:后面需要统一扩展
|
||||||
|
def render_notes_issue (issue, journal, options={})
|
||||||
|
content = ''
|
||||||
|
editable = User.current.logged? && (User.current.allowed_to?(:edit_issue_notes, issue.project) || (journal.user == User.current && User.current.allowed_to?(:edit_own_issue_notes, issue.project)))
|
||||||
|
destroyable = User.current.logged? && ((journal.user == User.current) || (issue.author_id == User.current.id) || (User.current.admin == 1))
|
||||||
|
links = []
|
||||||
|
if !journal.notes.blank?
|
||||||
|
links << link_to(l(:button_quote),
|
||||||
|
{:controller => 'journals', :action => 'new', :id => issue.id, :journal_id => journal},
|
||||||
|
:remote => true,
|
||||||
|
:method => 'post',
|
||||||
|
:title => l(:button_quote)) if options[:reply_links]
|
||||||
|
links << link_to_in_place_notes_editor(l(:button_edit), "journal-#{journal.id}-notes",
|
||||||
|
{ :controller => 'journals', :action => 'edit', :id => journal, :format => 'js' },
|
||||||
|
:title => l(:button_edit)) if editable
|
||||||
|
#Added by young
|
||||||
|
if destroyable
|
||||||
|
links << link_to(l(:button_delete), { :controller => 'journals', :action => 'destroy', :id => journal, :format => 'js' },
|
||||||
|
:title => l(:button_delete))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
#content << content_tag('div', links.join(' ').html_safe, :class => 'contextual', :style => 'margin-top:-25px;') unless links.empty?
|
||||||
|
content << textilizable(journal, :notes)
|
||||||
|
css_classes = "wiki"
|
||||||
|
css_classes << " editable" if editable
|
||||||
|
content_tag('div', content.html_safe, :id => "journal-#{journal.id}-notes", :class => css_classes ,:style => "width:510px")
|
||||||
|
end
|
||||||
|
|
||||||
def link_to_in_place_notes_editor(text, field_id, url, options={})
|
def link_to_in_place_notes_editor(text, field_id, url, options={})
|
||||||
onclick = "$.ajax({url: '#{url_for(url)}', type: 'get'}); return false;"
|
onclick = "$.ajax({url: '#{url_for(url)}', type: 'get'}); return false;"
|
||||||
link_to text, '#', options.merge(:onclick => onclick)
|
link_to text, '#', options.merge(:onclick => onclick)
|
||||||
|
|
|
@ -46,6 +46,27 @@ module WatchersHelper
|
||||||
link_to text, url, :remote => true, :method => method, :class => css
|
link_to text, url, :remote => true, :method => method, :class => css
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def watcher_link_issue(objects, user, options=[])
|
||||||
|
return '' unless user && user.logged?
|
||||||
|
objects = Array.wrap(objects)
|
||||||
|
|
||||||
|
watched = objects.any? {|object| object.watched_by?(user)}
|
||||||
|
@watch_flag = (objects.first.instance_of?(User) or objects.first.instance_of?(Project) or objects.first.instance_of?(Contest) or (objects.first.instance_of?(Bid)))
|
||||||
|
css = @watch_flag ? ([watcher_css(objects), watched ? 'talk_edit ' : 'talk_edit '].join(' ') << options[0].to_s) :
|
||||||
|
([watcher_css(objects), watched ? 'talk_edit fr ' : 'talk_edit fr '].join(' ') << options[0].to_s)
|
||||||
|
|
||||||
|
text = @watch_flag ?
|
||||||
|
(watched ? l(:button_unfollow) : l(:button_follow)) : (watched ? l(:button_unwatch) : l(:button_watch))
|
||||||
|
|
||||||
|
url = watch_path(
|
||||||
|
:object_type => objects.first.class.to_s.underscore,
|
||||||
|
:object_id => (objects.size == 1 ? objects.first.id : objects.map(&:id).sort)
|
||||||
|
)
|
||||||
|
method = watched ? 'delete' : 'post'
|
||||||
|
|
||||||
|
link_to text, url, :remote => true, :method => method, :class => css
|
||||||
|
end
|
||||||
|
|
||||||
def watcher_link_with_id(objects, user, options=[])
|
def watcher_link_with_id(objects, user, options=[])
|
||||||
return '' unless user && user.logged?
|
return '' unless user && user.logged?
|
||||||
objects = Array.wrap(objects)
|
objects = Array.wrap(objects)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!--added by huang-->
|
<!--added by huang-->
|
||||||
|
|
||||||
<%#= watcher_link(@issue, User.current) %>
|
<%= watcher_link_issue(@issue, User.current) %>
|
||||||
<%#= link_to l(:button_copy), project_copy_issue_path(@project, @issue), :class => 'icon icon-copy' if User.current.allowed_to?(:add_issues, @project) %>
|
<%#= link_to l(:button_copy), project_copy_issue_path(@project, @issue), :class => 'icon icon-copy' if User.current.allowed_to?(:add_issues, @project) %>
|
||||||
<%= link_to l(:button_delete), issue_path(@issue.id), :data => {:confirm => issues_destroy_confirmation_message(@issue)}, :method => :delete, :class => 'talk_edit fr' if User.current.allowed_to?(:delete_issues, @project) %>
|
<%= link_to l(:button_delete), issue_path(@issue.id), :data => {:confirm => issues_destroy_confirmation_message(@issue)}, :method => :delete, :class => 'talk_edit fr' if User.current.allowed_to?(:delete_issues, @project) %>
|
||||||
|
|
||||||
|
|
|
@ -17,24 +17,17 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
<!--编辑、引用、回复按钮-->
|
||||||
<div class="ping_disfoot"><%= render_links(issue, journal, :reply_links => reply_links) unless journal.notes.blank? %></div>
|
<div class="ping_disfoot"><%= render_links(issue, journal, :reply_links => reply_links) unless journal.notes.blank? %></div>
|
||||||
|
<!--回复内容、引用内容-->
|
||||||
|
<p><%= render_notes_issue(issue, journal, :reply_links => reply_links) unless journal.notes.blank? %></p>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<div class="recall" >
|
|
||||||
<div class="recall_head"><a href="#" target="_blank"><img src="images/project/pic_01.jpg" width="30" height="30" /></a></div>
|
|
||||||
<div class="recall_con">
|
|
||||||
<p><%= render_notes(issue, journal, :reply_links => reply_links) unless journal.notes.blank? %></p>
|
|
||||||
<span class="c_grey fl"><%= format_time journal.created_on %></span>
|
|
||||||
</div>
|
|
||||||
<div class="cl"></div>
|
|
||||||
</div><!---recall end-->
|
|
||||||
<!---recall end-->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<%= call_hook(:view_issues_history_journal_bottom, { :journal => journal }) %>
|
||||||
<%= call_hook(:view_issues_history_journal_bottom, { :journal => journal }) %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% heads_for_wiki_formatter if User.current.allowed_to?(:edit_issue_notes, issue.project) || User.current.allowed_to?(:edit_own_issue_notes, issue.project) %>
|
<% heads_for_wiki_formatter if User.current.allowed_to?(:edit_issue_notes, issue.project) || User.current.allowed_to?(:edit_own_issue_notes, issue.project) %>
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<div class="problem_txt fl">
|
<div class="problem_txt fl">
|
||||||
<%= link_to issue.author.name, user_path(issue.author), :class => "problem_name c_orange fl" %>
|
<%= link_to issue.author.name, user_path(issue.author), :class => "problem_name c_orange fl" %>
|
||||||
<span class="fl"><%= l(:label_post_on_issue) %>(<%= "#{raw column_content[2]}" %>):</span>
|
<span class="fl"><%= l(:label_post_on_issue) %>(<%= "#{raw column_content[2]}" %>):</span>
|
||||||
<%=link_to "#{column_content[4]}<span class = '#{get_issue_type(column_content[1])}'>#{get_issue_typevalue(column_content[1])}</span>".html_safe, issue_path(issue.id), :class => "problem_tit02 fl" %>
|
<%=link_to "#{column_content[4]}<span class = '#{get_issue_type(column_content[1])}'>#{get_issue_typevalue(column_content[1])}</span>".html_safe, issue_path(issue.id), :class => "problem_tit02 fl break_word" %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<p>
|
<p>
|
||||||
<% unless issue.assigned_to_id.nil? %>
|
<% unless issue.assigned_to_id.nil? %>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<div class="project_r_h">
|
<div class="project_r_h">
|
||||||
<h2 class="project_h2"><%= l(:label_issue_tracking) %></h2>
|
<h2 class="project_h2"><%= l(:label_issue_tracking) %></h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="problem_top">
|
<div class="problem_top">
|
||||||
<% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %>
|
<% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %>
|
||||||
<span>
|
<span>
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<%= link_to image_tag(url_to_avatar(@issue.author),:width => 46,:height => 46), user_path(@issue.author), :class => "ping_dispic" %>
|
<%= link_to image_tag(url_to_avatar(@issue.author),:width => 46,:height => 46), user_path(@issue.author), :class => "ping_dispic" %>
|
||||||
</div>
|
</div>
|
||||||
<div class="talk_txt fl">
|
<div class="talk_txt fl">
|
||||||
<p class="pro_page_tit" >
|
<p class="pro_page_tit" style="word-break:break-all;" >
|
||||||
<%= @issue.subject %><span class='<%= "#{get_issue_type(@issue.tracker_id)}" %>'><%= get_issue_typevalue(@issue.tracker_id) %></span></p><br />
|
<%= @issue.subject %><span class='<%= "#{get_issue_type(@issue.tracker_id)}" %>'><%= get_issue_typevalue(@issue.tracker_id) %></span></p><br />
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<p>由<a href="javascript:void(0)" class="problem_name"><%= @issue.author %></a>
|
<p>由<a href="javascript:void(0)" class="problem_name"><%= @issue.author %></a>
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
</div><!--talk_txt end-->
|
</div><!--talk_txt end-->
|
||||||
<a href="javascript:void(0)" class="talk_edit fr"<%= render :partial => 'action_menu' %></a>
|
<a href="javascript:void(0)" class="talk_edit fr"<%= render :partial => 'action_menu' %></a>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<div class="talk_info mb10">
|
<div class="talk_info mb10" style="word-break:break-all;">
|
||||||
<% if @issue.description? || @issue.attachments.any? -%>
|
<% if @issue.description? || @issue.attachments.any? -%>
|
||||||
<% if @issue.description? %>
|
<% if @issue.description? %>
|
||||||
<%#= link_to l(:button_quote), quoted_issue_path(@issue.id), :remote => true, :method => 'post', :class => 'icon icon-comment' if authorize_for('issues', 'edit') %>
|
<%#= link_to l(:button_quote), quoted_issue_path(@issue.id), :remote => true, :method => 'post', :class => 'icon icon-comment' if authorize_for('issues', 'edit') %>
|
||||||
|
@ -32,9 +32,9 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<div class="pro_pic_box mb10">
|
<div class="pro_pic_box mb10">
|
||||||
<a href="javascript:void(0)" class="link_img fl"><span class="pic_img fl"></span>
|
<a href="javascript:void(0)" class="link_img fl">
|
||||||
<!--显示附件、图片-->
|
<!--显示附件、图片-->
|
||||||
<%= link_to_attachments @issue, :thumbnails => true %></a><br />
|
<%= link_to_attachment_project @issue, :thumbnails => true %></a><br />
|
||||||
<% end -%>
|
<% end -%>
|
||||||
<%= call_hook(:view_issues_show_description_bottom, :issue => @issue) %>
|
<%= call_hook(:view_issues_show_description_bottom, :issue => @issue) %>
|
||||||
</div><!--pro_pic_box end-->
|
</div><!--pro_pic_box end-->
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
</li>
|
</li>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<% unless @issue.disabled_core_fields.include?('assigned_to_id') %>
|
<% unless @issue.disabled_core_fields.include?('assigned_to_id') %>
|
||||||
<li><p class="label" > 指派给 : </p><span class="pro_info_p"><%= @issue.assigned_to ? link_to_user(@issue.assigned_to, :class => "pro_info_p") : "-" %></span></li>
|
<li><p class="label" > 指派给 : </p><span class="pro_info_p"><%= @issue.assigned_to ? link_to_isuue_user(@issue.assigned_to) : "-" %></span></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<% unless @issue.disabled_core_fields.include?('fixed_version_id') %>
|
<% unless @issue.disabled_core_fields.include?('fixed_version_id') %>
|
||||||
|
@ -77,7 +77,7 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<% unless @issue.disabled_core_fields.include?('done_ratio') %>
|
<% unless @issue.disabled_core_fields.include?('done_ratio') %>
|
||||||
<li><p class="label02" > % 完成 : </p><span class="pro_info_p"><%= progress_bar(@issue.done_ratio, :width => '80px', :legend => "#{@issue.done_ratio}%") %></span>
|
<li><p class="label02" > % 完成 : </p><span class="pro_info_p"><%= @issue.done_ratio %>%</span>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
|
@ -90,81 +90,22 @@
|
||||||
<%= link_to l(:button_quote), quoted_issue_path(@issue.id), :remote => true, :method => 'post', :class => 'talk_edit fr' if authorize_for('issues', 'edit') %></a>
|
<%= link_to l(:button_quote), quoted_issue_path(@issue.id), :remote => true, :method => 'post', :class => 'talk_edit fr' if authorize_for('issues', 'edit') %></a>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div><!--problem_main end-->
|
</div><!--problem_main end-->
|
||||||
|
|
||||||
<!--留言-->
|
<!--留言-->
|
||||||
<% if @journals.present? %>
|
<% if @journals.present? %>
|
||||||
<div id="history">
|
<div id="history">
|
||||||
<h3><%=l(:label_history)%></h3>
|
|
||||||
<%= render :partial => 'history', :locals => { :issue => @issue, :journals => @journals } %>
|
<%= render :partial => 'history', :locals => { :issue => @issue, :journals => @journals } %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div><!--pro_page_box end-->
|
</div>
|
||||||
<%# html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %>
|
|
||||||
|
|
||||||
<!--<div class="<%#= @issue.css_classes %> details">-->
|
|
||||||
<!--<%#· if @prev_issue_id || @next_issue_id %>-->
|
|
||||||
<!--<div class="next-prev-links contextual">-->
|
|
||||||
<%#·= link_to_if @prev_issue_id,
|
|
||||||
# "\xc2\xab #{l(:label_previous)}",
|
|
||||||
# (@prev_issue_id ? issue_path(Issue.find_by_id(@prev_issue_id)) : nil),
|
|
||||||
:title => "##{@prev_issue_id}" %> |
|
|
||||||
<!--<%# if @issue_position && @issue_count %>-->
|
|
||||||
<!--<span class="position"><%#= l(:label_item_position, :position => @issue_position, :count => @issue_count) %></span> |-->
|
|
||||||
<!--<%# end %>-->
|
|
||||||
<%#= link_to_if @next_issue_id,
|
|
||||||
# "#{l(:label_next)} \xc2\xbb",
|
|
||||||
# (@next_issue_id ? issue_path(Issue.find_by_id(@next_issue_id)) : nil),
|
|
||||||
:title => "##{@next_issue_id}" %>
|
|
||||||
<!--</div>-->
|
|
||||||
<!--<%# end %>-->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- 顶和踩 在这里添加 -->
|
|
||||||
<!--<span id="praise_tread" style="float: right">-->
|
|
||||||
<!--<%#= render :partial => "/praise_tread/praise_tread",:locals => {:obj => @issue,:show_flag => true,:user_id =>User.current.id,:horizontal => false}%>-->
|
|
||||||
<!--</span>-->
|
|
||||||
|
|
||||||
<!--<p class="author">-->
|
|
||||||
<%#= authoring @issue.created_on, @issue.author %>.
|
|
||||||
<!--<%# if @issue.created_on != @issue.updated_on %>-->
|
|
||||||
<%#= l(:label_updated_time, time_tag(@issue.updated_on)).html_safe %>.
|
|
||||||
<!--<%# end %>-->
|
|
||||||
<!--</p>-->
|
|
||||||
<!-- added by william -for tag -->
|
|
||||||
<!--<div id="tags">-->
|
|
||||||
<!--<%#= render :partial => 'tags/tag', :locals => {:obj => @issue,:object_flag => "3" }%>-->
|
|
||||||
<!--</div>-->
|
|
||||||
|
|
||||||
<!--<%# if false # !@issue.leaf? || User.current.allowed_to?(:manage_subtasks, @project) %>-->
|
|
||||||
<!--<hr />-->
|
|
||||||
|
|
||||||
<!--<div id="issue_tree">-->
|
|
||||||
<!--<div class="contextual">-->
|
|
||||||
<!--<%#= link_to_new_subtask(@issue) if User.current.allowed_to?(:manage_subtasks, @project) %>-->
|
|
||||||
<!--</div>-->
|
|
||||||
|
|
||||||
<!--<p><strong><%#=l(:label_subtask_plural)%></strong></p>-->
|
|
||||||
<!--<%#= render_descendants_tree(@issue) unless @issue.leaf? %>-->
|
|
||||||
<!--</div>-->
|
|
||||||
<!--<%# end %>-->
|
|
||||||
|
|
||||||
<!--<%# if @relations.present? || User.current.allowed_to?(:manage_issue_relations, @project) %>-->
|
|
||||||
<!--<hr />-->
|
|
||||||
<!--<div id="relations">-->
|
|
||||||
<!--<%#= render :partial => 'relations' %>-->
|
|
||||||
<!--</div>-->
|
|
||||||
<!--<%# end %>-->
|
|
||||||
|
|
||||||
<!--</div>-->
|
|
||||||
|
|
||||||
<% if @changesets.present? %>
|
<% if @changesets.present? %>
|
||||||
<div id="issue-changesets">
|
<div id="issue-changesets">
|
||||||
<h3><%=l(:label_associated_revisions)%></h3>
|
<h3><%=l(:label_associated_revisions)%></h3>
|
||||||
<%= render :partial => 'changesets', :locals => { :changesets => @changesets} %>
|
<%= render :partial => 'changesets', :locals => { :changesets => @changesets} %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<!--留言-->
|
<!--留言-- end>
|
||||||
|
|
||||||
|
|
||||||
<!--<div style="clear: both;"></div>-->
|
<!--<div style="clear: both;"></div>-->
|
||||||
<!--<%#= render :partial => 'action_menu' %>-->
|
<!--<%#= render :partial => 'action_menu' %>-->
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
:id => act.id},
|
:id => act.id},
|
||||||
:class => "problem_tit fl fb " %>
|
:class => "problem_tit fl fb " %>
|
||||||
</a><br />
|
</a><br />
|
||||||
<p class="mt5"><%= textAreailizable act,:description %><br />
|
<p class="mt5 break_word"><%= textAreailizable act,:description %><br />
|
||||||
<%= l :label_activity_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %>
|
<%= l :label_activity_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
<%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.project_issues_index}: #{act.issue.subject}"),
|
<%= link_to format_activity_title("#{act.issue.tracker} ##{act.issue.project_issues_index}: #{act.issue.subject}"),
|
||||||
{:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"}, :class => "problem_tit fl fb" %>
|
{:controller => 'issues', :action => 'show', :id => act.issue.id, :anchor => "change-#{act.id}"}, :class => "problem_tit fl fb" %>
|
||||||
</a><br />
|
</a><br />
|
||||||
<p class="mt5"><%= textAreailizable act,:notes %><br />
|
<p class="mt5 break_word"><%= textAreailizable act,:notes %><br />
|
||||||
<%= l :label_activity_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
|
<%= l :label_activity_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
|
@ -71,7 +71,7 @@
|
||||||
:board_id => act.board_id}.merge(act.parent_id.nil? ? {:id => act.id} : {:id => act.parent_id, :r => act.id, :anchor => "message-#{act.id}"}),
|
:board_id => act.board_id}.merge(act.parent_id.nil? ? {:id => act.id} : {:id => act.parent_id, :r => act.id, :anchor => "message-#{act.id}"}),
|
||||||
:class => "problem_tit fl fb " %>
|
:class => "problem_tit fl fb " %>
|
||||||
<br />
|
<br />
|
||||||
<p class="mt5"><%= textAreailizable act,:content %><br />
|
<p class="mt5 break_word"><%= textAreailizable act,:content %><br />
|
||||||
<%= l :label_create_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
|
<%= l :label_create_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
|
@ -89,7 +89,7 @@
|
||||||
<%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id}, :class => "problem_tit fl fb " %>
|
<%= link_to format_activity_title("#{l(:label_news)}: #{act.title}"), {:controller => 'news', :action => 'show', :id => act.id}, :class => "problem_tit fl fb " %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</a><br />
|
</a><br />
|
||||||
<p class="mt5"><%= textAreailizable act,:description %><br />
|
<p class="mt5 break_word"><%= textAreailizable act,:description %><br />
|
||||||
<%= l :label_create_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
|
<%= l :label_create_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
|
@ -104,7 +104,7 @@
|
||||||
<%= link_to h(e.user), user_path(e.user_id), :class => "problem_name c_orange fl" %></a><span class="fl"> <%= l(:label_new_activity) %> :</span>
|
<%= link_to h(e.user), user_path(e.user_id), :class => "problem_name c_orange fl" %></a><span class="fl"> <%= l(:label_new_activity) %> :</span>
|
||||||
|
|
||||||
<%= link_to format_activity_title("#{l(:label_document)}: #{act.title}"), {:controller => 'documents', :action => 'show', :id => act.id}, :class => "problem_tit fl fb" %><br />
|
<%= link_to format_activity_title("#{l(:label_document)}: #{act.title}"), {:controller => 'documents', :action => 'show', :id => act.id}, :class => "problem_tit fl fb" %><br />
|
||||||
<p class="mt5"><%= textAreailizable act,:description %><br />
|
<p class="mt5 break_word"><%= textAreailizable act,:description %><br />
|
||||||
<%= l :label_create_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
|
<%= l :label_create_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
|
@ -118,7 +118,7 @@
|
||||||
<%= h(e.project) if @project.nil? || @project.id != e.project_id %>
|
<%= h(e.project) if @project.nil? || @project.id != e.project_id %>
|
||||||
<%= link_to h(e.user), user_path(e.user_id), :class => "problem_name c_orange fl" %></a><span class="fl"> <%= l(:label_new_activity) %> :</span>
|
<%= link_to h(e.user), user_path(e.user_id), :class => "problem_name c_orange fl" %></a><span class="fl"> <%= l(:label_new_activity) %> :</span>
|
||||||
<%= link_to format_activity_title("#{l(:label_attachment)}: #{act.filename}"), {:controller => 'attachments', :action => 'show', :id => act.id}, :class => "problem_tit fl fb" %></a><br />
|
<%= link_to format_activity_title("#{l(:label_attachment)}: #{act.filename}"), {:controller => 'attachments', :action => 'show', :id => act.id}, :class => "problem_tit fl fb" %></a><br />
|
||||||
<p class="mt5"><%= textAreailizable act,:description %><br />
|
<p class="mt5 break_word"><%= textAreailizable act,:description %><br />
|
||||||
<%= l :label_create_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
|
<%= l :label_create_time %> :<%= format_activity_day(act.created_on) %> <%= format_time(act.created_on, false) %></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
|
|
|
@ -85,7 +85,7 @@ a.pro_mes_w{ height:20px; float:left;display:block; color:#999999;}
|
||||||
.pro_info_box{ margin-left:60px; background:#f0fbff; height:80px; padding:10px 0;}
|
.pro_info_box{ margin-left:60px; background:#f0fbff; height:80px; padding:10px 0;}
|
||||||
.pro_info_box ul{}
|
.pro_info_box ul{}
|
||||||
.pro_info_box ul li{ margin-bottom:10px;}
|
.pro_info_box ul li{ margin-bottom:10px;}
|
||||||
.pro_info_p{ color:#0781b4; float:left; width:160px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis; }
|
.pro_info_p{ color:#0781b4 !important; float:left; width:160px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;padding-top:2.5px;}
|
||||||
.edit_pro_box{overflow:hidden;display:none; margin-bottom:30px; border-bottom:1px dashed #CCC; padding-bottom:10px;}
|
.edit_pro_box{overflow:hidden;display:none; margin-bottom:30px; border-bottom:1px dashed #CCC; padding-bottom:10px;}
|
||||||
/****翻页***/
|
/****翻页***/
|
||||||
ul.wlist{ float:right; border-bottom:none; height:30px; margin-top:20px; }
|
ul.wlist{ float:right; border-bottom:none; height:30px; margin-top:20px; }
|
||||||
|
|
Loading…
Reference in New Issue