diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 2c220c25b..51b7fa804 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -625,7 +625,7 @@ class ApplicationController < ActionController::Base @obj_count = obj.count @obj_pages = Paginator.new @obj_count, pre_size, params['page'] if obj.kind_of? ActiveRecord::Base or obj.kind_of? ActiveRecord::Relation - obj.limit(@obj_pages.per_page).offset(@obj_pages.offset).all + obj.limit(@obj_pages.per_page).offset(@obj_pages.offset) elsif obj.kind_of? Array obj[@obj_pages.offset, @obj_pages.per_page] else diff --git a/app/controllers/stores_controller.rb b/app/controllers/stores_controller.rb index e0e675882..f1d7e9999 100644 --- a/app/controllers/stores_controller.rb +++ b/app/controllers/stores_controller.rb @@ -1,3 +1,4 @@ +# encoding: utf-8 # Trustie - education management software # Copyright (C) 2013-2014 class StoresController < ApplicationController @@ -9,10 +10,14 @@ class StoresController < ApplicationController def search name = params[:name] ||= '' - @searched_attach = Attachment.includes(:project).where("projects.is_public = ? AND filename LIKE '%"<< name <<"%' ", 1) - # @searched_attach = Attachment.all[0..20] - @searched_attach.take 20 - # reutrn @searched_attach + redirect_to stores_path, :notice => '为何不写点东西?' if name.blank? + # 按文件名搜索 + #result = Attachment.includes(:project).where("projects.is_public = 1 AND filename LIKE '%" << name << "%' ") + result = Attachment.where("attachments.container_type IS NOT NULL AND filename LIKE '%" + name + "%' "). + reorder("created_on DESC") + result = result.to_a + result.map { |res| result.delete(res) if res.container.nil?} + @searched_attach = paginateHelper result end LIMIT = 12 unless const_defined?(:LIMIT) @@ -47,12 +52,12 @@ class StoresController < ApplicationController where("projects.project_type=#{project_type}"). reorder("downloads DESC"). limit(LIMIT) - doc_attach = join_tools_project "documents", project_type - issue_attach = join_tools_project "issues", project_type - mess_attach = []#join_tools_project "messages", project_type - news_attach = join_tools_project "news", project_type - vers_attach = join_tools_project "versions", project_type - wiki_attach = []#join_tools_project "wiki_pages", project_type + doc_attach = join_tools_project Document, project_type + issue_attach = join_tools_project Issue, project_type + mess_attach = []#join_tools_project Message, project_type + news_attach = join_tools_project News"news", project_type + vers_attach = join_tools_project Version"versions", project_type + wiki_attach = []#join_tools_project WikiPage, project_type tmp = pro_attach+doc_attach+issue_attach+mess_attach+news_attach+vers_attach+wiki_attach tmp.sort { |a, b| b.downloads <=> a.downloads } @@ -64,9 +69,9 @@ class StoresController < ApplicationController limit(LIMIT) end - def str_join_table tableName - str = "LEFT JOIN #{tableName} ON attachments.container_id = #{tableName}.id - LEFT JOIN projects ON #{tableName}.project_id = projects.id" + def str_join_table tableClass + str = "LEFT JOIN #{tableClass.table_name} ON attachments.container_id = #{tableClass.table_name}.id + LEFT JOIN projects ON #{tableClass.table_name}.project_id = projects.id" str end end diff --git a/app/helpers/stores_helper.rb b/app/helpers/stores_helper.rb index e2be22cc0..26f1c7630 100644 --- a/app/helpers/stores_helper.rb +++ b/app/helpers/stores_helper.rb @@ -24,7 +24,114 @@ module StoresHelper when 'Bid' bid_path(container) else - '#'#logger.error "StoresHelper#attachUrl unkown type ==> #{container}" + Rails.logger.error "ERROR: StoresHelper#attachUrl unkown type ==> #{container}" + '#' end end + + def result_come_from attachment + come_from_local(attachment).join(" > ").html_safe + end + + private + + WORD_LIMIT = 100 + def come_from_local attachment + + container = attachment.container + case container.class.to_s + when 'Message' + # '项目 > zzz > 论坛 > 帖子xxx' + # topic_str = container.project.project_type == 0 ? l(:label_board) : l(:label_new_course) + topic_list = link_to l(:label_board), project_boards_path(container.project) + topic_item = link_to container.subject.truncate(WORD_LIMIT, omission: '...'), board_message_path(container.board, container), title: container.subject + project_link(container.project).push(topic_list, topic_item) + when 'Issue' + # '项目 > zzz > 缺陷 > 问题xxx' + issue_list = link_to l(:label_project_issues), project_issues_path(container.project) + issue_item = link_to container.subject.truncate(WORD_LIMIT, omission: '...'), issue_path(container), title: container.subject + project_link(container.project).push(issue_list, issue_item) + when 'Document' + # '项目 > zzz > 文档 > 文档xxx' + doc_list = link_to l(:label_document), project_documents_path(container.project) + doc_item = link_to container.title.truncate(WORD_LIMIT, omission: '...'), document_path(container), title: container.title + project_link(container.project).push(doc_list, doc_item) + when 'News' + # '课程 > zzz > 新闻 > 新闻xxx' + news_str = container.project.project_type == 0 ? l(:label_news) : l(:label_course_news) + news_list = link_to news_str, project_news_index_path(container.project) + news_item = link_to container.title.truncate(WORD_LIMIT, omission: '...'), news_path(container), title: container.title + project_link(container.project).push(news_list, news_item) + when 'Project' + # '项目 > zzz ' + file_str = container.project.project_type == 0 ? l(:project_module_files) : l(:label_course_file) + files_list = link_to file_str, project_files_path(container.project) + project_link(container).push(files_list) + when 'Version' + # '项目 > zzz > 里程碑 > xxx' + ver_list = link_to l(:label_roadmap), project_roadmap_path(container.project) + files_list = link_to l(:label_course_file), project_files_path(container.project) + ver_item = link_to container.name.truncate(WORD_LIMIT, omission: '...'), version_path(container), title: container.name + project_link(container.project).push(ver_list, files_list, ver_item) + when 'WikiPage' + # '项目 > zzz > 维基 > xxx' 有点问题 + wiki_list = link_to l(:label_wiki), project_wiki_path(container.project) + project_link(container.project).push(wiki_list) + when 'HomeworkAttach' + # '课程 > zzz > 作业 > 作业xxx' + bid_link(container.bid) + when 'Memo' + # '贴吧 > 讨论区 > 帖子 xxx' + return [link_to(attachment.id, '#')] if container.forum.nil? + forums_list = link_to l(:label_forum), forums_path + memo_list = link_to container.forum.name, forum_path(container.forum) + memo_item = link_to container.subject, forum_memo_path(container.forum, container) + [forums_list, memo_list, memo_item] + when 'Bid' + # '竞赛 > xxx ' + bid_link(container) + else + Rails.logger.error "ERROR: attachment type unkown" + [link_to('unkown', '')] + end + end + + def project_link project + if project.nil? + Rails.logger.error "ERROR: attachment type unkown #project_link project.nil?" + return [link_to('unkown', '')] + end + project_list = nil + if project.project_type == 0 + project_list = link_to l(:label_project_plural), projects_path + else + project_list = link_to l(:label_new_course), course_path + end + project_item = link_to project.to_s, project_path(project) + [project_list, project_item] + end + + def bid_link bid + bid_list = nil + bid_item = nil + case bid.reward_type + when 1 # 众包 + bid_list = link_to l(:label_requirement_enterprise_list), calls_path + bid_item = link_to bid.name, respond_path(bid) + when 2 # 竞赛 + bid_list = link_to l(:label_contest_list), contest_path + bid_item = link_to bid.name, respond_path(bid) + when 3 # 作业 + if bid.courses.first.nil? + Rails.logger.error "ERROR: attachment type unkown #bid_link/when 3" + return [link_to('unkown', '#')] + end + bid_list = link_to l(:label_homework), project_homework_path(bid.courses.first) + bid_item = link_to bid.name, respond_path(bid) + return project_link(bid.courses.first).push(bid_list, bid_item) + else + xxx + end + [bid_list, bid_item] + end end diff --git a/app/views/files/index.html.erb b/app/views/files/index.html.erb index 7aa51563e..89dc7e8ea 100644 --- a/app/views/files/index.html.erb +++ b/app/views/files/index.html.erb @@ -96,7 +96,7 @@ <% end -%> <% container.attachments.each do |file| %> "> - <%= link_to_attachment file, :download => true, :title => file.description, :style => "width: 230px; overflow: hidden; white-space: nowrap;text-overflow: ellipsis;" %> + <%= link_to_attachment file, :download => true, :title => file.filename+"\n"+file.description, :style => "width: 230px; overflow: hidden; white-space: nowrap;text-overflow: ellipsis;" %> <%= format_time(file.created_on) %> <%= number_to_human_size(file.filesize) %> <%= file.downloads %> diff --git a/app/views/layouts/base_stores.html.erb b/app/views/layouts/base_stores.html.erb index 60e686f1a..9d125b251 100644 --- a/app/views/layouts/base_stores.html.erb +++ b/app/views/layouts/base_stores.html.erb @@ -38,10 +38,11 @@ <%= link_to stores_url , stores_url %> -

<%=link_to l(:label_home),home_path %> > <%=link_to l(:label_course_file),:controller => 'projects', :action => 'index', :project_type => 0 %> > <%=link_to @project, '' %>

+

<%=link_to l(:label_home),home_path %> > <%=link_to l(:label_course_file),stores_url %>

+ <%= render_flash_messages %>
<%= yield :top_field %>
@@ -50,7 +51,6 @@ <%= view_layouts_base_sidebar_hook_response %>
- <%= render_flash_messages %> <%= yield %> <%= call_hook :view_layouts_base_content %>
diff --git a/app/views/stores/index.html.erb b/app/views/stores/index.html.erb index d349d0aa8..0ed270d92 100644 --- a/app/views/stores/index.html.erb +++ b/app/views/stores/index.html.erb @@ -9,63 +9,14 @@ max-width: 100%; margin: 20px auto; } - .line_block{ - display: inline-block; - width: 49%; - margin: 10px auto; - vertical-align: top; - padding: 0px 2%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -box-sizing: border-box; - } - .resource_sum{ - height: auto; - } - .line_block p{ - margin: 1em 0px auto; - /*background: linear-gradient(#ffffff, #e5e5e5) repeat scroll 0% 0% transparent;*/ - border-bottom: 1px solid rgb(226,226,226); - border-top-left-radius : 6px; - border-top-right-radius : 6px; - box-shadow: 0px 1px 0px white, 0px, -1px 0px rgb(245,245,245); - height: 39px; - font-size: 15px; - line-height: 26px; - height: 30px; - font-size: 1.5em; - padding-left: 4%; - border-bottom: 1px solid rgb(21, 165, 200); - } - .resource_sum, .line_blo{ - border: 1px solid #eeeeee; - } - .line_block table{ - border: 1px solid #eeeeee; - } - .line_block table thead tr{ - /*background-color: #d1d1d1;*/ - } - .line_block table td{ - height: 2em; - } - .filename { - - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - max-width: 247px; - } - /*.filename a:after { - content: "..."; - }*/ + <% content_for :top_field do%> -
+
<%= form_tag( search_stores_path, method: 'get') do %> - <%= text_field_tag 'name', nil, size:"100", placeholder:'请输入要搜索的关键字' %> - <%= submit_tag l(:label_search), class:"whiteButton m3p10 h30"%> + <%= text_field_tag 'name', nil, size:"100", placeholder:'请输入要搜索的关键字', :class => 'blueinputbar' %> + <%= submit_tag l(:label_search), class:"whiteButton", style: "padding: 0px 10px;"%> <% end %>
<% end %> @@ -79,17 +30,19 @@ - - - + + + <% k.each do |c1|%> - - + + <% end %> @@ -97,3 +50,15 @@ <% reset_cycle; end %> + \ No newline at end of file diff --git a/app/views/stores/search.html.erb b/app/views/stores/search.html.erb index 39f884b8e..a6c206d77 100644 --- a/app/views/stores/search.html.erb +++ b/app/views/stores/search.html.erb @@ -1,7 +1,19 @@ + <% content_for :top_field do%>
<%= form_tag( search_stores_path, method: 'get') do %> - <%= text_field_tag 'name', nil, size:"100", placeholder:'请输入要搜索的关键字' %> + <%= text_field_tag 'name', nil, size:"100", placeholder:'请输入要搜索的关键字', :value => params[:name] , :class => 'blueinputbar'%> <%= submit_tag l(:label_search), class:"whiteButton m3p10 h30"%> <% end %>
@@ -18,7 +30,7 @@ class=f16 href="http://ishare.iask.sina.com.cn/f/23680389.html" target=_blank> --><%= result.filename %><%= link_to_attachment result, {:text => "下载"}%><%= result.description %> -
所属分类:所属分类:<%=result_come_from result%>=====================IT资料 > 常用软件 >  - \ No newline at end of file + + + diff --git a/public/images/button/download.png b/public/images/button/download.png new file mode 100644 index 000000000..d6d6b9ea1 Binary files /dev/null and b/public/images/button/download.png differ diff --git a/public/images/button/download_focus.png b/public/images/button/download_focus.png new file mode 100644 index 000000000..d22f806c3 Binary files /dev/null and b/public/images/button/download_focus.png differ diff --git a/public/stylesheets/nyan.css b/public/stylesheets/nyan.css index 764939f3c..c0900cc10 100644 --- a/public/stylesheets/nyan.css +++ b/public/stylesheets/nyan.css @@ -14,6 +14,13 @@ .clear_both{ clear: both; } +.btn_download{ + display: inline-block; + background: url('images/button/download.png') no-repeat transparent; +} +.btn_download a{ + background: url('images/button/download.png') no-repeat transparent; +} * { font-family: Helvetica, Tahoma, Arial, "Microsoft YaHei", "微软雅黑", SimSun, "宋体", STXihei, "华文细黑", Heiti, "黑体", sans-serif; } @@ -359,4 +366,102 @@ table.content-text-list tbody tr td.locked, div.memo-section .locked{ .project_acts .project_acts_right{ height: 100%; margin-left: 61%; -} \ No newline at end of file +} +/* stores 资源库 +*******************************************************************************/ + .line_block{ + display: inline-block; + width: 49%; + margin: 10px auto; + vertical-align: top; + padding: 0px 2%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -box-sizing: border-box; + } + .resource_sum{ + height: auto; + } + .line_block p{ + margin: 1em 0px auto; + /*background: linear-gradient(#ffffff, #e5e5e5) repeat scroll 0% 0% transparent;*/ + border-bottom: 1px solid rgb(226,226,226); + border-top-left-radius : 6px; + border-top-right-radius : 6px; + box-shadow: 0px 1px 0px white, 0px, -1px 0px rgb(245,245,245); + height: 39px; + font-size: 15px; + line-height: 26px; + height: 30px; + font-size: 1.5em; + padding-left: 4%; + border-bottom: 1px solid rgb(21, 165, 200); + } + .resource_sum, .line_blo{ + border: 1px solid #eeeeee; + } + .line_block table{ + border: 1px solid #eeeeee; + } + .line_block table thead tr{ + /*background-color: #d1d1d1;*/ + text-align: center; + } + .line_block table td{ + height: 2em; + } + .filename { + + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + max-width: 247px; + } + /*.filename a:after { + content: "..."; + }*/ + .blueinputbar{ + -o-transform-origin: 138px 46.5px; + -o-transition: background 0.2s cubic-bezier(0, 0, 1, 1); + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-radius: 3px; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + -webkit-transform-origin: 138px 46.5px; + -webkit-transition: background 0.2s cubic-bezier(0, 0, 1, 1); + -webkit-transition-delay: 0; + -webkit-transition-duration: 0.2s; + -webkit-transition-property: background; + -webkit-transition-timing-function: cubic-bezier(0, 0, 1, 1); + align-content: stretch; + align-items: stretch; + align-self: stretch; + background: #FFFFFF; + border-bottom: 1px solid #56B4EF; + border-left: 1px solid #56B4EF; + border-radius: 3px; + border-right: 1px solid #56B4EF; + border-top: 1px solid #56B4EF; + color: #333333; + justify-content: flex-start; + margin: 0px; + order: 0; + outline: #333333 0px; + overflow-wrap: break-word; + resize: none; + text-shadow: none; + transform-origin: 138px 46.5px; + transition: background 0.2s cubic-bezier(0, 0, 1, 1); + unicode-bidi: embed; + vertical-align: top; + word-wrap: break-word; + } + input.blueinputbar:focus { + box-shadow: rgba(0, 0, 0, 0.047) 0px 1px 3px 0px inset, rgba(82, 168, 236, 0.600) 0px 0px 5px 0px; + border-bottom: 1px solid #56B4EF; + border-left: 1px solid #56B4EF; + border-radius: 3px; + border-right: 1px solid #56B4EF; + border-top: 1px solid #56B4EF; + } \ No newline at end of file
文件名下载次数下载<%=l(:label_attachment)%><%=l(:field_downloads)%><%=l(:button_download)%>
<%= link_to c1.filename, (attachFromUrl c1), {:title => c1.filename, :target => "_blank"} %> <%= c1.downloads %> <%= link_to_attachment c1, {:text => "下载"}%><%= c1.downloads %> + <%= link_to_attachment c1, {:text => image_tag("/images/button/download.png", width: "22px", alt: "l(:button_download)") }%> +