diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 28a1b5b6e..3a7096b2a 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -60,7 +60,8 @@ class AccountsController < ApplicationController ua = UserAgent.find_by_ip(ip) ua.update_column(:agent_type, UserAgent::USER_REGISTER) if ua successful_authentication(@user) - session[:user_id] = @user.id + # session[:user_id] = @user.id + session[:"#{default_yun_session}"] = @user.id normal_status("注册成功") end rescue Exception => e @@ -94,7 +95,7 @@ class AccountsController < ApplicationController successful_authentication(@user) login_control.clear # 重置每日密码错误次数 - session[:user_id] = @user.id + # session[:user_id] = @user.id end # 忘记密码 @@ -158,7 +159,7 @@ class AccountsController < ApplicationController def logout UserAction.create(action_id: User.current.id, action_type: "Logout", user_id: User.current.id, :ip => request.remote_ip) - session[:user_id] = nil + session[:"#{default_yun_session}"] = nil logout_user render :json => {status: 1, message: "退出成功!"} end diff --git a/app/controllers/admins/shixun_feedback_messages_controller.rb b/app/controllers/admins/shixun_feedback_messages_controller.rb new file mode 100644 index 000000000..31fcc468c --- /dev/null +++ b/app/controllers/admins/shixun_feedback_messages_controller.rb @@ -0,0 +1,14 @@ +class Admins::ShixunFeedbackMessagesController < Admins::BaseController + + def index + default_sort('created_at', 'desc') + @params_page = params[:page] || 1 + if params[:keyword] + discusses = Discuss.find_by_sql("select * from discusses join shixuns on discusses.dis_id = shixuns.id where discusses.dis_type='Shixun' AND + shixuns.name like '%#{params[:keyword]}%'") + else + discusses = Discuss.where(:dis_type => 'Shixun').includes(:user, :dis) + end + @discusses = paginate discusses + end +end \ No newline at end of file diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index c6aca5ae5..4c61fb1df 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -299,9 +299,11 @@ class ApplicationController < ActionController::Base # and starts a session if needed def find_current_user uid_logger("user setup start: session[:user_id] is #{session[:user_id]}") - if session[:user_id] + uid_logger("0000000000000user setup start: session[:user_id] is #{session[:"#{default_yun_session}"]}") + current_domain_session = session[:"#{default_yun_session}"] + if current_domain_session # existing session - (User.active.find(session[:user_id]) rescue nil) + (User.active.find(current_domain_session) rescue nil) elsif autologin_user = try_to_autologin autologin_user elsif params[:format] == 'atom' && params[:key] && request.get? && accept_rss_auth? @@ -313,10 +315,10 @@ class ApplicationController < ActionController::Base def try_to_autologin if cookies[autologin_cookie_name] # auto-login feature starts a new session - user = User.try_to_autologin(cookies[autologin_cookie_name]) - if user - start_user_session(user) - end + user = nil + Rails.logger.info("111111111111111111#{default_yun_session}, session is #{session[:"#{default_yun_session}"]} ") + user = User.try_to_autologin(cookies[autologin_cookie_name]) if session[:"#{default_yun_session}"] + start_user_session(user) if user user end end diff --git a/app/controllers/concerns/laboratory_helper.rb b/app/controllers/concerns/laboratory_helper.rb index 37a3675f0..ecb478388 100644 --- a/app/controllers/concerns/laboratory_helper.rb +++ b/app/controllers/concerns/laboratory_helper.rb @@ -27,5 +27,6 @@ module LaboratoryHelper def default_yun_session @_default_yun_session = "#{request.subdomain.split('.').first}_user_id" + # @_default_yun_session = "#{current_laboratory.try(:identifier).split('.').first}_user_id" end end \ No newline at end of file diff --git a/app/controllers/concerns/login_helper.rb b/app/controllers/concerns/login_helper.rb index 8497799e3..cf0c8e1e3 100644 --- a/app/controllers/concerns/login_helper.rb +++ b/app/controllers/concerns/login_helper.rb @@ -47,7 +47,7 @@ module LoginHelper User.current.delete_session_token(session[:tk]) self.logged_user = nil end - session[:user_id] = nil + session[:"#{default_yun_session}"] = nil end # Sets the logged in user @@ -73,8 +73,8 @@ module LoginHelper # # session[:"#{request.subdomain}_user_id"] = user.id # # end - session[:user_id] = user.id - # session[:"#{default_yun_session}"] = user.id + # session[:user_id] = user.id + session[:"#{default_yun_session}"] = user.id session[:ctime] = Time.now.utc.to_i session[:atime] = Time.now.utc.to_i end diff --git a/app/controllers/hack_user_lastest_codes_controller.rb b/app/controllers/hack_user_lastest_codes_controller.rb index a4b41a162..2d749ce75 100644 --- a/app/controllers/hack_user_lastest_codes_controller.rb +++ b/app/controllers/hack_user_lastest_codes_controller.rb @@ -35,7 +35,7 @@ class HackUserLastestCodesController < ApplicationController # 提交结果显示 def result if @my_hack.submit_status == 1 - render json: {status:0, message: "正在评测中"} + render json: {status: 1, message: "正在评测中"} else @mode = params[:mode] @result = diff --git a/app/controllers/oauth/base_controller.rb b/app/controllers/oauth/base_controller.rb index e4068fbda..327f21845 100644 --- a/app/controllers/oauth/base_controller.rb +++ b/app/controllers/oauth/base_controller.rb @@ -12,7 +12,8 @@ class Oauth::BaseController < ActionController::Base private def session_user_id - session[:user_id] + # session[:user_id] + session[:"#{default_yun_session}"] end def current_user diff --git a/app/controllers/weapps/registers_controller.rb b/app/controllers/weapps/registers_controller.rb index 391850090..de48ebd54 100644 --- a/app/controllers/weapps/registers_controller.rb +++ b/app/controllers/weapps/registers_controller.rb @@ -48,7 +48,8 @@ class Weapps::RegistersController < Weapps::BaseController ) end successful_authentication(@user) - session[:user_id] = @user.id + # session[:user_id] = @user.id + session[:"#{default_yun_session}"] = @user.id # render_ok(user_id: @user.id) end diff --git a/app/views/admins/shared/_sidebar.html.erb b/app/views/admins/shared/_sidebar.html.erb index f78b52ac7..7b1f5db7a 100644 --- a/app/views/admins/shared/_sidebar.html.erb +++ b/app/views/admins/shared/_sidebar.html.erb @@ -65,6 +65,12 @@ <% end %> +
  • + <%= sidebar_item_group('#comments-submenu', '消息', icon: 'comments') do %> +
  • <%= sidebar_item(admins_shixun_feedback_messages_path, '实训反馈', icon: 'comment', controller: 'admins-shixun_feedback_messages') %>
  • + <% end %> + +
  • <%= sidebar_item_group('#major-identification-submenu', '工程认证', icon: 'anchor') do %>
  • <%= sidebar_item(admins_major_informations_path, '本科专业目录', icon: 'outdent', controller: 'admins-major_informations') %>
  • diff --git a/app/views/admins/shixun_feedback_messages/index.html.erb b/app/views/admins/shixun_feedback_messages/index.html.erb new file mode 100644 index 000000000..730729646 --- /dev/null +++ b/app/views/admins/shixun_feedback_messages/index.html.erb @@ -0,0 +1,14 @@ +<% define_admin_breadcrumbs do %> + <% add_admin_breadcrumb('实训反馈', admins_shixun_feedback_messages_path) %> +<% end %> + +
    + <%= form_tag(admins_shixun_feedback_messages_path, method: :get, class: 'form-inline search-form', remote: true) do %> + <%= text_field_tag(:keyword, params[:keyword], class: 'form-control col-md-4 ml-3', placeholder: '输入实训名称关键字进行搜索') %> + <%= submit_tag('搜索', class: 'btn btn-primary ml-3', 'data-disable-with': '搜索中...') %> + <% end %> +
    + +
    + <%= render(partial: 'admins/shixun_feedback_messages/shared/list', locals: {discusses: @discusses}) %> +
    \ No newline at end of file diff --git a/app/views/admins/shixun_feedback_messages/index.js.erb b/app/views/admins/shixun_feedback_messages/index.js.erb new file mode 100644 index 000000000..6eab9be54 --- /dev/null +++ b/app/views/admins/shixun_feedback_messages/index.js.erb @@ -0,0 +1,2 @@ +$(".shixun_feedback_messages-list-container") + .html("<%= j render partial: "admins/shixun_feedback_messages/shared/list", locals: {discusses: @discusses} %>") \ No newline at end of file diff --git a/app/views/admins/shixun_feedback_messages/shared/_list.html.erb b/app/views/admins/shixun_feedback_messages/shared/_list.html.erb new file mode 100644 index 000000000..af81f9e58 --- /dev/null +++ b/app/views/admins/shixun_feedback_messages/shared/_list.html.erb @@ -0,0 +1,29 @@ + + + + + + + + + + + + <% if discusses.present? %> + <% discusses.each_with_index do |discuss, index| %> + + + <% identifier = Game.find_by(challenge_id: discuss.challenge_id, user_id: discuss.user_id)&.identifier %> + + + + + + <% end %> + <% else %> + <%= render 'admins/shared/no_data_for_table' %> + <% end %> + +
    序号实训名称评论内容评论者评论时间
    <%= (@params_page.to_i - 1) * 20 + index + 1 %><%= link_to discuss.dis.name, "/tasks/#{identifier}", target: '_blank'%><%= content_safe discuss.content %><%= discuss.user.show_real_name %><%= format_time discuss.created_at %>
    + +<%= render partial: 'admins/shared/paginate', locals: { objects: discusses } %> \ No newline at end of file diff --git a/app/views/hack_user_lastest_codes/result.json.jbuilder b/app/views/hack_user_lastest_codes/result.json.jbuilder index 31164d4f7..2561d4ecd 100644 --- a/app/views/hack_user_lastest_codes/result.json.jbuilder +++ b/app/views/hack_user_lastest_codes/result.json.jbuilder @@ -1,7 +1,12 @@ -json.(@result, :id, :status, :error_line, :error_msg, - :input, :output, :execute_time, :execute_memory) +json.status 0 +json.message "评测成功" +json.data do + json.(@result, :id, :status, :error_line, :error_msg, + :input, :output, :execute_time, :execute_memory) # 提交模式多了一个预计输出 -if @mode == "submit" - json.expected_output @result.expected_output + if @mode == "submit" + json.expected_output @result.expected_output + end end + diff --git a/app/views/hacks/edit.json.jbuilder b/app/views/hacks/edit.json.jbuilder index 95124666f..24d51385b 100644 --- a/app/views/hacks/edit.json.jbuilder +++ b/app/views/hacks/edit.json.jbuilder @@ -1,5 +1,5 @@ # 编程内容 -json.(@hack, :name, :description, :language, :code) +json.(@hack, :name, :description, :language, :difficult, :category, :time_limit, :open_or_not) # 代码 json.language @hack.language diff --git a/config/routes.rb b/config/routes.rb index 86bac4533..0f31c6d48 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1039,6 +1039,7 @@ Rails.application.routes.draw do end resources :shixuns, only: [:index,:destroy] resources :shixun_settings, only: [:index,:update] + resources :shixun_feedback_messages, only: [:index] resources :department_applies,only: [:index,:destroy] do collection do post :merge diff --git a/public/react/public/css/edu-all.css b/public/react/public/css/edu-all.css index f51e0e630..5988709eb 100644 --- a/public/react/public/css/edu-all.css +++ b/public/react/public/css/edu-all.css @@ -80,6 +80,27 @@ em.vertical-line{display: inline-block;width: 2px;background: #999;height: 10px} .inner-footernav li{float: left;height: 50px;width: 80px;text-align: center} .inner-footernav li a{width: 100%;text-align: center;line-height: 50px;color: #888} .inner-footer_con{ width: 1200px; margin: 0 auto;} +.inner-footernavysl{ display: flex;flex-direction:initial;} +.inner-footernavysl li a { + height: 40px; + line-height: 40px; + color:#878786; + font-size: 19px; +} + +.inner-footernavysl li Link { + height: 40px; + line-height: 40px; + color:#878786; +} + +.intermediatecenter{ + width:100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} .footer_con-p{ color: #888; margin-top:10px;} /*banner图*/ .banner{width:100%;height:345px;position: relative;overflow: hidden;border-radius: 10px;} diff --git a/public/react/src/modules/tpm/NewFooter.js b/public/react/src/modules/tpm/NewFooter.js index 4ff1cc46a..f54fa1d3f 100644 --- a/public/react/src/modules/tpm/NewFooter.js +++ b/public/react/src/modules/tpm/NewFooter.js @@ -1,53 +1,127 @@ -import React, { Component } from 'react'; -import { Redirect } from 'react-router'; -import { Link } from 'react-router-dom'; -import { getImageUrl, toPath } from 'educoder' +import React, {Component} from 'react'; +import {Redirect} from 'react-router'; +import {Link} from 'react-router-dom'; +import {getImageUrl, toPath} from 'educoder' import PropTypes from 'prop-types'; class NewFooter extends Component { - constructor(props) { - super(props) + constructor(props) { + super(props) - } + } - componentWillReceiveProps(newProps, newContext) { + componentWillReceiveProps(newProps, newContext) { - } + } - render() { - return ( -
    + render() { + return ( +
    {/*newContainers*/} -
    - {this.props.user&&this.props.user.main_site===true?
    - {/*
    +
    + {this.props.user && this.props.user.main_site === true ?
    + {/*
    高校智能化教学与实训平台 EduCoder.net
    */} -
      -
    • 网站首页
    • -
    • 关于我们
    • -
    • 联系我们
    • -
    • 合作伙伴
    • -
    • 服务协议
    • -
    • 帮助中心
    • -
    • 意见反馈
    • -
    -
    :""} -
    - {this.props.mygetHelmetapi === null ? "" : - this.props.mygetHelmetapi===undefined|| this.props.mygetHelmetapi.footer===null||this.props.mygetHelmetapi.footer===undefined? +
      +
    • 网站首页
    • +
    • 关于我们
    • +
    • 联系我们
    • +
    • 合作伙伴
    • +
    • 服务协议
    • +
    • 帮助中心
    • +
    • 意见反馈
    • +
    +
    : ""} + + +
    + {this.props.mygetHelmetapi === null ? "" : + this.props.mygetHelmetapi === undefined || this.props.mygetHelmetapi.footer === null || this.props.mygetHelmetapi.footer === undefined ?

    © 2019 EduCoder - 湘ICP备17009477号 - + 湘ICP备17009477号 + 湘公网安备43019002000962号 - Trustie   &   IntelliDE inside. 版权所有 湖南智擎科技有限公司

    @@ -56,12 +130,12 @@ class NewFooter extends Component { } -
    -
    -
    -
    - ); - } +
    +
    +
    +
    + ); + } } export default NewFooter; diff --git a/public/stylesheets/educoder/edu-all.css b/public/stylesheets/educoder/edu-all.css index 3ed8a36c3..6fcbd3b5c 100644 --- a/public/stylesheets/educoder/edu-all.css +++ b/public/stylesheets/educoder/edu-all.css @@ -84,6 +84,27 @@ em.vertical-line{display: inline-block;width: 2px;background: #999;height: 10px} .inner-footernav li{float: left;height: 50px;width: 80px;text-align: center} .inner-footernav li a{width: 100%;text-align: center;line-height: 50px;color: #888} .inner-footer_con{ width: 1200px; margin: 0 auto;} +.inner-footernavysl{ display: flex;flex-direction:initial;} +.inner-footernavysl li a { + height: 40px; + line-height: 40px; + color:#878786; + font-size: 19px; +} + +.inner-footernavysl li Link { + height: 40px; + line-height: 40px; + color:#878786; +} + +.intermediatecenter{ + width:100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} .footer_con-p{ color: #888; margin-top:10px;} /*banner图*/ .banner{width:100%;height:345px;position: relative;overflow: hidden;border-radius: 10px;} @@ -3773,4 +3794,4 @@ a.singlepublishtwo{ .fontweightbold{ font-weight: bold !important; -} \ No newline at end of file +}