forked from jacknudt/trustieforge
1.增加帖子回复时间查询语句
2.帖子回复的数量在数据库中有字段 3.新建帖子失败错误提示 4.下载里程碑top_menu删掉, 5.学生分页,分页方法封装
This commit is contained in:
parent
b4fb17a467
commit
0609c5c7ea
|
@ -618,4 +618,23 @@ class ApplicationController < ActionController::Base
|
||||||
def _include_layout?(*args)
|
def _include_layout?(*args)
|
||||||
api_request? ? false : super
|
api_request? ? false : super
|
||||||
end
|
end
|
||||||
|
|
||||||
|
## Please added code in html.
|
||||||
|
# <div class="pagination"><%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false %></div>
|
||||||
|
def paginateHelper obj, pre_size=20
|
||||||
|
# current_count = pre_size * (params['page'].to_i - 1) if params['page'].to_i > 0
|
||||||
|
offset, limit = api_offset_and_limit({:limit => pre_size})
|
||||||
|
objs_all = obj
|
||||||
|
@obj_count = objs_all.count
|
||||||
|
@obj_pages = Paginator.new @obj_count, limit, params['page']
|
||||||
|
offset ||= @obj_pages.offset
|
||||||
|
if obj.kind_of? ActiveRecord::Base or obj.kind_of? ActiveRecord::Relation
|
||||||
|
obj.offset(offset).limit(limit).all
|
||||||
|
elsif obj.kind_of? Array
|
||||||
|
obj[offset..(offset+limit-1)]
|
||||||
|
else
|
||||||
|
logger.error "[ApplicationController] Error : application_controller#paginateHelper ===> unknow category: #{obj.class}"
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -44,8 +44,9 @@ class MemosController < ApplicationController
|
||||||
format.html { redirect_to back_memo_url, notice: "#{l :label_memo_create_succ}" }
|
format.html { redirect_to back_memo_url, notice: "#{l :label_memo_create_succ}" }
|
||||||
format.json { render json: @memo, status: :created, location: @memo }
|
format.json { render json: @memo, status: :created, location: @memo }
|
||||||
else
|
else
|
||||||
|
flash[:error] = "#{l :label_memo_create_fail}: #{@memo.errors.full_messages[0]}"
|
||||||
# back_error_page = @memo.parent_id.nil? ? forum_path(@forum) : forum_memo_path(@forum, @memo.parent_id)
|
# back_error_page = @memo.parent_id.nil? ? forum_path(@forum) : forum_memo_path(@forum, @memo.parent_id)
|
||||||
format.html { redirect_to back_memo_or_forum_url, notice: "#{l :label_memo_create_fail}" }
|
format.html { redirect_to back_memo_or_forum_url}#, error: "#{l :label_memo_create_fail}: #{@memo.errors.full_messages[0]}" }
|
||||||
format.json { render json: @memo.errors, status: :unprocessable_entity }
|
format.json { render json: @memo.errors, status: :unprocessable_entity }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -781,7 +781,7 @@ class ProjectsController < ApplicationController
|
||||||
@subPage_title = l :label_teacher_list
|
@subPage_title = l :label_teacher_list
|
||||||
@members = searchTeacherAndAssistant(@project)
|
@members = searchTeacherAndAssistant(@project)
|
||||||
when '2'
|
when '2'
|
||||||
@subPage_title = l :label_student_list
|
@subPage_title = l :label_student_list
|
||||||
@members = searchStudent(@project)
|
@members = searchStudent(@project)
|
||||||
else
|
else
|
||||||
@subPage_title = ''
|
@subPage_title = ''
|
||||||
|
@ -793,7 +793,7 @@ class ProjectsController < ApplicationController
|
||||||
@members = @project.member_principals.includes(:roles, :principal).all
|
@members = @project.member_principals.includes(:roles, :principal).all
|
||||||
@members = sort_project_members(@project, @members)
|
@members = sort_project_members(@project, @members)
|
||||||
end
|
end
|
||||||
|
@members = paginateHelper @members
|
||||||
render :layout => 'base_courses' if @project.project_type == 1
|
render :layout => 'base_courses' if @project.project_type == 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -131,7 +131,15 @@ module WelcomeHelper
|
||||||
#取得论坛数据
|
#取得论坛数据
|
||||||
def find_hot_forum_topics limit=10
|
def find_hot_forum_topics limit=10
|
||||||
#Memo.order('replies_count DESC').where('replies_count <> 0').limit(limit)
|
#Memo.order('replies_count DESC').where('replies_count <> 0').limit(limit)
|
||||||
Memo.order('replies_count DESC').where('parent_id IS NULL').limit(limit)
|
Memo.order('replies_count DESC, created_at DESC').where('parent_id IS NULL').limit(limit)
|
||||||
|
## 以下语句会内链接自身查询出最后一条回复时间,没有回复的帖子不会显示
|
||||||
|
# Memo.find_by_sql("
|
||||||
|
# SELECT memos.*, reply.created_at AS last_reply_date FROM memos AS memos
|
||||||
|
# INNER JOIN memos
|
||||||
|
# AS reply ON memos.last_reply_id=reply.id
|
||||||
|
# WHERE memos.parent_id IS NULL
|
||||||
|
# ORDER BY memos.replies_count DESC, memos.created_at DESC
|
||||||
|
# LIMIT #{limit}")
|
||||||
end
|
end
|
||||||
|
|
||||||
def sort_project_by_hot_rails project_type=0, order_by='grade DESC', limit=15
|
def sort_project_by_hot_rails project_type=0, order_by='grade DESC', limit=15
|
||||||
|
|
|
@ -1,20 +1,32 @@
|
||||||
<!-- added by fq -->
|
<!-- added by fq -->
|
||||||
<!-- %= form_for(@forum) do |f| % -->
|
<!-- %= form_for(@forum) do |f| % -->
|
||||||
<%= labelled_form_for(@forum) do |f| %>
|
<div id="share_new" style = "width: 500px; margin:0 auto; " >
|
||||||
|
<%= labelled_form_for(@forum) do |f| %>
|
||||||
<% if @forum.errors.any? %>
|
<% if @forum.errors.any? %>
|
||||||
<div id="error_explanation">
|
<div id="error_explanation">
|
||||||
<h2><%= pluralize(@forum.errors.count, "error") %> prohibited this forum from being saved:</h2>
|
<h2><%= pluralize(@forum.errors.count, "error") %> prohibited this forum from being saved:</h2>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<% @forum.errors.full_messages.each do |msg| %>
|
<% @forum.errors.full_messages.each do |msg| %>
|
||||||
<li><%= msg %></li>
|
<li><%= msg %></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
<div class="actions">
|
|
||||||
<p><%= f.text_field :name, :required => true %></p>
|
|
||||||
<p><%= f.text_field :description, :required => true, :size => 80 %></p>
|
|
||||||
<%= f.submit :value => (l :label_board_new) %>
|
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<div class="actions" style="margin:10px">
|
||||||
|
<div class="field">
|
||||||
|
<%= f.text_field :name, :required => true, :style => 'width: 100%;', :class => 'create-share' %>
|
||||||
|
</div>
|
||||||
|
<div class="field">
|
||||||
|
<%= f.text_area :description, :required => true, :rows => 4, :style => 'width: 100%;resize: none;', :class => 'create-share' %>
|
||||||
|
</div>
|
||||||
|
<div class="actions" style=" padding-top: 10px; float:right">
|
||||||
|
<%= f.submit :value=>(l :label_board_new) ,:class => 'nyan-clean-gray', :style => 'font-size: 14px; padding: 0px 3px' %>
|
||||||
|
<%= link_to l(:button_back), forums_path,:class => 'nyan-clean-gray',:style => 'font-size: 14px; padding: 0px 3px; color: #000' %>
|
||||||
|
</div>
|
||||||
|
<p><%#= f.text_field :name, :required => true %></p>
|
||||||
|
<p><%#= f.text_field :description, :required => true, :size => 80 %></p>
|
||||||
|
<%#= f.submit :value => (l :label_board_new) %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<td class="location-list"><strong><%= l(:label_user_location) %> :</strong></td>
|
<td class="location-list"><strong><%= l(:label_user_location) %> :</strong></td>
|
||||||
<td rowspan="2">
|
<td rowspan="2">
|
||||||
<% if User.current.logged? %>
|
<% if User.current.logged? %>
|
||||||
<%= link_to("新建讨论区", new_forum_path, :class => 'icon icon-add') %>
|
<%= link_to( l(:label_forum_new), new_forum_path, :class => 'icon icon-add') %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</td>
|
</td>
|
||||||
<td rowspan="2" ><!-- 搜索 --></td>
|
<td rowspan="2" ><!-- 搜索 --></td>
|
||||||
|
@ -19,30 +19,3 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= render :partial => 'forums/forum_list', :locals => {:forums => @forums} %>
|
<%= render :partial => 'forums/forum_list', :locals => {:forums => @forums} %>
|
||||||
|
|
||||||
<!-- <h1>Listing forums</h1>
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<th>name</th>
|
|
||||||
<th>description</th>
|
|
||||||
<th>creator</th>
|
|
||||||
<th></th>
|
|
||||||
<th></th>
|
|
||||||
<th></th>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
< % @forums.each do |forum| %>
|
|
||||||
<tr>
|
|
||||||
<td>< %= forum.name %></td>
|
|
||||||
<td>< %= forum.description %></td>
|
|
||||||
<td>< %= forum.creator.show_name %></td>
|
|
||||||
<td>< %= link_to 'Show', forum %></td>
|
|
||||||
<td>< %= link_to 'Edit', edit_forum_path(forum) %></td>
|
|
||||||
<td>< %= link_to 'Destroy', forum, method: :delete, data: { confirm: 'Are you sure?' } %></td>
|
|
||||||
</tr>
|
|
||||||
< % end %>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<br /> -->
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- added by fq -->
|
<!-- added by fq -->
|
||||||
<h1><%= l :label_board_new%></h1>
|
<h3><%= l :label_forum_new %></h1>
|
||||||
|
|
||||||
<%= render 'form' %>
|
<%= render 'form' %>
|
||||||
|
|
||||||
<%= link_to l(:button_back), forums_path %>
|
<%#= link_to l(:button_back), forums_path %>
|
||||||
|
|
|
@ -148,20 +148,20 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<!-- td align="left" width="190px" valign="left"><%=image_tag("/images/sidebar/tool_tag.png", weight:"15px", height:"15px") %>
|
<td align="left" width="190px" valign="left"><%=image_tag("/images/sidebar/tool_tag.png", weight:"15px", height:"15px") %>
|
||||||
<%= link_to l(:project_module_boards) ,project_boards_path(@project) %>
|
<%= link_to l(:project_module_files) ,project_files_path(@project) %>
|
||||||
</td -->
|
</td>
|
||||||
|
<td align="left" width="190px" valign="left"><%=image_tag("/images/sidebar/tool_tag.png", weight:"15px", height:"15px") %>
|
||||||
|
<%= link_to l(:label_roadmap) ,project_roadmap_path(@project) %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td align="left" width="190px" valign="left"><%=image_tag("/images/sidebar/tool_tag.png", weight:"15px", height:"15px") %>
|
<td align="left" width="190px" valign="left"><%=image_tag("/images/sidebar/tool_tag.png", weight:"15px", height:"15px") %>
|
||||||
<%= link_to l(:label_module_share) ,share_show_path(@project) %>
|
<%= link_to l(:label_module_share) ,share_show_path(@project) %>
|
||||||
</td>
|
</td>
|
||||||
<td align="left" width="190px" valign="left"><%=image_tag("/images/sidebar/tool_tag.png", weight:"15px", height:"15px") %>
|
<td align="left" width="190px" valign="left"><%=image_tag("/images/sidebar/tool_tag.png", weight:"15px", height:"15px") %>
|
||||||
<%= link_to l(:label_project_tool_response) ,project_feedback_path(@project) %>
|
<%= link_to l(:label_project_tool_response) ,project_feedback_path(@project) %>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
<%= call_hook(:view_projects_settings_members_table_row, { :project => @project, :member => member}) %>
|
<%= call_hook(:view_projects_settings_members_table_row, { :project => @project, :member => member}) %>
|
||||||
</div>
|
</div>
|
||||||
<% end; reset_cycle %>
|
<% end; reset_cycle %>
|
||||||
|
<div class="pagination"><%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false %></div>
|
||||||
<% else %>
|
<% else %>
|
||||||
<p class="nodata">
|
<p class="nodata">
|
||||||
<%= l(:label_no_data) %>
|
<%= l(:label_no_data) %>
|
||||||
|
|
|
@ -513,7 +513,7 @@ zh:
|
||||||
label_software_user: 软件创客
|
label_software_user: 软件创客
|
||||||
label_contest_innovate: 创新竞赛
|
label_contest_innovate: 创新竞赛
|
||||||
label_requirement_enterprise: 软件众包
|
label_requirement_enterprise: 软件众包
|
||||||
label_project_module_forums: 讨论区
|
label_project_module_forums: 讨论吧
|
||||||
label_new_homework: 作业
|
label_new_homework: 作业
|
||||||
label_new_contest: 竞赛
|
label_new_contest: 竞赛
|
||||||
label_requirement_focus: 关注需求
|
label_requirement_focus: 关注需求
|
||||||
|
@ -1735,6 +1735,7 @@ zh:
|
||||||
label_borad_project: 项目讨论区
|
label_borad_project: 项目讨论区
|
||||||
label_borad_course: 课程讨论区
|
label_borad_course: 课程讨论区
|
||||||
label_memo_new_from_forum: 发布帖子
|
label_memo_new_from_forum: 发布帖子
|
||||||
label_forum: 讨论区
|
label_forum: 讨论吧
|
||||||
label_tags_forum_description: 讨论区描述
|
label_forum_new: 新建讨论吧
|
||||||
label_tags_forum: 讨论区名称
|
label_tags_forum_description: 讨论吧描述
|
||||||
|
label_tags_forum: 讨论吧名称
|
||||||
|
|
|
@ -301,7 +301,7 @@ end
|
||||||
Redmine::MenuManager.map :project_menu do |menu|
|
Redmine::MenuManager.map :project_menu do |menu|
|
||||||
menu.push :overview, { :controller => 'projects', :action => 'show' }
|
menu.push :overview, { :controller => 'projects', :action => 'show' }
|
||||||
# menu.push :activity, { :controller => 'activities', :action => 'index' }
|
# menu.push :activity, { :controller => 'activities', :action => 'index' }
|
||||||
menu.push :roadmap, { :controller => 'versions', :action => 'index' }, :param => :project_id
|
#menu.push :roadmap, { :controller => 'versions', :action => 'index' }, :param => :project_id
|
||||||
# :if => Proc.new { |p| p.shared_versions.any? }
|
# :if => Proc.new { |p| p.shared_versions.any? }
|
||||||
menu.push :issues, { :controller => 'issues', :action => 'index' }, :param => :project_id, :caption => :label_issue_plural
|
menu.push :issues, { :controller => 'issues', :action => 'index' }, :param => :project_id, :caption => :label_issue_plural
|
||||||
# menu.push :new_issue, { :controller => 'issues', :action => 'new', :copy_from => nil }, :param => :project_id, :caption => :label_issue_new,
|
# menu.push :new_issue, { :controller => 'issues', :action => 'new', :copy_from => nil }, :param => :project_id, :caption => :label_issue_new,
|
||||||
|
@ -314,7 +314,7 @@ Redmine::MenuManager.map :project_menu do |menu|
|
||||||
# :if => Proc.new { |p| p.wiki && !p.wiki.new_record? }
|
# :if => Proc.new { |p| p.wiki && !p.wiki.new_record? }
|
||||||
menu.push :boards, { :controller => 'boards', :action => 'index', :id => nil }, :param => :project_id,
|
menu.push :boards, { :controller => 'boards', :action => 'index', :id => nil }, :param => :project_id,
|
||||||
:if => Proc.new { |p| p.boards.any? }, :caption => :label_board_plural
|
:if => Proc.new { |p| p.boards.any? }, :caption => :label_board_plural
|
||||||
menu.push :files, { :controller => 'files', :action => 'index' }, :param => :project_id, :caption => :label_file_new
|
#menu.push :files, { :controller => 'files', :action => 'index' }, :param => :project_id, :caption => :label_file_new
|
||||||
menu.push :repository, { :controller => 'repositories', :action => 'show', :repository_id => nil, :path => nil, :rev => nil },
|
menu.push :repository, { :controller => 'repositories', :action => 'show', :repository_id => nil, :path => nil, :rev => nil },
|
||||||
:if => Proc.new { |p| p.repository && !p.repository.new_record? && !( !User.current.member_of?(p) && p.hidden_repo ) }
|
:if => Proc.new { |p| p.repository && !p.repository.new_record? && !( !User.current.member_of?(p) && p.hidden_repo ) }
|
||||||
menu.push :settings, { :controller => 'projects', :action => 'settings' }, :last => true
|
menu.push :settings, { :controller => 'projects', :action => 'settings' }, :last => true
|
||||||
|
|
|
@ -32,7 +32,7 @@ input[class='whiteButton'], .whiteButton {
|
||||||
text-shadow:0px 1px 0px #ffffff;
|
text-shadow:0px 1px 0px #ffffff;
|
||||||
|
|
||||||
}
|
}
|
||||||
input[class='whiteButton'], .whiteButton:hover {
|
input[class='whiteButton']:hover, .whiteButton:hover {
|
||||||
|
|
||||||
background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #f6f6f6), color-stop(1, #ffffff));
|
background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #f6f6f6), color-stop(1, #ffffff));
|
||||||
background:-moz-linear-gradient(top, #f6f6f6 5%, #ffffff 100%);
|
background:-moz-linear-gradient(top, #f6f6f6 5%, #ffffff 100%);
|
||||||
|
@ -46,7 +46,7 @@ input[class='whiteButton'], .whiteButton:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
input[class='whiteButton'], .whiteButton:active {
|
input[class='whiteButton']:active, .whiteButton:active {
|
||||||
position:relative;
|
position:relative;
|
||||||
top:1px;
|
top:1px;
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@ input[class='nyan-clean-gray'], .nyan-clean-gray {
|
||||||
padding-left:10px;
|
padding-left:10px;
|
||||||
padding-right:10px;
|
padding-right:10px;
|
||||||
}
|
}
|
||||||
input[class='nyan-clean-gray'], .nyan-clean-gray:hover {
|
input[class='nyan-clean-gray']:hover, .nyan-clean-gray:hover {
|
||||||
background-color: #dddddd;
|
background-color: #dddddd;
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #dddddd), color-stop(100%, #bbbbbb));
|
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #dddddd), color-stop(100%, #bbbbbb));
|
||||||
background-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb);
|
background-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb);
|
||||||
|
@ -123,7 +123,7 @@ input[class='nyan-clean-gray'], .nyan-clean-gray:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
text-shadow: 0 1px 0 #ddd;
|
text-shadow: 0 1px 0 #ddd;
|
||||||
}
|
}
|
||||||
input[class='nyan-clean-gray'], .nyan-clean-gray:active {
|
input[class='nyan-clean-gray']:active, .nyan-clean-gray:active {
|
||||||
border: 1px solid #aaa;
|
border: 1px solid #aaa;
|
||||||
border-bottom: 1px solid #888;
|
border-bottom: 1px solid #888;
|
||||||
-webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
|
-webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee;
|
||||||
|
|
Loading…
Reference in New Issue