Merge branch 'szzh' of http://repository.trustie.net/xianbo/trustie2 into szzh
This commit is contained in:
commit
4a2b5f5e9a
|
@ -125,6 +125,7 @@ GEM
|
|||
mocha (1.1.0)
|
||||
metaclass (~> 0.0.1)
|
||||
multi_json (1.10.1)
|
||||
mysql2 (0.3.11)
|
||||
mysql2 (0.3.11-x86-mingw32)
|
||||
net-ldap (0.3.1)
|
||||
nokogiri (1.6.3)
|
||||
|
|
|
@ -66,7 +66,7 @@ class AccountController < ApplicationController
|
|||
if @user.save
|
||||
@token.destroy
|
||||
flash[:notice] = l(:notice_account_password_updated)
|
||||
redirect_to signin_url
|
||||
redirect_to signin_path
|
||||
return
|
||||
end
|
||||
end
|
||||
|
@ -92,7 +92,7 @@ class AccountController < ApplicationController
|
|||
Mailer.lost_password(token).deliver
|
||||
end
|
||||
flash[:notice] = l(:notice_account_lost_email_sent)
|
||||
redirect_to signin_url
|
||||
redirect_to signin_path
|
||||
return
|
||||
end
|
||||
end
|
||||
|
@ -103,7 +103,7 @@ class AccountController < ApplicationController
|
|||
def register
|
||||
# @root_path="/home/pdl/redmine-2.3.2-0/apache2/"
|
||||
#
|
||||
#@cache_identityy = params[:identity]||"" #身份
|
||||
@cache_identityy = params[:identity]||"" #身份
|
||||
@cache_no = params[:no]||"" #学号
|
||||
@cache_technical_title = params[:technical_title]||"" #教师职称
|
||||
@cache_province = params[:province]||"" #省份
|
||||
|
@ -144,7 +144,22 @@ class AccountController < ApplicationController
|
|||
@user.password, @user.password_confirmation = user_params[:password], user_params[:password_confirmation]
|
||||
end
|
||||
|
||||
|
||||
if(@cache_identityy == "")
|
||||
if params[:identity] == "2"
|
||||
@user.firstname = firstname_code
|
||||
@user.lastname = lastname_code
|
||||
end
|
||||
flash.now[:error]= l(:label_identity)+l(:'activerecord.errors.messages.empty')
|
||||
return
|
||||
end
|
||||
if(@cache_city == "")
|
||||
if params[:identity] == "2"
|
||||
@user.firstname = firstname_code
|
||||
@user.lastname = lastname_code
|
||||
end
|
||||
flash.now[:error]= l(:label_location)+l(:'activerecord.errors.messages.empty')
|
||||
return
|
||||
end
|
||||
|
||||
case Setting.self_registration
|
||||
when '1'
|
||||
|
@ -189,7 +204,7 @@ class AccountController < ApplicationController
|
|||
token.destroy
|
||||
flash[:notice] = l(:notice_account_activated)
|
||||
end
|
||||
redirect_to signin_url
|
||||
redirect_to signin_path
|
||||
end
|
||||
|
||||
def valid_ajax
|
||||
|
@ -219,10 +234,6 @@ class AccountController < ApplicationController
|
|||
render :json => req
|
||||
end
|
||||
|
||||
def email_valid
|
||||
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def authenticate_user
|
||||
|
@ -234,7 +245,7 @@ class AccountController < ApplicationController
|
|||
end
|
||||
|
||||
def password_authentication
|
||||
user, last_login_on = User.try_to_login(params[:username], params[:password])
|
||||
user = User.try_to_login(params[:username], params[:password])
|
||||
|
||||
if user.nil?
|
||||
invalid_credentials
|
||||
|
@ -244,7 +255,7 @@ class AccountController < ApplicationController
|
|||
onthefly_creation_failed(user, {:login => user.login, :auth_source_id => user.auth_source_id })
|
||||
else
|
||||
# Valid user
|
||||
successful_authentication(user, last_login_on)
|
||||
successful_authentication(user)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -291,7 +302,7 @@ class AccountController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def successful_authentication(user, last_login_on)
|
||||
def successful_authentication(user)
|
||||
logger.info "Successful authentication for '#{user.login}' from #{request.remote_ip} at #{Time.now.utc}"
|
||||
# Valid user
|
||||
self.logged_user = user
|
||||
|
@ -304,18 +315,13 @@ class AccountController < ApplicationController
|
|||
code = /\d*/
|
||||
#根据home_url生产正则表达式
|
||||
eval("code = " + "/^" + home_url.gsub(/\//,"\\\/") + "\\\/*(welcome)?\\\/*(\\\/index\\\/*.*)?\$/")
|
||||
if code=~params[:back_url] && last_login_on != ''
|
||||
if code=~params[:back_url]
|
||||
redirect_to user_activities_path(user)
|
||||
else
|
||||
if last_login_on == ''
|
||||
redirect_to my_account_url
|
||||
else
|
||||
#by young
|
||||
#redirect_back_or_default my_page_path
|
||||
#sredirect_back_or_default User.current
|
||||
redirect_to my_account_url
|
||||
redirect_back_or_default User.current
|
||||
#redirect_to User.current
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -357,7 +363,7 @@ class AccountController < ApplicationController
|
|||
UserStatus.create(:user_id => user.id, :changsets_count => 0, :watchers_count => 0)
|
||||
Mailer.register(token).deliver
|
||||
flash[:notice] = l(:notice_account_register_done)
|
||||
render action: 'email_valid', locals: {:mail => user.mail}
|
||||
redirect_to signin_path
|
||||
else
|
||||
yield if block_given?
|
||||
end
|
||||
|
@ -374,7 +380,7 @@ class AccountController < ApplicationController
|
|||
UserStatus.create(:user_id => user.id, :changsets_count => 0, :watchers_count => 0)
|
||||
self.logged_user = user
|
||||
flash[:notice] = l(:notice_account_activated)
|
||||
redirect_to my_account_url
|
||||
redirect_to my_account_path
|
||||
else
|
||||
yield if block_given?
|
||||
end
|
||||
|
@ -396,6 +402,6 @@ class AccountController < ApplicationController
|
|||
|
||||
def account_pending
|
||||
flash[:notice] = l(:notice_account_pending)
|
||||
redirect_to signin_url
|
||||
redirect_to signin_path
|
||||
end
|
||||
end
|
||||
|
|
|
@ -124,7 +124,7 @@ class ApplicationController < ActionController::Base
|
|||
else
|
||||
# HTTP Basic, either username/password or API key/random
|
||||
authenticate_with_http_basic do |username, password|
|
||||
user = User.try_to_login(username, password)[0] || User.find_by_api_key(username)
|
||||
user = User.try_to_login(username, password) || User.find_by_api_key(username)
|
||||
end
|
||||
end
|
||||
# Switch user if requested by an admin user
|
||||
|
@ -267,6 +267,8 @@ class ApplicationController < ActionController::Base
|
|||
end
|
||||
when "contest"
|
||||
return true
|
||||
when "Course"
|
||||
allowed = User.current.allowed_to?(:course_attachments_download, @course, :global => false)
|
||||
else
|
||||
return true
|
||||
end
|
||||
|
|
|
@ -76,7 +76,7 @@ class AttachmentsController < ApplicationController
|
|||
candown = User.current.member_of?(project) || (project.is_public && @attachment.is_public == 1)
|
||||
elsif (@attachment.container.has_attribute?(:course) ||@attachment.container.has_attribute?(:course_id) ) && @attachment.container.course
|
||||
course = @attachment.container.course
|
||||
candown= User.current.member_of_course?(course) || (course.is_public==1 && @attachment.is_public == 1)
|
||||
candown = User.current.member_of_course?(course) || (course.is_public==1 && @attachment.is_public == 1)
|
||||
elsif @attachment.container.is_a?(Course)
|
||||
course = @attachment.container
|
||||
candown= User.current.member_of_course?(course) || (course.is_public==1 && @attachment.is_public == 1)
|
||||
|
@ -366,7 +366,7 @@ class AttachmentsController < ApplicationController
|
|||
end
|
||||
rescue NoMethodError
|
||||
@save_flag = false
|
||||
@save_message = [] << l(:error_attachment_empty)
|
||||
@save_message = [] << l(:label_course_empty_select)
|
||||
respond_to do |format|
|
||||
format.js
|
||||
end
|
||||
|
|
|
@ -26,13 +26,15 @@ class FilesController < ApplicationController
|
|||
|
||||
helper :sort
|
||||
include SortHelper
|
||||
include FilesHelper
|
||||
helper :project_score
|
||||
|
||||
def show_attachments obj
|
||||
@all_attachments = []
|
||||
@attachments = []
|
||||
obj.each do |container|
|
||||
@all_attachments += container.attachments
|
||||
@attachments += container.attachments
|
||||
end
|
||||
@all_attachments = visable_attachemnts(@attachments)
|
||||
@limit = 10
|
||||
@feedback_count = @all_attachments.count
|
||||
@feedback_pages = Paginator.new @feedback_count, @limit, params['page']
|
||||
|
@ -48,9 +50,11 @@ class FilesController < ApplicationController
|
|||
#(redirect_to stores_url, :notice => l(:label_sumbit_empty);return) if params[:name].blank?
|
||||
if params[:insite]
|
||||
@result = find_public_attache q
|
||||
@result = visable_attachemnts @result
|
||||
@searched_attach = paginateHelper @result,10
|
||||
else
|
||||
@result = find_course_attache q,@course
|
||||
@result = visable_attachemnts @result
|
||||
@searched_attach = paginateHelper @result,10
|
||||
end
|
||||
|
||||
|
@ -69,7 +73,7 @@ class FilesController < ApplicationController
|
|||
# StoresController#search 将每条文件都查出来,再次进行判断过滤。---> resultSet.to_a.map
|
||||
# 此时内容不多速度还可,但文件增长,每条判断多则进行3-4次表连接。
|
||||
# 现在还木有思路 药丸
|
||||
resultSet = Attachment.where("attachments.container_type IS NOT NULL AND (is_public = 1 OR author_id = #{User.current.id}) AND filename LIKE :like ", like: "%#{keywords}%").
|
||||
resultSet = Attachment.where("attachments.container_type IS NOT NULL AND filename LIKE :like ", like: "%#{keywords}%").
|
||||
reorder("created_on DESC")
|
||||
end
|
||||
|
||||
|
|
|
@ -382,42 +382,22 @@ class HomeworkAttachController < ApplicationController
|
|||
if User.current.admin? || User.current.member_of_course?(@homework.bid.courses.first)
|
||||
# 打分统计
|
||||
stars_reates = @homework. rates(:quality)
|
||||
#stars_reates_count = stars_reates.count == 0 ? 1 : stars_reates.count
|
||||
#stars_status = stars_reates.select("stars, count(*) as scount").group("stars")
|
||||
#@stars_status_map = Hash.new(0.0)
|
||||
#stars_status.each do |star_status|
|
||||
# percent = (star_status.scount * 1.0/ stars_reates_count) * 100.to_f
|
||||
# percent_m = format("%.2f", percent)
|
||||
# @stars_status_map["star#{star_status.stars.to_i}".to_sym] =
|
||||
# percent_m.to_s + "%"
|
||||
#end
|
||||
#是否已经进行过评价
|
||||
temp = HomeworkAttach.find_by_sql("SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = #{@homework.id} AND rater_id = #{User.current.id}").first
|
||||
@m_score = temp.nil? ? 0:temp.stars
|
||||
@has_evaluation = stars_reates.where("rater_id = ?",User.current).count > 0
|
||||
#是否开启互评功能
|
||||
#@is_evaluation = @homework.bid.is_evaluation == 1 || @homework.bid.is_evaluation == nil
|
||||
#@limit = 10
|
||||
#@jours留言 is null条件用以兼容历史数据
|
||||
@jours = @homework.journals_for_messages.where("is_comprehensive_evaluation = 3 or is_comprehensive_evaluation is null").order("created_on DESC")
|
||||
@cur_page = params[:cur_page] || 1
|
||||
@cur_type = params[:cur_type] || 5
|
||||
@jour = paginateHelper @jours,5
|
||||
#@feedback_count = @jours.count
|
||||
#@feedback_pages = Paginator.new @feedback_count, @limit, params['page']
|
||||
#@offset ||= @feedback_pages.offset
|
||||
#@jour = @jours[@offset, @limit]
|
||||
#@comprehensive_evaluation教师评论
|
||||
#@comprehensive_evaluation = @homework.journals_for_messages.where("is_comprehensive_evaluation = 1").order("created_on DESC")
|
||||
|
||||
teachers = searchTeacherAndAssistant @course
|
||||
@comprehensive_evaluation = []
|
||||
teachers.each do|teacher|
|
||||
temp = @homework.journals_for_messages.where("is_comprehensive_evaluation = 1 and user_id = #{teacher.user_id}").order("created_on DESC").first
|
||||
@comprehensive_evaluation << temp if temp
|
||||
end
|
||||
#@comprehensive_evaluation = @homework.journals_for_messages.where("is_comprehensive_evaluation = 1 and user_id in #{convert_array(teachers)}").order("created_on DESC")
|
||||
#@anonymous_comments 匿评
|
||||
#@anonymous_comments = @homework.journals_for_messages.where("is_comprehensive_evaluation = 2").order("created_on DESC")
|
||||
annymous_users = @homework.homework_evaluations.map(&:user)
|
||||
unless annymous_users.nil? || annymous_users.count == 0
|
||||
@anonymous_comments = @homework.journals_for_messages.where("is_comprehensive_evaluation = 2 and user_id in #{convert_array(annymous_users)}").order("created_on DESC")
|
||||
|
|
|
@ -843,7 +843,10 @@ class ProjectsController < ApplicationController
|
|||
end
|
||||
|
||||
def show_projects_score
|
||||
render :layout => false
|
||||
respond_to do |format|
|
||||
format.html { render :layout => "project_base"}
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
def issue_score_index
|
||||
|
|
|
@ -163,7 +163,7 @@ class WelcomeController < ApplicationController
|
|||
|
||||
return 0
|
||||
elsif url.include?(Setting.host_user.gsub('/',''))
|
||||
redirect_to(:controller => "users", :action => "index")
|
||||
#redirect_to(:controller => "users", :action => "index")
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -72,5 +72,20 @@ module FilesHelper
|
|||
result
|
||||
end
|
||||
|
||||
def visable_attachemnts attachments
|
||||
result = []
|
||||
attachments.each do |attachment|
|
||||
if attachment.is_public? || attachment.author_id == User.current.id
|
||||
result << attachment
|
||||
end
|
||||
end
|
||||
result
|
||||
end
|
||||
|
||||
def get_qute_number attachment
|
||||
if attachment.copy_from.nil?
|
||||
return 0
|
||||
end
|
||||
count = Attachment.find_by_sql("select count(*) from attachments where copy_from = #{attachment.copy_from}")
|
||||
end
|
||||
end
|
|
@ -60,7 +60,7 @@ module HomeworkAttachHelper
|
|||
memberships = User.current.memberships.all(:conditions => cond)
|
||||
projects = memberships.map(&:project)
|
||||
not_have_project = []
|
||||
not_have_project << "<<NULL>>"
|
||||
not_have_project << "NO PROJECT"
|
||||
not_have_project << 0
|
||||
type = []
|
||||
type << not_have_project
|
||||
|
|
|
@ -161,7 +161,7 @@ class Role < ActiveRecord::Base
|
|||
if action.is_a? Hash
|
||||
allowed_actions.include? "#{action[:controller]}/#{action[:action]}"
|
||||
else
|
||||
allowed_permissions.include? action
|
||||
allowed_permissions.include? action
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -75,7 +75,6 @@ class User < Principal
|
|||
|
||||
has_many :homework_users
|
||||
has_many :homework_attaches, :through => :homework_users
|
||||
has_many :homework_evaluations
|
||||
|
||||
has_and_belongs_to_many :groups, :after_add => Proc.new {|user, group| group.user_added(user)},
|
||||
:after_remove => Proc.new {|user, group| group.user_removed(user)}
|
||||
|
@ -168,7 +167,7 @@ class User < Principal
|
|||
LOGIN_LENGTH_LIMIT = 25
|
||||
MAIL_LENGTH_LIMIT = 60
|
||||
|
||||
validates_presence_of :login, :mail, :if => Proc.new { |user| !user.is_a?(AnonymousUser) }
|
||||
validates_presence_of :login, :firstname, :mail, :if => Proc.new { |user| !user.is_a?(AnonymousUser) }
|
||||
validates_uniqueness_of :login, :if => Proc.new { |user| user.login_changed? && user.login.present? }, :case_sensitive => false
|
||||
validates_uniqueness_of :mail, :if => Proc.new { |user| user.mail_changed? && user.mail.present? }, :case_sensitive => false
|
||||
# Login must contain letters, numbers, underscores only
|
||||
|
@ -199,19 +198,13 @@ class User < Principal
|
|||
}
|
||||
scope :sorted, lambda { order(*User.fields_for_order_statement)}
|
||||
|
||||
scope :like, lambda {|arg, type|
|
||||
scope :like, lambda {|arg|
|
||||
if arg.blank?
|
||||
where(nil)
|
||||
else
|
||||
pattern = "%#{arg.to_s.strip.downcase}%"
|
||||
#where(" LOWER(concat(lastname, firstname)) LIKE :p ", :p => pattern)
|
||||
if type == "0"
|
||||
where(" LOWER(login) LIKE :p ", :p => pattern)
|
||||
elsif type == "1"
|
||||
where(" LOWER(concat(lastname, firstname)) LIKE :p ", :p => pattern)
|
||||
else
|
||||
where(" LOWER(mail) LIKE :p ", :p => pattern)
|
||||
end
|
||||
where(" LOWER(login) LIKE :p ", :p => pattern)
|
||||
end
|
||||
}
|
||||
|
||||
|
@ -359,9 +352,8 @@ class User < Principal
|
|||
end
|
||||
end
|
||||
end
|
||||
last_login_on = user.last_login_on.nil? ? '' : user.last_login_on.to_s
|
||||
user.update_column(:last_login_on, Time.now) if user && !user.new_record?
|
||||
[user, last_login_on]
|
||||
user
|
||||
rescue => text
|
||||
raise text
|
||||
end
|
||||
|
|
|
@ -26,11 +26,7 @@
|
|||
<%= back_url_hidden_field_tag %>
|
||||
<table>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<label for="username">
|
||||
<%=l(:lable_user_name)%>:
|
||||
</label>
|
||||
</td>
|
||||
<td align="right"><label for="username"><%=l(:lable_user_name)%>:</label></td>
|
||||
<td align="left">
|
||||
<%= text_field_tag 'username', params[:username], :tabindex => '1' , :value => "#{l(:label_login_prompt)}",
|
||||
:onfocus => "clearInfo('username','#{l(:label_login_prompt)}')",
|
||||
|
@ -39,48 +35,33 @@
|
|||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<label for="password">
|
||||
<%=l(:field_password)%>:
|
||||
</label>
|
||||
</td>
|
||||
<td align="left">
|
||||
<%= password_field_tag 'password', nil, :tabindex => '2' %>
|
||||
</td>
|
||||
<td align="right"><label for="password"><%=l(:field_password)%>:</label></td>
|
||||
<td align="left"><%= password_field_tag 'password', nil, :tabindex => '2' %></td>
|
||||
</tr>
|
||||
<% if Setting.openid? %>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<label for="openid_url">
|
||||
<%=l(:field_identity_url)%>
|
||||
</label>
|
||||
</td>
|
||||
<td align="left">
|
||||
<%= text_field_tag "openid_url", nil, :tabindex => '3' %>
|
||||
</td>
|
||||
<td align="right"><label for="openid_url"><%=l(:field_identity_url)%></label></td>
|
||||
<td align="left"><%= text_field_tag "openid_url", nil, :tabindex => '3' %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td align="left">
|
||||
<% if Setting.autologin? %>
|
||||
<label for="autologin">
|
||||
<%= check_box_tag 'autologin', 1, false, :tabindex => 4 %>
|
||||
<%= l(:label_stay_logged_in) %>
|
||||
</label>
|
||||
<label for="autologin"><%= check_box_tag 'autologin', 1, false, :tabindex => 4 %> <%= l(:label_stay_logged_in) %></label>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" >
|
||||
|
||||
<span style="float: left">
|
||||
<% if Setting.lost_password? %>
|
||||
<span style="float: left"><% if Setting.lost_password? %>
|
||||
<%= link_to l(:label_password_lost), lost_password_path %>
|
||||
<% end %></span>
|
||||
|
||||
<span style="float: right">
|
||||
<input type="submit" class="small" name="login" value="<%=l(:button_login)%> »" tabindex="5"/></span>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -1,127 +1,490 @@
|
|||
<% @nav_dispaly_home_path_label = 1
|
||||
@nav_dispaly_main_course_label = 1
|
||||
@nav_dispaly_main_project_label = 1
|
||||
@nav_dispaly_main_contest_label = 1 %>
|
||||
<% @nav_dispaly_forum_label = 1%>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- end -->
|
||||
|
||||
<h3><%= l(:label_register) %> <%= link_to l(:label_login_with_open_id_option), signin_url if Setting.openid? %></h3>
|
||||
|
||||
<%= labelled_form_for @user, :url => register_path do |f| %>
|
||||
<%= error_messages_for 'user' %>
|
||||
<div class="box tabular">
|
||||
|
||||
<% if @user.auth_source_id.nil? %>
|
||||
<p><%= f.text_field :login, :size => 25, :required => true %><span id="valid_user_login"></span>
|
||||
<em class="info" style="color: #acaeb1"><%= l(:label_max_number) %></em>
|
||||
</p>
|
||||
<p><%= f.password_field :password, :size => 25, :required => true %><span id="valid_user_password"></span>
|
||||
<em class="info" style="color: #acaeb1"><%= l(:text_caracters_minimum, :count => Setting.password_min_length) %></em>
|
||||
</p>
|
||||
<p><%= f.password_field :password_confirmation, :size => 25, :required => true %><span id="valid_password" style="padding-left: 10px;"></span></p>
|
||||
<% end %>
|
||||
|
||||
<p>
|
||||
<%= f.text_field :mail,:size => 25, :required => true %>
|
||||
<span id="valid_user_mail" ></span>
|
||||
</p>
|
||||
<p>
|
||||
<em class="info" style="color: #acaeb1">
|
||||
<p><%= "#{l(:label_mail_attention)} " %></p>
|
||||
<p><%= "#{l(:label_mail_attention1)} " %></p>
|
||||
</em>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<!-- end -->
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<table>
|
||||
<tr>
|
||||
<td><%= submit_tag l(:button_submit) %></td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
<% end %>
|
||||
<% if Setting.openid? %>
|
||||
<p><%= f.text_field :identity_url %></p>
|
||||
<% end %>
|
||||
<% @user.custom_field_values.select { |v| v.editable? || v.required? }.each do |value| %>
|
||||
<p><%= custom_field_tag_with_label :user, value %></p>
|
||||
<% end %>
|
||||
</div>
|
||||
<% password_min_length = Setting.password_min_length %>
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function () {
|
||||
var $login = $('#user_login')
|
||||
var $mail = $('#user_mail')
|
||||
var $password = $('#user_password')
|
||||
var $password_confirmation = $('#user_password_confirmation')
|
||||
$login.blur(function (event) {
|
||||
if ($(this).is('#user_login')) {
|
||||
$.get(
|
||||
'<%=account_valid_ajax_path%>',
|
||||
{ valid: "login",
|
||||
value: this.value },
|
||||
function (data) {
|
||||
if (data.valid) {
|
||||
$('#valid_user_login').html('<span class="green">' + data.message + "</span>");
|
||||
} else {
|
||||
$('#valid_user_login').html('<span class="red">' + data.message + "</span>");
|
||||
}
|
||||
});
|
||||
}
|
||||
;
|
||||
});
|
||||
|
||||
$mail.blur(function (event) {
|
||||
if ($(this).is('#user_mail')) {
|
||||
$.get('<%=account_valid_ajax_path%>',
|
||||
{ valid: "mail",
|
||||
value: this.value },
|
||||
function (data) {
|
||||
if (data.valid) {
|
||||
$('#valid_user_mail').html('<span class="green">' + data.message + "</span>");
|
||||
} else {
|
||||
$('#valid_user_mail').html('<span class="red">' + data.message + "</span>");
|
||||
}
|
||||
});
|
||||
}
|
||||
;
|
||||
});
|
||||
$password.blur(function () {
|
||||
var pas1 = document.getElementById("user_password").value;
|
||||
var password_min_length = <%= password_min_length %>
|
||||
if (pas1.length >= password_min_length) {
|
||||
|
||||
$('#valid_user_password').html('<span class="green">'+ "</span>");
|
||||
}
|
||||
else {
|
||||
$('#valid_user_password').html('<span class="red">' + "<%= l(:setting_password_min_length_limit, :count => password_min_length) %>" + "</span>");
|
||||
}
|
||||
|
||||
|
||||
|
||||
});
|
||||
$password_confirmation.blur(function () {
|
||||
var password_min_length = <%= password_min_length %>
|
||||
var pas1 = document.getElementById("user_password").value;
|
||||
var pas2 = document.getElementById("user_password_confirmation").value;
|
||||
if (pas1.length >= password_min_length && pas1 == pas2 ) {
|
||||
$('#valid_password').html('<span class="green">' + "<%= l(:setting_password_success) %>"+ "</span>");
|
||||
}
|
||||
else {
|
||||
$('#valid_password').html('<span class="red">' + "<%= l(:setting_password_error) %>" + "</span>");
|
||||
}
|
||||
|
||||
|
||||
|
||||
});
|
||||
});
|
||||
<% @nav_dispaly_home_path_label = 1
|
||||
@nav_dispaly_main_course_label = 1
|
||||
@nav_dispaly_main_project_label = 1
|
||||
@nav_dispaly_main_contest_label = 1 %>
|
||||
<% @nav_dispaly_forum_label = 1%>
|
||||
<!-- added by bai 增加地区-->
|
||||
<script type="text/javascript" language="javascript">
|
||||
function showcity(province, cityField) {
|
||||
switch (province) {
|
||||
case "北京" :
|
||||
var cityOptions = new Array(
|
||||
"东城", "西城", "朝阳", "丰台", "石景山", "海淀", "门头沟",
|
||||
"房山", "通州", "顺义", "昌平", "大兴", "平谷", "怀柔", "密云", "延庆");
|
||||
break;
|
||||
case "上海" :
|
||||
var cityOptions = new Array(
|
||||
"崇明", "黄浦", "卢湾", "徐汇", "长宁", "静安", "普陀", "闸北", "虹口", "杨浦", "闵行",
|
||||
"宝山", "嘉定", "浦东", "金山", "松江", "青浦", "南汇", "奉贤");
|
||||
break;
|
||||
case "广东" :
|
||||
var cityOptions = new Array(
|
||||
"广州", "深圳", "珠海", "东莞", "中山", "佛山", "惠州", "河源", "潮州", "江门", "揭阳", "茂名",
|
||||
"梅州", "清远", "汕头", "汕尾", "韶关", "顺德", "阳江", "云浮", "湛江", "肇庆");
|
||||
break;
|
||||
case "江苏" :
|
||||
var cityOptions = new Array(
|
||||
"南京", "常熟", "常州", "海门", "淮安", "江都", "江阴", "昆山", "连云港", "南通",
|
||||
"启东", "沭阳", "宿迁", "苏州", "太仓", "泰州", "同里", "无锡", "徐州", "盐城",
|
||||
"扬州", "宜兴", "仪征", "张家港", "镇江", "周庄");
|
||||
break;
|
||||
case "重庆" :
|
||||
var cityOptions = new Array(
|
||||
"万州", "涪陵", "渝中", "大渡口", "江北", "沙坪坝", "九龙坡", "南岸", "北碚", "万盛",
|
||||
"双挢", "渝北", "巴南", "黔江", "长寿", "綦江", "潼南", "铜梁", "大足", "荣昌", "壁山",
|
||||
"梁平", "城口", "丰都", "垫江", "武隆", "忠县", "开县", "云阳", "奉节", "巫山", "巫溪",
|
||||
"石柱", "秀山", "酉阳", "彭水", "江津", "合川", "永川", "南川");
|
||||
break;
|
||||
case "安徽" :
|
||||
var cityOptions = new Array(
|
||||
"合肥", "安庆", "蚌埠", "亳州", "巢湖", "滁州", "阜阳", "贵池", "淮北", "淮化", "淮南",
|
||||
"黄山", "九华山", "六安", "马鞍山", "宿州", "铜陵", "屯溪", "芜湖", "宣城");
|
||||
break;
|
||||
case "福建" :
|
||||
var cityOptions = new Array(
|
||||
"福州", "厦门", "泉州", "漳州", "龙岩", "南平", "宁德", "莆田", "三明");
|
||||
break;
|
||||
case "甘肃" :
|
||||
var cityOptions = new Array(
|
||||
"兰州", "白银", "定西", "敦煌", "甘南", "金昌", "酒泉", "临夏", "平凉", "天水",
|
||||
"武都", "武威", "西峰", "张掖");
|
||||
break;
|
||||
case "广西" :
|
||||
var cityOptions = new Array(
|
||||
"南宁", "百色", "北海", "桂林", "防城港", "贵港", "河池", "贺州", "柳州", "钦州", "梧州", "玉林");
|
||||
break;
|
||||
case "贵州" :
|
||||
var cityOptions = new Array(
|
||||
"贵阳", "安顺", "毕节", "都匀", "凯里", "六盘水", "铜仁", "兴义", "玉屏", "遵义");
|
||||
break;
|
||||
case "海南" :
|
||||
var cityOptions = new Array(
|
||||
"海口", "儋县", "陵水", "琼海", "三亚", "通什", "万宁");
|
||||
break;
|
||||
case "河北" :
|
||||
var cityOptions = new Array(
|
||||
"石家庄", "保定", "北戴河", "沧州", "承德", "丰润", "邯郸", "衡水", "廊坊", "南戴河", "秦皇岛",
|
||||
"唐山", "新城", "邢台", "张家口");
|
||||
break;
|
||||
case "黑龙江" :
|
||||
var cityOptions = new Array(
|
||||
"哈尔滨", "北安", "大庆", "大兴安岭", "鹤岗", "黑河", "佳木斯", "鸡西", "牡丹江", "齐齐哈尔",
|
||||
"七台河", "双鸭山", "绥化", "伊春");
|
||||
break;
|
||||
case "河南" :
|
||||
var cityOptions = new Array(
|
||||
"郑州", "安阳", "鹤壁", "潢川", "焦作", "济源", "开封", "漯河", "洛阳", "南阳", "平顶山",
|
||||
"濮阳", "三门峡", "商丘", "新乡", "信阳", "许昌", "周口", "驻马店");
|
||||
break;
|
||||
case "香港" :
|
||||
var cityOptions = new Array(
|
||||
"香港", "九龙", "新界");
|
||||
break;
|
||||
case "湖北" :
|
||||
var cityOptions = new Array(
|
||||
"武汉", "恩施", "鄂州", "黄冈", "黄石", "荆门", "荆州", "潜江", "十堰", "随州", "武穴",
|
||||
"仙桃", "咸宁", "襄阳", "襄樊", "孝感", "宜昌");
|
||||
break;
|
||||
case "湖南" :
|
||||
var cityOptions = new Array(
|
||||
"长沙", "常德", "郴州", "衡阳", "怀化", "吉首", "娄底", "邵阳", "湘潭", "益阳", "岳阳",
|
||||
"永州", "张家界", "株洲");
|
||||
break;
|
||||
case "江西" :
|
||||
var cityOptions = new Array(
|
||||
"南昌", "抚州", "赣州", "吉安", "景德镇", "井冈山", "九江", "庐山", "萍乡",
|
||||
"上饶", "新余", "宜春", "鹰潭");
|
||||
break;
|
||||
case "吉林" :
|
||||
var cityOptions = new Array(
|
||||
"长春", "吉林", "白城", "白山", "珲春", "辽源", "梅河", "四平", "松原", "通化", "延吉");
|
||||
break;
|
||||
case "辽宁" :
|
||||
var cityOptions = new Array(
|
||||
"沈阳", "鞍山", "本溪", "朝阳", "大连", "丹东", "抚顺", "阜新", "葫芦岛", "锦州",
|
||||
"辽阳", "盘锦", "铁岭", "营口");
|
||||
break;
|
||||
case "澳门" :
|
||||
var cityOptions = new Array("澳门");
|
||||
break;
|
||||
case "内蒙古" :
|
||||
var cityOptions = new Array(
|
||||
"呼和浩特", "阿拉善盟", "包头", "赤峰", "东胜", "海拉尔", "集宁", "临河", "通辽", "乌海",
|
||||
"乌兰浩特", "锡林浩特");
|
||||
break;
|
||||
case "宁夏" :
|
||||
var cityOptions = new Array(
|
||||
"银川", "固源", "石嘴山", "吴忠");
|
||||
break;
|
||||
case "青海" :
|
||||
var cityOptions = new Array(
|
||||
"西宁", "德令哈", "格尔木", "共和", "海东", "海晏", "玛沁", "同仁", "玉树");
|
||||
break;
|
||||
case "山东" :
|
||||
var cityOptions = new Array(
|
||||
"济南", "滨州", "兖州", "德州", "东营", "菏泽", "济宁", "莱芜", "聊城", "临沂",
|
||||
"蓬莱", "青岛", "曲阜", "日照", "泰安", "潍坊", "威海", "烟台", "枣庄", "淄博");
|
||||
break;
|
||||
case "山西" :
|
||||
var cityOptions = new Array(
|
||||
"太原", "长治", "大同", "候马", "晋城", "离石", "临汾", "宁武", "朔州", "忻州",
|
||||
"阳泉", "榆次", "运城");
|
||||
break;
|
||||
case "陕西" :
|
||||
var cityOptions = new Array(
|
||||
"西安", "安康", "宝鸡", "汉中", "渭南", "商州", "绥德", "铜川", "咸阳", "延安", "榆林");
|
||||
break;
|
||||
case "四川" :
|
||||
var cityOptions = new Array(
|
||||
"成都", "巴中", "达川", "德阳", "都江堰", "峨眉山", "涪陵", "广安", "广元", "九寨沟",
|
||||
"康定", "乐山", "泸州", "马尔康", "绵阳", "眉山", "南充", "内江", "攀枝花", "遂宁",
|
||||
"汶川", "西昌", "雅安", "宜宾", "自贡", "资阳");
|
||||
break;
|
||||
case "台湾" :
|
||||
var cityOptions = new Array(
|
||||
"台北", "基隆", "台南", "台中", "高雄", "屏东", "南投", "云林", "新竹", "彰化", "苗栗",
|
||||
"嘉义", "花莲", "桃园", "宜兰", "台东", "金门", "马祖", "澎湖");
|
||||
break;
|
||||
case "天津" :
|
||||
var cityOptions = new Array(
|
||||
"天津", "和平", "东丽", "河东", "西青", "河西", "津南", "南开", "北辰", "河北", "武清", "红挢",
|
||||
"塘沽", "汉沽", "大港", "宁河", "静海", "宝坻", "蓟县");
|
||||
break;
|
||||
case "新疆" :
|
||||
var cityOptions = new Array(
|
||||
"乌鲁木齐", "阿克苏", "阿勒泰", "阿图什", "博乐", "昌吉", "东山", "哈密", "和田", "喀什",
|
||||
"克拉玛依", "库车", "库尔勒", "奎屯", "石河子", "塔城", "吐鲁番", "伊宁");
|
||||
break;
|
||||
case "西藏" :
|
||||
var cityOptions = new Array(
|
||||
"拉萨", "阿里", "昌都", "林芝", "那曲", "日喀则", "山南");
|
||||
break;
|
||||
case "云南" :
|
||||
var cityOptions = new Array(
|
||||
"昆明", "大理", "保山", "楚雄", "大理", "东川", "个旧", "景洪", "开远", "临沧", "丽江",
|
||||
"六库", "潞西", "曲靖", "思茅", "文山", "西双版纳", "玉溪", "中甸", "昭通");
|
||||
break;
|
||||
case "浙江" :
|
||||
var cityOptions = new Array(
|
||||
"杭州", "安吉", "慈溪", "定海", "奉化", "海盐", "黄岩", "湖州", "嘉兴", "金华", "临安",
|
||||
"临海", "丽水", "宁波", "瓯海", "平湖", "千岛湖", "衢州", "江山", "瑞安", "绍兴", "嵊州",
|
||||
"台州", "温岭", "温州", "余姚", "舟山");
|
||||
break;
|
||||
case "海外" :
|
||||
var cityOptions = new Array(
|
||||
"美国", "日本", "英国", "法国", "德国", "其他");
|
||||
break;
|
||||
default:
|
||||
var cityOptions = new Array("");
|
||||
break;
|
||||
}
|
||||
|
||||
cityField.options.length = 0;
|
||||
for (var i = 0; i < cityOptions.length; i++) {
|
||||
cityField.options[i] = new Option(cityOptions[i], cityOptions[i]);
|
||||
/*
|
||||
if (cityField.options[i].value==city)
|
||||
{
|
||||
//alert("here put City ok!");
|
||||
document.oblogform["city"].selectedIndex = i;
|
||||
}*/
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" language="javascript">
|
||||
|
||||
window.onload = function(){
|
||||
var identity = "<%= @cache_identityy %>";
|
||||
var no = "<%= @cache_no %>";
|
||||
var technical_title = "<%= @cache_technical_title %>";
|
||||
var province = "<%= @cache_province %>";
|
||||
var city = "<%= @cache_city %>";
|
||||
var enterprise_name = "<%= @cache_enterprise_name %>";
|
||||
//还原身份
|
||||
if(identity!=null&&identity!=""){
|
||||
$('#userIdentity').children("option[value='"+identity+"']").attr("selected","selected");
|
||||
showtechnical_title(identity, document.getElementById('userTechnical_title'));
|
||||
if(identity=="0"){
|
||||
//还原教师职称
|
||||
$('#userTechnical_title').children("option[value='"+technical_title+"']").attr("selected","selected");
|
||||
}else if(identity=="1"){
|
||||
//还原学号
|
||||
$("input[id='no']").attr("value",no);
|
||||
}
|
||||
}
|
||||
//还原地区
|
||||
if(province!=null&&province!=""){
|
||||
$("#userProvince").children("option[value='"+province+"']").attr("selected","selected");
|
||||
showcity(province, document.getElementById('userCity'));
|
||||
$("select[id='userCity']").children("option[value='"+city+"']").attr("selected","selected");
|
||||
}
|
||||
//还原企业名
|
||||
if(enterprise_name!=null&&enterprise_name!=""){
|
||||
$("input[id='enterprise_name']").attr("value",enterprise_name);
|
||||
}
|
||||
}
|
||||
|
||||
function showtechnical_title(identity, technical_titleField) {
|
||||
var technical_titleOptions = null;
|
||||
switch (identity) {
|
||||
|
||||
case '0' :
|
||||
$('#technical_title').show()
|
||||
$('#no').hide()
|
||||
$('#name').show()
|
||||
$('#enterprise').hide()
|
||||
$('#gender').show()
|
||||
technical_titleOptions = new Array(
|
||||
"<%= l(:label_technicl_title_professor) %>", "<%= l(:label_technicl_title_associate_professor) %>", "<%= l(:label_technicl_title_lecturer) %>", "<%= l(:label_technicl_title_teaching_assistant) %>");
|
||||
break;
|
||||
|
||||
case '1' :
|
||||
$('#technical_title').hide()
|
||||
$('#no').show()
|
||||
$('#name').show()
|
||||
$('#enterprise').hide()
|
||||
$('#gender').show()
|
||||
var titleOptions = new Array("");
|
||||
break;
|
||||
|
||||
case '2' :
|
||||
$('#technical_title').hide()
|
||||
$('#no').hide()
|
||||
$('#name').hide()
|
||||
$('#enterprise').show()
|
||||
$('#gender').hide()
|
||||
var titleOptions = new Array("");
|
||||
break;
|
||||
default:
|
||||
$('#technical_title').hide()
|
||||
$('#no').hide()
|
||||
$('#name').show()
|
||||
$('#enterprise').hide()
|
||||
$('#gender').show()
|
||||
var titleOptions = new Array("");
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
technical_titleField.options.length = 0;
|
||||
if(technical_titleOptions == null){
|
||||
return;
|
||||
}
|
||||
for (var i = 0; i < technical_titleOptions.length; i++) {
|
||||
technical_titleField.options[i] = new Option(technical_titleOptions[i], technical_titleOptions[i]);
|
||||
/*
|
||||
if (cityField.options[i].value==city)
|
||||
{
|
||||
//alert("here put City ok!");
|
||||
document.oblogform["city"].selectedIndex = i;
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- end -->
|
||||
|
||||
<h3><%= l(:label_register) %> <%= link_to l(:label_login_with_open_id_option), signin_url if Setting.openid? %></h3>
|
||||
|
||||
<%= labelled_form_for @user, :url => register_path do |f| %>
|
||||
<%= error_messages_for 'user' %>
|
||||
|
||||
<div class="box tabular">
|
||||
<p>
|
||||
<table>
|
||||
<tr>
|
||||
<td class="info" align="right" style="width: 90px">
|
||||
<strong><%= l(:label_identity) %><span class="required"> *</span></strong></td>
|
||||
<td class="info" style="width: 10px">
|
||||
<select onchange="showtechnical_title(this.value, document.getElementById('userTechnical_title'));" name="identity" id="userIdentity" class="location">
|
||||
<option value="">--请选择身份--</option>
|
||||
<option value="0"><%= l(:label_teacher) %></option>
|
||||
<option value="1"><%= l(:label_student) %></option>
|
||||
<option value="2"><%= l(:label_enterprise) %></option>
|
||||
<option value="3"><%= l(:label_account_developer) %></option>
|
||||
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<span id='technical_title' style='display:none'>
|
||||
<select name="technical_title" id="userTechnical_title"></select></span>
|
||||
<span id='no' style='display:none'>
|
||||
|
||||
<% unless User.current.user_extensions.nil? %>
|
||||
<%= text_field_tag :no, User.current.user_extensions.student_id, :placeholder => "请输入学号" %></span>
|
||||
<% else %>
|
||||
<%= text_field_tag :no, nil, :placeholder => "请输入学号" %></span>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
|
||||
<% if @user.auth_source_id.nil? %>
|
||||
<p><%= f.text_field :login, :size => 25, :required => true %><span id="valid_user_login"></span>
|
||||
<em class="info"><%= l(:label_max_number) %></em></p>
|
||||
|
||||
<p><%= f.password_field :password, :size => 25, :required => true %>
|
||||
<em class="info"><%= l(:text_caracters_minimum, :count => Setting.password_min_length) %></em></p>
|
||||
|
||||
<p><%= f.password_field :password_confirmation, :size => 25, :required => true %></p>
|
||||
<% end %>
|
||||
<span id='name' style='display:none'>
|
||||
<p><%= f.text_field :firstname, :required => true %></p>
|
||||
<p><%= f.text_field :lastname, :required => true %></p>
|
||||
</span>
|
||||
<span id='enterprise' style='display:none'>
|
||||
<p><table>
|
||||
<tr>
|
||||
<td class="info" align="right" style="width: 90px"><strong>企业名<span class="required"> *</span></strong></td>
|
||||
<td class="info" style="width: 10px">
|
||||
<%= text_field_tag :enterprise_name %></td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
</span>
|
||||
|
||||
<p><%= f.text_field :mail, :required => true %><span id="valid_user_mail"></span></p>
|
||||
|
||||
<p>
|
||||
<em class="info"><%= "#{l(:label_mail_attention)} " %></em></p>
|
||||
|
||||
<p><%= f.select :language, lang_options_for_select, :required => true %></p>
|
||||
|
||||
<!-- added by bai 增加了身份、性别和地区-->
|
||||
|
||||
<span id='gender' style='display:none'>
|
||||
<p>
|
||||
<table>
|
||||
<tr>
|
||||
<td class="info" align="right" style="width: 90px">
|
||||
<strong><%= l(:label_gender) %><span class="required"> </span></strong></td>
|
||||
<td class="info" style="width: 10px">
|
||||
<%= select_tag 'gender', "<option value = '0'>#{l(:label_gender_male)}</option>
|
||||
<option value = '1'>#{l(:label_gender_female)}</option>".html_safe %>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
</span>
|
||||
|
||||
|
||||
<p>
|
||||
<table>
|
||||
<tr>
|
||||
<td class="info" align="right" style="width: 90px">
|
||||
<strong><%= l(:label_location) %><span class="required"> *</span></strong>
|
||||
</td>
|
||||
<td class="info" style="width: 80px">
|
||||
<select onchange="showcity(this.value, document.getElementById('userCity'));" name="province" id="userProvince">
|
||||
<option value="">--请选择省份--</option>
|
||||
<option value="北京">北京</option>
|
||||
<option value="上海">上海</option>
|
||||
<option value="广东">广东</option>
|
||||
<option value="江苏">江苏</option>
|
||||
<option value="浙江">浙江</option>
|
||||
<option value="重庆">重庆</option>
|
||||
<option value="安徽">安徽</option>
|
||||
<option value="福建">福建</option>
|
||||
<option value="甘肃">甘肃</option>
|
||||
<option value="广西">广西</option>
|
||||
<option value="贵州">贵州</option>
|
||||
<option value="海南">海南</option>
|
||||
<option value="河北">河北</option>
|
||||
<option value="黑龙江">黑龙江</option>
|
||||
<option value="河南">河南</option>
|
||||
<option value="湖北">湖北</option>
|
||||
<option value="湖南">湖南</option>
|
||||
<option value="江西">江西</option>
|
||||
<option value="吉林">吉林</option>
|
||||
<option value="辽宁">辽宁</option>
|
||||
<option value="内蒙古">内蒙古</option>
|
||||
<option value="宁夏">宁夏</option>
|
||||
<option value="青海">青海</option>
|
||||
<option value="山东">山东</option>
|
||||
<option value="山西">山西</option>
|
||||
<option value="陕西">陕西</option>
|
||||
<option value="四川">四川</option>
|
||||
<option value="天津">天津</option>
|
||||
<option value="新疆">新疆</option>
|
||||
<option value="西藏">西藏</option>
|
||||
<option value="云南">云南</option>
|
||||
<option value="香港">香港特别行政区</option>
|
||||
<option value="澳门">澳门特别行政区</option>
|
||||
<option value="台湾">台湾</option>
|
||||
<option value="海外">海外</option>
|
||||
</select>
|
||||
</td>
|
||||
<td class="info" style="width: 100px">
|
||||
<select name="city" id="userCity"></select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
<!-- end -->
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<table>
|
||||
<tr>
|
||||
<td><%= submit_tag l(:button_submit) %></td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
<% if Setting.openid? %>
|
||||
<p><%= f.text_field :identity_url %></p>
|
||||
<% end %>
|
||||
|
||||
|
||||
<% @user.custom_field_values.select { |v| v.editable? || v.required? }.each do |value| %>
|
||||
<p><%= custom_field_tag_with_label :user, value %></p>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function () {
|
||||
var $login = $('#user_login')
|
||||
var $mail = $('#user_mail')
|
||||
|
||||
$login.blur(function (event) {
|
||||
if ($(this).is('#user_login')) {
|
||||
$.get(
|
||||
'<%=account_valid_ajax_path%>',
|
||||
{ valid: "login",
|
||||
value: this.value },
|
||||
function (data) {
|
||||
if (data.valid) {
|
||||
$('#valid_user_login').html('<span class="green">' + data.message + "</span>");
|
||||
} else {
|
||||
$('#valid_user_login').html('<span class="red">' + data.message + "</span>");
|
||||
}
|
||||
});
|
||||
}
|
||||
;
|
||||
});
|
||||
|
||||
$mail.blur(function (event) {
|
||||
if ($(this).is('#user_mail')) {
|
||||
$.get('<%=account_valid_ajax_path%>',
|
||||
{ valid: "mail",
|
||||
value: this.value },
|
||||
function (data) {
|
||||
if (data.valid) {
|
||||
$('#valid_user_mail').html('<span class="green">' + data.message + "</span>");
|
||||
} else {
|
||||
$('#valid_user_mail').html('<span class="red">' + data.message + "</span>");
|
||||
}
|
||||
});
|
||||
}
|
||||
;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
|
@ -27,8 +27,7 @@
|
|||
background: #15bccf;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding-top: 3px;
|
||||
padding-left: 3px;
|
||||
padding: 5px !important;
|
||||
}
|
||||
.span_wping a:hover{ background-color:#03a1b3;}
|
||||
</style>
|
||||
|
@ -76,7 +75,7 @@
|
|||
<% end %>
|
||||
<% end %>
|
||||
<% if (User.current.admin?||User.current.id==bid.author_id) %>
|
||||
<% if bid.open_anonymous_evaluation == 1%>
|
||||
<% if bid.open_anonymous_evaluation == 1 && bid.homeworks.count >= 2%>
|
||||
<span id="<%=bid.id %>_anonymous_comment" class="span_wping">
|
||||
<% case bid.comment_status %>
|
||||
<% when 0 %>
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<p style="display: none;">
|
||||
<%= f.select :is_evaluation, is_evaluation_option %>
|
||||
</p>
|
||||
<p>
|
||||
<p style="display: none">
|
||||
<%= f.select :proportion, proportion_option %>
|
||||
</p>
|
||||
<p>
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
<%= link_to "留言", get_homework_jours_homework_attach_index_path(:bid_id => @bid.id), {:remote => true}%>
|
||||
(<span id="jours_count" class="c_red f_12"><%= @jours_count %></span>)
|
||||
</li>
|
||||
<li >
|
||||
<li style="padding-top: 5px;">
|
||||
<%= link_to "作品打包下载", zipdown_assort_path(obj_class: @bid.class, obj_id: @bid), class: "tb_all" unless @bid.homeworks.empty? %>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
<p style="display: none">
|
||||
<%= f.select :is_evaluation, is_evaluation_option %>
|
||||
</p>
|
||||
<p>
|
||||
<p style="display: none">
|
||||
<%= f.select :proportion, proportion_option %>
|
||||
</p>
|
||||
<p>
|
||||
|
|
|
@ -18,6 +18,20 @@
|
|||
hideModal($("#popbox_upload"));
|
||||
}
|
||||
|
||||
function presscss(id)
|
||||
{
|
||||
if(id == "incourse")
|
||||
{
|
||||
$('#incourse').attr("class", "re_schbtn b_dblue");
|
||||
$('#insite').attr("class", "re_schbtn b_lblue");
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#incourse').attr("class", "re_schbtn b_lblue");
|
||||
$('#insite').attr("class", "re_schbtn b_dblue");
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<div class="container">
|
||||
|
@ -25,8 +39,8 @@
|
|||
<div class="re_top">
|
||||
<%= form_tag( search_course_files_path(@course), method: 'get',:class => "re_search f_l",:remote=>true) do %>
|
||||
<%= text_field_tag 'name', params[:name], name: "name", :class => 're_schbox',:style=>"padding: 0px"%>
|
||||
<%= submit_tag "课内搜索", :class => "re_schbtn b_dblue",:name => "incourse"%>
|
||||
<%= submit_tag "全站搜索", :class => "re_schbtn b_lblue",:name => "insite" %>
|
||||
<%= submit_tag "课内搜索", :class => "re_schbtn b_lblue",:name => "incourse",:id => "incourse", :onclick => "presscss('incourse')"%>
|
||||
<%= submit_tag "全站搜索", :class => "re_schbtn b_lblue",:name => "insite",:id => "insite",:onclick => "presscss('insite')" %>
|
||||
<% end %>
|
||||
<% if is_course_teacher(User.current,@course) %>
|
||||
<a href="javascript:void(0)" class="re_fabu f_r b_lblue" onclick="show_upload()">上传资源</a>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<% delete_allowed = User.current.allowed_to?(:manage_files, course) %>
|
||||
<div class="re_con_top">
|
||||
<p class="f_l c_blue f_b f_14">共有 <%= User.current.member_of_course?(course) ? all_attachments.count : 0 %> 个资源</p>
|
||||
<!-- <p class="f_r">
|
||||
<#% if @order == "asc" %>
|
||||
<p class="f_l c_blue f_b f_14">共有 <%= all_attachments.count%> 个资源</p>
|
||||
<p class="f_r" style="color: #808080">
|
||||
<!--<#% if @order == "asc" %>
|
||||
按 <#%= link_to "时间",course_files_path(course,:sort=>"created_on:desc"),:class => "f_b c_grey" %><#%= render partial: 'arrow_show',locals: { sort: sort,order:order,current:"created_on"} %> /
|
||||
<#%= link_to "下载次数",course_files_path(course,:sort=>"downloads:desc"),:class => "f_b c_grey" %><#%= render partial: 'arrow_show',locals: { sort: sort,order:order,current:"downloads"} %> /
|
||||
<a href="#" class="f_b c_grey">引用次数</a> 排序
|
||||
|
@ -10,37 +10,38 @@
|
|||
按 <#%= link_to "时间",course_files_path(course,:sort=>"created_on:asc"),:class => "f_b c_grey" %><#%= render partial: 'arrow_show',locals: { sort: sort,order:order,current:"created_on"} %> /
|
||||
<#%= link_to "下载次数",course_files_path(course,:sort=>"downloads:asc"),:class => "f_b c_grey" %><#%= render partial: 'arrow_show',locals: { sort: sort,order:order,current:"downloads"} %> /
|
||||
<a href="#" class="f_b c_grey">引用次数</a> 排序
|
||||
<#% end %>
|
||||
</p>-->
|
||||
<#% end %>-->
|
||||
资源列表的多样化排序将在下周上线...
|
||||
</p>
|
||||
</div>
|
||||
<div class="cl"></div>
|
||||
<% curse_attachments.each do |file| %>
|
||||
<%if file.is_public == 0 && !User.current.member_of_course?(@course)%>
|
||||
<%next%>
|
||||
<%end%>
|
||||
<div class="re_con_box">
|
||||
<div class=" ">
|
||||
<%= link_to_attachment file, :download => true,:text => truncate(file.filename,length: 35, omission: '...'), :title => file.filename+"\n"+file.description.to_s, :style => "overflow: hidden; white-space: nowrap;text-overflow: ellipsis;",:class => "c_dblue f_14 f_b f_l" %>
|
||||
<% if is_course_teacher(User.current,@course) %>
|
||||
<%= link_to "选入我的课程",quote_resource_show_course_file_path(@course,file),:class => "f_l re_select",:remote => true %>
|
||||
<% if User.current.logged? %>
|
||||
<% if is_course_teacher(User.current,@course) && file.author_id == User.current.id %>
|
||||
<%= link_to "选入我的其他课程",quote_resource_show_course_file_path(@course,file),:class => "f_l re_select",:remote => true %>
|
||||
|
||||
<% if delete_allowed && file.container_id == @course.id && file.container_type == "Course" %>
|
||||
<span id="is_public_<%= file.id %>">
|
||||
<%= link_to (file.is_public? ? "公开":"私有"), update_file_dense_attachments_path(:attachmentid=>file.id,:newtype=>(file.is_public? ? 0:1)),:remote=>true,:class=>"f_l re_open",:method => :post %>
|
||||
</span>
|
||||
<% else %>
|
||||
<%= link_to (file.is_public? ? "公开":"私有"),"javascript:void(0)",:class=>"f_l re_open" %>
|
||||
<!-- <#%= link_to (file.is_public? ? "公开":"私有"),"javascript:void(0)",:class=>"f_l re_open" %> -->
|
||||
<% end %>
|
||||
|
||||
<% else %>
|
||||
<%= link_to "选入我的课程",quote_resource_show_course_file_path(@course,file),:class => "f_l re_select",:remote => true %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<%= link_to (file.is_public? ? "公开":"私有"),"javascript:void(0)",:class=>"f_l re_open" %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="cl"></div>
|
||||
<div class="">
|
||||
<p class="f_l c_grey02">文件大小:<%= number_to_human_size(file.filesize) %></p>
|
||||
<p class="f_l c_grey02 font">文件大小:<%= number_to_human_size(file.filesize) %></p>
|
||||
<%= link_to( l(:button_delete), attachment_path(file),
|
||||
:data => {:confirm => l(:text_are_you_sure)}, :method => :delete,:class => "f_r re_de") if delete_allowed && file.container_id == @course.id && file.container_type == "Course"%>
|
||||
<p class="f_r c_grey02" ><%= time_tag(file.created_on).html_safe %><%= l(:label_bids_published_ago) %> | 下载<%= file.downloads %> | 引用0 </p>
|
||||
<p class="f_r c_grey02" ><%= time_tag(file.created_on).html_safe %><%= l(:label_bids_published_ago) %> | 下载<%= file.downloads %> <!--| 引用<%#=get_qute_number file %>--> </p>
|
||||
</div>
|
||||
<div class="cl"></div>
|
||||
<div class="tag_h">
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<div id="popbox_upload" style="margin-top: -30px;margin-left: -20px;margin-right: -10px;">
|
||||
<div class="upload_con">
|
||||
<div id="error_show"></div>
|
||||
<h2>将此课件引入我的课程资源库</h2>
|
||||
<div class="upload_box">
|
||||
<div id="error_show" style="color: red;"></div>
|
||||
<%= form_tag course_attach_relations_path,
|
||||
method: :post,
|
||||
remote: true,
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
<% if is_my_homework %>
|
||||
<!-- 我的作品,显示为编辑和删除 -->
|
||||
<% if @bid.comment_status == 0 %>
|
||||
<li class="wmine">
|
||||
<li class="wmine" style="padding-top: 4px;">
|
||||
<%= link_to l(:button_edit), edit_homework_attach_path(homework) %>
|
||||
<% if homework.user == User.current || User.current.admin? %>
|
||||
<!-- 作业创建者显示删除作业 -->
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
<script type="text/javascript" language="javascript" xmlns="http://www.w3.org/1999/html">
|
||||
function regexName()
|
||||
{
|
||||
var name = $("#homework_attach_name").val();
|
||||
var name = $.trim($("#homework_attach_name").val());
|
||||
|
||||
if(name=="")
|
||||
{
|
||||
$("#homework_attach_name_span").text("名称不能为空");
|
||||
$("#homework_attach_name_span").text("作品名称不能为空");
|
||||
$("#homework_attach_name_span").css('color','#ff0000');
|
||||
return false;
|
||||
}
|
||||
|
@ -17,8 +17,25 @@
|
|||
return true;
|
||||
}
|
||||
}
|
||||
function regexDescription()
|
||||
{
|
||||
var name = $.trim($("#homework_attach_description").val());
|
||||
|
||||
function submit_homework_form(){if(regexName()){$('#new_homework_attach').submit();}}
|
||||
if(name=="")
|
||||
{
|
||||
$("#homework_attach_description_span").text("作品描述不能为空");
|
||||
$("#homework_attach_description_span").css('color','#ff0000');
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#homework_attach_description_span").text("填写正确");
|
||||
$("#homework_attach_description_span").css('color','#008000');
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
function submit_homework_form(){if(regexName()&®exDescription()){$('#new_homework_attach').submit();}}
|
||||
</script>
|
||||
<div class="container">
|
||||
<div class="Newwork">
|
||||
|
@ -55,13 +72,14 @@
|
|||
<span id="homework_attach_name_span"></span>
|
||||
</p>
|
||||
<p>
|
||||
<label style="float:left;padding-left:10px;">
|
||||
<label style="float:left;padding-right: 3px;">
|
||||
<span class="c_red">
|
||||
|
||||
*
|
||||
</span>
|
||||
作业描述 :
|
||||
作品描述 :
|
||||
</label>
|
||||
<%= f.text_area "description", :class => "w620", :maxlength => 3000, :placeholder => "最多3000个汉字"%>
|
||||
<%= f.text_area "description", :class => "w620", :maxlength => 3000, :placeholder => "最多3000个汉字", :onblur => "regexDescription();"%>
|
||||
<span id="homework_attach_description_span" style="padding-left: 100px;"></span>
|
||||
</p>
|
||||
<div class="cl"></div>
|
||||
<p>
|
||||
|
|
|
@ -1,175 +1,2 @@
|
|||
<%= render :partial => 'layouts/base_homework_attach', :locals => {:homework_attach => @homework} %>
|
||||
<style>
|
||||
.softapplication-img .soft-application {
|
||||
float: left;
|
||||
width: 25%;
|
||||
height: 200px;
|
||||
}
|
||||
</style>
|
||||
<% is_student = is_cur_course_student @homework.bid.courses.first %>
|
||||
<% is_teacher = is_course_teacher User.current,@homework.bid.courses.first %>
|
||||
<p id="notice"><%= notice %></p>
|
||||
<div style="height: auto; padding-bottom: 10px">
|
||||
<tr>
|
||||
<td colspan="2" valign="top" width="320" >
|
||||
</td>
|
||||
<td>
|
||||
<table width="100%" border="0">
|
||||
<tr style="font-size: 18px">
|
||||
<td colspan="2" valign="top"><strong>作业基础信息<%=@count %></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 570px; padding-left:40px; word-wrap: break-word; word-break: break-all">
|
||||
发布人员:<%= link_to @homework.user, user_path(@homework.user)%>
|
||||
</td>
|
||||
<td style="width: 240px; word-wrap: break-word; word-break: break-all">
|
||||
所属任务:<%= link_to(@homework.bid.name, course_for_bid_path(@homework.bid))%>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-left: 40px">
|
||||
<span>作业下载:</span>
|
||||
<% if @is_evaluation || is_teacher%>
|
||||
<% options = {:author => true } %>
|
||||
<%= render :partial => 'app_link', :locals => {:attachments => @homework.attachments, :options => options} %>
|
||||
<% else %>
|
||||
<%= l(:label_cant_download) %>
|
||||
<% end %>
|
||||
</td>
|
||||
<td style="width: 240px; word-wrap: break-word; word-break: break-all">
|
||||
参与人员:
|
||||
<% @homework.users.each do |homework_user| %>
|
||||
<%= link_to homework_user, user_path(homework_user)%>
|
||||
<% if @homework.users.count > 1 && homework_user != @homework.users.last %>
|
||||
<br/>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style=" padding-left: 40px">平均评分:
|
||||
<%= render :partial => 'show_score', :locals => {:stars => @totle_score} %>
|
||||
</td>
|
||||
<td style="width: 240px; word-wrap: break-word; word-break: break-all">发布时间:<%=format_time @homework.created_at %></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</div>
|
||||
<div class="underline-contests_one"></div>
|
||||
|
||||
<div style="height: auto; padding-bottom: 10px">
|
||||
<tr>
|
||||
<td colspan="2" valign="top" width="320" >
|
||||
</td>
|
||||
<td>
|
||||
<table width="100%" border="0">
|
||||
<tr>
|
||||
<td colspan="2" valign="top"><div style="font-size: 15px;"><strong>作业描述:</strong></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 570px; padding-left:40px; word-wrap: break-word; word-break: break-all">
|
||||
<div style="padding-top: 5px">
|
||||
<% if @homework.description != nil && @homework.description != "" %>
|
||||
<%= @homework.description %>
|
||||
<% else %>
|
||||
<div style="font-size: 15px;color: #15BCCC;vertical-align:middle;padding-top: 10px;padding-left: 10px ">
|
||||
<strong>该作业无任何描述!</strong>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</div>
|
||||
<div class="underline-contests_one"></div>
|
||||
|
||||
<div style="height: auto; padding-bottom: 10px">
|
||||
<div style="font-size: 15px;">
|
||||
<strong>作业得分:</strong>
|
||||
</div>
|
||||
<div style="overflow: hidden">
|
||||
<div style="margin-left: 15%; float: left">
|
||||
<div style="padding-left: 45px; padding-bottom: 5px">得分比例</div>
|
||||
<div>
|
||||
<% 100.step(20,-20) do |star| %>
|
||||
<div data-kls="HomeworkAttach" data-id="2" data-dimension="quality" data-average="3.25" class="rateable div_inline jDisabled"
|
||||
style="height: 20px; width: 115px; overflow: hidden; z-index: 1; position: relative;">
|
||||
<div class="jRatingColor" style="width: <%=star%>%;"></div>
|
||||
<div class="jRatingAverage" style="width: 0px; top: -20px;"></div>
|
||||
<div class="jStar" style="width: 115px; height: 20px; top: -40px;
|
||||
background: url('/images/seems_rateable/stars.png') repeat-x scroll 0% 0% transparent;">
|
||||
</div>
|
||||
</div>
|
||||
<%= @stars_status_map["star#{(star/20).to_s}".to_sym] %>
|
||||
<br/>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: left; padding-left: 100px; padding-top:35px ">
|
||||
<div style="text-align: center">最终得分</div>
|
||||
<div style="padding-top: 1px; font-size: 15px; color: blue;text-align: center">
|
||||
<%= @totle_score %>分
|
||||
</div>
|
||||
<div style="padding-top: 3px">
|
||||
<%= render :partial => 'show_score', :locals => {:stars => @totle_score} %>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: left; padding-left: 100px; padding-top:35px ">
|
||||
<div>打分总人数</div>
|
||||
<div style="padding-left: 28px; padding-top: 1px; font-size: 25px; color: blue">
|
||||
<strong>
|
||||
<%= @homework.raters(:quality).count%>
|
||||
</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="underline-contests_one"></div>
|
||||
|
||||
<!-- 作业综评 -->
|
||||
<div id="comprehensive_evaluation">
|
||||
<%= render :partial => 'comprehensive_evaluation', :locals => {:comprehensive_evaluation => @comprehensive_evaluation,:homework => @homework, :teaher_score => @teaher_score} %>
|
||||
</div>
|
||||
|
||||
<div class="underline-contests_one"></div>
|
||||
|
||||
<!-- 作业成员(发布人员和参与人员)不能对作业进行评分 -->
|
||||
<% if !users_for_homework(@homework).include?(User.current) %>
|
||||
<div style="height: 50px">
|
||||
<div style="font-size: 15px"><strong>作业评论:</strong></div>
|
||||
<% if is_student %>
|
||||
<% if @is_evaluation %>
|
||||
<% if @has_evaluation %>
|
||||
<div style="text-align: center;">
|
||||
<%= l(:lable_has_evaluation)%>
|
||||
</div>
|
||||
<% else %>
|
||||
<%= render :partial => 'evaluation', :locals => {:homework => @homework} %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<div style="text-align: center;">
|
||||
<%= l(:lable_close_evaluation)%>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if !is_teacher %>
|
||||
<!--提示登录后对应用进行评价-->
|
||||
<div id="leave-message">
|
||||
<%= render :partial => 'addjour', :locals => {:homework_attach => @homework, :sta => 0, :is_comprehensive_evaluation => nil} %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
|
||||
<!-- 留言列表区 -->
|
||||
<div id="message" style="font-size: 14px;">
|
||||
<%= render :partial => 'showjour', :locals => {:jour => @jour,:homework => @homework} %>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
</div>
|
||||
<%= stylesheet_link_tag 'css', :media => 'all' %>
|
||||
<%= render :partial => "show"%>
|
|
@ -24,7 +24,7 @@
|
|||
</head>
|
||||
<!--add by huang-->
|
||||
<body class="<%= h body_css_classes %>">
|
||||
<!-- <#%= render :partial => 'courses/course_ad' %> -->
|
||||
<%= render :partial => 'courses/course_ad' %>
|
||||
<div id="wrapper">
|
||||
<div id="wrapper2">
|
||||
<div id="wrapper3">
|
||||
|
|
|
@ -21,6 +21,18 @@
|
|||
<%= call_hook :view_layouts_base_html_head %>
|
||||
<!-- page specific tags -->
|
||||
<%= yield :header_tags -%>
|
||||
|
||||
<style>
|
||||
.span_wping{}
|
||||
.span_wping a{
|
||||
margin-bottom: 3px;
|
||||
background: #15bccf;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 5px !important;
|
||||
}
|
||||
.span_wping a:hover{ background-color:#03a1b3;}
|
||||
</style>
|
||||
</head>
|
||||
<body class="<%= h body_css_classes %>">
|
||||
<% course = @bid.courses.first %>
|
||||
|
@ -106,8 +118,8 @@
|
|||
<% if (User.current.admin?||User.current.id==@bid.author_id) %>
|
||||
<tr>
|
||||
<td valign="top" style="padding-left: 8px; font-size: 15px" colspan="2">
|
||||
<% if @bid.open_anonymous_evaluation == 1%>
|
||||
<span id="<%=@bid.id %>_anonymous_comment">
|
||||
<% if @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2%>
|
||||
<span id="<%=@bid.id %>_anonymous_comment" class="span_wping">
|
||||
<% case @bid.comment_status %>
|
||||
<% when 0 %>
|
||||
<%= link_to '启动匿评', alert_anonymous_comment_bid_path(@bid), id: "#{@bid.id}_start_anonymous_comment", remote: true, disable_with: '加载中...' %>
|
||||
|
@ -149,31 +161,30 @@
|
|||
<div class="user_underline"></div>
|
||||
|
||||
<!-- info -->
|
||||
<div class="inf_user_image">
|
||||
<table>
|
||||
<tr>
|
||||
<td valign="top" colspan="2" style="font-size: 16px;padding-left: 8px;">
|
||||
<strong>
|
||||
<%= l(:label_attachment) %> :
|
||||
</strong>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" colspan="2">
|
||||
<% if @bid.attachments.any?%>
|
||||
<% unless @bid.attachments.empty? %>
|
||||
<div class="inf_user_image">
|
||||
<table>
|
||||
<tr>
|
||||
<td valign="top" colspan="2" style="font-size: 16px;padding-left: 8px;">
|
||||
<strong>
|
||||
<%= l(:label_attachment) %> :
|
||||
</strong>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" colspan="2">
|
||||
<% options = {:author => true,:deletable => (@bid.author.id == User.current.id || User.current.admin? ? true : false),:wrap => true,:length => 7} %>
|
||||
<%= render :partial => 'attachments/links', :locals => {:attachments => @bid.attachments, :options => options} %>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!--td>作业类型:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!--td>作业类型:
|
||||
<%#= @bid.homework_type==Bid::HomeworkFile ? "提交文件" : "提交项目" %>
|
||||
</td-->
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<% end%>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end -->
|
||||
|
|
|
@ -8,8 +8,12 @@
|
|||
<!-- 在这里添加赞和踩-->
|
||||
<span id="praise_tread" style="float: right"> <%= render :partial => "/praise_tread/praise_tread",:locals => {:obj => @memo,:show_flag => true,:user_id =>User.current.id,:horizontal => true}%> </span>
|
||||
<div class="lz-left">
|
||||
<div><%= link_to image_tag(url_to_avatar(@memo.author), :class => "avatar"), user_path(@memo.author) %></div>
|
||||
<p class="clearfix"><%=link_to @memo.author.name, user_path(@memo.author) %></p>
|
||||
<div>
|
||||
<%= link_to image_tag(url_to_avatar(@memo.author), :class => "avatar"), user_path(@memo.author) %>
|
||||
</div>
|
||||
<p class="clearfix">
|
||||
<%=link_to @memo.author.name, user_path(@memo.author) %>
|
||||
</p>
|
||||
</div>
|
||||
<div class="memo-section">
|
||||
<div class="contextual-borad">
|
||||
|
@ -55,7 +59,8 @@
|
|||
|
||||
<div class="memo-title <%= @memo.sticky ? 'sticky' : '' %> <%= @memo.locked? ? 'locked' : '' %>"
|
||||
style="word-break: break-all;word-wrap: break-word;">
|
||||
<%= label_tag l(:field_subject) %>: <%=h @memo.subject %>
|
||||
<%= label_tag l(:field_subject) %>:
|
||||
<%=h @memo.subject %>
|
||||
</div>
|
||||
<div class="memo-content" id="memo-content_div">
|
||||
<%= textAreailizable(@memo,:content) %>
|
||||
|
@ -67,7 +72,9 @@
|
|||
</p>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="memo-timestamp"> <%= authoring @memo.created_at, @memo.author %></div>
|
||||
<div class="memo-timestamp">
|
||||
<%= authoring @memo.created_at, @memo.author %>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<br />
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -66,6 +66,6 @@
|
|||
</ul>
|
||||
</div>
|
||||
<div id="show_score_detail">
|
||||
<%= render :partial => 'projects/project_score_index', :locals => {:index => 0 } %>
|
||||
<%= render :partial => 'projects/project_score_index', :locals => {:index => 0,:project => @project } %>
|
||||
</div>
|
||||
<% end %>
|
|
@ -1,13 +1,14 @@
|
|||
<%= link_to '+ 添加标签', 'javascript:void(0);',
|
||||
:class => "yellowBtn f_l",
|
||||
:onclick=>"$('#add_tag_#{obj.id}').slideToggle();" if User.current.logged? %> <!-- $('#put-tag-form-#{obj.class}-#{obj.id}').toggle(); readmore(this); -->
|
||||
<span id="add_tag_<%= obj.id %>" style="display:none; vertical-align: middle;" class="ml10 f_l">
|
||||
|
||||
<%= form_for "tag_for_save",:remote=>true,:url => save_tag_path,
|
||||
:update => "tags_show",
|
||||
:complete => '$("#put-tag-form").hide();' do |f| %>
|
||||
<%= f.text_field :name ,:id => "tags_name_#{obj.id}",:size=>"28",:require=>true,:maxlength => Setting.tags_max_length,:minlength=>Setting.tags_min_length,:class => "isTxt w90 f_l" %>
|
||||
<%= f.text_field :object_id,:value=> obj.id,:style=>"display:none"%>
|
||||
<%= f.text_field :object_flag,:value=> object_flag,:style=>"display:none"%>
|
||||
<%= f.submit "",:class => "submit f_l" %>
|
||||
<span id="add_tag_<%= obj.id %>" style="display:none; vertical-align: middle;" class="ml10 f_l">
|
||||
<%= f.text_field :name ,:id => "tags_name_#{obj.id}",:size=>"28",:require=>true,:maxlength => Setting.tags_max_length,:minlength=>Setting.tags_min_length,:class => "isTxt w90 f_l" %>
|
||||
<%= f.text_field :object_id,:value=> obj.id,:style=>"display:none"%>
|
||||
<%= f.text_field :object_flag,:value=> object_flag,:style=>"display:none"%>
|
||||
<%= f.submit "",:class => "submit f_l" %>
|
||||
</span>
|
||||
<% end %>
|
||||
</span>
|
|
@ -14,7 +14,7 @@
|
|||
</span>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<span style="color:#8c8a8a" class="f_l">
|
||||
<%= l(:label_tags_no) %>
|
||||
</span>
|
||||
<!-- <span style="color:#8c8a8a" class="f_l">
|
||||
<#%= l(:label_tags_no) %> -->
|
||||
</span>
|
||||
<% end %>
|
|
@ -1,8 +1,6 @@
|
|||
<% if User.current.logged?%>
|
||||
<% if User.current.user_extensions.identity == 0 %>
|
||||
<%= link_to(l(:label_course_new), {:controller => 'courses', :action => 'new'},
|
||||
:class => 'icon icon-add') if User.current.allowed_to?(:add_course,nil, :global => true) %>
|
||||
<% end %>
|
||||
|
||||
<%= link_to l(:label_course_join_student), join_private_courses_courses_path ,:remote => true, :class => 'icon icon-add' %>
|
||||
|
||||
|
|
|
@ -1851,4 +1851,5 @@ en:
|
|||
label_teacher_comments: Teacher comments
|
||||
label_anonymous_comments: Anonymous comments
|
||||
label_anonymous: Anonymous
|
||||
label_submit_comments: Submit_comments
|
||||
label_submit_comments: Submit_comments
|
||||
label_course_empty_select: You have not selected course!
|
|
@ -2203,4 +2203,5 @@ zh:
|
|||
label_submit_comments: 提交评论
|
||||
field_evaluation_num: 匿评分配数量
|
||||
label_my_score: 我的评分
|
||||
field_open_anonymous_evaluation: 是否开启匿评
|
||||
field_open_anonymous_evaluation: 是否使用匿评
|
||||
label_course_empty_select: 尚未选择课程!
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended to check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(:version => 20141119011439) do
|
||||
ActiveRecord::Schema.define(:version => 20141120091234) do
|
||||
|
||||
create_table "activities", :force => true do |t|
|
||||
t.integer "act_id", :null => false
|
||||
|
@ -52,6 +52,7 @@ ActiveRecord::Schema.define(:version => 20141119011439) do
|
|||
t.string "disk_directory"
|
||||
t.integer "attachtype", :default => 1
|
||||
t.integer "is_public", :default => 1
|
||||
t.integer "copy_from"
|
||||
end
|
||||
|
||||
add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id"
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
/* Redmine - project management software
|
||||
Copyright (C) 2006-2013 Jean-Philippe Lang */
|
||||
|
||||
|
||||
|
||||
function cleanArray (actual){
|
||||
var newArray = new Array();
|
||||
for (var i = 0; i< actual.length; i++){
|
||||
|
@ -389,6 +391,7 @@ function submitPreview(url, form, target) {
|
|||
$.ajax({
|
||||
url: url,
|
||||
type: 'post',
|
||||
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
|
||||
data: $('#'+form).serialize(),
|
||||
success: function(data){
|
||||
$('#'+target).html(data);
|
||||
|
@ -433,6 +436,7 @@ function scmEntryClick(id, url) {
|
|||
el.addClass('loading');
|
||||
$.ajax({
|
||||
url: url,
|
||||
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
|
||||
success: function(data){
|
||||
el.after(data);
|
||||
el.addClass('open').addClass('loaded').removeClass('loading');
|
||||
|
@ -454,6 +458,7 @@ function randomKey(size) {
|
|||
function updateIssueFrom(url) {
|
||||
$.ajax({
|
||||
url: url,
|
||||
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
|
||||
type: 'post',
|
||||
data: $('#issue-form').serialize()
|
||||
});
|
||||
|
@ -462,6 +467,7 @@ function updateIssueFrom(url) {
|
|||
function updateBulkEditFrom(url) {
|
||||
$.ajax({
|
||||
url: url,
|
||||
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
|
||||
type: 'post',
|
||||
data: $('#bulk_edit_form').serialize()
|
||||
});
|
||||
|
@ -500,6 +506,7 @@ function observeSearchfield(fieldId, targetId, url) {
|
|||
$.ajax({
|
||||
url: url,
|
||||
type: 'get',
|
||||
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
|
||||
data: {q: $this.val()},
|
||||
success: function(data){ if(targetId) $('#'+targetId).html(data); },
|
||||
beforeSend: function(){ $this.addClass('ajax-loading'); },
|
||||
|
@ -540,6 +547,7 @@ function initMyPageSortable(list, url) {
|
|||
$.ajax({
|
||||
url: url,
|
||||
type: 'post',
|
||||
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
|
||||
data: {'blocks': $.map($('#list-'+list).children(), function(el){return $(el).attr('id');})}
|
||||
});
|
||||
}
|
||||
|
@ -621,6 +629,14 @@ function transpotUrl (scope) {
|
|||
$(document).ready(setupAjaxIndicator);
|
||||
$(document).ready(hideOnLoad);
|
||||
$(document).ready(addFormObserversForDoubleSubmit);
|
||||
$(document).ready(function(){
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
|
||||
}
|
||||
});
|
||||
}
|
||||
)
|
||||
|
||||
function img_thumbnails() {
|
||||
$('.thumbnails a').colorbox({rel:'nofollow'});
|
||||
|
|
|
@ -2203,7 +2203,7 @@ button.tab-right {
|
|||
padding-bottom: 2px;
|
||||
text-align: center;
|
||||
border: 1px solid #15BCCF;
|
||||
border-bottom: 0px solid #15BCCF;
|
||||
border-bottom: 1px solid #15BCCF;
|
||||
|
||||
color:#606060;
|
||||
font-weight:bold;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* CSS Document */
|
||||
body{ font-size:12px !important; font-family:"微软雅黑","宋体" !important; line-height:1.9; background:#fff; font-style:normal;}
|
||||
body{ font-size:12px !important; font-family:"微软雅黑","宋体" !important; background:#fff; font-style:normal;}
|
||||
div,html,img,ul,li,p,body,h1,h2,h3,h4,p,a,table,tr,td,fieldset,input,span,textarea{ margin:0; padding:0;}
|
||||
div,img,tr,td,textarea{ border:0;}
|
||||
table,tr,td{border:0; cellspacing:0; cellpadding:0;}
|
||||
|
@ -15,7 +15,7 @@ a:hover{ text-decoration:underline;}
|
|||
/* TAB 切换效果 */
|
||||
.tb_{ background-color: #eaeaea; height:40px; }
|
||||
.tb_ ul{height:40px; }
|
||||
.tb_ li{float:left;height:35px;width: 90px;cursor:pointer; font-size:14px; padding-top:5px; text-align:center; }
|
||||
.tb_ li{float:left;height:30px;width: 90px;cursor:pointer; font-size:14px; padding-top:10px; text-align:center; }
|
||||
a.tb_all{ margin-left:235px; font-size:12px; display:block; height:23px; padding-top:4px; width:90px; color:#7a7a7a; border:1px solid #cbcbcb; background:#fff; text-align: center;}
|
||||
a:hover.tb_all{ background:#eaeaea; text-decoration:none;}
|
||||
|
||||
|
@ -38,13 +38,13 @@ a:hover.tb_all{ background:#eaeaea; text-decoration:none;}
|
|||
.pic_head a{ text-align:center; width:42px; overflow:hidden;text-overflow:ellipsis; white-space:nowrap;}
|
||||
.pic_head img{ border:1px solid #fff;}
|
||||
.pic_head img:hover{border:1px solid #15bccf;}
|
||||
.dis ul li.wname a{ width:260px; font-size:14px; color:#595959; padding:20px 0 0 15px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
|
||||
.dis ul li.wdown a{padding-top:22px; color:#3d7ec2; margin-right:35px;}
|
||||
.wscore{ padding-top:22px; color:#888888; width:96px;}
|
||||
.dis ul li.wname a{ width:260px; font-size:14px; color:#595959; padding:25px 0 0 15px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
|
||||
.dis ul li.wdown a{padding-top:25px; color:#3d7ec2; margin-right:35px;}
|
||||
.wscore{ padding-top:25px; color:#888888; width:96px;}
|
||||
.dis ul li.wping{margin-left:12px; }
|
||||
.dis ul li.wping a{ margin-top:18px; margin-bottom:3px; width:43px; height:23px; background:#15bccf; color:#fff; text-align:center; padding-top:3px;}
|
||||
.dis ul li.wping a{ margin-top:18px; margin-bottom:3px; width:43px; height:23px; background:#15bccf; color:#fff; text-align:center; padding-top:8px;}
|
||||
.dis ul li.wping a:hover{ background-color:#03a1b3;}
|
||||
ul.wlist{ float:right; border-bottom:none; height:30px; margin-top:20px; }
|
||||
ul.wlist{ float:right; border-bottom:none; height:30px; margin-top:20px;line-height: 1.9; }
|
||||
.wlist span{ border:1px solid #15bccf; padding:0 5px; margin-left:3px;}
|
||||
.wlist a{ border:1px solid #15bccf; padding:0 5px; margin-left:3px;}
|
||||
.wlist a:hover{ background:#15bccf; color:#fff; text-decoration:none;}
|
||||
|
@ -84,7 +84,7 @@ a.wzan_visited{background:url(images/pic_zan.png) 0 0 no-repeat;}
|
|||
.ping_star span a:hover{background:url(images/star.png) -24px 0 no-repeat;}
|
||||
.ping_con textarea{ height:76px; border:1px solid #15bccf; margin-bottom:5px; color:#666; font-size:12px;}
|
||||
a.ping_sub{ float:right; height:22px; width:60px; margin-right:20px; background:#15bccf; color:#fff; text-align:center;}
|
||||
a.ping_sub1{ float:right; height:22px; width:60px; background:#15bccf; color:#fff; text-align:center;}
|
||||
a.ping_sub1{ float:right; height:22px; width:60px; background:#15bccf; color:#fff; text-align:center;line-height: 1.9;}
|
||||
a:hover.ping_sub{ background:#14a8b9;}
|
||||
.recall{ border-top:1px solid #CCC; padding:5px 0;}
|
||||
.recall_head{ float:left;}
|
||||
|
@ -92,7 +92,7 @@ a:hover.ping_sub{ background:#14a8b9;}
|
|||
.recall_head img{ height:30px; width:30px;}
|
||||
.recall_head a:hover{border:1px solid #15bccf;}
|
||||
.recall_head img:hover{border:1px solid #15bccf;}
|
||||
.recall_con{ float:left;color:#777777;max-width: 530px;width: 90%; margin-left:10px; }
|
||||
.recall_con{ float:left;color:#777777;max-width: 530px;width: 80%; margin-left:10px; }
|
||||
.recall_con a{ color:#15bccf; }
|
||||
|
||||
.ping_list{ margin-top:15px;}
|
||||
|
@ -128,7 +128,7 @@ a:hover.ping_sub{ background:#14a8b9;}
|
|||
|
||||
.w430{ width:430px;}
|
||||
.w350{ width:350px;}
|
||||
.w620{ width:580px; height:160px; border:1px solid #CCC;}
|
||||
.w620{ width:580px; height:160px; border:1px solid #CCC !important; padding-left: 3px !important;}
|
||||
.bo{height:26px; border:1px solid #CCC !important; padding: 0 !important;}
|
||||
a.tijiao{ height:28px !important; display:block !important; width:80px !important; color:#fff !important; background:#15bccf !important; text-align:center !important; padding-top:4px !important; float:left !important; margin-right:10px !important;}
|
||||
a:hover.tijiao{ background:#0f99a9 !important;}
|
||||
|
|
|
@ -649,14 +649,14 @@ input[class='nyan-clean-gray']:active, .nyan-clean-gray:active {
|
|||
}
|
||||
|
||||
.tools a:visited {
|
||||
color: #fffbff;
|
||||
color: #116699;
|
||||
text-decoration: none;
|
||||
padding: 3px 5px 0px 5px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.tools a:hover {
|
||||
color: #fffbff;
|
||||
color: white;
|
||||
padding: 3px 3px 0px 20px;
|
||||
width: 88px;
|
||||
text-decoration: none;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
body{ font-size:12px; font-family:"微软雅黑","宋体"; line-height:1.9; background:#fff; font-style:normal;}
|
||||
body{ font-size:12px !important; font-family:"微软雅黑","宋体" !important; line-height:1.9 !important; background:#fff !important; font-style:normal !important;}
|
||||
div,html,img,ul,li,p,body,h1,h2,h3,h4,p,a,table,tr,td,fieldset,input,form,span,textarea{ margin:0; padding:0;}
|
||||
div,img,tr,td,textarea{ border:0;}
|
||||
table,tr,td{border:0; cellspacing:0; cellpadding:0;}
|
||||
|
@ -12,11 +12,12 @@ a:hover{ text-decoration:underline;}
|
|||
.b_lblue{ background:#64bdd9 !important;}
|
||||
.b_dblue{ background:#55a1b9 !important; cursor:pointer !important;}
|
||||
.f_b{ font-weight: bold !important;}
|
||||
.c_blue{ color:#64bdd9;}
|
||||
.c_blue{ color:#64bdd9 !important;}
|
||||
.c_grey{ color:#999999 !important;}
|
||||
.c_grey02{ color:#666666 !important;}
|
||||
.font{ font-size: 12px;}
|
||||
.f_14{ font-size:14px ;}
|
||||
.c_dblue{ color:#3e6d8e;}
|
||||
.c_dblue{ color:#3e6d8e !important;}
|
||||
.w90{width:90px;}
|
||||
.ml10{margin-left:10px;}
|
||||
.ml5{margin-left:5px;}
|
||||
|
@ -46,15 +47,38 @@ a:hover{ text-decoration:underline;}
|
|||
text-shadow: none !important;
|
||||
}
|
||||
a.re_fabu { display:block; width:90px; height:35px; font-size:14px; color:#fff; text-align:center; padding-top:5px; margin:5px; }
|
||||
a:hover.re_fabu{background:#55a1b9;}
|
||||
a:hover.re_fabu{background:#55a1b9 !important;}
|
||||
/****列表***/
|
||||
.re_con{ margin:5px; width:683px;}
|
||||
.re_con_top{color:#494949; }
|
||||
.re_con_top span{ color:#999999; font-weight:bold;}
|
||||
a.re_select{ display:block; width:88px; height:22px; background:url(images/pic_select01.png) 0 0 no-repeat; color:#fff; font-weight:bold; margin-left:10px;}
|
||||
a:hover.re_select{background:url(images/pic_select02.png) 0 0 no-repeat;}
|
||||
.re_open{display:block; width:46px; height:22px; background:url(images/pic_open01.png) 0 0 no-repeat; color:#fff; font-weight:bold; margin-left:10px;}
|
||||
a:hover.re_open{background:url(images/pic_open02.png) 0 0 no-repeat;}
|
||||
a.re_select{
|
||||
display: block;
|
||||
height: 22px;
|
||||
border: 1px solid #ff9900;
|
||||
color: #ff9900;
|
||||
margin-left: 10px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
a:hover.re_select{
|
||||
background: #ff9900;
|
||||
color: #fff;
|
||||
text-decoration: none;}
|
||||
.re_open{
|
||||
display: block !important;
|
||||
width: 46px !important;
|
||||
height: 22px !important;
|
||||
border: 1px solid #64bdd9 !important;
|
||||
color: #64bdd9 !important;
|
||||
margin-left: 10px !important;
|
||||
}
|
||||
a:hover.re_open
|
||||
{
|
||||
background: #64bdd9;
|
||||
color: #fff !important;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
a.re_de{ color:#6883b6; margin-left:15px;}
|
||||
.re_con_box{ border-bottom:1px dashed #dadada; padding:10px 0;}
|
||||
/****翻页***/
|
||||
|
@ -76,7 +100,6 @@ a.yellowBtn{ display:inline-block;color:#0d90c3; height:22px;}
|
|||
margin-top:2px !important;
|
||||
margin-left:3px !important;
|
||||
border:none !important;
|
||||
margin-left:0px !important;
|
||||
box-shadow: none !important;
|
||||
padding: 0px !important;
|
||||
border-radius: 0 !important;
|
||||
|
|
|
@ -498,7 +498,7 @@ color: #000000;
|
|||
#sidebar a,#sidebar a.selected
|
||||
{
|
||||
display:inline-block;
|
||||
padding:4px 4px 4px 21px !important;
|
||||
padding:4px 4px 4px 21px;
|
||||
transition:all .2s linear;
|
||||
-moz-transition:all .2s linear;
|
||||
-o-transition:all .2s linear;
|
||||
|
@ -1641,7 +1641,7 @@ div.left_wf a {
|
|||
|
||||
#sidebar a, #sidebar a.selected{
|
||||
display: inline-block;
|
||||
padding: 0px !important;
|
||||
padding: 0px;
|
||||
transition: all 0.2s linear 0s;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue