diff --git a/app/controllers/blog_comments_controller.rb b/app/controllers/blog_comments_controller.rb
index f5e3314bb..7220eec27 100644
--- a/app/controllers/blog_comments_controller.rb
+++ b/app/controllers/blog_comments_controller.rb
@@ -91,8 +91,12 @@ class BlogCommentsController < ApplicationController
def edit
@article = BlogComment.find(params[:id])
- respond_to do |format|
- format.html {render :layout=>'new_base_user'}
+ if User.current.admin? || User.current.id == @article.author_id
+ respond_to do |format|
+ format.html { render :layout => 'new_base_user' }
+ end
+ else
+ render_403
end
end
diff --git a/app/controllers/files_controller.rb b/app/controllers/files_controller.rb
index b288629c8..b6ac99f11 100644
--- a/app/controllers/files_controller.rb
+++ b/app/controllers/files_controller.rb
@@ -854,9 +854,7 @@ class FilesController < ApplicationController
@result = visable_attachemnts @result
if params[:other]
@result = @result.select{|attachment|
- attachment.tag_list.exclude?('软件') &&
- attachment.tag_list.exclude?('媒体') &&
- attachment.tag_list.exclude?('代码')
+ attachment.tag_list.index{|tag|tag != '软件' and tag != '媒体' and tag != '代码'}.present?
}
else
@result = @result.select{|attachment| attachment.tag_list.include?(@tag_name)} unless @tag_name.blank?
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 47cb864cf..1c9a00fa4 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -1555,7 +1555,7 @@ class UsersController < ApplicationController
@user = User.find(params[:id])
#@user.save_attachments(params[:attachments],User.current)
# Container_type为Principal
- Attachment.attach_filesex(@user, params[:attachments], params[:attachment_type])
+ attach = Attachment.attach_filesex_public(@user, params[:attachments], params[:attachment_type], is_public = true)
if(params[:type].blank? || params[:type] == "1") # 我的资源
# 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源
if params[:status] == 2
@@ -2340,9 +2340,7 @@ class UsersController < ApplicationController
# 获取公共资源
def get_public_resources user_course_ids, user_project_ids
- attachments = Attachment.where("(is_publish = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course')) "+
- "or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}) and is_publish = 1 and container_id is not null)" +
- "or (container_type = 'Project' and container_id in (#{user_project_ids.empty? ? '0': user_project_ids.join(',')}) and is_publish = 1 and container_id is not null)" ).order("created_on desc")
+ attachments = Attachment.where("(is_publish = 1 and is_public =1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course')) ").order("created_on desc")
end
# 获取我的资源
@@ -2359,7 +2357,7 @@ class UsersController < ApplicationController
# 获取公共资源课程
def get_course_resources_public user_course_ids
- attchments = Attachment.where("(container_type = 'Course' and is_publish = 1) or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}) and is_publish = 1) ").order("created_on desc")
+ attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1 and is_public =1)").order("created_on desc")
end
# 获取我的项目资源
@@ -2369,7 +2367,7 @@ class UsersController < ApplicationController
# 获取公共资源的项目资源
def get_project_resources_public user_project_ids
- attchments = Attachment.where("(container_type = 'Project') or (container_type = 'Project' and container_id in (#{user_project_ids.empty? ? '0': user_project_ids.join(',')}) and is_publish = 1) ").order("created_on desc")
+ attchments = Attachment.where("container_type = 'Project' and container_id is not null and is_public =1").order("created_on desc")
end
# 获取我上传的附件
@@ -2379,7 +2377,7 @@ class UsersController < ApplicationController
# 获取公共资源中我上传的附件
def get_attch_resources_public
- attchments = Attachment.where("container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal')").order("created_on desc")
+ attchments = Attachment.where("container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal') and container_id is not null and is_public =1").order("created_on desc")
end
# 获取我的用户类型资源
@@ -2389,7 +2387,7 @@ class UsersController < ApplicationController
# 获取我的用户类型资源
def get_principal_resources_public
- attchments = Attachment.where("container_type = 'Principal'").order("created_on desc")
+ attchments = Attachment.where("container_type = 'Principal'and container_id is not null and is_public =1").order("created_on desc")
end
# 资源库 分为全部 课程资源 项目资源 附件
@@ -2621,9 +2619,7 @@ class UsersController < ApplicationController
end
elsif params[:type] == "6" #全部资源
# 公共资源库:所有公开资源或者我上传的私有资源
- @attachments = Attachment.where("((is_publish = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course')) "+
- "or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}) and is_publish = 1 and container_id is not null)" +
- "or (container_type = 'Project' and container_id in (#{user_project_ids.empty? ? '0': user_project_ids.join(',')}) and is_publish = 1 and container_id is not null)) and (filename like :p)" ,:p => search).order("created_on desc")
+ @attachments = Attachment.where("is_publish = 1 and is_public = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course') and (filename like :p)" ,:p => search).order("created_on desc")
end
@type = params[:type]
@limit = 25
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 477e18f41..d238235ed 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -2945,9 +2945,35 @@ end
def user_url_in_org(user_id)
if Rails.env.development?
return "http://localhost:3000/users/" + user_id.to_s
- elsif Rails.env.test?
- return "https://www.test.forge.trustie.net/users/" + user_id.to_s
else
- return "https://www.trustie.net/users/" + user_id.to_s
+ return "https://" + Setting.host_name + "/users/" + user_id.to_s
+ end
+end
+
+def logout_url_without_domain
+ if Rails.env.development?
+ return "http://localhost:3000/logout"
+ else
+ return "https://" + Setting.host_name + "/logout"
+ end
+end
+
+def signin_url_without_domain
+ if Rails.env.development?
+ return "http://localhost:3000/login?login=true"
+ elsif Rails.env.test?
+ return "https://test.forge.trustie.net/login?login=true"
+ else
+ return "https://www.trustie.net/login?login=true"
+ end
+end
+
+def register_url_without_domain
+ if Rails.env.development?
+ return "http://localhost:3000/login?login=false"
+ elsif Rails.env.test?
+ return "https://test.forge.trustie.net/login?login=false"
+ else
+ return "https://www.trustie.net/login?login=false"
end
end
diff --git a/app/models/attachment.rb b/app/models/attachment.rb
index 9f0c2c559..1cc0d3b7a 100644
--- a/app/models/attachment.rb
+++ b/app/models/attachment.rb
@@ -499,6 +499,12 @@ class Attachment < ActiveRecord::Base
result
end
+ def self.attach_filesex_public(obj, attachments,attachment_type, is_public)
+ result = obj.save_attachmentsex_public(attachments, User.current,attachment_type, is_public)
+ obj.attach_saved_attachments
+ result
+ end
+
def self.latest_attach(attachments, filename)
attachments.sort_by(&:created_on).reverse.detect {
|att| att.filename.downcase == filename.downcase
diff --git a/app/models/course_activity.rb b/app/models/course_activity.rb
index 9c1431d5d..94eb097b8 100644
--- a/app/models/course_activity.rb
+++ b/app/models/course_activity.rb
@@ -71,7 +71,8 @@ class CourseActivity < ActiveRecord::Base
name = lead_message.subject
content = lead_message.content
# message的status状态为0为正常,为1表示创建课程时发送的message
- message = Message.create(:subject => name, :content => content, :board_id => self.course.boards.first.id, :author_id => self.course.tea_id , :sticky => true, :status => true )
+ # author_id 默认为课程使者创建
+ message = Message.create(:subject => name, :content => content, :board_id => self.course.boards.first.id, :author_id => 1 , :sticky => true, :status => true )
# 更新的目的是为了排序,因为该条动态的时间可能与课程创建的动态创建时间一直
message.course_acts.first.update_attribute(:updated_at, message.course_acts.first.updated_at + 1) if message.course_acts.first
end
diff --git a/app/views/blog_comments/edit.html.erb b/app/views/blog_comments/edit.html.erb
index 704342fc0..1e29d0a14 100644
--- a/app/views/blog_comments/edit.html.erb
+++ b/app/views/blog_comments/edit.html.erb
@@ -1,6 +1,5 @@
-<% if User.current.logged? && User.current.id == @user.id %>
- <%= form_for @article, :url =>{:controller=>'blog_comments',:action => 'update',:user_id=>@user.id , :blog_id => @article.id, :is_homepage => params[:is_homepage],:in_act => params[:in_act]},:method=>'PUT',
- :html => {:nhname=>'form',:multipart => true, :id => 'message-form'} do |f| %>
- <%= render :partial => 'blog_comments/edit', :locals => {:f => f, :article => @article, :edit_mode => true, :user => @user} %>
- <% end %>
-<% end %>
\ No newline at end of file
+
+<%= form_for @article, :url =>{:controller=>'blog_comments',:action => 'update',:user_id=>@user.id , :blog_id => @article.id, :is_homepage => params[:is_homepage],:in_act => params[:in_act]},:method=>'PUT',
+ :html => {:nhname=>'form',:multipart => true, :id => 'message-form'} do |f| %>
+ <%= render :partial => 'blog_comments/edit', :locals => {:f => f, :article => @article, :edit_mode => true, :user => @user} %>
+<% end %>
diff --git a/app/views/blog_comments/show.html.erb b/app/views/blog_comments/show.html.erb
index c80274db4..de7f1647d 100644
--- a/app/views/blog_comments/show.html.erb
+++ b/app/views/blog_comments/show.html.erb
@@ -38,7 +38,7 @@
<%= link_to image_tag(url_to_avatar(@article.author),:width=>50,:height => 50,:alt=>'图像' ),user_path(@article.author) %>
- <% if @article.author.id == User.current.id%>
+ <% if @article.author.id == User.current.id || User.current.admin? %>
@@ -48,7 +48,7 @@
l(:button_edit),
{:action => 'edit', :id => @article.id,:in_act => params[:in_act]},
:class => 'postOptionLink'
- ) if User.current && User.current.id == @article.author.id %>
+ ) if User.current.admin? || User.current.id == @article.author.id %>
<%= link_to(
@@ -57,7 +57,7 @@
:method => :delete,
:data => {:confirm => l(:text_are_you_sure)},
:class => 'postOptionLink'
- ) if User.current && User.current.id == @article.author.id %>
+ ) if User.current.admin? || User.current.id == @article.author.id %>
<% if @article.id == @article.blog.homepage_id %>
diff --git a/app/views/blogs/_article.html.erb b/app/views/blogs/_article.html.erb
index a5aa8b780..edbce26d3 100644
--- a/app/views/blogs/_article.html.erb
+++ b/app/views/blogs/_article.html.erb
@@ -4,7 +4,7 @@
<%= link_to image_tag(url_to_avatar(activity.author), :width => "50", :height => "50"), user_path(activity.author_id,:host=>Setting.host_user), :alt => "用户头像" %>
- <% if activity.author.id == User.current.id%>
+ <% if activity.author.id == User.current.id || User.current.admin? %>
@@ -14,7 +14,7 @@
l(:button_edit),
{:controller => 'blog_comments',:action => 'edit',:user_id=>activity.author_id,:blog_id=>activity.blog_id, :id => activity.id},
:class => 'postOptionLink'
- ) if User.current && User.current.id == activity.author.id %>
+ ) if User.current.admin? || User.current.id == activity.author.id %>
<%= link_to(
@@ -23,7 +23,7 @@
:method => :delete,
:data => {:confirm => l(:text_are_you_sure)},
:class => 'postOptionLink'
- ) if User.current && User.current.id == activity.author.id %>
+ ) if User.current.admin? || User.current.id == activity.author.id %>
<% if activity.id == activity.blog.homepage_id %>
diff --git a/app/views/files/_org_subfield_list.html.erb b/app/views/files/_org_subfield_list.html.erb
index 90ae3516d..70214b721 100644
--- a/app/views/files/_org_subfield_list.html.erb
+++ b/app/views/files/_org_subfield_list.html.erb
@@ -9,7 +9,7 @@
- <%= link_to file.is_public? ? truncate(file.filename, length: 70) : truncate(file.filename,length: 50, omission: '...'),
+ <%= link_to file.is_public? ? truncate(file.filename, length: 45) : truncate(file.filename,length: 35, omission: '...'),
download_named_attachment_path(file.id, file.filename),
:title => file.filename+"\n"+file.description.to_s, :style => "overflow: hidden; white-space: nowrap;text-overflow: ellipsis;",:class => "linkGrey3 f_14 f_l" %>
<%= file_preview_eye(file, class: 'preview') %>
diff --git a/app/views/layouts/_logined_header.html.erb b/app/views/layouts/_logined_header.html.erb
index 20239262f..8ab1851e4 100644
--- a/app/views/layouts/_logined_header.html.erb
+++ b/app/views/layouts/_logined_header.html.erb
@@ -100,7 +100,7 @@
- <%= link_to "退出",signout_path,:class => "menuGrey",:method => "post"%>
+ <%= link_to "退出",logout_url_without_domain,:class => "menuGrey",:method => "post"%>
diff --git a/app/views/layouts/_unlogin_header.html.erb b/app/views/layouts/_unlogin_header.html.erb
index 2f0d2732b..0675c8a4a 100644
--- a/app/views/layouts/_unlogin_header.html.erb
+++ b/app/views/layouts/_unlogin_header.html.erb
@@ -77,10 +77,10 @@
diff --git a/app/views/layouts/base_org.html.erb b/app/views/layouts/base_org.html.erb
index 201e63a5d..4a8e00c96 100644
--- a/app/views/layouts/base_org.html.erb
+++ b/app/views/layouts/base_org.html.erb
@@ -46,7 +46,7 @@
<% else %>
diff --git a/app/views/memos/show.html.erb b/app/views/memos/show.html.erb
index 4feb998cf..83b90dc93 100644
--- a/app/views/memos/show.html.erb
+++ b/app/views/memos/show.html.erb
@@ -61,7 +61,7 @@
<%= link_to @memo.author.name, user_path(@memo.author), :class => "linkBlue2", :target=> "_blank"%>
<%= format_date( @memo.created_at)%>
-
+
<%= @memo.content.html_safe%>
@@ -95,8 +95,21 @@
<%= reply.author.name%> <%= format_date(reply.created_at) %>
-
<%= reply.content.html_safe%>
+
<%= reply.content.html_safe%>
+
<% end %>
@@ -126,7 +139,7 @@
\ No newline at end of file
diff --git a/app/views/messages/_course_show.html.erb b/app/views/messages/_course_show.html.erb
index 49207d5c5..f36f8a63c 100644
--- a/app/views/messages/_course_show.html.erb
+++ b/app/views/messages/_course_show.html.erb
@@ -34,11 +34,7 @@
- <% if @topic.status == 1 %>
- <%= image_tag("/images/trustie_logo1.png", width: "50px", height: "50px") %>
- <% else %>
- <%= link_to image_tag(url_to_avatar(@topic.author), :width => 50, :height => 50,:alt=>'图像' ), user_path(@topic.author) %>
- <% end %>
+ <%= link_to image_tag(url_to_avatar(@topic.author), :width => 50, :height => 50,:alt=>'图像' ), user_path(@topic.author) %>
<% if User.current.logged? %>
@@ -74,16 +70,11 @@
主题: <%= @topic.subject%>
-
- <% if @topic.status == 1 %>
- 确实团队
+ <% if @topic.try(:author).try(:realname) == ' ' %>
+ <%= link_to @topic.try(:author), user_path(@topic.author,:host=>Setting.host_user), :class => "linkBlue2", :target=> "_blank" %>
<% else %>
- <% if @topic.try(:author).try(:realname) == ' ' %>
- <%= link_to @topic.try(:author), user_path(@topic.author,:host=>Setting.host_user), :class => "linkBlue2", :target=> "_blank" %>
- <% else %>
- <%= link_to @topic.try(:author).try(:realname), user_path(@topic.author,:host=>Setting.host_user), :class => "linkBlue2", :target=> "_blank" %>
- <% end %>
+ <%= link_to @topic.try(:author).try(:realname), user_path(@topic.author,:host=>Setting.host_user), :class => "linkBlue2", :target=> "_blank" %>
<% end %>
<%= format_time( @topic.created_on)%>
diff --git a/app/views/users/_course_message.html.erb b/app/views/users/_course_message.html.erb
index df084357a..7477eaabd 100644
--- a/app/views/users/_course_message.html.erb
+++ b/app/views/users/_course_message.html.erb
@@ -1,23 +1,15 @@
- <% if activity.status == 1 %>
- <%= image_tag("/images/trustie_logo1.png", width: "50px", height: "50px") %>
- <% else %>
- <%= link_to image_tag(url_to_avatar(activity.author), :width => "50", :height => "50"), user_path(activity.author_id,:host=>Setting.host_user), :alt => "用户头像" %>
- <%= render :partial => 'users/show_detail_info', :locals => {:user => activity.author} %>
- <% end %>
+ <%= link_to image_tag(url_to_avatar(activity.author), :width => "50", :height => "50"), user_path(activity.author_id,:host=>Setting.host_user), :alt => "用户头像" %>
+ <%= render :partial => 'users/show_detail_info', :locals => {:user => activity.author} %>
- <% if activity.status == 1 %>
-
确实团队
+ <% if activity.try(:author).try(:realname) == ' ' %>
+ <%= link_to activity.try(:author), user_path(activity.author_id,:host=>Setting.host_user), :class => "newsBlue mr15" %>
<% else %>
- <% if activity.try(:author).try(:realname) == ' ' %>
- <%= link_to activity.try(:author), user_path(activity.author_id,:host=>Setting.host_user), :class => "newsBlue mr15" %>
- <% else %>
- <%= link_to activity.try(:author).try(:realname), user_path(activity.author_id,:host=>Setting.host_user), :class => "newsBlue mr15" %>
- <% end %>
+ <%= link_to activity.try(:author).try(:realname), user_path(activity.author_id,:host=>Setting.host_user), :class => "newsBlue mr15" %>
<% end %>
TO
<%= link_to activity.course.name.to_s+" | 课程问答区", course_boards_path(activity.course,:host=> Setting.host_course), :class => "newsBlue ml15 mr5"%>
diff --git a/app/views/users/_show_detail_info.html.erb b/app/views/users/_show_detail_info.html.erb
index f2a2faeb3..3ebcab21e 100644
--- a/app/views/users/_show_detail_info.html.erb
+++ b/app/views/users/_show_detail_info.html.erb
@@ -1,6 +1,6 @@
- <%= link_to image_tag(url_to_avatar(user), :width => "50", :height => "50"), user_url_in_org(user), :alt => "用户头像", :target => '_blank' %>
+ <%= link_to image_tag(url_to_avatar(user), :width => "50", :height => "50"), user_url_in_org(user.id), :alt => "用户头像", :target => '_blank' %>
<%#= image_tag(url_to_avatar(user), :width => "50", :height => "50") %>
diff --git a/db/migrate/20160317070611_update_course_lead.rb b/db/migrate/20160317070611_update_course_lead.rb
new file mode 100644
index 000000000..0c68fa40f
--- /dev/null
+++ b/db/migrate/20160317070611_update_course_lead.rb
@@ -0,0 +1,8 @@
+class UpdateCourseLead < ActiveRecord::Migration
+ def up
+ Message.where("status =? ", 1).update_all(:author_id => 1)
+ end
+
+ def down
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index d738b90c4..af5fe2197 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,8 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20160311072819) do
-
+ActiveRecord::Schema.define(:version => 20160225031230) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
t.string "act_type", :null => false
diff --git a/lib/plugins/acts_as_attachable/lib/acts_as_attachable.rb b/lib/plugins/acts_as_attachable/lib/acts_as_attachable.rb
index 682714b9b..6b22496b6 100644
--- a/lib/plugins/acts_as_attachable/lib/acts_as_attachable.rb
+++ b/lib/plugins/acts_as_attachable/lib/acts_as_attachable.rb
@@ -99,6 +99,13 @@ module Redmine
result
end
+ def save_attachmentsex_public(attachments, author=User.current,attachment_type, is_public)
+ @curattachment_type = attachment_type
+ @is_public = true
+ result = save_attachments(attachments,author)
+ result
+ end
+
def save_attachments(attachments, author=User.current)
# 清除临时文件
if attachments
@@ -142,7 +149,11 @@ module Redmine
end
if a && !attachment['is_public_checkbox']
- a.is_public = false
+ if @is_public
+ a.is_public = true
+ else
+ a.is_public = false
+ end
elsif a && attachment['is_public_checkbox']
a.is_public = true
end
diff --git a/public/javascripts/application.js b/public/javascripts/application.js
index fe829f7a8..55d3eefad 100644
--- a/public/javascripts/application.js
+++ b/public/javascripts/application.js
@@ -1,1154 +1,1177 @@
-//= require_directory ./rateable
-//= require jquery.min
-//= require jquery.infinitescroll
-
-/* Redmine - project management software
- Copyright (C) 2006-2013 Jean-Philippe Lang */
-
-//动态高度控制
-function description_show_hide(id){
- showNormalImage('activity_description_'+id);
- if($("#intro_content_"+id).height() > 810) {
- $("#intro_content_show_"+id).show();
- }
- $("#intro_content_show_"+id).click(function(){
- $("#activity_description_"+id).toggleClass("maxh360");
- $("#intro_content_show_"+id).hide();
- $("#intro_content_hide_"+id).show();
- });
- $("#intro_content_hide_"+id).click(function(){
- $("#activity_description_"+id).toggleClass("maxh360");
- $("#intro_content_hide_"+id).hide();
- $("#intro_content_show_"+id).show();
- });
-}
-
-function cleanArray (actual){
- var newArray = new Array();
- for (var i = 0; i< actual.length; i++){
- if (actual[i]){
- newArray.push(actual[i]);
- }
- }
- return newArray;
-}
-
-function checkAll(id, checked) {
- if (checked) {
- $('#'+id).find('input[type=checkbox]').attr('checked', true);
- } else {
- $('#'+id).find('input[type=checkbox]').removeAttr('checked');
- }
-}
-
-function toggleCheckboxesBySelector(selector) {
- var all_checked = true;
- $(selector).each(function(index) {
- if (!$(this).is(':checked')) { all_checked = false; }
- });
- $(selector).attr('checked', !all_checked);
-}
-
-function showAndScrollTo(id, focus) {
- $('#'+id).show();
- if (focus !== null) {
- $('#'+focus).focus();
- }
- $('html, body').animate({scrollTop: $('#'+id).offset().top}, 400);
-}
-
-function toggleRowGroup(el) {
- var tr = $(el).parents('tr').first();
- var n = tr.next();
- tr.toggleClass('open');
- while (n.length && !n.hasClass('group')) {
- n.toggle();
- n = n.next('tr');
- }
-}
-
-function collapseAllRowGroups(el) {
- var tbody = $(el).parents('tbody').first();
- tbody.children('tr').each(function(index) {
- if ($(this).hasClass('group')) {
- $(this).removeClass('open');
- } else {
- $(this).hide();
- }
- });
-}
-
-function expandAllRowGroups(el) {
- var tbody = $(el).parents('tbody').first();
- tbody.children('tr').each(function(index) {
- if ($(this).hasClass('group')) {
- $(this).addClass('open');
- } else {
- $(this).show();
- }
- });
-}
-
-function toggleAllRowGroups(el) {
- var tr = $(el).parents('tr').first();
- if (tr.hasClass('open')) {
- collapseAllRowGroups(el);
- } else {
- expandAllRowGroups(el);
- }
-}
-
-function toggleFieldset(el) {
- var fieldset = $(el).parents('fieldset').first();
- fieldset.toggleClass('collapsed');
- fieldset.children('div').toggle();
-}
-
-function hideFieldset(el) {
- var fieldset = $(el).parents('fieldset').first();
- fieldset.toggleClass('collapsed');
- fieldset.children('div').hide();
-}
-
-function initFilters(){
- $('#add_filter_select').change(function(){
- addFilter($(this).val(), '', []);
- });
- $('#filters-table td.field input[type=checkbox]').each(function(){
- toggleFilter($(this).val());
- });
- $('#filters-table td.field input[type=checkbox]').on('click',function(){
- toggleFilter($(this).val());
- });
- $('#filters-table .toggle-multiselect').on('click',function(){
- toggleMultiSelect($(this).siblings('select'));
- });
- $('#filters-table input[type=text]').on('keypress', function(e){
- if (e.keyCode == 13) submit_query_form("query_form");
- });
-}
-
-function addFilter(field, operator, values) {
- var fieldId = field.replace('.', '_');
- var tr = $('#tr_'+fieldId);
- if (tr.length > 0) {
- tr.show();
- } else {
- buildFilterRow(field, operator, values);
- }
- $('#cb_'+fieldId).attr('checked', true);
- toggleFilter(field);
- $('#add_filter_select').val('').children('option').each(function(){
- if ($(this).attr('value') == field) {
- $(this).attr('disabled', true);
- }
- });
-}
-
-function buildFilterRow(field, operator, values) {
- var fieldId = field.replace('.', '_');
- var filterTable = $("#filters-table");
- var filterOptions = availableFilters[field];
- var operators = operatorByType[filterOptions['type']];
- var filterValues = filterOptions['values'];
- var i, select;
-
- var tr = $('
').attr('id', 'tr_'+fieldId).html(
- ' '+filterOptions['name']+' ' +
- ' ' +
- ' '
- );
- filterTable.append(tr);
-
- select = tr.find('td.operator select');
- for (i=0;i').val(operators[i]).text(operatorLabels[operators[i]]);
- if (operators[i] == operator) { option.attr('selected', true); }
- select.append(option);
- }
- select.change(function(){ toggleOperator(field); });
-
- switch (filterOptions['type']){
- case "list":
- case "list_optional":
- case "list_status":
- case "list_subprojects":
- tr.find('td.values').append(
- ' ' +
- ' 复选/multi-select '
- );
- select = tr.find('td.values select');
- if (values.length > 1) { select.attr('multiple', true); }
- for (i=0;i');
- if ($.isArray(filterValue)) {
- option.val(filterValue[1]).text(filterValue[0]);
- if ($.inArray(filterValue[1], values) > -1) {option.attr('selected', true);}
- } else {
- option.val(filterValue).text(filterValue);
- if ($.inArray(filterValue, values) > -1) {option.attr('selected', true);}
- }
- select.append(option);
- }
- break;
- case "date":
- case "date_past":
- tr.find('td.values').append(
- ' ' +
- ' ' +
- ' '+labelDayPlural+' '
- );
- $('#values_'+fieldId+'_1').val(values[0]).datepicker(datepickerOptions);
- $('#values_'+fieldId+'_2').val(values[1]).datepicker(datepickerOptions);
- $('#values_'+fieldId).val(values[0]);
- break;
- case "string":
- case "text":
- tr.find('td.values').append(
- ' '
- );
- $('#values_'+fieldId).val(values[0]);
- break;
- case "relation":
- tr.find('td.values').append(
- ' ' +
- ' '
- );
- $('#values_'+fieldId).val(values[0]);
- select = tr.find('td.values select');
- for (i=0;i');
- option.val(filterValue[1]).text(filterValue[0]);
- if (values[0] == filterValue[1]) { option.attr('selected', true); }
- select.append(option);
- }
- case "integer":
- case "float":
- tr.find('td.values').append(
- ' ' +
- ' '
- );
- $('#values_'+fieldId+'_1').val(values[0]);
- $('#values_'+fieldId+'_2').val(values[1]);
- break;
- }
-}
-
-function toggleFilter(field) {
- var fieldId = field.replace('.', '_');
- if ($('#cb_' + fieldId).is(':checked')) {
- $("#operators_" + fieldId).show().removeAttr('disabled');
- toggleOperator(field);
- } else {
- $("#operators_" + fieldId).hide().attr('disabled', true);
- enableValues(field, []);
- }
-}
-
-function enableValues(field, indexes) {
- var fieldId = field.replace('.', '_');
- $('#tr_'+fieldId+' td.values .value').each(function(index) {
- if ($.inArray(index, indexes) >= 0) {
- $(this).removeAttr('disabled');
- $(this).parents('span').first().show();
- } else {
- $(this).val('');
- $(this).attr('disabled', true);
- $(this).parents('span').first().hide();
- }
-
- if ($(this).hasClass('group')) {
- $(this).addClass('open');
- } else {
- $(this).show();
- }
- });
-}
-
-function toggleOperator(field) {
- var fieldId = field.replace('.', '_');
- var operator = $("#operators_" + fieldId);
- switch (operator.val()) {
- case "!*":
- case "*":
- case "t":
- case "ld":
- case "w":
- case "lw":
- case "l2w":
- case "m":
- case "lm":
- case "y":
- case "o":
- case "c":
- enableValues(field, []);
- break;
- case "><":
- enableValues(field, [0,1]);
- break;
- case "t+":
- case ">t-":
- case "0) {
- lis.eq(i-1).show();
- }
-}
-
-function displayTabsButtons() {
- var lis;
- var tabsWidth = 0;
- var el;
- $('div.tabs').each(function() {
- el = $(this);
- lis = el.find('ul').children();
- lis.each(function(){
- if ($(this).is(':visible')) {
- tabsWidth += $(this).width() + 6;
- }
- });
- if ((tabsWidth < el.width() - 60) && (lis.first().is(':visible'))) {
- el.find('div.tabs-buttons').hide();
- } else {
- el.find('div.tabs-buttons').show();
- }
- });
-}
-
-function setPredecessorFieldsVisibility() {
- var relationType = $('#relation_relation_type');
- if (relationType.val() == "precedes" || relationType.val() == "follows") {
- $('#predecessor_fields').show();
- } else {
- $('#predecessor_fields').hide();
- }
-}
-
-function showModal(id, width) {
- var el = $('#'+id).first();
- if (el.length === 0 || el.is(':visible')) {return;}
- var title = el.find('h3.title').text();
- el.dialog({
- width: width,
- modal: true,
- resizable: false,
- dialogClass: 'modal',
- title: title
- });
- el.find("input[type=text], input[type=submit]").first().focus();
-}
-
-function hideModal(el) {
- var modal;
- if (el) {
- modal = $(el).parents('.ui-dialog-content');
- } else {
- modal = $('#ajax-modal');
- }
- modal.dialog("close");
-}
-
-function submitPreview(url, form, target) {
- $.ajax({
- url: url,
- type: 'post',
- data: $('#'+form).serialize(),
- success: function(data){
- $('#'+target).html(data);
- }
- });
-}
-
-function collapseScmEntry(id) {
- $('.'+id).each(function() {
- if ($(this).hasClass('open')) {
- collapseScmEntry($(this).attr('id'));
- }
- $(this).hide();
- });
- $('#'+id).removeClass('open');
-}
-
-function expandScmEntry(id) {
- $('.'+id).each(function() {
- $(this).show();
- if ($(this).hasClass('loaded') && !$(this).hasClass('collapsed')) {
- expandScmEntry($(this).attr('id'));
- }
- });
- $('#'+id).addClass('open');
-}
-
-function scmEntryClick(id, url) {
- el = $('#'+id);
- if (el.hasClass('open')) {
- collapseScmEntry(id);
- el.addClass('collapsed');
- return false;
- } else if (el.hasClass('loaded')) {
- expandScmEntry(id);
- el.removeClass('collapsed');
- return false;
- }
- if (el.hasClass('loading')) {
- return false;
- }
- el.addClass('loading');
- $.ajax({
- url: url,
- success: function(data){
- el.after(data);
- el.addClass('open').addClass('loaded').removeClass('loading');
- }
- });
- return true;
-}
-
-function randomKey(size) {
- var chars = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
- var key = '';
- for (i = 0; i < size; i++) {
- key += chars[Math.floor(Math.random() * chars.length)];
- }
- return key;
-}
-
-// Can't use Rails' remote select because we need the form data
-function updateIssueFrom(url) {
- $.ajax({
- url: url,
- type: 'post',
- data: $('#issue-form').serialize()
- });
-}
-
-function updateBulkEditFrom(url) {
- $.ajax({
- url: url,
- type: 'post',
- data: $('#bulk_edit_form').serialize()
- });
-}
-
-function clearMessage(id) {
- $('#'+id).val("");
-}
-
-
-function observeAutocompleteField(fieldId, url, options) {
- $(document).ready(function() {
- $('#'+fieldId).autocomplete($.extend({
- source: url,
- select: function(e,ui){self.location="/issues/"+ui.item.value;},
- minLength: 1,
- search: function(){$('#'+fieldId).addClass('ajax-loading');},
- response: function(){$('#'+fieldId).removeClass('ajax-loading');
- }
- }, options));
- $('#'+fieldId).addClass('autocomplete');
-
- });
-
-}
-
-function observeSearchfield(fieldId, targetId, url) {
- $('#'+fieldId).each(function() {
- var $this = $(this);
- $this.addClass('autocomplete');
- $this.attr('data-value-was', $this.val());
- var check = function() {
- var val = $this.val();
- if ($this.attr('data-value-was') != val){
- $this.attr('data-value-was', val);
- $.ajax({
- url: url,
- type: 'get',
- data: {q: $this.val()},
- success: function(data){ if(targetId) $('#'+targetId).html(data); },
- beforeSend: function(){ $this.addClass('ajax-loading'); },
- complete: function(){ $this.removeClass('ajax-loading'); }
- });
- }
- };
- var reset = function() {
- if (timer) {
- clearInterval(timer);
- timer = setInterval(check, 300);
- }
- };
- var timer = setInterval(check, 300);
- $this.bind('keyup click mousemove', reset);
- });
-}
-
-function observeProjectModules() {
- var f = function() {
- /* Hides trackers and issues custom fields on the new project form when issue_tracking module is disabled */
- if ($('#project_enabled_module_names_issue_tracking').attr('checked')) {
- $('#project_trackers').show();
- }else{
- $('#project_trackers').hide();
- }
- };
-
- $(window).load(f);
- $('#project_enabled_module_names_issue_tracking').change(f);
-}
-
-function initMyPageSortable(list, url) {
- $('#list-'+list).sortable({
- connectWith: '.block-receiver',
- tolerance: 'pointer',
- update: function(){
- $.ajax({
- url: url,
- type: 'post',
- data: {'blocks': $.map($('#list-'+list).children(), function(el){return $(el).attr('id');})}
- });
- }
- });
- $("#list-top, #list-left, #list-right").disableSelection();
-}
-
-var warnLeavingUnsavedMessage;
-function warnLeavingUnsaved(message) {
- warnLeavingUnsavedMessage = message;
-
- $('form').submit(function(){
- $('textarea').removeData('changed');
- });
- $('textarea').change(function(){
- $(this).data('changed', 'changed');
- });
- window.onbeforeunload = function(){
- var warn = false;
- $('textarea').blur().each(function(){
- if ($(this).data('changed')) {
- warn = true;
- }
- });
- if (warn) {return warnLeavingUnsavedMessage;}
- };
-}
-
-function setupHeartBeat(){
- var time = 60*1000*30; // 30 mins
- setInterval(function(){$.getJSON('/account/heartbeat');},time);
-}
-
-function setupAjaxIndicator() {
- $('#ajax-indicator').bind('ajaxSend', function(event, xhr, settings) {
- if(settings && settings.url && settings.url.match(/account\/heartbeat$/)){
- return;
- }
- if ($('.ajax-loading').length === 0 && settings.contentType != 'application/octet-stream') {
- $('#ajax-indicator').show();
- }
- });
-
- $('#ajax-indicator').bind('ajaxStop', function() {
- $('#ajax-indicator').hide();
- if(MathJax && MathJax.Hub)
- MathJax.Hub.Queue(['Typeset', MathJax.Hub]); //如果是ajax刷新页面的话,手动执行MathJax的公式显示
- try{
- prettyPrint(); //如果刷新出来的页面如果存在代码行的话,也需要美化
- }catch (e){
-
- }
- });
-}
-
-function hideOnLoad() {
- $('.hol').hide();
-}
-
-function addFormObserversForDoubleSubmit() {
- $('form[method=post]').each(function() {
- if (!$(this).hasClass('multiple-submit')) {
- $(this).submit(function(form_submission) {
- if ($(form_submission.target).attr('data-submitted')) {
- form_submission.preventDefault();
- } else {
- $(form_submission.target).attr('data-submitted', true);
- }
- });
- }
- });
-}
-
-function blockEventPropagation(event) {
- event.stopPropagation();
- event.preventDefault();
-}
-
-function toggleAndSettingWordsVal(parent_widget, text_widget, value){
- text_widget.val(value)
- parent_widget.slideToggle(400)
-}
-function transpotUrl (scope) {
- $(scope).each(function(){
- var tmpContent = $(this).html();
- tmpContent = tmpContent.replace(/(^|[^\"\'])(http|ftp|mms|rstp|news|https)(\:\/\/[^<\s\+,,]+)/gi,"$1$2$3<\/a>");
- // tmpContent = tmpContent.replace(/(^|[^\/])(www\.[^<\s\+,,]+)/gi,"$1 $2 ");
- $(this).html(tmpContent);
- });
-}
-
-$(document).ready(setupAjaxIndicator);
-$(document).ready(setupHeartBeat);
-$(document).ready(hideOnLoad);
-$(document).ready(addFormObserversForDoubleSubmit);
-
-function img_thumbnails() {
- $('.thumbnails a').colorbox({rel:'nofollow'});
- $('.attachments').find('a').each(function(index, element) {
- var href_value = $(element).attr('href');
- if (/\.(jpg|png|gif|bmp|jpeg|PNG|BMP|GIF|JPG|JPEG)$/.test(href_value)) {
- $(element).colorbox({rel:'nofollow'});
- }
- });
- $('.for_img_thumbnails').find('a').each(function(index, element) {
- var href_value = $(element).attr('href');
- if (/\.(jpg|png|gif|bmp|jpeg|PNG|BMP|GIF|JPG|JPEG)$/.test(href_value)) {
- $(element).colorbox({rel:'nofollow'});
- }
- });
-}
-$(document).ready(img_thumbnails);
-
-function TimeClose(dateText, inst) {
- if(inst.id=="issue_start_date"){
- time=dateText;
- }
-}
-var time=new Date();
-function TimeBeforeShow(input){
- if(input.id=="issue_due_date"){
- //var minDate = $(input).datepicker('option', 'minDate');
- var tempdata=$("#issue_start_date").attr("value");
-
- $(input).datepicker('option', 'minDate',new Date(tempdata.replace(/-/g, "/")));
- //$('.selector').datepicker('option', 'minDate', '12/25/2012');
- }
-}
-
-function SetMinValue(){
- /// var tempdata=$("#issue_start_date").attr("value");
- //$('.selector').datepicker('option', 'minDate', '12/25/2012');
- //alert(tempdata);
- //$("#issue_due_date").datepicker({
- // minDate: new Date(2014,08,23)
- //var datepickerOptions=
- //{dateFormat: 'yy-mm-dd',minDate: new Date(2014,08,23), showOn: 'button', buttonImageOnly: true, buttonImage: "path_to_image('/images/calendar.png')", showButtonPanel: true, showWeek: true, showOtherMonths: true, selectOtherMonths: true};
- //alert( $('.issue_due_date').length);
- //$('.selector')[1].datepicker('option', 'minDate', new Date(2014, 0 - 8, 23));
- //$("#issue_due_date").datepicker(datepickerOptions);
- //$("##{issue_due_date}").datepicker(datepickerOptions);
- //$("#issue_due_date").datepicker(
- // {dateFormat: 'yy-mm-dd',minDate: new Date(2014,08,23), showOn: 'button', buttonImageOnly: true, buttonImage: "path_to_image('/images/calendar.png')", showButtonPanel: true, showWeek: true, showOtherMonths: true, selectOtherMonths: true}
- //)
- //});
-}
-function PrecentChange(obj){
- var _v= obj;
- if(_v==100)
- {
- //var select=$("select[id='issue_status_id']");
- $("select[id='issue_status_id']").find("option[value='3']").attr("selected","selected");
- }
- else if(_v==0)
- {
- //alert(1);
- $("select[id='issue_status_id']").find("option[value='1']").attr("selected","selected");
- }
- else if(_v!=100&&_v!=0)
- {
- // alert(2);
- $("select[id='issue_status_id']").find("option[value='2']").attr("selected","selected");
- }
-}
-
-//added by lizanle 日期選擇js
-function HS_DateAdd(interval,number,date){
- number = parseInt(number);
- if (typeof(date)=="string"){var date = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2])}
- if (typeof(date)=="object"){var date = date}
- switch(interval){
- case "y":return new Date(date.getFullYear()+number,date.getMonth(),date.getDate()); break;
- case "m":return new Date(date.getFullYear(),date.getMonth()+number,checkDate(date.getFullYear(),date.getMonth()+number,date.getDate())); break;
- case "d":return new Date(date.getFullYear(),date.getMonth(),date.getDate()+number); break;
- case "w":return new Date(date.getFullYear(),date.getMonth(),7*number+date.getDate()); break;
- }
-}
-function checkDate(year,month,date){
- var enddate = ["31","28","31","30","31","30","31","31","30","31","30","31"];
- var returnDate = "";
- if (year%4==0){enddate[1]="29"}
- if (date>enddate[month]){returnDate = enddate[month]}else{returnDate = date}
- return returnDate;
-}
-
-function WeekDay(date){
- var theDate;
- if (typeof(date)=="string"){theDate = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2]);}
- if (typeof(date)=="object"){theDate = date}
- return theDate.getDay();
-}
-function HS_calender(){
- var lis = "";
- var style = "";
- /*可以把下面的css剪切出去独立一个css文件*/
- style +="";
-
- var now;
- if (typeof(arguments[0])=="string"){
- selectDate = arguments[0].split("-");
- var year = selectDate[0];
- var month = parseInt(selectDate[1])-1+"";
- var date = selectDate[2];
- now = new Date(year,month,date);
- }else if (typeof(arguments[0])=="object"){
- now = arguments[0];
- }
- var lastMonthEndDate = HS_DateAdd("d","-1",now.getFullYear()+"-"+now.getMonth()+"-01").getDate();
- var lastMonthDate = WeekDay(now.getFullYear()+"-"+now.getMonth()+"-01");
- var thisMonthLastDate = HS_DateAdd("d","-1",now.getFullYear()+"-"+(parseInt(now.getMonth())+1).toString()+"-01");
- var thisMonthEndDate = thisMonthLastDate.getDate();
- var thisMonthEndDay = thisMonthLastDate.getDay();
- var todayObj = new Date();
- today = todayObj.getFullYear()+"-"+todayObj.getMonth()+"-"+todayObj.getDate();
-
- for (i=0; i" + lis;
- lastMonthEndDate--;
- }
- for (i=1; i<=thisMonthEndDate; i++){ // Current Month's Date
-
- if(today == now.getFullYear()+"-"+now.getMonth()+"-"+i){
- var todayString = now.getFullYear()+"-"+(parseInt(now.getMonth())+1).toString()+"-"+i;
- lis += ""+i+" ";
- }else{
- lis += ""+i+" ";
- }
-
- }
- var j=1;
- for (i=thisMonthEndDay; i<6; i++){ // Next Month's Date
- lis += ""+j+" ";
- j++;
- }
- lis += style;
-
- var CalenderTitle = "» ";
- CalenderTitle += "« ";
- CalenderTitle += ""+now.getFullYear()+" 年"+(parseInt(now.getMonth())+1).toString()+" 月";
-
- if (arguments.length>1){
- arguments[1].parentNode.parentNode.getElementsByTagName("ul")[1].innerHTML = lis;
- arguments[1].parentNode.innerHTML = CalenderTitle;
-
- }else{
- var CalenderBox = style+"";
- return CalenderBox;
- }
-}
-function _selectThisDay(d){
- var boxObj = d.parentNode.parentNode.parentNode.parentNode.parentNode;
- boxObj.targetObj.value = d.title;
- boxObj.parentNode.removeChild(boxObj);
-}
-function closeCalender(d){
- var boxObj = d.parentNode.parentNode.parentNode;
- boxObj.parentNode.removeChild(boxObj);
-}
-
-function CalenderselectYear(obj){
- var opt = "";
- var thisYear = obj.innerHTML;
- for (i=1970; i<=2020; i++){
- if (i==thisYear){
- opt += ""+i+" ";
- }else{
- opt += ""+i+" ";
- }
- }
- opt = ""+opt+" ";
- obj.parentNode.innerHTML = opt;
-}
-
-function selectThisYear(obj){
- HS_calender(obj.value+"-"+obj.parentNode.parentNode.getElementsByTagName("span")[1].getElementsByTagName("a")[0].innerHTML+"-1",obj.parentNode);
-}
-
-function CalenderselectMonth(obj){
- var opt = "";
- var thisMonth = obj.innerHTML;
- for (i=1; i<=12; i++){
- if (i==thisMonth){
- opt += ""+i+" ";
- }else{
- opt += ""+i+" ";
- }
- }
- opt = ""+opt+" ";
- obj.parentNode.innerHTML = opt;
-}
-function selectThisMonth(obj){
- HS_calender(obj.parentNode.parentNode.getElementsByTagName("span")[0].getElementsByTagName("a")[0].innerHTML+"-"+obj.value+"-1",obj.parentNode);
-}
-function HS_setDate(inputObj){
- var calenderObj = document.createElement("span");
- calenderObj.innerHTML = HS_calender(new Date());
- calenderObj.style.position = "absolute";
- calenderObj.targetObj = inputObj;
- inputObj.parentNode.insertBefore(calenderObj,inputObj.nextSibling);
-}
-//lizanle 刷新函数
-function redo() {
- window.location.reload()
-}
-
-function encodeHomeworkUrl(url, is_base64){
- if(typeof is_base64 === 'boolean' && is_base64){
- return '/zipdown/download?base64file='+url;
- }
- var file = encodeURI(url).replace(/\+/g, '%2B');
- return '/zipdown/download?file='+file;
-}
-
-//// 作业附件删除
-$(function(){
- $('.attachments a.delete-homework-icon').bind('ajax:complete', //this will work
- function(event, data, status, xhr) { //note parametes
- $(this).parent('p').remove();
- console.log("delete complete.");
- });
-
- $('a.tb_all').bind('ajax:complete', function (event, data, status, xhr) {
- if(status == 'success'){
- var res = JSON.parse(data.responseText);
- if(res.length<1){
- return;
- }
-
- if(res.length==1){
- if(res[0].base64file){
- location.href = encodeHomeworkUrl(res[0].base64file, true);return;
- }
- location.href = encodeHomeworkUrl(res[0].file);return;
- }
-
- document.getElementById('light').style.display='block';
- $container = $('#light .upload_box_ul');
- $container.empty();
- for(var i = 0; i 1){
- des = '第'+res[i].index+'-'+(res[i].count+res[i].index-1)+'个学生的作品下载';
- } else {
- des = '第'+res[i].index+'个学生的作品下载';
- }
-
- if(res[i].base64file){
- $(''+(i+1)+'. '+des+' (共'+res[i].size+'M) ').appendTo($container);
- } else {
- $(''+(i+1)+'. '+des+' (共'+res[i].size+'M) ').appendTo($container);
- }
- }
- }
- });
- $('#download_homework_attachments').bind('ajax:complete', function (event, data, status, xhr) {
- if(status == 'success'){
- var res = JSON.parse(data.responseText);
- if(res.length == null){
- alert("该作业没有任何附件可下载");
- }
- else if(res.length<1){
- return;
- }
- else
- {
- if(res.length==1){
- if(res[0].base64file){
- location.href = encodeHomeworkUrl(res[0].base64file, true);return;
- }
- location.href = encodeHomeworkUrl(res[0].file);return;
- }
- document.getElementById('light').style.display='block';
- $container = $('#light .upload_box_ul');
- $container.empty();
- for(var i = 0; i 1){
- des = '第'+res[i].index+'-'+(res[i].count+res[i].index-1)+'个学生的作品下载';
- } else {
- des = '第'+res[i].index+'个学生的作品下载';
- }
-
- if(res[i].base64file){
- $(''+(i+1)+'. '+des+' (共'+res[i].size+'M) ').appendTo($container);
- } else {
- $(''+(i+1)+'. '+des+' (共'+res[i].size+'M) ').appendTo($container);
- }
-
- }
- }
- }
- });
-});
-
-
-//firefox的pre标签换行
-$(document).ready(function () {
- var userAgent = navigator.userAgent.toLowerCase();
- var browser = {
- version: (userAgent.match(/.+(?:rv|it|ra|ie)[/: ]([d.]+)/) || [])[1],
- safari: /webkit/.test(userAgent),
- opera: /opera/.test(userAgent),
- msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
- mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
- };
- if (browser.mozilla || browser.opera){
- $("pre").addClass("break_word_firefox");
- }
- else{
- $("pre").addClass("break_word");
- }
-});
-
-//点击发送资源弹出框中的组织,要更改选择栏目中的内容
-//@dom 选中的radio,值为org_id
-function change_org_subfield(url){
- $.ajax({
- type:'get',
- url:url
- })
-}
-
-//点击图片即显示大图
-function showNormalImage(id) {
- var description_images=$('div#'+id).find("img");
- if (description_images.length>0) {
- for (var i=0; i").attr("href",image.attr('src'));
- image.wrap(element);
- $(image).parent().colorbox({rel:'nofollow', close: "关闭", returnFocus: false});
- }
- //$('#'+id+' a').colorbox({rel:'nofollow', close: "关闭", returnFocus: false}); //有图片才将链接变为弹出框
- }
-
-}
-
-//文件、帖子、通知分享
-function org_id_click(){
- var sendText = $("input[name='org_id']:checked").next().text();
- var orgDirection = "目标地址:";
- $(".orgDirection").text(orgDirection + sendText);
-}
-function subfield_click(){
- var sendText = $("input[name='org_id']:checked").next().text();
- var orgDirection = "目标地址:";
- var sendColumn = $("input[name='subfield']:checked").next().text();
- $(".orgDirection").text(orgDirection + sendText + " / " + sendColumn);
-}
-
-//send_type:发送的类型,file对应文件,message对应帖子,news对应通知或新闻
-function observeSearchfieldOnInput(fieldId, url,send_id,send_ids, send_type) {
- $('#'+fieldId).each(function() {
- var $this = $(this);
- $this.addClass('autocomplete');
- $this.attr('data-value-was', $this.val());
- var check = function() {
- var val = $this.val();
- if ($this.attr('data-value-was') != val){
- $this.attr('data-value-was', val);
- $.ajax({
- url: url,
- type: 'get',
- data: {search: $this.val(),send_id:send_id,send_ids:send_ids, send_type:send_type},
- success: function(data){ },
- beforeSend: function(){ $this.addClass('ajax-loading'); },
- complete: function(){ $this.removeClass('ajax-loading'); }
- });
- }
- };
- var reset = function() {
- if (timer) {
- clearInterval(timer);
- timer = setInterval(check, 300);
- }
- };
- var timer = setInterval(check, 300);
- $this.bind('keyup click mousemove', reset);
- });
-}
-function check_des(event){
- if($(".sectionContent").find('input[type="radio"]:checked').length <= 0){
- event.preventDefault();
- $(".orgDirection").text('目标地址组织不能为空');
- return false;
- }else if($(".columnContent").find('input[type="radio"]:checked').length <= 0){
- event.preventDefault();
- $(".orgDirection").text('目标地址栏目不能为空');
- return false;
- }else{
- return true;
- }
-}
-
-var sendType = '1';
-var lastSendType ;//初始为发送到我的课程
-function show_send(id, user_id, send_type){
- if (lastSendType === '2'){ //如果已经发送过一次了,那么就应该沿用上次发送的类型。
- $.ajax({
- type: 'get',
- url: '/users/' + user_id + '/search_user_project',
- data:{send_id:id, send_type:send_type}
- });
- }else if(lastSendType == '1'){
- $.ajax({
- type: 'get',
- url: '/users/' + user_id + '/search_user_course',
- data:{send_id:id, send_type:send_type}
- });
- }else if( lastSendType == '3'){//组织
- $.ajax({
- type: 'get',
- url: '/users/' + user_id + '/search_user_org',
- data:{send_id:id, send_type:send_type}
- });
- }else{
- $.ajax({
- type: 'get',
- url: '/users/' + user_id + '/search_user_course',
- data:{send_id:id, send_type:send_type}
- });
- }
-}
-
-//id 发送的id
-//发送的id数组
-//send_type:发送的类型,file对应文件,message对应帖子,news对应通知或新闻
-function chooseSendType(res_id,res_ids, user_id, send_type){
-
- sendType = $(".resourcesSendType").val();
- if (sendType === lastSendType) {
- return;
- } else if(lastSendType != null) { //不是第一次点击的时候
- if (sendType == '1') {
- $.ajax({
- type: 'get',
- url: '/users/' + user_id + '/search_user_course',
- data:{send_id:res_id, send_type:send_type}
- });
- } else if(sendType == '2') {
- $.ajax({
- type: 'get',
- url: '/users/' + user_id + '/search_user_project',
- data:{send_id:res_id, send_type:send_type}
- });
- }else if(sendType == '3'){
- $.ajax({
- type: 'get',
- url: '/users/' + user_id + '/search_user_org',
- data:{send_id:res_id, send_type:send_type}
- });
- }
- }
- lastSendType = sendType;
-}
-
-//组织新建和配置中,选择组织为私有后,disbled掉允许游客下载选项
-function disable_down(source, des, hint){
- if (source.attr("checked")){
- des.attr("disabled", false);
- hint.html("");
- }
- else{
- des.attr("checked", false);
- des.attr("disabled", true);
- hint.html("(私有组织不允许游客下载资源)");
-
- }
-}
+//= require_directory ./rateable
+//= require jquery.min
+//= require jquery.infinitescroll
+
+/* Redmine - project management software
+ Copyright (C) 2006-2013 Jean-Philippe Lang */
+
+//动态高度控制
+function description_show_hide(id){
+ showNormalImage('activity_description_'+id);
+ if($("#intro_content_"+id).height() > 810) {
+ $("#intro_content_show_"+id).show();
+ }
+ $("#intro_content_show_"+id).click(function(){
+ $("#activity_description_"+id).toggleClass("maxh360");
+ $("#intro_content_show_"+id).hide();
+ $("#intro_content_hide_"+id).show();
+ });
+ $("#intro_content_hide_"+id).click(function(){
+ $("#activity_description_"+id).toggleClass("maxh360");
+ $("#intro_content_hide_"+id).hide();
+ $("#intro_content_show_"+id).show();
+ });
+}
+
+function cleanArray (actual){
+ var newArray = new Array();
+ for (var i = 0; i< actual.length; i++){
+ if (actual[i]){
+ newArray.push(actual[i]);
+ }
+ }
+ return newArray;
+}
+
+function checkAll(id, checked) {
+ if (checked) {
+ $('#'+id).find('input[type=checkbox]').attr('checked', true);
+ } else {
+ $('#'+id).find('input[type=checkbox]').removeAttr('checked');
+ }
+}
+
+function toggleCheckboxesBySelector(selector) {
+ var all_checked = true;
+ $(selector).each(function(index) {
+ if (!$(this).is(':checked')) { all_checked = false; }
+ });
+ $(selector).attr('checked', !all_checked);
+}
+
+function showAndScrollTo(id, focus) {
+ $('#'+id).show();
+ if (focus !== null) {
+ $('#'+focus).focus();
+ }
+ $('html, body').animate({scrollTop: $('#'+id).offset().top}, 400);
+}
+
+function toggleRowGroup(el) {
+ var tr = $(el).parents('tr').first();
+ var n = tr.next();
+ tr.toggleClass('open');
+ while (n.length && !n.hasClass('group')) {
+ n.toggle();
+ n = n.next('tr');
+ }
+}
+
+function collapseAllRowGroups(el) {
+ var tbody = $(el).parents('tbody').first();
+ tbody.children('tr').each(function(index) {
+ if ($(this).hasClass('group')) {
+ $(this).removeClass('open');
+ } else {
+ $(this).hide();
+ }
+ });
+}
+
+function expandAllRowGroups(el) {
+ var tbody = $(el).parents('tbody').first();
+ tbody.children('tr').each(function(index) {
+ if ($(this).hasClass('group')) {
+ $(this).addClass('open');
+ } else {
+ $(this).show();
+ }
+ });
+}
+
+function toggleAllRowGroups(el) {
+ var tr = $(el).parents('tr').first();
+ if (tr.hasClass('open')) {
+ collapseAllRowGroups(el);
+ } else {
+ expandAllRowGroups(el);
+ }
+}
+
+function toggleFieldset(el) {
+ var fieldset = $(el).parents('fieldset').first();
+ fieldset.toggleClass('collapsed');
+ fieldset.children('div').toggle();
+}
+
+function hideFieldset(el) {
+ var fieldset = $(el).parents('fieldset').first();
+ fieldset.toggleClass('collapsed');
+ fieldset.children('div').hide();
+}
+
+function initFilters(){
+ $('#add_filter_select').change(function(){
+ addFilter($(this).val(), '', []);
+ });
+ $('#filters-table td.field input[type=checkbox]').each(function(){
+ toggleFilter($(this).val());
+ });
+ $('#filters-table td.field input[type=checkbox]').on('click',function(){
+ toggleFilter($(this).val());
+ });
+ $('#filters-table .toggle-multiselect').on('click',function(){
+ toggleMultiSelect($(this).siblings('select'));
+ });
+ $('#filters-table input[type=text]').on('keypress', function(e){
+ if (e.keyCode == 13) submit_query_form("query_form");
+ });
+}
+
+function addFilter(field, operator, values) {
+ var fieldId = field.replace('.', '_');
+ var tr = $('#tr_'+fieldId);
+ if (tr.length > 0) {
+ tr.show();
+ } else {
+ buildFilterRow(field, operator, values);
+ }
+ $('#cb_'+fieldId).attr('checked', true);
+ toggleFilter(field);
+ $('#add_filter_select').val('').children('option').each(function(){
+ if ($(this).attr('value') == field) {
+ $(this).attr('disabled', true);
+ }
+ });
+}
+
+function buildFilterRow(field, operator, values) {
+ var fieldId = field.replace('.', '_');
+ var filterTable = $("#filters-table");
+ var filterOptions = availableFilters[field];
+ var operators = operatorByType[filterOptions['type']];
+ var filterValues = filterOptions['values'];
+ var i, select;
+
+ var tr = $('').attr('id', 'tr_'+fieldId).html(
+ ' '+filterOptions['name']+' ' +
+ ' ' +
+ ' '
+ );
+ filterTable.append(tr);
+
+ select = tr.find('td.operator select');
+ for (i=0;i').val(operators[i]).text(operatorLabels[operators[i]]);
+ if (operators[i] == operator) { option.attr('selected', true); }
+ select.append(option);
+ }
+ select.change(function(){ toggleOperator(field); });
+
+ switch (filterOptions['type']){
+ case "list":
+ case "list_optional":
+ case "list_status":
+ case "list_subprojects":
+ tr.find('td.values').append(
+ ' ' +
+ ' 复选/multi-select '
+ );
+ select = tr.find('td.values select');
+ if (values.length > 1) { select.attr('multiple', true); }
+ for (i=0;i');
+ if ($.isArray(filterValue)) {
+ option.val(filterValue[1]).text(filterValue[0]);
+ if ($.inArray(filterValue[1], values) > -1) {option.attr('selected', true);}
+ } else {
+ option.val(filterValue).text(filterValue);
+ if ($.inArray(filterValue, values) > -1) {option.attr('selected', true);}
+ }
+ select.append(option);
+ }
+ break;
+ case "date":
+ case "date_past":
+ tr.find('td.values').append(
+ ' ' +
+ ' ' +
+ ' '+labelDayPlural+' '
+ );
+ $('#values_'+fieldId+'_1').val(values[0]).datepicker(datepickerOptions);
+ $('#values_'+fieldId+'_2').val(values[1]).datepicker(datepickerOptions);
+ $('#values_'+fieldId).val(values[0]);
+ break;
+ case "string":
+ case "text":
+ tr.find('td.values').append(
+ ' '
+ );
+ $('#values_'+fieldId).val(values[0]);
+ break;
+ case "relation":
+ tr.find('td.values').append(
+ ' ' +
+ ' '
+ );
+ $('#values_'+fieldId).val(values[0]);
+ select = tr.find('td.values select');
+ for (i=0;i');
+ option.val(filterValue[1]).text(filterValue[0]);
+ if (values[0] == filterValue[1]) { option.attr('selected', true); }
+ select.append(option);
+ }
+ case "integer":
+ case "float":
+ tr.find('td.values').append(
+ ' ' +
+ ' '
+ );
+ $('#values_'+fieldId+'_1').val(values[0]);
+ $('#values_'+fieldId+'_2').val(values[1]);
+ break;
+ }
+}
+
+function toggleFilter(field) {
+ var fieldId = field.replace('.', '_');
+ if ($('#cb_' + fieldId).is(':checked')) {
+ $("#operators_" + fieldId).show().removeAttr('disabled');
+ toggleOperator(field);
+ } else {
+ $("#operators_" + fieldId).hide().attr('disabled', true);
+ enableValues(field, []);
+ }
+}
+
+function enableValues(field, indexes) {
+ var fieldId = field.replace('.', '_');
+ $('#tr_'+fieldId+' td.values .value').each(function(index) {
+ if ($.inArray(index, indexes) >= 0) {
+ $(this).removeAttr('disabled');
+ $(this).parents('span').first().show();
+ } else {
+ $(this).val('');
+ $(this).attr('disabled', true);
+ $(this).parents('span').first().hide();
+ }
+
+ if ($(this).hasClass('group')) {
+ $(this).addClass('open');
+ } else {
+ $(this).show();
+ }
+ });
+}
+
+function toggleOperator(field) {
+ var fieldId = field.replace('.', '_');
+ var operator = $("#operators_" + fieldId);
+ switch (operator.val()) {
+ case "!*":
+ case "*":
+ case "t":
+ case "ld":
+ case "w":
+ case "lw":
+ case "l2w":
+ case "m":
+ case "lm":
+ case "y":
+ case "o":
+ case "c":
+ enableValues(field, []);
+ break;
+ case "><":
+ enableValues(field, [0,1]);
+ break;
+ case "t+":
+ case ">t-":
+ case "0) {
+ lis.eq(i-1).show();
+ }
+}
+
+function displayTabsButtons() {
+ var lis;
+ var tabsWidth = 0;
+ var el;
+ $('div.tabs').each(function() {
+ el = $(this);
+ lis = el.find('ul').children();
+ lis.each(function(){
+ if ($(this).is(':visible')) {
+ tabsWidth += $(this).width() + 6;
+ }
+ });
+ if ((tabsWidth < el.width() - 60) && (lis.first().is(':visible'))) {
+ el.find('div.tabs-buttons').hide();
+ } else {
+ el.find('div.tabs-buttons').show();
+ }
+ });
+}
+
+function setPredecessorFieldsVisibility() {
+ var relationType = $('#relation_relation_type');
+ if (relationType.val() == "precedes" || relationType.val() == "follows") {
+ $('#predecessor_fields').show();
+ } else {
+ $('#predecessor_fields').hide();
+ }
+}
+
+function showModal(id, width) {
+ var el = $('#'+id).first();
+ if (el.length === 0 || el.is(':visible')) {return;}
+ var title = el.find('h3.title').text();
+ el.dialog({
+ width: width,
+ modal: true,
+ resizable: false,
+ dialogClass: 'modal',
+ title: title
+ });
+ el.find("input[type=text], input[type=submit]").first().focus();
+}
+
+function hideModal(el) {
+ var modal;
+ if (el) {
+ modal = $(el).parents('.ui-dialog-content');
+ } else {
+ modal = $('#ajax-modal');
+ }
+ modal.dialog("close");
+}
+
+function submitPreview(url, form, target) {
+ $.ajax({
+ url: url,
+ type: 'post',
+ data: $('#'+form).serialize(),
+ success: function(data){
+ $('#'+target).html(data);
+ }
+ });
+}
+
+function collapseScmEntry(id) {
+ $('.'+id).each(function() {
+ if ($(this).hasClass('open')) {
+ collapseScmEntry($(this).attr('id'));
+ }
+ $(this).hide();
+ });
+ $('#'+id).removeClass('open');
+}
+
+function expandScmEntry(id) {
+ $('.'+id).each(function() {
+ $(this).show();
+ if ($(this).hasClass('loaded') && !$(this).hasClass('collapsed')) {
+ expandScmEntry($(this).attr('id'));
+ }
+ });
+ $('#'+id).addClass('open');
+}
+
+function scmEntryClick(id, url) {
+ el = $('#'+id);
+ if (el.hasClass('open')) {
+ collapseScmEntry(id);
+ el.addClass('collapsed');
+ return false;
+ } else if (el.hasClass('loaded')) {
+ expandScmEntry(id);
+ el.removeClass('collapsed');
+ return false;
+ }
+ if (el.hasClass('loading')) {
+ return false;
+ }
+ el.addClass('loading');
+ $.ajax({
+ url: url,
+ success: function(data){
+ el.after(data);
+ el.addClass('open').addClass('loaded').removeClass('loading');
+ }
+ });
+ return true;
+}
+
+function randomKey(size) {
+ var chars = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
+ var key = '';
+ for (i = 0; i < size; i++) {
+ key += chars[Math.floor(Math.random() * chars.length)];
+ }
+ return key;
+}
+
+// Can't use Rails' remote select because we need the form data
+function updateIssueFrom(url) {
+ $.ajax({
+ url: url,
+ type: 'post',
+ data: $('#issue-form').serialize()
+ });
+}
+
+function updateBulkEditFrom(url) {
+ $.ajax({
+ url: url,
+ type: 'post',
+ data: $('#bulk_edit_form').serialize()
+ });
+}
+
+function clearMessage(id) {
+ $('#'+id).val("");
+}
+
+
+function observeAutocompleteField(fieldId, url, options) {
+ $(document).ready(function() {
+ $('#'+fieldId).autocomplete($.extend({
+ source: url,
+ select: function(e,ui){self.location="/issues/"+ui.item.value;},
+ minLength: 1,
+ search: function(){$('#'+fieldId).addClass('ajax-loading');},
+ response: function(){$('#'+fieldId).removeClass('ajax-loading');
+ }
+ }, options));
+ $('#'+fieldId).addClass('autocomplete');
+
+ });
+
+}
+
+function observeSearchfield(fieldId, targetId, url) {
+ $('#'+fieldId).each(function() {
+ var $this = $(this);
+ $this.addClass('autocomplete');
+ $this.attr('data-value-was', $this.val());
+ var check = function() {
+ var val = $this.val();
+ if ($this.attr('data-value-was') != val){
+ $this.attr('data-value-was', val);
+ $.ajax({
+ url: url,
+ type: 'get',
+ data: {q: $this.val()},
+ success: function(data){ if(targetId) $('#'+targetId).html(data); },
+ beforeSend: function(){ $this.addClass('ajax-loading'); },
+ complete: function(){ $this.removeClass('ajax-loading'); }
+ });
+ }
+ };
+ var reset = function() {
+ if (timer) {
+ clearInterval(timer);
+ timer = setInterval(check, 300);
+ }
+ };
+ var timer = setInterval(check, 300);
+ $this.bind('keyup click mousemove', reset);
+ });
+}
+
+function observeProjectModules() {
+ var f = function() {
+ /* Hides trackers and issues custom fields on the new project form when issue_tracking module is disabled */
+ if ($('#project_enabled_module_names_issue_tracking').attr('checked')) {
+ $('#project_trackers').show();
+ }else{
+ $('#project_trackers').hide();
+ }
+ };
+
+ $(window).load(f);
+ $('#project_enabled_module_names_issue_tracking').change(f);
+}
+
+function initMyPageSortable(list, url) {
+ $('#list-'+list).sortable({
+ connectWith: '.block-receiver',
+ tolerance: 'pointer',
+ update: function(){
+ $.ajax({
+ url: url,
+ type: 'post',
+ data: {'blocks': $.map($('#list-'+list).children(), function(el){return $(el).attr('id');})}
+ });
+ }
+ });
+ $("#list-top, #list-left, #list-right").disableSelection();
+}
+
+var warnLeavingUnsavedMessage;
+function warnLeavingUnsaved(message) {
+ warnLeavingUnsavedMessage = message;
+
+ $('form').submit(function(){
+ $('textarea').removeData('changed');
+ });
+ $('textarea').change(function(){
+ $(this).data('changed', 'changed');
+ });
+ window.onbeforeunload = function(){
+ var warn = false;
+ $('textarea').blur().each(function(){
+ if ($(this).data('changed')) {
+ warn = true;
+ }
+ });
+ if (warn) {return warnLeavingUnsavedMessage;}
+ };
+}
+
+function setupHeartBeat(){
+ var time = 60*1000*30; // 30 mins
+ setInterval(function(){$.getJSON('/account/heartbeat');},time);
+}
+
+function setupAjaxIndicator() {
+ $('#ajax-indicator').bind('ajaxSend', function(event, xhr, settings) {
+ if(settings && settings.url && settings.url.match(/account\/heartbeat$/)){
+ return;
+ }
+ if ($('.ajax-loading').length === 0 && settings.contentType != 'application/octet-stream') {
+ $('#ajax-indicator').show();
+ }
+ });
+
+ $('#ajax-indicator').bind('ajaxStop', function() {
+ $('#ajax-indicator').hide();
+ if(MathJax && MathJax.Hub)
+ MathJax.Hub.Queue(['Typeset', MathJax.Hub]); //如果是ajax刷新页面的话,手动执行MathJax的公式显示
+ try{
+ prettyPrint(); //如果刷新出来的页面如果存在代码行的话,也需要美化
+ }catch (e){
+
+ }
+ });
+}
+
+function hideOnLoad() {
+ $('.hol').hide();
+}
+
+function addFormObserversForDoubleSubmit() {
+ $('form[method=post]').each(function() {
+ if (!$(this).hasClass('multiple-submit')) {
+ $(this).submit(function(form_submission) {
+ if ($(form_submission.target).attr('data-submitted')) {
+ form_submission.preventDefault();
+ } else {
+ $(form_submission.target).attr('data-submitted', true);
+ }
+ });
+ }
+ });
+}
+
+function blockEventPropagation(event) {
+ event.stopPropagation();
+ event.preventDefault();
+}
+
+function toggleAndSettingWordsVal(parent_widget, text_widget, value){
+ text_widget.val(value)
+ parent_widget.slideToggle(400)
+}
+function transpotUrl (scope) {
+ $(scope).each(function(){
+ var tmpContent = $(this).html();
+ tmpContent = tmpContent.replace(/(^|[^\"\'])(http|ftp|mms|rstp|news|https)(\:\/\/[^<\s\+,,]+)/gi,"$1$2$3<\/a>");
+ // tmpContent = tmpContent.replace(/(^|[^\/])(www\.[^<\s\+,,]+)/gi,"$1 $2 ");
+ $(this).html(tmpContent);
+ });
+}
+
+$(document).ready(setupAjaxIndicator);
+$(document).ready(setupHeartBeat);
+$(document).ready(hideOnLoad);
+$(document).ready(addFormObserversForDoubleSubmit);
+
+function img_thumbnails() {
+ $('.thumbnails a').colorbox({rel:'nofollow'});
+ $('.attachments').find('a').each(function(index, element) {
+ var href_value = $(element).attr('href');
+ if (/\.(jpg|png|gif|bmp|jpeg|PNG|BMP|GIF|JPG|JPEG)$/.test(href_value)) {
+ $(element).colorbox({rel:'nofollow'});
+ }
+ });
+ $('.for_img_thumbnails').find('a').each(function(index, element) {
+ var href_value = $(element).attr('href');
+ if (/\.(jpg|png|gif|bmp|jpeg|PNG|BMP|GIF|JPG|JPEG)$/.test(href_value)) {
+ $(element).colorbox({rel:'nofollow'});
+ }
+ });
+}
+$(document).ready(img_thumbnails);
+
+function TimeClose(dateText, inst) {
+ if(inst.id=="issue_start_date"){
+ time=dateText;
+ }
+}
+var time=new Date();
+function TimeBeforeShow(input){
+ if(input.id=="issue_due_date"){
+ //var minDate = $(input).datepicker('option', 'minDate');
+ var tempdata=$("#issue_start_date").attr("value");
+
+ $(input).datepicker('option', 'minDate',new Date(tempdata.replace(/-/g, "/")));
+ //$('.selector').datepicker('option', 'minDate', '12/25/2012');
+ }
+}
+
+function SetMinValue(){
+ /// var tempdata=$("#issue_start_date").attr("value");
+ //$('.selector').datepicker('option', 'minDate', '12/25/2012');
+ //alert(tempdata);
+ //$("#issue_due_date").datepicker({
+ // minDate: new Date(2014,08,23)
+ //var datepickerOptions=
+ //{dateFormat: 'yy-mm-dd',minDate: new Date(2014,08,23), showOn: 'button', buttonImageOnly: true, buttonImage: "path_to_image('/images/calendar.png')", showButtonPanel: true, showWeek: true, showOtherMonths: true, selectOtherMonths: true};
+ //alert( $('.issue_due_date').length);
+ //$('.selector')[1].datepicker('option', 'minDate', new Date(2014, 0 - 8, 23));
+ //$("#issue_due_date").datepicker(datepickerOptions);
+ //$("##{issue_due_date}").datepicker(datepickerOptions);
+ //$("#issue_due_date").datepicker(
+ // {dateFormat: 'yy-mm-dd',minDate: new Date(2014,08,23), showOn: 'button', buttonImageOnly: true, buttonImage: "path_to_image('/images/calendar.png')", showButtonPanel: true, showWeek: true, showOtherMonths: true, selectOtherMonths: true}
+ //)
+ //});
+}
+function PrecentChange(obj){
+ var _v= obj;
+ if(_v==100)
+ {
+ //var select=$("select[id='issue_status_id']");
+ $("select[id='issue_status_id']").find("option[value='3']").attr("selected","selected");
+ }
+ else if(_v==0)
+ {
+ //alert(1);
+ $("select[id='issue_status_id']").find("option[value='1']").attr("selected","selected");
+ }
+ else if(_v!=100&&_v!=0)
+ {
+ // alert(2);
+ $("select[id='issue_status_id']").find("option[value='2']").attr("selected","selected");
+ }
+}
+
+//added by lizanle 日期選擇js
+function HS_DateAdd(interval,number,date){
+ number = parseInt(number);
+ if (typeof(date)=="string"){var date = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2])}
+ if (typeof(date)=="object"){var date = date}
+ switch(interval){
+ case "y":return new Date(date.getFullYear()+number,date.getMonth(),date.getDate()); break;
+ case "m":return new Date(date.getFullYear(),date.getMonth()+number,checkDate(date.getFullYear(),date.getMonth()+number,date.getDate())); break;
+ case "d":return new Date(date.getFullYear(),date.getMonth(),date.getDate()+number); break;
+ case "w":return new Date(date.getFullYear(),date.getMonth(),7*number+date.getDate()); break;
+ }
+}
+function checkDate(year,month,date){
+ var enddate = ["31","28","31","30","31","30","31","31","30","31","30","31"];
+ var returnDate = "";
+ if (year%4==0){enddate[1]="29"}
+ if (date>enddate[month]){returnDate = enddate[month]}else{returnDate = date}
+ return returnDate;
+}
+
+function WeekDay(date){
+ var theDate;
+ if (typeof(date)=="string"){theDate = new Date(date.split("-")[0],date.split("-")[1],date.split("-")[2]);}
+ if (typeof(date)=="object"){theDate = date}
+ return theDate.getDay();
+}
+function HS_calender(){
+ var lis = "";
+ var style = "";
+ /*可以把下面的css剪切出去独立一个css文件*/
+ style +="";
+
+ var now;
+ if (typeof(arguments[0])=="string"){
+ selectDate = arguments[0].split("-");
+ var year = selectDate[0];
+ var month = parseInt(selectDate[1])-1+"";
+ var date = selectDate[2];
+ now = new Date(year,month,date);
+ }else if (typeof(arguments[0])=="object"){
+ now = arguments[0];
+ }
+ var lastMonthEndDate = HS_DateAdd("d","-1",now.getFullYear()+"-"+now.getMonth()+"-01").getDate();
+ var lastMonthDate = WeekDay(now.getFullYear()+"-"+now.getMonth()+"-01");
+ var thisMonthLastDate = HS_DateAdd("d","-1",now.getFullYear()+"-"+(parseInt(now.getMonth())+1).toString()+"-01");
+ var thisMonthEndDate = thisMonthLastDate.getDate();
+ var thisMonthEndDay = thisMonthLastDate.getDay();
+ var todayObj = new Date();
+ today = todayObj.getFullYear()+"-"+todayObj.getMonth()+"-"+todayObj.getDate();
+
+ for (i=0; i" + lis;
+ lastMonthEndDate--;
+ }
+ for (i=1; i<=thisMonthEndDate; i++){ // Current Month's Date
+
+ if(today == now.getFullYear()+"-"+now.getMonth()+"-"+i){
+ var todayString = now.getFullYear()+"-"+(parseInt(now.getMonth())+1).toString()+"-"+i;
+ lis += ""+i+" ";
+ }else{
+ lis += ""+i+" ";
+ }
+
+ }
+ var j=1;
+ for (i=thisMonthEndDay; i<6; i++){ // Next Month's Date
+ lis += ""+j+" ";
+ j++;
+ }
+ lis += style;
+
+ var CalenderTitle = "» ";
+ CalenderTitle += "« ";
+ CalenderTitle += ""+now.getFullYear()+" 年"+(parseInt(now.getMonth())+1).toString()+" 月";
+
+ if (arguments.length>1){
+ arguments[1].parentNode.parentNode.getElementsByTagName("ul")[1].innerHTML = lis;
+ arguments[1].parentNode.innerHTML = CalenderTitle;
+
+ }else{
+ var CalenderBox = style+"";
+ return CalenderBox;
+ }
+}
+function _selectThisDay(d){
+ var boxObj = d.parentNode.parentNode.parentNode.parentNode.parentNode;
+ boxObj.targetObj.value = d.title;
+ boxObj.parentNode.removeChild(boxObj);
+}
+function closeCalender(d){
+ var boxObj = d.parentNode.parentNode.parentNode;
+ boxObj.parentNode.removeChild(boxObj);
+}
+
+function CalenderselectYear(obj){
+ var opt = "";
+ var thisYear = obj.innerHTML;
+ for (i=1970; i<=2020; i++){
+ if (i==thisYear){
+ opt += ""+i+" ";
+ }else{
+ opt += ""+i+" ";
+ }
+ }
+ opt = ""+opt+" ";
+ obj.parentNode.innerHTML = opt;
+}
+
+function selectThisYear(obj){
+ HS_calender(obj.value+"-"+obj.parentNode.parentNode.getElementsByTagName("span")[1].getElementsByTagName("a")[0].innerHTML+"-1",obj.parentNode);
+}
+
+function CalenderselectMonth(obj){
+ var opt = "";
+ var thisMonth = obj.innerHTML;
+ for (i=1; i<=12; i++){
+ if (i==thisMonth){
+ opt += ""+i+" ";
+ }else{
+ opt += ""+i+" ";
+ }
+ }
+ opt = ""+opt+" ";
+ obj.parentNode.innerHTML = opt;
+}
+function selectThisMonth(obj){
+ HS_calender(obj.parentNode.parentNode.getElementsByTagName("span")[0].getElementsByTagName("a")[0].innerHTML+"-"+obj.value+"-1",obj.parentNode);
+}
+function HS_setDate(inputObj){
+ var calenderObj = document.createElement("span");
+ calenderObj.innerHTML = HS_calender(new Date());
+ calenderObj.style.position = "absolute";
+ calenderObj.targetObj = inputObj;
+ inputObj.parentNode.insertBefore(calenderObj,inputObj.nextSibling);
+}
+//lizanle 刷新函数
+function redo() {
+ window.location.reload()
+}
+
+function encodeHomeworkUrl(url, is_base64){
+ if(typeof is_base64 === 'boolean' && is_base64){
+ return '/zipdown/download?base64file='+url;
+ }
+ var file = encodeURI(url).replace(/\+/g, '%2B');
+ return '/zipdown/download?file='+file;
+}
+
+//// 作业附件删除
+$(function(){
+ $('.attachments a.delete-homework-icon').bind('ajax:complete', //this will work
+ function(event, data, status, xhr) { //note parametes
+ $(this).parent('p').remove();
+ console.log("delete complete.");
+ });
+
+ $('a.tb_all').bind('ajax:complete', function (event, data, status, xhr) {
+ if(status == 'success'){
+ var res = JSON.parse(data.responseText);
+ if(res.length<1){
+ return;
+ }
+
+ if(res.length==1){
+ if(res[0].base64file){
+ location.href = encodeHomeworkUrl(res[0].base64file, true);return;
+ }
+ location.href = encodeHomeworkUrl(res[0].file);return;
+ }
+
+ document.getElementById('light').style.display='block';
+ $container = $('#light .upload_box_ul');
+ $container.empty();
+ for(var i = 0; i 1){
+ des = '第'+res[i].index+'-'+(res[i].count+res[i].index-1)+'个学生的作品下载';
+ } else {
+ des = '第'+res[i].index+'个学生的作品下载';
+ }
+
+ if(res[i].base64file){
+ $(''+(i+1)+'. '+des+' (共'+res[i].size+'M) ').appendTo($container);
+ } else {
+ $(''+(i+1)+'. '+des+' (共'+res[i].size+'M) ').appendTo($container);
+ }
+ }
+ }
+ });
+ $('#download_homework_attachments').bind('ajax:complete', function (event, data, status, xhr) {
+ if(status == 'success'){
+ var res = JSON.parse(data.responseText);
+ if(res.length == null){
+ alert("该作业没有任何附件可下载");
+ }
+ else if(res.length<1){
+ return;
+ }
+ else
+ {
+ if(res.length==1){
+ if(res[0].base64file){
+ location.href = encodeHomeworkUrl(res[0].base64file, true);return;
+ }
+ location.href = encodeHomeworkUrl(res[0].file);return;
+ }
+ document.getElementById('light').style.display='block';
+ $container = $('#light .upload_box_ul');
+ $container.empty();
+ for(var i = 0; i 1){
+ des = '第'+res[i].index+'-'+(res[i].count+res[i].index-1)+'个学生的作品下载';
+ } else {
+ des = '第'+res[i].index+'个学生的作品下载';
+ }
+
+ if(res[i].base64file){
+ $(''+(i+1)+'. '+des+' (共'+res[i].size+'M) ').appendTo($container);
+ } else {
+ $(''+(i+1)+'. '+des+' (共'+res[i].size+'M) ').appendTo($container);
+ }
+
+ }
+ }
+ }
+ });
+});
+
+
+//firefox的pre标签换行
+$(document).ready(function () {
+ var userAgent = navigator.userAgent.toLowerCase();
+ var browser = {
+ version: (userAgent.match(/.+(?:rv|it|ra|ie)[/: ]([d.]+)/) || [])[1],
+ safari: /webkit/.test(userAgent),
+ opera: /opera/.test(userAgent),
+ msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
+ mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
+ };
+ if (browser.mozilla || browser.opera){
+ $("pre").addClass("break_word_firefox");
+ }
+ else{
+ $("pre").addClass("break_word");
+ }
+});
+
+//点击发送资源弹出框中的组织,要更改选择栏目中的内容
+//@dom 选中的radio,值为org_id
+function change_org_subfield(url){
+ $.ajax({
+ type:'get',
+ url:url
+ })
+}
+
+//点击图片即显示大图
+function showNormalImage(id) {
+ var description_images=$('div#'+id).find("img");
+ if (description_images.length>0) {
+ for (var i=0; i").attr("href",image.attr('src'));
+ image.wrap(element);
+ $(image).parent().colorbox({rel:'nofollow', close: "关闭", returnFocus: false});
+ }
+ //$('#'+id+' a').colorbox({rel:'nofollow', close: "关闭", returnFocus: false}); //有图片才将链接变为弹出框
+ }
+
+}
+
+
+//文件、帖子、通知分享
+function org_id_click(){
+ var sendText = $("input[name='org_id']:checked").next().text();
+ var orgDirection = "目标地址:";
+ $(".orgDirection").text(orgDirection + sendText);
+}
+function subfield_click(){
+ var sendText = $("input[name='org_id']:checked").next().text();
+ var orgDirection = "目标地址:";
+ var sendColumn = $("input[name='subfield']:checked").next().text();
+ $(".orgDirection").text(orgDirection + sendText + " / " + sendColumn);
+}
+
+//send_type:发送的类型,file对应文件,message对应帖子,news对应通知或新闻
+function observeSearchfieldOnInput(fieldId, url,send_id,send_ids, send_type) {
+ $('#'+fieldId).each(function() {
+ var $this = $(this);
+ $this.addClass('autocomplete');
+ $this.attr('data-value-was', $this.val());
+ var check = function() {
+ var val = $this.val();
+ if ($this.attr('data-value-was') != val){
+ $this.attr('data-value-was', val);
+ $.ajax({
+ url: url,
+ type: 'get',
+ data: {search: $this.val(),send_id:send_id,send_ids:send_ids, send_type:send_type},
+ success: function(data){ },
+ beforeSend: function(){ $this.addClass('ajax-loading'); },
+ complete: function(){ $this.removeClass('ajax-loading'); }
+ });
+ }
+ };
+ var reset = function() {
+ if (timer) {
+ clearInterval(timer);
+ timer = setInterval(check, 300);
+ }
+ };
+ var timer = setInterval(check, 300);
+ $this.bind('keyup click mousemove', reset);
+ });
+}
+function check_des(event){
+ if($(".sectionContent").find('input[type="radio"]:checked').length <= 0){
+ event.preventDefault();
+ $(".orgDirection").text('目标地址组织不能为空');
+ return false;
+ }else if($(".columnContent").find('input[type="radio"]:checked').length <= 0){
+ event.preventDefault();
+ $(".orgDirection").text('目标地址栏目不能为空');
+ return false;
+ }else{
+ return true;
+ }
+}
+
+var sendType = '1';
+var lastSendType ;//初始为发送到我的课程
+function show_send(id, user_id, send_type){
+ if (lastSendType === '2'){ //如果已经发送过一次了,那么就应该沿用上次发送的类型。
+ $.ajax({
+ type: 'get',
+ url: '/users/' + user_id + '/search_user_project',
+ data:{send_id:id, send_type:send_type}
+ });
+ }else if(lastSendType == '1'){
+ $.ajax({
+ type: 'get',
+ url: '/users/' + user_id + '/search_user_course',
+ data:{send_id:id, send_type:send_type}
+ });
+ }else if( lastSendType == '3'){//组织
+ $.ajax({
+ type: 'get',
+ url: '/users/' + user_id + '/search_user_org',
+ data:{send_id:id, send_type:send_type}
+ });
+ }else{
+ $.ajax({
+ type: 'get',
+ url: '/users/' + user_id + '/search_user_course',
+ data:{send_id:id, send_type:send_type}
+ });
+ }
+}
+
+//id 发送的id
+//发送的id数组
+//send_type:发送的类型,file对应文件,message对应帖子,news对应通知或新闻
+function chooseSendType(res_id,res_ids, user_id, send_type){
+
+ sendType = $(".resourcesSendType").val();
+ if (sendType === lastSendType) {
+ return;
+ } else if(lastSendType != null) { //不是第一次点击的时候
+ if (sendType == '1') {
+ $.ajax({
+ type: 'get',
+ url: '/users/' + user_id + '/search_user_course',
+ data:{send_id:res_id, send_type:send_type}
+ });
+ } else if(sendType == '2') {
+ $.ajax({
+ type: 'get',
+ url: '/users/' + user_id + '/search_user_project',
+ data:{send_id:res_id, send_type:send_type}
+ });
+ }else if(sendType == '3'){
+ $.ajax({
+ type: 'get',
+ url: '/users/' + user_id + '/search_user_org',
+ data:{send_id:res_id, send_type:send_type}
+ });
+ }
+ }
+ lastSendType = sendType;
+}
+
+//组织新建和配置中,选择组织为私有后,disbled掉允许游客下载选项
+function disable_down(source, des, hint){
+ if (source.attr("checked")){
+ des.attr("disabled", false);
+ hint.html("");
+ }
+ else{
+ des.attr("checked", false);
+ des.attr("disabled", true);
+ hint.html("(私有组织不允许游客下载资源)");
+
+ }
+}
+
+function getRootPath(){
+ //获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp
+ var curWwwPath=window.document.location.href;
+ //获取主机地址之后的目录,如: uimcardprj/share/meun.jsp
+ var pathName=window.document.location.pathname;
+ var pos=curWwwPath.indexOf(pathName);
+ //获取主机地址,如: http://localhost:8083
+ var localhostPaht=curWwwPath.substring(0,pos);
+ //获取带"/"的项目名,如:/uimcardprj
+// var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
+ var projectName="";
+ return(localhostPaht+projectName);
+}
+
diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css
index 8aa15d0f7..4669d043e 100644
--- a/public/stylesheets/new_user.css
+++ b/public/stylesheets/new_user.css
@@ -845,7 +845,7 @@ a.sortArrowActiveU {background:url(images/post_image_list.png) -17px -20px no-re
.postDetailTitle {width:580px; max-width:580px; margin-bottom:5px;}
.postDetailDes {width:580px; max-width:580px; margin-bottom:6px; color:#888888;display:block;overflow:hidden;word-break:keep-all;text-overflow:ellipsis;}
.postDetailDes p,div,em{word-break: break-all;word-wrap: break-word;}
-.homepagePostIntro p,.homepagePostIntro div,.homepagePostIntro em, .homepagePostIntro span{text-align: justify; text-justify:inter-ideograph; word-break: normal !important; word-wrap: break-word !important; line-height: 18px !important;}
+.homepagePostIntro p,.homepagePostIntro div,.homepagePostIntro em, .homepagePostIntro span{text-align: justify; text-justify:inter-ideograph; word-break: normal !important; word-wrap: break-word !important; line-height: 23px !important;}
.postDetailCreater {color:#888888; font-size:12px; float:left; margin-right:25px;}
.postDetailDate {color:#888888; font-size:12px; float:left;}
.postDetailReply { margin-top:28px; color:#888888; float:right;display: inline}
diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css
index 7e1ae654f..f30838a92 100644
--- a/public/stylesheets/project.css
+++ b/public/stylesheets/project.css
@@ -218,7 +218,7 @@ a.talk_btn{ background:#64bdd9; width:50px; height:20px; color:#fff; text-align:
a:hover.talk_btn{ background:#2a9dc1;}
/****讨论区内页***/
.mt0{ margin-top:0px;}
-.talk_info{ color:#7d7d7d; margin-left:60px; margin-top:10px;}
+.talk_info{ margin-left:60px; margin-top:10px;}
.issue_desc li{list-style-type: decimal;margin-left: 20px;}
.talk_info img {max-width:100%;}
a.talk_edit{ color:#426e9a; margin-right:5px;}
diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css
index 41909ec1b..6bdd8d2e2 100644
--- a/public/stylesheets/public.css
+++ b/public/stylesheets/public.css
@@ -1133,4 +1133,4 @@ a.group-btn{ background: url(../images/course/hwork_icon.png) -2px -58px no-rep
a.program-btn{background: url(../images/homepage_icon.png) -86px -393px no-repeat; width:30px; height:20px; display:block; padding-left:23px; color:#888888;}
/*视频播放默认图标*/
-.mediaIco{margin: 30px 0 30px 20px;}
+.mediaIco{margin: 30px 0 30px 20px;width: 200px;}