From f3a3ebe5437aca24e9a0c23c8037ecc58b852c64 Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Wed, 6 Mar 2019 19:15:21 +0800 Subject: [PATCH 01/15] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/common/updating.html | 22 ++++++++++++++++++++++ public/images/educoder/updating.png | Bin 0 -> 63932 bytes public/stylesheets/application.css | 2 +- public/stylesheets/educoder/edu-main.css | 3 ++- 4 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 app/views/common/updating.html create mode 100644 public/images/educoder/updating.png diff --git a/app/views/common/updating.html b/app/views/common/updating.html new file mode 100644 index 00000000..372c435e --- /dev/null +++ b/app/views/common/updating.html @@ -0,0 +1,22 @@ + + + + + + 系统通知 + + + +
+
+ +
+

EduCoder系统升级暂停服务通知

+

为了给大家提供更优质的体验,平台将于2019年3月7日00:00开始对系统进行升级。升级期间平台将暂停服务。

+

系统拟于2019年3月7日08:00恢复服务。请大家知悉,并提前做好教学安排。

+

带来不便,敬请谅解。

+
+
+
+ + \ No newline at end of file diff --git a/public/images/educoder/updating.png b/public/images/educoder/updating.png new file mode 100644 index 0000000000000000000000000000000000000000..8019b4bbee8c282b25be786d6b87a10cd00b7c24 GIT binary patch literal 63932 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 UdCbRLHUIzs07*qoM6N<$f=&tOL;wH) literal 0 HcmV?d00001 diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index f8578256..c9b562bf 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -1,5 +1,5 @@ html {overflow-y:auto;} -body { font-family:'微软雅黑', Verdana, sans-serif; font-size: 13px; color:#484848; margin: 0; padding: 0; min-width: 900px; } /*modified by linchun*/ +body { font-family:'微软雅黑', Verdana, sans-serif; font-size: 13px; color:#05101A; margin: 0; padding: 0; min-width: 900px; } /*modified by linchun*/ h1, h2, h3, h4 {font-family: '微软雅黑', "Trebuchet MS", Verdana, sans-serif;padding: 2px 10px 1px 0px;margin: 0 0 10px 0;} #content h1, h2, h3, h4 {color: #555;} diff --git a/public/stylesheets/educoder/edu-main.css b/public/stylesheets/educoder/edu-main.css index 3ed4334b..8f5dd7e5 100644 --- a/public/stylesheets/educoder/edu-main.css +++ b/public/stylesheets/educoder/edu-main.css @@ -105,7 +105,7 @@ a.decoration{text-decoration: underline} .ml-3{ margin-left: -3px;}.ml1{margin-left: 1px;}.ml2{margin-left: 2px;}.ml3{margin-left: 3px;}.ml4{margin-left: 4px;}.ml5{ margin-left: 5px;}.ml6{ margin-left: 6px;}.ml10{ margin-left: 10px;}.ml12{ margin-left:12px!important;}.ml13{ margin-left:13px!important;}.ml15{ margin-left: 15px;}.ml18{ margin-left: 18px;}.ml20{ margin-left: 20px;}.ml22{ margin-left: 22px;}.ml25{ margin-left: 25px;}.ml30{ margin-left: 30px;}.ml33{ margin-left: 33px;}.ml35{ margin-left:35px;}.ml40{margin-left:40px;}.ml42{margin-left:42px;}.ml45{ margin-left: 45px;}.ml50{ margin-left: 50px;}.ml55{ margin-left: 55px;}.ml60{ margin-left: 60px;}.ml72{ margin-left: 72px;}.ml73{ margin-left: 73px;}.ml75{ margin-left: 75px;}.ml80{ margin-left: 80px;}.ml95{ margin-left: 95px;}.ml115{margin-left: 115px}.ml123{ margin-left: 123px;}.ml150{ margin-left: 150px;}.ml180{ margin-left: 180px;}.ml230{ margin-left: 230px;} .mr3{margin-right: 3px}.mr4{margin-right: 4px}.mr5{ margin-right: 5px;}.mr8{ margin-right: 8px;}.mr10{ margin-right: 10px;}.mr12{ margin-right:12px!important;}.mr15{ margin-right: 15px;}.mr18{ margin-right: 18px;}.mr20{ margin-right: 20px;}.mr24{ margin-right: 24px;}.mr25{ margin-right: 25px;}.mr30{ margin-right:30px;}.mr35{margin-right:35px;}.mr40{margin-right:40px;}.mr45{margin-right:45px;}.mr50{ margin-right: 50px;}.mr60{ margin-right:60px;}.mr70{ margin-right: 70px;}.mr75{ margin-right: 75px;}.mr80{ margin-right:80px;}.mr90{ margin-right:90px;}.mr100{ margin-right: 100px;}.mr110{ margin-right:110px;}.mr350{ margin-right:350px;} -.pt1{ padding-top:1px;}.pt3{ padding-top:3px!important;}.pt5{ padding-top:5px!important;}.pt10{ padding-top:10px;}.pt15{ padding-top:15px;}.pt17{ padding-top:17px;}.pt20{ padding-top:20px!important;}.pt25{ padding-top:25px;}.pt30{ padding-top:30px;}.pt35{ padding-top:35px;}.pt37{ padding-top:37px;}.pt40{ padding-top:40px;}.pt47{ padding-top:47px;}.pt49{ padding-top:49px;}.pt50{ padding-top:50px;}.pt60{ padding-top:60px;}.pt70{ padding-top:70px;}.pt80{ padding-top:80px;}.pt90{ padding-top:90px;}.pt100{padding-top:100px;}.pt110{ padding-top:110px;}.pt120{ padding-top:120px;}.pt130{padding-top:130px;} +.pt1{ padding-top:1px;}.pt3{ padding-top:3px!important;}.pt5{ padding-top:5px!important;}.pt10{ padding-top:10px;}.pt15{ padding-top:15px;}.pt17{ padding-top:17px;}.pt20{ padding-top:20px!important;}.pt25{ padding-top:25px;}.pt30{ padding-top:30px;}.pt35{ padding-top:35px;}.pt37{ padding-top:37px;}.pt40{ padding-top:40px;}.pt47{ padding-top:47px;}.pt49{ padding-top:49px;}.pt50{ padding-top:50px;}.pt60{ padding-top:60px;}.pt70{ padding-top:70px;}.pt80{ padding-top:80px;}.pt90{ padding-top:90px;}.pt100{padding-top:100px;}.pt110{ padding-top:110px;}.pt120{ padding-top:120px;}.pt130{padding-top:130px;}.pt200{padding-top:200px;} .pb3{ padding-bottom:3px!important;}.pb5{ padding-bottom:5px!important;}.pb10{ padding-bottom:10px;}.pb15{ padding-bottom:15px;}.pb20{ padding-bottom:20px;}.pb25{ padding-bottom:20px;}.pb25{ padding-bottom:20px;}.pb30{ padding-bottom:30px;}.pb35{ padding-bottom:35px;}.pb40{ padding-bottom:40px;}.pb47{ padding-bottom:47px;}.pb50{ padding-bottom:50px;}.pb60{ padding-bottom:60px;}.pb70{ padding-bottom:70px;}.pb80{ padding-bottom:80px;}.pb90{ padding-bottom:90px;}.pb100{ padding-bottom:100px;}.pb110{ padding-bottom:110px;}.pb155{ padding-bottom:155px;} .pr2{ paddding-right:2px;}.pr5{ padding-right:5px;}.pr10{ padding-right:10px;}.pr15{ padding-right:15px;}.pr20{ padding-right:20px!important;}.pr30{ padding-right:30px!important;}.pr35{ padding-right:35px!important;}.pr42{ padding-right:42px;}.pr45{ padding-right:45px;}.pr48{ padding-right:48px;}.pr57{ padding-right:57px;}.pr60{ padding-right:60px;}.pr70{ padding-right:70px;}.pr72{ padding-right:72px;}.pr75{ padding-right:75px;}.pr88{ padding-right:88px;} @@ -233,6 +233,7 @@ a.color-green:hover{color: #28AC7F!important;} .color-red{color: #FF0000!important;} .color-red-dd{color: #DD1717!important;} a.color-red-dd:hover{color: #C61616!important;} +.color-red-c8{color: #C8161D!important} /*圆角*/ .radius{border-radius: 50%;} .radius4{border-radius: 4px;} From 7c25621ddc666c34c6b8dfbf6f0c784fb145bc9c Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Wed, 6 Mar 2019 19:20:53 +0800 Subject: [PATCH 02/15] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/common/updating.html => updating.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename app/views/common/updating.html => updating.html (100%) diff --git a/app/views/common/updating.html b/updating.html similarity index 100% rename from app/views/common/updating.html rename to updating.html From 12dc0a2d08d5684cc40fc0004f801701c0beff76 Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Wed, 6 Mar 2019 19:28:34 +0800 Subject: [PATCH 03/15] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=8E=9F=E7=89=88?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/update.html | 2 +- updating.html | 22 ---------------------- 2 files changed, 1 insertion(+), 23 deletions(-) delete mode 100644 updating.html diff --git a/public/update.html b/public/update.html index 43ae62e2..e75ed2e2 100644 --- a/public/update.html +++ b/public/update.html @@ -53,7 +53,7 @@ If you continue to experience problems please contact your Trustie administrator From e5165d1e28c113daa4990b786314e3f5efdc4fc1 Mon Sep 17 00:00:00 2001 From: daiao <35855898@qq.com> Date: Thu, 7 Mar 2019 17:58:10 +0800 Subject: [PATCH 15/15] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=BC=B9=E6=A1=86=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/managements/_subject_level_list.html.erb | 2 +- public/javascripts/application.js | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/views/managements/_subject_level_list.html.erb b/app/views/managements/_subject_level_list.html.erb index b637e261..1a4bf6d7 100644 --- a/app/views/managements/_subject_level_list.html.erb +++ b/app/views/managements/_subject_level_list.html.erb @@ -14,7 +14,7 @@ <%= l.subjects.size %> <%= format_time l.created_at %> - 删除 + 删除 重命名 diff --git a/public/javascripts/application.js b/public/javascripts/application.js index aaaf4346..9cc1b428 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -2075,6 +2075,14 @@ function delete_confirm_box_3(url, str){ pop_box_new(htmlvalue, 300, 140); } +//点击删除时的确认弹框: 走post方法 +function delete_confirm_box_4(url, str){ + var htmlvalue = '

提示

'+ + '

' + str + '

'; + pop_box_new(htmlvalue, 480, 160); +} + //提示框:只有一个按钮,点击关闭弹框 function notice_sure_box(str){ var htmlvalue = '

提示

'+

- 温馨提示:为了给大家提供更优质的服务,平台拟于2018年11月7日00:00--9:00进行全面升级。 + 温馨提示:为了给大家提供更优质的服务,平台拟于2019年3月7日00:00--8:00进行全面升级。

带来不便,敬请谅解! diff --git a/updating.html b/updating.html deleted file mode 100644 index 372c435e..00000000 --- a/updating.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - 系统通知 - - - -

-
-
-
-

EduCoder系统升级暂停服务通知

-

为了给大家提供更优质的体验,平台将于2019年3月7日00:00开始对系统进行升级。升级期间平台将暂停服务。

-

系统拟于2019年3月7日08:00恢复服务。请大家知悉,并提前做好教学安排。

-

带来不便,敬请谅解。

-
-
-
- - \ No newline at end of file From 8f88f7fd840fce942f47b3b582ae3ea9e4d5d1e6 Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Wed, 6 Mar 2019 19:34:05 +0800 Subject: [PATCH 04/15] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/update.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/public/update.html b/public/update.html index e75ed2e2..b2667a27 100644 --- a/public/update.html +++ b/public/update.html @@ -2,7 +2,7 @@ "http://www.w3.org/TR/html4/loose.dtd"> - Trustie 500 error + 系统通知 @@ -44,7 +44,7 @@ }); - + -

<%= shixun.shixun_preference %>分

+

+ <%= shixun.averge_star %>分

<% if shixun.challenges_count > 0 %> @@ -32,9 +33,9 @@ <%= shixun.shixun_score %> <% end %> - <% if shixun.myshixuns.count > 0 %> + <% if shixun.myshixuns_count > 0 %> - <%= shixun.myshixuns.count %> + <%= shixun.myshixuns_count %> <% end %> <%= shixun.shixun_level %> @@ -44,24 +45,96 @@ <% end %> \ No newline at end of file + }); + }) + + + + +<% if false %> + <% result = User.current.is_certification_teacher || User.current.admin? %> + <% shixuns.each do |shixun| %> +

+ <% if shixun.tag_repertoires.first.present? %> +
<%= shixun.tag_repertoires.first.try(:name) %>
+ <% end %> + <% unless result %> +
+ +

暂未公开

+
+ <% end %> +
" class="square-img" target="_blank"> + <%= image_tag(url_to_avatar(shixun)) %> + +
+

+ " class="justify color-grey-name" title="<%= shixun.name %>" target="_blank"><%= shixun.name %> +

+ + +

<%= shixun.shixun_preference %>分

+ +

+ <% if shixun.challenges_count > 0 %> + + <%= shixun.challenges_count %> + + <% end %> + <% if shixun.shixun_score > 0 %> + + <%= shixun.shixun_score %> + + <% end %> + <% if shixun.myshixuns.count > 0 %> + + <%= shixun.myshixuns.count %> + + <% end %> + <%= shixun.shixun_level %> +

+
+
+ <% end %> + + +<% end %> diff --git a/app/views/subjects/_subject_item.html.erb b/app/views/subjects/_subject_item.html.erb index 4632750b..db2c48bd 100644 --- a/app/views/subjects/_subject_item.html.erb +++ b/app/views/subjects/_subject_item.html.erb @@ -1,37 +1,29 @@ +<% result = User.current.is_certification_teacher || User.current.admin? %> <% subjects.each do |subject| %>
<% if subject.repertoire.present? %>
<%= subject.repertoire.name %>
<% end %> - <% if params[:controller] != "welcome" && subject.status < 2 && !User.current.member_of_subject?(subject) %> + <% unless result %>
-

非试用内容,需要授权

+

暂未开发

<% end %> - <%= image_tag(url_to_avatar(subject)) %> + " class="square-img" target="_blank"><%= image_tag(url_to_avatar(subject)) %>

- <%= link_to subject.name, subject_path(subject), :class => "justify color-grey-name", :target => "_blank" %> + <%= link_to subject.name, "#{result ? subject_path(subject) : "javascript:void(0);"}", :class => "justify color-grey-name", :target => "_blank" %>

<% if subject.stages_count > 0 %> <%= subject.stages_count %> <% end %> - <% if params[:controller] == "welcome" %> - - <%= subject.subject_shixun_score + subject.subject_shixun_choose_score %> - <% else %> - <% if (subject.subject_shixun_score + subject.subject_shixun_choose_score) > 0 %> - - <%= subject.subject_shixun_score + subject.subject_shixun_choose_score %> - <% end %> - <% end %> - <% myshixun_member_count = subject.respond_to?("myshixun_member_count") ? subject.myshixun_member_count : Myshixun.where(:shixun_id=>subject.stage_shixuns.map(&:shixun_id)).count %> - <%# REDO:汗!!!这块的关联关系有问题,所以这个统计的N+1问题没法避免。可以考虑改关联关系或者写单字段 %> - <% if myshixun_member_count > 0 %> - <%= myshixun_member_count %> + + + <% if subject.member_count > 0 %> + <%= subject.member_count %> <% end %>

diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index 837d1e9b..f9a52452 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -7,17 +7,17 @@ From 1ca34ce817dc4040f77f7b720bd197981cce4da5 Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Thu, 7 Mar 2019 11:22:58 +0800 Subject: [PATCH 09/15] =?UTF-8?q?=E8=B6=85=E7=BA=A7=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98=E5=AE=9E=E8=AE=AD=E8=AF=BE=E7=A8=8B=E9=85=8D=E7=BD=AE?= =?UTF-8?q?--=E6=B7=BB=E5=8A=A0=E7=AD=89=E7=BA=A7=E4=BD=93=E7=B3=BB?= =?UTF-8?q?=E7=9A=84=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/managements/_subject_list.html.erb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/views/managements/_subject_list.html.erb b/app/views/managements/_subject_list.html.erb index 24ca38ba..abc18548 100644 --- a/app/views/managements/_subject_list.html.erb +++ b/app/views/managements/_subject_list.html.erb @@ -3,9 +3,10 @@ ID - 实训套件名称 + 实训套件名称 阶段 技术体系 + 等级体系 上传图片 创建者 创建时间 color-light-green ml5"> @@ -26,6 +27,11 @@ <% end %> + + + <%= file_field_tag 'avatar[image]', :id => "upload_img_#{c_shixun.id}", From 8478f9c3b42056a293be1ce45484c036aebb3470 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 7 Mar 2019 11:27:08 +0800 Subject: [PATCH 10/15] =?UTF-8?q?member=5Fcount=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/subject.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/models/subject.rb b/app/models/subject.rb index 4388839c..c416974e 100644 --- a/app/models/subject.rb +++ b/app/models/subject.rb @@ -39,6 +39,10 @@ class Subject < ActiveRecord::Base count end + def member_count + self.shixuns.map(&:myshixuns_count).sum + end + def subject_shixuns count = 0 self.stage_shixuns.each do |stage_shixun| From c9d91b02d319538b0da2327744039d91a8ed570c Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 7 Mar 2019 11:32:36 +0800 Subject: [PATCH 11/15] =?UTF-8?q?averge=5Fstar=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/shixuns_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index 731a3741..f147b9b2 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -321,9 +321,9 @@ class ShixunsController < ApplicationController @search_name = "#{sub.name} / #{tag.name}" end shixun_id = ShixunTagRepertoire.where(:tag_repertoire_id => tag).map(&:shixun_id) - @shixuns = Shixun.select([:id, :name, :user_id, :challenges_count, :visits, :status, :myshixuns_count, :trainee, :use_scope, :identifier, :image_text]).where(:id => shixun_id, :hidden => 0).includes(:challenges, :schools, :shixun_members, :users).order("status = 2 desc, publish_time asc") + @shixuns = Shixun.select([:id, :name, :user_id, :challenges_count, :visits, :status, :myshixuns_count, :trainee, :use_scope, :identifier, :image_text, :averge_star]).where(:id => shixun_id, :hidden => 0).includes(:challenges, :schools, :shixun_members, :users).order("status = 2 desc, publish_time asc") else - @shixuns = Shixun.select([:id, :name, :user_id, :challenges_count, :visits, :status, :myshixuns_count, :trainee, :use_scope, :identifier, :image_text]).where(:hidden => 0).includes(:challenges, :schools, :shixun_members, :users).order("status = 2 desc, publish_time asc") + @shixuns = Shixun.select([:id, :name, :user_id, :challenges_count, :visits, :status, :myshixuns_count, :trainee, :use_scope, :identifier, :image_text, :averge_star]).where(:hidden => 0).includes(:challenges, :schools, :shixun_members, :users).order("status = 2 desc, publish_time asc") end # # 依据tag和语言推荐实训,如果tag不够,则依据语言推荐;语言不够,则取系统的三个 # @recommend_shixuns = Shixun.find_by_sql("select challenge_id from challenge_tags where name like From 08a43574056385cc6efb3caa6149cbc1beab4007 Mon Sep 17 00:00:00 2001 From: daiao <35855898@qq.com> Date: Thu, 7 Mar 2019 17:14:49 +0800 Subject: [PATCH 12/15] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E7=AD=89=E7=BA=A7=E7=B3=BB=E7=BB=9F=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/managements_controller.rb | 37 ++++++ app/models/subject.rb | 1 + app/models/subject_level_system.rb | 5 + app/views/layouts/base_management.html.erb | 2 +- .../managements/_class_level_system.html.erb | 88 -------------- .../managements/_subject_level_list.html.erb | 107 ++++++++++++++++++ .../managements/subject_level_system.html.erb | 3 + .../managements/subject_level_system.js.erb | 1 + config/routes.rb | 4 + ...0307070917_create_subject_level_systems.rb | 9 ++ ...dd_subject_level_system_id_for_subjects.rb | 9 ++ spec/factories/subject_level_systems.rb | 5 + spec/models/subject_level_system_spec.rb | 5 + 13 files changed, 187 insertions(+), 89 deletions(-) create mode 100644 app/models/subject_level_system.rb delete mode 100644 app/views/managements/_class_level_system.html.erb create mode 100644 app/views/managements/_subject_level_list.html.erb create mode 100644 app/views/managements/subject_level_system.html.erb create mode 100644 app/views/managements/subject_level_system.js.erb create mode 100644 db/migrate/20190307070917_create_subject_level_systems.rb create mode 100644 db/migrate/20190307074011_add_subject_level_system_id_for_subjects.rb create mode 100644 spec/factories/subject_level_systems.rb create mode 100644 spec/models/subject_level_system_spec.rb diff --git a/app/controllers/managements_controller.rb b/app/controllers/managements_controller.rb index f7c37d97..9502ee76 100644 --- a/app/controllers/managements_controller.rb +++ b/app/controllers/managements_controller.rb @@ -16,6 +16,43 @@ class ManagementsController < ApplicationController CODES = %W(2 3 4 5 6 7 8 9 A B C D E F G H J K L N M O P Q R S T U V W X Y Z) + # 实训课程等级体系 + def subject_level_system + @levels = SubjectLevelSystem.all + end + + # 创建课程等级体系 + def create_subject_level + raise("名称不能为空") if params[:name].blank? + repeat_name = SubjectLevelSystem.where(name: params[:name]).count + raise("名称不能重复") if repeat_name > 0 + level = SubjectLevelSystem.pluck(:level).max.to_i + 1 + SubjectLevelSystem.create(name: params[:name], level: level) + redirect_to subject_level_system_managements_path(:format => "js") + end + + # 重命名课程等级 + def rename_subject_level + raise("名称不能为空!") if params[:name].blank? + repeat_name = SubjectLevelSystem.where("name = ? and id != ?", params[:name], params[:id]).count + raise("名称不能重复") if repeat_name > 0 + level = SubjectLevelSystem.find params[:id] + level.update_attribute(:name, params[:name]) + redirect_to subject_level_system_managements_path(:format => "js") + end + + # 删除课程等级 + def delete_subject_level + level = SubjectLevelSystem.find params[:id] + Subject.where(:subject_level_system_id => level).update_all(:subject_level_system_id => nil) + levels = SubjectLevelSystem.where("level > ?", level.level) + levels.each do |l| + l.update_attribute(:level, l.level-1) + end + level.delete + redirect_to subject_level_system_managements_path(:format => "js") + end + # 工程认证视频导入模板 def ec_template @template = EcTemplate.where(nil) diff --git a/app/models/subject.rb b/app/models/subject.rb index c416974e..bd92c39c 100644 --- a/app/models/subject.rb +++ b/app/models/subject.rb @@ -18,6 +18,7 @@ class Subject < ActiveRecord::Base has_many :tidings, :as => :container, :dependent => :destroy belongs_to :repertoire belongs_to :user + has_one :subject_level_system scope :visible, lambda{where(status: 2)} diff --git a/app/models/subject_level_system.rb b/app/models/subject_level_system.rb new file mode 100644 index 00000000..6ba73437 --- /dev/null +++ b/app/models/subject_level_system.rb @@ -0,0 +1,5 @@ +class SubjectLevelSystem < ActiveRecord::Base + # attr_accessible :title, :body + has_many :subjects + +end diff --git a/app/views/layouts/base_management.html.erb b/app/views/layouts/base_management.html.erb index 4f188f78..c6e87870 100644 --- a/app/views/layouts/base_management.html.erb +++ b/app/views/layouts/base_management.html.erb @@ -55,7 +55,7 @@
  • 实训课程+
      -
    • <%= link_to "实训课程等级体系", class_shixuns_managements_path %>
    • +
    • <%= link_to "实训课程等级体系", subject_level_system_managements_path %>
    • <%= link_to "实训课程列表", class_shixuns_managements_path %>
    • <%= link_to "实训课程配置", subject_setting_list_managements_path %>
    • <%= link_to "已发布实训课程", class_publish_shixuns_managements_path %>
    • diff --git a/app/views/managements/_class_level_system.html.erb b/app/views/managements/_class_level_system.html.erb deleted file mode 100644 index 7a25d233..00000000 --- a/app/views/managements/_class_level_system.html.erb +++ /dev/null @@ -1,88 +0,0 @@ -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      等级名称实训课程数创建时间操作
      1初级课程5002019-03-02 10:38 - 删除 - 重命名 -
      2初级课程--2019-03-02 10:38 - 删除 - 重命名 -
      - + 新建 -
      -
      - - - \ No newline at end of file diff --git a/app/views/managements/_subject_level_list.html.erb b/app/views/managements/_subject_level_list.html.erb new file mode 100644 index 00000000..b637e261 --- /dev/null +++ b/app/views/managements/_subject_level_list.html.erb @@ -0,0 +1,107 @@ + + + + + + + + + + <% @levels.each do |l| %> + + + + + + + + <% end %> + + + + + +
      等级名称实训课程数创建时间操作
      <%= l.level %><%= l.name %><%= l.subjects.size %><%= format_time l.created_at %> + 删除 + 重命名 +
      + + 新建 +
      + + + \ No newline at end of file diff --git a/app/views/managements/subject_level_system.html.erb b/app/views/managements/subject_level_system.html.erb new file mode 100644 index 00000000..04aac1f4 --- /dev/null +++ b/app/views/managements/subject_level_system.html.erb @@ -0,0 +1,3 @@ +
      + <%= render :partial => "managements/subject_level_list" %> +
      diff --git a/app/views/managements/subject_level_system.js.erb b/app/views/managements/subject_level_system.js.erb new file mode 100644 index 00000000..e2dd320f --- /dev/null +++ b/app/views/managements/subject_level_system.js.erb @@ -0,0 +1 @@ +$("#levelSystem").html("<%= j (render :partial => "subject_level_list") %>") \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 7babc7c2..81d4e832 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -673,6 +673,10 @@ RedmineApp::Application.routes.draw do post 'add_course_info_for_school' get 'ec_template' post 'add_template' + get 'subject_level_system' + post 'create_subject_level' + post 'rename_subject_level' + post 'delete_subject_level' end end # Enable Grack support diff --git a/db/migrate/20190307070917_create_subject_level_systems.rb b/db/migrate/20190307070917_create_subject_level_systems.rb new file mode 100644 index 00000000..d551821f --- /dev/null +++ b/db/migrate/20190307070917_create_subject_level_systems.rb @@ -0,0 +1,9 @@ +class CreateSubjectLevelSystems < ActiveRecord::Migration + def change + create_table :subject_level_systems do |t| + t.integer :level + t.string :name + t.timestamps + end + end +end diff --git a/db/migrate/20190307074011_add_subject_level_system_id_for_subjects.rb b/db/migrate/20190307074011_add_subject_level_system_id_for_subjects.rb new file mode 100644 index 00000000..1a93180d --- /dev/null +++ b/db/migrate/20190307074011_add_subject_level_system_id_for_subjects.rb @@ -0,0 +1,9 @@ +class AddSubjectLevelSystemIdForSubjects < ActiveRecord::Migration + def up + add_column :subjects, :subject_level_system_id, :integer + add_index :subjects, :subject_level_system_id + end + + def down + end +end diff --git a/spec/factories/subject_level_systems.rb b/spec/factories/subject_level_systems.rb new file mode 100644 index 00000000..b2cf5d74 --- /dev/null +++ b/spec/factories/subject_level_systems.rb @@ -0,0 +1,5 @@ +FactoryGirl.define do + factory :subject_level_system do + + end +end diff --git a/spec/models/subject_level_system_spec.rb b/spec/models/subject_level_system_spec.rb new file mode 100644 index 00000000..6a85647c --- /dev/null +++ b/spec/models/subject_level_system_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe SubjectLevelSystem, :type => :model do + pending "add some examples to (or delete) #{__FILE__}" +end From cca7aabf8419dbf10a5c4e6cde29b95886a69663 Mon Sep 17 00:00:00 2001 From: daiao <35855898@qq.com> Date: Thu, 7 Mar 2019 17:33:27 +0800 Subject: [PATCH 13/15] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=85=B3=E8=81=94=E8=AF=BE=E7=A8=8B=E4=BD=93=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/managements_controller.rb | 8 ++++++++ app/models/subject_level_system.rb | 2 ++ app/views/managements/_subject_list.html.erb | 19 +++++++++++++++++-- config/routes.rb | 1 + 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/app/controllers/managements_controller.rb b/app/controllers/managements_controller.rb index 9502ee76..e1d89df0 100644 --- a/app/controllers/managements_controller.rb +++ b/app/controllers/managements_controller.rb @@ -16,6 +16,13 @@ class ManagementsController < ApplicationController CODES = %W(2 3 4 5 6 7 8 9 A B C D E F G H J K L N M O P Q R S T U V W X Y Z) + # 更新实训课程的等级 + def update_level_for_subject + subject = Subject.find params[:subject_id] + subject.update_attribute(:subject_level_system_id, params[:level_id]) + render :json => {status: 1} + end + # 实训课程等级体系 def subject_level_system @levels = SubjectLevelSystem.all @@ -1964,6 +1971,7 @@ end @audit_class_sx_num=Subject.where(:status => 1).count @publish_class_sx_num=Subject.where(:status => 2).count @repertories = Repertoire.where(nil).order("CONVERT( name USING gbk ) COLLATE gbk_chinese_ci ASC") + @levels = SubjectLevelSystem.all search = params[:search] # 搜索字 keyword = params[:keyword].blank? ? "u_name" : params[:keyword] # 根据姓名/课程名搜索 status = params[:status].to_i diff --git a/app/models/subject_level_system.rb b/app/models/subject_level_system.rb index 6ba73437..dae815b2 100644 --- a/app/models/subject_level_system.rb +++ b/app/models/subject_level_system.rb @@ -1,4 +1,6 @@ class SubjectLevelSystem < ActiveRecord::Base + default_scope :order => 'level' + # attr_accessible :title, :body has_many :subjects diff --git a/app/views/managements/_subject_list.html.erb b/app/views/managements/_subject_list.html.erb index abc18548..40a3b0c4 100644 --- a/app/views/managements/_subject_list.html.erb +++ b/app/views/managements/_subject_list.html.erb @@ -28,8 +28,11 @@ - + + <% @levels.each do |l| %> + + <% end %> @@ -140,4 +143,16 @@ }); } + + function select_subject_level(subject_id, level_id){ + $.ajax({ + url: "<%=update_level_for_subject_managements_path %>", + data: {subject_id: subject_id, level_id: level_id}, + type: "POST", + success: function(data){ + notice_box("关联成功!"); + } + + }); + } diff --git a/config/routes.rb b/config/routes.rb index 81d4e832..dda5d272 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -677,6 +677,7 @@ RedmineApp::Application.routes.draw do post 'create_subject_level' post 'rename_subject_level' post 'delete_subject_level' + post 'update_level_for_subject' end end # Enable Grack support From 92b25e6d3fa4242c69f9a4561bc3c5f277b45814 Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Thu, 7 Mar 2019 17:39:50 +0800 Subject: [PATCH 14/15] =?UTF-8?q?=E6=9A=82=E5=81=9C=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E6=94=B9=E4=B8=BA3=E6=9C=888=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/update.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/update.html b/public/update.html index b2667a27..a6bf6ab6 100644 --- a/public/update.html +++ b/public/update.html @@ -56,7 +56,7 @@ If you continue to experience problems please contact your Trustie administrator 温馨提示:为了给大家提供更优质的服务

      - 平台拟于2019年3月7日00:00--8:00进行全面升级,带来不便,敬请谅解! + 平台拟于2019年3月8日00:00--8:00进行全面升级,带来不便,敬请谅解!