dev_aliyun_beta
SylorHuang 6 years ago
parent 1a66348dcf
commit 3f9e7f5916

@ -0,0 +1,32 @@
$(document).on('turbolinks:load', function() {
$(".tags-selected_multi").each(function () {
$(this).select2({
multiple: true,
maximumSelectionLength: 3,
// // width: 300,
placeholder: '请选择技术平台',
allowClear: true
})
})
});
function update_change(target) {
var s_id = $(target).attr("data-id");
var s_value = $(target).val();
var s_name = $(target).attr("name");
var json = {};
var s_index = $(target).parent("td").siblings(".shixun-line-no").text();
json[s_name] = s_value;
json["page_no"] = s_index;
$.ajax({
url: "/admins/shixun_settings/" + s_id,
type: "PUT",
dataType:'script',
data: json,
success: function (data) {
}
})
}

@ -53,6 +53,7 @@ label.error {
background: #e1e1e1!important;
}
.export-absolute{
right:40px;
right:20px;
position: absolute;
}
}
.position-r{position:relative;}

@ -3,27 +3,44 @@ class Admins::ShixunSettingsController < Admins::BaseController
def index
params[:sort_by] = params[:sort_by].presence || 'created_on'
params[:sort_direction] = params[:sort_direction].presence || 'desc'
shixuns = Admins::ShixunSettingsQuery.call(params)
@editing_shixuns = shixuns.where(status:0).size
@pending_shixuns = shixuns.where(status:1).size
@processed_shixuns = shixuns.where(status:2).size
@closed_shixuns = shixuns.where(status:3).size
shixun_settings = Admins::ShixunSettingsQuery.call(params)
@editing_shixuns = shixun_settings.where(status:0).size
@pending_shixuns = shixun_settings.where(status:1).size
@processed_shixuns = shixun_settings.where(status:2).size
@closed_shixuns = shixun_settings.where(status:3).size
@shixuns_type_check = MirrorRepository.select(:id,:type_name).pluck(:type_name,:id)
@can_copy = params[:can_copy] || "0"
@shixun_tags = TagRepertoire.order("name asc").select(:id,:name).pluck(:name,:id)
@params_page = params[:page] || 1
@shixuns = paginate shixuns.preload(:user,:challenges)
@shixun_settings = paginate shixun_settings.preload(:user,:tag_repertoires)
respond_to do |format|
format.js
format.html
format.xls{
filename = "实训详情_#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}.xls"
send_data(shixun_list_xls(@shixuns), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
send_data(shixun_list_xls(@shixun_settings), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
}
end
end
def update
@shixun = Shixun.find_by(id:params[:id])
@page_no = params[:page_no] || "1"
@shixun_tags = TagRepertoire.order("name asc").select(:id,:name).pluck(:name,:id)
if @shixun.update_attributes(setting_params)
respond_to do |format|
format.js
format.json{
render json: {status: 0}
}
end
else
redirect_to admins_shixun_settings_path
flash[:danger] = "更新失败"
end
end
private
def shixun_list_xls shixuns
xls_report = StringIO.new
@ -57,4 +74,8 @@ class Admins::ShixunSettingsController < Admins::BaseController
book.write xls_report
xls_report.string
end
def setting_params
params.permit(:use_scope,:close,:status,:can_copy,:webssh,:hidden,:homepage_show,:task_pass,:code_hidden,:id,:tag_repertoires[])
end
end

@ -97,6 +97,10 @@ class Shixun < ApplicationRecord
status
end
def is_tag_used?(id)
tag_repertoires.map(&:id).include?(id)
end
# 实训用户tag
def user_tags_name(user = User.current)
Shixun.joins(challenges: [:challenge_tags, :games]).where(games: {status: 2, user_id: user.id}, shixuns: {id:id})

@ -40,9 +40,15 @@ class Admins::ShixunSettingsQuery < ApplicationQuery
else
all_shixuns = all_shixuns.joins(user: {user_extension: :school}).where('schools.name LIKE ?', "%#{keyword}%")
end
end
all_shixuns = all_shixuns.where(:can_copy => params[:can_copy].to_i) if params[:can_copy]
all_shixuns = all_shixuns.where(:webssh => params[:webssh].to_i) if params[:webssh]
all_shixuns = all_shixuns.where(:hidden => params[:hidden].to_i) if params[:hidden]
all_shixuns = all_shixuns.where(:homepage_show => params[:homepage_show].to_i) if params[:homepage_show]
all_shixuns = all_shixuns.where(:task_pass => params[:task_pass].to_i) if params[:task_pass]
all_shixuns = all_shixuns.where(:code_hidden => params[:code_hidden].to_i) if params[:code_hidden]
custom_sort(all_shixuns, params[:sort_by], params[:sort_direction])
end
end

@ -5,7 +5,7 @@
<div class="box search-form-container shixun-settings-list-form">
<%= form_tag(admins_shixun_settings_path, method: :get, class: 'form-inline search-form', remote: true) do %>
<div class="d-flex flex-column w-100">
<div class="d-flex">
<div class="d-flex position-r">
<div class="form-group mr-2">
<label for="status">状态:</label>
<% status_options = [['全部', ''], ["编辑中(#{@editing_shixuns})", "editing"], ["待审核(#{@pending_shixuns})", 'pending'], ["已发布(#{@processed_shixuns})", 'processed'],["已关闭(#{@closed_shixuns})",'closed']] %>
@ -25,42 +25,52 @@
<%= link_to "清除",admins_shixun_settings_path(status:nil,tag:nil,search_type:nil,keyword:nil),class: "btn btn-default" %>
<div class="">
<a href="<%= admins_shixun_settings_path( :format => "xls") %>" class="btn btn-primary fr" id="shixun_xls">导出</a>
<a href="<%= admins_shixun_settings_path( :format => "xls") %>" class="btn btn-primary export-absolute" id="shixun_xls">导出</a>
</div>
</div>
<div class="d-flex">
<span class="fl ml25 shixun_webssh">
<%= check_box_tag :can_copy,"1",false, class:"mr5 magic-checkbox", id: "can_copy_filter", onchange: "this.form.submit()"%>
<!-- <input type="checkbox" class="mr5 magic-checkbox" name="can_copy" value="1" id="can_copy_filter" onchange="this.form.submit()">-->
<label style="top:2px;padding-left:23px;" for="can_copy_filter"><span class="only_view">只看可复制</span></label>
</span>
<span class="fl ml20 shixun_webssh">
<input type="checkbox" class="mr5 magic-checkbox" name="webssh" value="1" id="webssh_filter">
<label style="top:2px;padding-left:23px;" for="webssh_filter"><span class="only_view">只看可ssh</span></label>
</span>
<span class="fl ml20 shixun_webssh">
<input type="checkbox" class="mr5 magic-checkbox" name="hidden" value="1" id="hidden_filter">
<label style="top:2px;padding-left:23px;" for="hidden_filter"><span class="only_view">只看已隐藏</span></label>
</span>
<span class="fl ml20 shixun_webssh">
<input type="checkbox" class="mr5 magic-checkbox" name="homepage_show" value="1" id="homepage_show_filter">
<label style="top:2px;padding-left:23px;" for="homepage_show_filter"><span class="only_view">只看首页显示</span></label>
</span>
<span class="fl ml20 shixun_webssh">
<input type="checkbox" class="mr5 magic-checkbox" name="task_pass" value="1" id="task_pass_filter">
<label style="top:2px;padding-left:23px;" for="task_pass_filter"><span class="only_view">只看可跳关</span></label>
</span>
<span class="fl ml20 shixun_webssh">
<input type="checkbox" class="mr5 magic-checkbox" name="code_hidden" value="1" id="code_hidden_filter">
<label style="top:2px;padding-left:23px;" for="code_hidden_filter"><span class="only_view">只看已隐藏文件目录</span></label>
</span>
<div class="d-flex mt-3">
<div class="mr-5">
<label for="can_copy">
<%= check_box_tag :can_copy,"1",false,onclick: "this.form.submit()"%>
<span class="only_view">只看可复制</span>
</label>
</div>
<div class="mr-5">
<label for="webssh">
<%= check_box_tag :webssh,"1",false,onchange: "this.form.submit()"%>
<span class="only_view">只看可ssh</span>
</label>
</div>
<div class="mr-5">
<label for="hidden">
<%= check_box_tag :hidden,"1",false,onchange: "this.form.submit()"%>
<span class="only_view">只看已隐藏</span>
</label>
</div>
<div class="mr-5">
<label for="homepage_show">
<%= check_box_tag :homepage_show,"1",false,onchange: "this.form.submit()"%>
<span class="only_view">只看首页显示</span>
</label>
</div>
<div class="mr-5">
<label for="task_pass">
<%= check_box_tag :task_pass,"1",false,onchange: "this.form.submit()"%>
<span class="only_view">只看可跳关</span>
</label>
</div>
<div class="mr-5">
<label for="code_hidden">
<%= check_box_tag :code_hidden,"1",false,onchange: "this.form.submit()"%>
<span class="only_view">只看已隐藏文件目录</span>
</label>
</div>
</div>
</div>
<% end %>
</div>
<div class="box shixun-settings-list-container">
<%= render partial: 'admins/shixun_settings/shared/list', locals: { shixuns: @shixuns } %>
<%= render partial: 'admins/shixun_settings/shared/list', locals: { shixuns: @shixun_settings } %>
</div>

@ -1 +1 @@
$(".shixun-settings-list-container").html(<%= j render "admins/shixun_settings/shared/list",locals:{shixuns:@shixuns} %>)
$(".shixun-settings-list-container").html(<%= j render "admins/shixun_settings/shared/list",locals:{shixuns:@shixuns} %>)

@ -0,0 +1,24 @@
<table class="table text-center shixun-settings-list-table">
<thead>
<th width="4%">序号</th>
<th width="8%">ID</th>
<th width="12%" class="text-left">实训名称</th>
<th width="8%">技术平台</th>
<th width="8%">权限</th>
<th width="18%">技术体系</th>
<th width="12%">上传图片</th>
<th width="5%">创建者</th>
<th width="4%">关闭</th>
<th width="4%">复制</th>
<th width="6%">代码执行时间</th>
<th>操作</th>
</thead>
<tbody>
<% shixuns.each_with_index do |shixun,index| %>
<tr id="setting-item-<%= shixun.id %>">
<% page_no = (@params_page.to_i - 1) * 20 + index + 1 %>
<%= render partial: "admins/shixun_settings/shared/td",locals: {shixun: shixun,page_no:page_no} %>
</tr>
<% end %>
</tbody>
</table>

@ -0,0 +1,85 @@
<td class="shixun-line-no"><%= page_no %></td>
<td><%= shixun.identifier %></td>
<td class="text-left">
<span>
<%= link_to overflow_hidden_span(shixun.name,width:230), "/shixuns/#{shixun.identifier}", :target => "_blank", :title => shixun.name %>
</span>
</td>
<td>
<%= shixun.shixun_main_name.nil? ? "--" : shixun.shixun_main_name %>
</td>
<td>
<% status_options = [['超级管理员', '0'], ["合作团队", "1"]] %>
<%= select_tag(:use_scope, options_for_select(status_options,shixun.use_scope),class:"form-control shixun-setting-form",data:{id:shixun.id},onchange:"update_change(this)") %>
</td>
<td>
<%= select_tag(:tag_repertoires, options_for_select(@shixun_tags,shixun.is_tag_used?(tag.id)),multiple:true,class:"form-control tags-selected_multi",onchange: "update_change(this)") %>
<!-- 新版技术标签-->
<!-- <div class="fl pr ml30">-->
<!-- <input type="hidden" name="small_type" class="shixun_language" value="">-->
<!-- <input type="text" class="input-100-40 pr20 color-grey-3 font-14 pointer techInput" readonly value="<%#= shixun.shixun_tag_name.join(";") %>" placeholder="请选择技术体系"/>-->
<!-- <input class="search" contenteditable="true" style=" display: none; max-width: 70px;-->
<!-- position: absolute;-->
<!-- min-width: 40px;-->
<!-- height: 96%;-->
<!-- left: 180px;-->
<!-- top: 0px;-->
<!-- padding: 0 4px;-->
<!-- width: fit-content;-->
<!-- background: #fff;-->
<!-- line-height: 40px;-->
<!-- border: 1px solid rgb(234, 234, 234);"></input>-->
<!-- <div class="down-select shixun_small_language_option" style="padding: 2px 0px">-->
<%# @shixun_tags.each do |tag| %>
<!-- <p data-shixun-value="<%#= index + 1 %><%= tag.name %>_<%#= tag.id %>">-->
<!-- <input name="select<%#= index %>" data-value="<%#= tag.id %>" <%#= shixun.is_tag_used?(tag.id) ? "checked" : "" %> data-shixun="<%#= shixun.id %>" type="checkbox" class="select<%#= count %> magic-checkbox" id="<%#= count %>_<%#= tag.name %>_<%#= tag.id %>" value="<%#= tag.name %>"/>-->
<!-- <label style="top:0px" for="<%#= index %>_<%#= tag.name %>_<%#= tag.id %>" class="task-hide"><%#= tag.name %></label>-->
<!-- </p>-->
<%# end %>
<!-- </div>-->
<!-- </div>-->
</td>
<td>
<!-- 图片上传,稍后添加-->
</td>
<td><%= link_to shixun.owner.try(:show_real_name),user_path(shixun.user_id),target:'_blank' %></td>
<td>
<% if shixun.status == 2 %>
<%= link_to "关闭", "###", :class => "", :remote => true %>
<% else %>
<a href="javascript:void(0)">关闭</a>
<% end %>
</td>
<td class="operate">
<input type="checkbox" <%= shixun.can_copy ? 'checked' : "" %> name="can_copy" value="<%= shixun.id %>" id="can_copy_<%= shixun.id %>" class="ml5 mr5 magic-checkbox" >
<label style="top:-15px;" class="color-grey" for="can_copy_<%= shixun.id %>"></label>
</td>
<td class="operate">
<input name="excute_time" value="<%= shixun.excute_time %>" class="input-100-35 ml5 mr5 excute_time">
<div class="undis"><%= shixun.id %></div>
</td>
<td class="operate">
<span class="fl ml5 shixun_webssh">
<input type="checkbox" <%= shixun.webssh == 1 ? 'checked' : "" %> value="0" id="join_course_role_<%= shixun.id %>" class="ml-3 mr5 magic-checkbox">
<label style="top:0px;padding-left: 19px;" for="join_course_role_<%= shixun.id %>">ssh</label>
<div class="undis"><%= shixun.id %></div>
</span>
<span class="fl ml5 shixun_hidden">
<input type="checkbox" <%= shixun.hidden ? 'checked' : "" %> value="0" id="shixun_hidden_<%= shixun.id %>" name="hidden" class="ml-3 mr5 magic-checkbox">
<label style="top:0px;padding-left: 19px;" for="shixun_hidden_<%= shixun.id %>">隐藏</label>
<div class="undis"><%= shixun.id %></div>
</span>
<span class="fl ml5 homepage_show">
<input type="checkbox" name="homepage_show_cell" <%= shixun.status == 2 ? "" : "disabled" %> value="<%= shixun.id %>" <%= shixun.homepage_show ? "checked" : "" %> class="ml-3 mr5 magic-checkbox" id="homepage_show_<%= shixun.id %>">
<label style="top:0px;padding-left: 19px;" for="homepage_show_<%= shixun.id %>">首页</label>
</span>
<span class="fl ml5 shixun_pass">
<input type="checkbox" name="shixun_pass_cell" value="<%= shixun.id %>" <%= shixun.task_pass ? "checked" : "" %> class="ml-3 mr5 magic-checkbox" id="shixun_pass_<%= shixun.id %>">
<label style="top:0px;padding-left: 19px;" for="shixun_pass_<%= shixun.id %>">跳关</label>
</span>
<span class="fl ml5 shixun_file">
<input type="checkbox" name="shixun_file_cell" value="<%= shixun.id %>" <%= shixun.code_hidden ? "checked" : "" %> class="ml-3 mr5 magic-checkbox" id="shixun_file_<%= shixun.id %>">
<label style="top:0px;padding-left: 19px;" for="shixun_file_<%= shixun.id %>">隐藏文件目录</label>
</span>
</td>

@ -0,0 +1 @@
$("#setting-item-<%= @shixun.id %>").html("<%= j render partial: "admins/shixun_settings/shared/td",locals: {shixun: @shixun,page_no:@page_no} %>")

@ -24,7 +24,7 @@
<%= submit_tag('搜索', class: 'btn btn-primary ml-3') %>
<%= link_to "清除",admins_shixuns_path(status:nil,tag:nil,search_type:nil,keyword:nil),class: "btn btn-default" %>
<% end %>
<a href="<%= admins_shixuns_path( :format => "xls") %>" class="btn btn-primary export-absolute" id="shixun_xls">导出</a>
<a href="<%= admins_shixuns_path( :format => "xls") %>" class="btn btn-primary" id="shixun_xls">导出</a>
</div>

@ -18,7 +18,7 @@
<tr>
<td><%= (@params_page.to_i - 1) * 20 + index + 1%></td>
<td><%= shixun.identifier %></td>
<td class="text-left"><span><%= link_to overflow_hidden_span(shixun.name), shixun_path(shixun), :target => "_blank", :title => shixun.name %></span></td>
<td class="text-left"><span><%= link_to overflow_hidden_span(shixun.name), "/shixuns/#{shixun.identifier}", :target => "_blank", :title => shixun.name %></span></td>
<td>
<%= shixun.shixun_main_name.nil? ? "--" : shixun.shixun_main_name %>
</td>
@ -32,7 +32,7 @@
<td><%= shixun.challenges.where(:st => 0).size %></td>
<td><%= shixun.challenges.where(:st => 1).size %></td>
<td class="shixuns-status-<%= shixun.status %>"><%= shixun_authentication_status shixun %></td>
<td><%= link_to shixun.owner.try(:show_real_name),user_path(shixun.user_id),target:'_blank' %></td>
<td><%= link_to shixun.owner.try(:show_real_name),"/users/#{shixun.owner.try(:login)}",target:'_blank' %></td>
<td><%= format_time shixun.created_at %></td>
<td class="homepage_teacher">
<input type="checkbox" name="sigle_show" value="<%= shixun.id %>" <%= shixun.sigle_training ? "checked" : "" %> class="ml-3 mr5 magic-checkbox" id="join_teacher_homepage_<%= shixun.id %>">

@ -9,6 +9,7 @@ json.question_type question.question_type
json.question_score question.question_score.round(1).to_s
if question.question_type <= 2 #当为选择题或判断题时,只显示选项的位置
standard_answers_array = question.get_standard_answer_ids
ex_choice_random_boolean = (exercise_type.present? && exercise_type == 3 && (question.exercise.choice_random)) ? true : false #问题的选项随机打乱
if ex_choice_random_boolean
exercise_choices = choices.order("RAND()")
@ -49,7 +50,11 @@ if question.question_type <= 2 #当为选择题或判断题时,只显示选
if question.question_type == 2 #返回答案的文字
standard_text = standard_answers_array.first.to_i == 1 ? "正确" : "错误"
else
if question.question_type == 1 && standard_answers_array.size == 1
standard_answers_array = standard_answers_array.first.split("")
end
array_text_answer = []
standard_answers_array.each{|a| array_text_answer.push((a+64).chr)}
standard_text = array_text_answer.join("")
end

@ -799,7 +799,7 @@ Rails.application.routes.draw do
end
end
resources :shixuns, only: [:index,:destroy]
resources :shixun_settings, only: [:index]
resources :shixun_settings, only: [:index,:update]
end
#git 认证回调

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save