commit
e4e683d59b
@ -1,30 +1,30 @@
|
||||
*.swp
|
||||
/.project
|
||||
/.idea
|
||||
/.bundle
|
||||
*.swp
|
||||
/config/database.yml
|
||||
/config/configuration.yml
|
||||
/config/additional_environment.rb
|
||||
/files/*
|
||||
/log/*
|
||||
/public/tmp/*
|
||||
/tmp/*
|
||||
/public/cache/*
|
||||
.gitignore
|
||||
/config/newrelic.yml
|
||||
/public/images/avatars/*
|
||||
/Gemfile
|
||||
/Gemfile.lock
|
||||
/db/schema.rb
|
||||
/Gemfile.lock
|
||||
/lib/plugins/acts_as_versioned/test/debug.log
|
||||
.rbenv-gemsets
|
||||
.DS_Store
|
||||
public/api_doc/
|
||||
/.metadata
|
||||
vendor/cache
|
||||
/files
|
||||
/public/images/avatars
|
||||
/public/files
|
||||
/tags
|
||||
*.swp
|
||||
/.project
|
||||
/.idea
|
||||
/.bundle
|
||||
*.swp
|
||||
/config/database.yml
|
||||
/config/configuration.yml
|
||||
/config/additional_environment.rb
|
||||
/files/*
|
||||
/log/*
|
||||
/public/tmp/*
|
||||
/tmp/*
|
||||
/public/cache/*
|
||||
.gitignore
|
||||
/config/newrelic.yml
|
||||
/public/images/avatars/*
|
||||
/Gemfile
|
||||
/Gemfile.lock
|
||||
/db/schema.rb
|
||||
/Gemfile.lock
|
||||
/lib/plugins/acts_as_versioned/test/debug.log
|
||||
.rbenv-gemsets
|
||||
.DS_Store
|
||||
public/api_doc/
|
||||
/.metadata
|
||||
vendor/cache
|
||||
/files
|
||||
/public/images/avatars
|
||||
/public/files
|
||||
/tags
|
||||
|
@ -0,0 +1,33 @@
|
||||
module Mobile
|
||||
module Entities
|
||||
class Member < Grape::Entity
|
||||
include ApplicationHelper
|
||||
include ApiHelper
|
||||
def self.member_expose(f)
|
||||
expose f do |u,opt|
|
||||
if u.is_a?(Hash) && u.key?(f)
|
||||
u[f]
|
||||
elsif u.is_a?(::Member)
|
||||
if u.respond_to?(f)
|
||||
u.send(f)
|
||||
else
|
||||
case f
|
||||
when :student_id
|
||||
u.user.user_extensions.student_id
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
expose :user, using: Mobile::Entities::User do |c, opt|
|
||||
if c.is_a?(::Member)
|
||||
c.user
|
||||
end
|
||||
end
|
||||
member_expose :student_id
|
||||
member_expose :score
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,42 @@
|
||||
class DiscussDemosController < ApplicationController
|
||||
def index
|
||||
|
||||
@discuss_demo_list = DiscussDemo.where("body is not null").order("created_at desc").page(params[:page] || 1).per(10)
|
||||
end
|
||||
|
||||
def new
|
||||
@discuss_demo = DiscussDemo.create
|
||||
@discuss_demo.save!
|
||||
@discuss_demo
|
||||
end
|
||||
|
||||
def create
|
||||
|
||||
end
|
||||
|
||||
def update
|
||||
@discuss_demo = DiscussDemo.find(params[:id])
|
||||
@discuss_demo.update_attributes(:title => params[:discuss_demo][:title],:body => params[:discuss_demo][:body])
|
||||
redirect_to :controller=> 'discuss_demos',:action => 'show',:id => params[:id]
|
||||
end
|
||||
|
||||
def delete
|
||||
|
||||
end
|
||||
|
||||
def destroy
|
||||
asset = Kindeditor::Asset.find_by_owner_id(params[:id])
|
||||
if !asset.nil?
|
||||
filepath = File.join(Rails.root,"public","files","uploads",
|
||||
asset[:created_at].to_s.gsub("+0800","").to_datetime.strftime("%Y%m").to_s,
|
||||
asset[:asset].to_s)
|
||||
File.delete(filepath) if File.exist?filepath
|
||||
end
|
||||
DiscussDemo.destroy(params[:id])
|
||||
redirect_to :controller=> 'discuss_demos',:action => 'index'
|
||||
end
|
||||
|
||||
def show
|
||||
@discuss_demo = DiscussDemo.find(params[:id])
|
||||
end
|
||||
end
|
@ -1,86 +1,86 @@
|
||||
# encoding: utf-8
|
||||
=begin
|
||||
identity字段含义
|
||||
0 教师教授
|
||||
1 学生
|
||||
2 企业
|
||||
3 开发者
|
||||
=end
|
||||
class UserExtensions < ActiveRecord::Base
|
||||
validate :school, presence: true
|
||||
|
||||
belongs_to :user
|
||||
belongs_to :school, :class_name => 'School', :foreign_key => :school_id
|
||||
attr_accessible :user_id,:birthday,:brief_introduction,:gender,:location,:occupation,:work_experience,:zip_code,:identity, :technical_title,:student_id
|
||||
TEACHER = 0
|
||||
STUDENT = 1
|
||||
ENTERPRISE = 2
|
||||
DEVELOPER = 3
|
||||
#this method was used to update the table user_extensions
|
||||
def update_user_extensions(birthday=nil,brief_introduction=nil,
|
||||
gender=nil,location=nil,occupation=nil,work_experience=nil,zip_code=nil)
|
||||
self.birthday = birthday
|
||||
self.brief_introduction = brief_introduction
|
||||
self.gender = gender
|
||||
self.location = location
|
||||
self.occupation = occupation
|
||||
self.work_experience = work_experience
|
||||
self.zip_code = zip_code
|
||||
self.save
|
||||
end
|
||||
|
||||
def get_brief_introduction
|
||||
return self.brief_introduction
|
||||
end
|
||||
|
||||
|
||||
# added by meng
|
||||
def show_identity
|
||||
if User.current.language == 'zh'||User.current.language == ''
|
||||
case self.identity
|
||||
when 0
|
||||
user_identity = l(:label_account_identity_teacher)
|
||||
when 1
|
||||
user_identity = l(:label_account_identity_student)
|
||||
when 2
|
||||
user_identity = l(:label_account_identity_enterprise)
|
||||
when 3
|
||||
user_identity = l(:label_account_identity_developer)
|
||||
else
|
||||
user_identity = ''
|
||||
end
|
||||
else
|
||||
case self.identity
|
||||
when 0
|
||||
user_identity = l(:label_account_identity_teacher)
|
||||
when 1
|
||||
user_identity = l(:label_account_identity_student)
|
||||
when 2
|
||||
user_identity = l(:label_account_identity_enterprise)
|
||||
when 3
|
||||
user_identity = l(:label_account_identity_developer)
|
||||
else
|
||||
user_identity = ''
|
||||
end
|
||||
end
|
||||
return user_identity
|
||||
end
|
||||
# end
|
||||
|
||||
|
||||
def self.introduction(user, message)
|
||||
unless user.user_extensions.nil?
|
||||
info = user.user_extensions
|
||||
info.brief_introduction = message
|
||||
info.save
|
||||
else
|
||||
info = UserExtensions.new
|
||||
info.user_id = user.id
|
||||
info.brief_introduction = message
|
||||
info.save
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
||||
# encoding: utf-8
|
||||
=begin
|
||||
identity字段含义
|
||||
0 教师教授
|
||||
1 学生
|
||||
2 企业
|
||||
3 开发者
|
||||
=end
|
||||
class UserExtensions < ActiveRecord::Base
|
||||
validate :school, presence: true
|
||||
|
||||
belongs_to :user
|
||||
belongs_to :school, :class_name => 'School', :foreign_key => :school_id
|
||||
attr_accessible :user_id,:birthday,:brief_introduction,:gender,:location,:occupation,:work_experience,:zip_code,:identity, :technical_title,:student_id
|
||||
TEACHER = 0
|
||||
STUDENT = 1
|
||||
ENTERPRISE = 2
|
||||
DEVELOPER = 3
|
||||
#this method was used to update the table user_extensions
|
||||
def update_user_extensions(birthday=nil,brief_introduction=nil,
|
||||
gender=nil,location=nil,occupation=nil,work_experience=nil,zip_code=nil)
|
||||
self.birthday = birthday
|
||||
self.brief_introduction = brief_introduction
|
||||
self.gender = gender
|
||||
self.location = location
|
||||
self.occupation = occupation
|
||||
self.work_experience = work_experience
|
||||
self.zip_code = zip_code
|
||||
self.save
|
||||
end
|
||||
|
||||
def get_brief_introduction
|
||||
return self.brief_introduction
|
||||
end
|
||||
|
||||
|
||||
# added by meng
|
||||
def show_identity
|
||||
if User.current.language == 'zh'||User.current.language == ''
|
||||
case self.identity
|
||||
when 0
|
||||
user_identity = l(:label_account_identity_teacher)
|
||||
when 1
|
||||
user_identity = l(:label_account_identity_student)
|
||||
when 2
|
||||
user_identity = l(:label_account_identity_enterprise)
|
||||
when 3
|
||||
user_identity = l(:label_account_identity_developer)
|
||||
else
|
||||
user_identity = ''
|
||||
end
|
||||
else
|
||||
case self.identity
|
||||
when 0
|
||||
user_identity = l(:label_account_identity_teacher)
|
||||
when 1
|
||||
user_identity = l(:label_account_identity_student)
|
||||
when 2
|
||||
user_identity = l(:label_account_identity_enterprise)
|
||||
when 3
|
||||
user_identity = l(:label_account_identity_developer)
|
||||
else
|
||||
user_identity = ''
|
||||
end
|
||||
end
|
||||
return user_identity
|
||||
end
|
||||
# end
|
||||
|
||||
|
||||
def self.introduction(user, message)
|
||||
unless user.user_extensions.nil?
|
||||
info = user.user_extensions
|
||||
info.brief_introduction = message
|
||||
info.save
|
||||
else
|
||||
info = UserExtensions.new
|
||||
info.user_id = user.id
|
||||
info.brief_introduction = message
|
||||
info.save
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
@ -1,8 +1,8 @@
|
||||
$('#attachments_<%= j params[:attachment_id] %>').remove();
|
||||
var count=$('#attachments_fields>span').length;
|
||||
if(count<=0){
|
||||
$("#upload_file_count").text(<%= l(:label_no_file_uploaded)%>);
|
||||
$(".remove_all").remove();
|
||||
}else{
|
||||
$("#upload_file_count").html("已上传"+"<span id=\"count\">"+count+"</span>"+"个文件");
|
||||
$('#attachments_<%= j params[:attachment_id] %>').remove();
|
||||
var count=$('#attachments_fields>span').length;
|
||||
if(count<=0){
|
||||
$("#upload_file_count").text(<%= l(:label_no_file_uploaded)%>);
|
||||
$(".remove_all").remove();
|
||||
}else{
|
||||
$("#upload_file_count").html("已上传"+"<span id=\"count\">"+count+"</span>"+"个文件");
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
<style type="text/css">
|
||||
#preview{width:360px;height:360px;border:1px solid #000;overflow:hidden;}
|
||||
#imghead {filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
function previewImage(file)
|
||||
{
|
||||
var MAXWIDTH = 360;
|
||||
var MAXHEIGHT = 360;
|
||||
var div = document.getElementById('preview');
|
||||
if (file.files && file.files[0])
|
||||
{
|
||||
div.innerHTML = '<img id=imghead>';
|
||||
var img = document.getElementById('imghead');
|
||||
img.onload = function(){
|
||||
var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight);
|
||||
img.width = rect.width;
|
||||
img.height = rect.height;
|
||||
img.style.marginLeft = rect.left+'px';
|
||||
img.style.marginTop = rect.top+'px';
|
||||
}
|
||||
var reader = new FileReader();
|
||||
reader.onload = function(evt){img.src = evt.target.result;}
|
||||
reader.readAsDataURL(file.files[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
var sFilter='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="';
|
||||
file.select();
|
||||
var src = document.selection.createRange().text;
|
||||
div.innerHTML = '<img id=imghead>';
|
||||
var img = document.getElementById('imghead');
|
||||
img.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = src;
|
||||
var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight);
|
||||
status =('rect:'+rect.top+','+rect.left+','+rect.width+','+rect.height);
|
||||
div.innerHTML = "<div id=divhead style='width:"+rect.width+"px;height:"+rect.height+"px;margin-top:"+rect.top+"px;margin-left:"+rect.left+"px;"+sFilter+src+"\"'></div>";
|
||||
}
|
||||
}
|
||||
function clacImgZoomParam( maxWidth, maxHeight, width, height ){
|
||||
var param = {top:0, left:0, width:width, height:height};
|
||||
if( width>maxWidth || height>maxHeight )
|
||||
{
|
||||
rateWidth = width / maxWidth;
|
||||
rateHeight = height / maxHeight;
|
||||
|
||||
if( rateWidth > rateHeight )
|
||||
{
|
||||
param.width = maxWidth;
|
||||
param.height = Math.round(height / rateWidth);
|
||||
}else
|
||||
{
|
||||
param.width = Math.round(width / rateHeight);
|
||||
param.height = maxHeight;
|
||||
}
|
||||
}
|
||||
|
||||
param.left = Math.round((maxWidth - param.width) / 2);
|
||||
param.top = Math.round((maxHeight - param.height) / 2);
|
||||
return param;
|
||||
}
|
||||
</script>
|
||||
<div id="preview">
|
||||
<img id="imghead" width=100 height=100 border=0 src="file:///C:/Users/whimlex/Downloads/1.jpg">
|
||||
</div>
|
||||
<br/>
|
||||
<input type="file" onchange="previewImage(this)" />
|
@ -1,4 +1,4 @@
|
||||
var imgSpan = $('#avatar_image');
|
||||
|
||||
imgSpan.attr({"src":'<%= @urlfile.to_s << "?" << Time.now.to_s%>'});
|
||||
imgSpan.attr({"src":'<%= "#{@urlfile.to_s}?#{Time.now.to_i}" %>'});
|
||||
|
||||
|
@ -1,201 +1,201 @@
|
||||
<!--modified by huang-->
|
||||
<script type="text/javascript">
|
||||
function ShowCountDown(year,month,day,divname)
|
||||
{
|
||||
var now = new Date();
|
||||
var endDate = new Date(year, month-1, day);
|
||||
var leftTime=endDate.getTime()-now.getTime();
|
||||
var leftsecond = parseInt(leftTime/1000);
|
||||
var day1=Math.floor(leftsecond/(60*60*24));
|
||||
var hour=Math.floor((leftsecond-day1*24*60*60)/3600);
|
||||
var minute=Math.floor((leftsecond-day1*24*60*60-hour*3600)/60);
|
||||
var second=Math.floor(leftsecond-day1*24*60*60-hour*3600-minute*60);
|
||||
$("#"+divname).html("<span style='color: #acaeb1;'>作品提交还剩 :</span> <span style='color: red;'>"
|
||||
+day1+" </span><span style='color: #acaeb1;'>天</span><span style='color: red;'> "
|
||||
+hour+" </span><span style='color: #acaeb1;'>时</span><span style='color: red;'> "
|
||||
+minute+" </span><span style='color: #acaeb1;'>分</span><span style='color: red;'> "
|
||||
+second+" </span><span style='color: #acaeb1;'>秒</span>");
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.span_wping{}
|
||||
.span_wping a{
|
||||
margin-top: 18px;
|
||||
margin-bottom: 3px;
|
||||
width: 43px;
|
||||
height: 23px;
|
||||
background: #15bccf;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 5px !important;
|
||||
}
|
||||
.span_wping a:hover{ background-color:#03a1b3;}
|
||||
</style>
|
||||
|
||||
<% if bids.blank? %>
|
||||
<%#= l(:label_uncommit_homework) %>
|
||||
暂无作业!
|
||||
<% else %>
|
||||
<% bids.each do |bid|%>
|
||||
<table class="content-text-list">
|
||||
<tr>
|
||||
<td colspan="2" valign="top" width="50" >
|
||||
<%= link_to(image_tag(url_to_avatar(bid.author), :class => 'avatar'), user_path(bid.author), :class => "avatar") %>
|
||||
</td>
|
||||
<td>
|
||||
<table width="580px" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<strong>
|
||||
<%= link_to(bid.author.lastname+bid.author.firstname, user_path(bid.author)) %>
|
||||
</strong>
|
||||
<span class="font_lighter">
|
||||
<%= l(:label_user_create_project_homework) %>
|
||||
</span>
|
||||
<span>
|
||||
<%= link_to(bid.name, course_for_bid_path(bid), :class => 'bid_path') %>
|
||||
</span>
|
||||
</td>
|
||||
<td style="width: 150px;">
|
||||
<span style="float: right">
|
||||
<% if User.current.logged? && is_cur_course_student(@course) %>
|
||||
<% cur_user_homework = cur_user_homework_for_bid(bid) %>
|
||||
<span class="span_wping">
|
||||
<% if bid.open_anonymous_evaluation == 1 %>
|
||||
<% case bid.comment_status %>
|
||||
<% when 0 %>
|
||||
<a>未开启匿评</a>
|
||||
<% when 1 %>
|
||||
<a> 匿评中.. </a>
|
||||
<% when 2 %>
|
||||
<a> 匿评结束 </a>
|
||||
<% end %>
|
||||
<% end%>
|
||||
</span>
|
||||
<% if cur_user_homework && cur_user_homework.empty? %>
|
||||
<span class="span_wping">
|
||||
<%= link_to l(:label_commit_homework),new_exercise_book_path(bid) %>
|
||||
</span>
|
||||
<% else %>
|
||||
<span class="span_wping">
|
||||
<a>已 提 交</a>
|
||||
</span>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% if (User.current.admin?||User.current.allowed_to?(:as_teacher,@course)) %>
|
||||
<% 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: '加载中...' %>
|
||||
<% when 1 %>
|
||||
<%= link_to '关闭匿评', alert_anonymous_comment_bid_path(bid), id: "#{bid.id}_stop_anonymous_comment", remote: true %>
|
||||
<% when 2 %>
|
||||
<a href="javascript:" style="background:#8e8e8e;">匿评结束</a>
|
||||
<% end %>
|
||||
</span>
|
||||
<%end%>
|
||||
<span class="span_wping">
|
||||
<%= link_to(
|
||||
l(:button_edit),
|
||||
{:action => 'edit', :controller=>'bids', :course_id =>@course.id, :bid_id => bid.id}
|
||||
) %>
|
||||
</span>
|
||||
<%#= link_to(
|
||||
l(:button_delete),
|
||||
{:action => 'homework_destroy', :controller=>'bids', :course_id => bid.id},
|
||||
:method => :post,
|
||||
:data => {:confirm => l(:text_are_you_sure)},
|
||||
:class => 'icon icon-del'
|
||||
) %>
|
||||
<% end %>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<span class="font_lighter">
|
||||
<% bidding_project = bid.biding_projects.all
|
||||
temp = []
|
||||
bidding_project.each do |pro|
|
||||
if pro.project && pro.project.project_status
|
||||
temp << pro
|
||||
end
|
||||
temp
|
||||
end
|
||||
%>
|
||||
<% if bid.homework_type == 1%>
|
||||
<%= l(:label_x_homework_project, :count => bid.homeworks.count) %>
|
||||
(
|
||||
<strong>
|
||||
<%= link_to bid.homeworks.count, course_for_bid_path(bid.id) %>
|
||||
</strong>)
|
||||
<% else %>
|
||||
<%= l(:label_x_homework_project, :count => temp.count) %>
|
||||
(
|
||||
<strong>
|
||||
<%= link_to temp.count, course_for_bid_path(bid.id) %>
|
||||
</strong>)
|
||||
<% end %>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<% if bid.reward_type.nil? or bid.reward_type == 1 %>
|
||||
<strong>
|
||||
<%= l(:label_bids_reward_method) %>
|
||||
<span style="color: #ed8924;font-family: 14px; font-family: '微软雅黑'">
|
||||
<%= l(:label_call_bonus) %>
|
||||
|
||||
<%= l(:label_RMB_sign) %>
|
||||
<%= bid.budget%>
|
||||
</span>
|
||||
</strong>
|
||||
<% elsif bid.reward_type == 2 %>
|
||||
<strong>
|
||||
<%= l(:label_bids_reward_method) %>
|
||||
<span style="color: #15bccf;font-family: 14px; font-family:' 微软雅黑'">
|
||||
<%= bid.budget%>
|
||||
</span>
|
||||
</strong>
|
||||
<% end %> <!-- <td style="color: rgb(255, 0, 0);"><strong><%#= l(:label_price) %><%#= l(:label_RMB_sign) %><%#= bid.budget%></strong></td> -->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" width="580px" >
|
||||
<span class="font_description">
|
||||
<%=h sanitize(bid.description.html_safe) %>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left" colspan="2">
|
||||
<span class="font_lighter">
|
||||
<%= l(:label_end_time) %>
|
||||
:
|
||||
<%= bid.deadline %>
|
||||
</span>
|
||||
<span style="float: right">
|
||||
<% if betweentime(bid.deadline) < 0 %>
|
||||
<span style="color: red; float: right">
|
||||
<%= l(:label_commit_limit)%>
|
||||
</span>
|
||||
<% else %>
|
||||
<script type="text/javascript">
|
||||
window.setInterval(function(){ShowCountDown(<%= bid.deadline.year%>,<%= bid.deadline.month%>,<%= bid.deadline.day + 1%>,"show_deadtime_span_<%= bid.id%>");},1000)
|
||||
</script>
|
||||
<span id="show_deadtime_span_<%= bid.id%>" style="float: right">
|
||||
</span>
|
||||
<% end %>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<div class="pagination">
|
||||
<%= pagination_links_full bid_pages %>
|
||||
<!--modified by huang-->
|
||||
<script type="text/javascript">
|
||||
function ShowCountDown(year,month,day,divname)
|
||||
{
|
||||
var now = new Date();
|
||||
var endDate = new Date(year, month-1, day);
|
||||
var leftTime=endDate.getTime()-now.getTime();
|
||||
var leftsecond = parseInt(leftTime/1000);
|
||||
var day1=Math.floor(leftsecond/(60*60*24));
|
||||
var hour=Math.floor((leftsecond-day1*24*60*60)/3600);
|
||||
var minute=Math.floor((leftsecond-day1*24*60*60-hour*3600)/60);
|
||||
var second=Math.floor(leftsecond-day1*24*60*60-hour*3600-minute*60);
|
||||
$("#"+divname).html("<span style='color: #acaeb1;'>作品提交还剩 :</span> <span style='color: red;'>"
|
||||
+day1+" </span><span style='color: #acaeb1;'>天</span><span style='color: red;'> "
|
||||
+hour+" </span><span style='color: #acaeb1;'>时</span><span style='color: red;'> "
|
||||
+minute+" </span><span style='color: #acaeb1;'>分</span><span style='color: red;'> "
|
||||
+second+" </span><span style='color: #acaeb1;'>秒</span>");
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.span_wping{}
|
||||
.span_wping a{
|
||||
margin-top: 18px;
|
||||
margin-bottom: 3px;
|
||||
width: 43px;
|
||||
height: 23px;
|
||||
background: #15bccf;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 5px !important;
|
||||
}
|
||||
.span_wping a:hover{ background-color:#03a1b3;}
|
||||
</style>
|
||||
|
||||
<% if bids.blank? %>
|
||||
<%#= l(:label_uncommit_homework) %>
|
||||
暂无作业!
|
||||
<% else %>
|
||||
<% bids.each do |bid|%>
|
||||
<table class="content-text-list">
|
||||
<tr>
|
||||
<td colspan="2" valign="top" width="50" >
|
||||
<%= link_to(image_tag(url_to_avatar(bid.author), :class => 'avatar'), user_path(bid.author), :class => "avatar") %>
|
||||
</td>
|
||||
<td>
|
||||
<table width="580px" border="0">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<strong>
|
||||
<%= link_to(bid.author.lastname+bid.author.firstname, user_path(bid.author)) %>
|
||||
</strong>
|
||||
<span class="font_lighter">
|
||||
<%= l(:label_user_create_project_homework) %>
|
||||
</span>
|
||||
<span>
|
||||
<%= link_to(bid.name, course_for_bid_path(bid), :class => 'bid_path') %>
|
||||
</span>
|
||||
</td>
|
||||
<td style="width: 150px;">
|
||||
<span style="float: right">
|
||||
<% if User.current.logged? && is_cur_course_student(@course) %>
|
||||
<% cur_user_homework = cur_user_homework_for_bid(bid) %>
|
||||
<span class="span_wping">
|
||||
<% if bid.open_anonymous_evaluation == 1 %>
|
||||
<% case bid.comment_status %>
|
||||
<% when 0 %>
|
||||
<a>未开启匿评</a>
|
||||
<% when 1 %>
|
||||
<a> 匿评中.. </a>
|
||||
<% when 2 %>
|
||||
<a> 匿评结束 </a>
|
||||
<% end %>
|
||||
<% end%>
|
||||
</span>
|
||||
<% if cur_user_homework && cur_user_homework.empty? %>
|
||||
<span class="span_wping">
|
||||
<%= link_to l(:label_commit_homework),new_exercise_book_path(bid) %>
|
||||
</span>
|
||||
<% else %>
|
||||
<span class="span_wping">
|
||||
<a>已 提 交</a>
|
||||
</span>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% if (User.current.admin?||User.current.allowed_to?(:as_teacher,@course)) %>
|
||||
<% 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: '加载中...' %>
|
||||
<% when 1 %>
|
||||
<%= link_to '关闭匿评', alert_anonymous_comment_bid_path(bid), id: "#{bid.id}_stop_anonymous_comment", remote: true %>
|
||||
<% when 2 %>
|
||||
<a href="javascript:" style="background:#8e8e8e;">匿评结束</a>
|
||||
<% end %>
|
||||
</span>
|
||||
<%end%>
|
||||
<span class="span_wping">
|
||||
<%= link_to(
|
||||
l(:button_edit),
|
||||
{:action => 'edit', :controller=>'bids', :course_id =>@course.id, :bid_id => bid.id}
|
||||
) %>
|
||||
</span>
|
||||
<%#= link_to(
|
||||
l(:button_delete),
|
||||
{:action => 'homework_destroy', :controller=>'bids', :course_id => bid.id},
|
||||
:method => :post,
|
||||
:data => {:confirm => l(:text_are_you_sure)},
|
||||
:class => 'icon icon-del'
|
||||
) %>
|
||||
<% end %>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<span class="font_lighter">
|
||||
<% bidding_project = bid.biding_projects.all
|
||||
temp = []
|
||||
bidding_project.each do |pro|
|
||||
if pro.project && pro.project.project_status
|
||||
temp << pro
|
||||
end
|
||||
temp
|
||||
end
|
||||
%>
|
||||
<% if bid.homework_type == 1%>
|
||||
<%= l(:label_x_homework_project, :count => bid.homeworks.count) %>
|
||||
(
|
||||
<strong>
|
||||
<%= link_to bid.homeworks.count, course_for_bid_path(bid.id) %>
|
||||
</strong>)
|
||||
<% else %>
|
||||
<%= l(:label_x_homework_project, :count => temp.count) %>
|
||||
(
|
||||
<strong>
|
||||
<%= link_to temp.count, course_for_bid_path(bid.id) %>
|
||||
</strong>)
|
||||
<% end %>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<% if bid.reward_type.nil? or bid.reward_type == 1 %>
|
||||
<strong>
|
||||
<%= l(:label_bids_reward_method) %>
|
||||
<span style="color: #ed8924;font-family: 14px; font-family: '微软雅黑'">
|
||||
<%= l(:label_call_bonus) %>
|
||||
|
||||
<%= l(:label_RMB_sign) %>
|
||||
<%= bid.budget%>
|
||||
</span>
|
||||
</strong>
|
||||
<% elsif bid.reward_type == 2 %>
|
||||
<strong>
|
||||
<%= l(:label_bids_reward_method) %>
|
||||
<span style="color: #15bccf;font-family: 14px; font-family:' 微软雅黑'">
|
||||
<%= bid.budget%>
|
||||
</span>
|
||||
</strong>
|
||||
<% end %> <!-- <td style="color: rgb(255, 0, 0);"><strong><%#= l(:label_price) %><%#= l(:label_RMB_sign) %><%#= bid.budget%></strong></td> -->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" width="580px" >
|
||||
<span class="font_description">
|
||||
<%=h sanitize(bid.description.html_safe) %>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: left" colspan="2">
|
||||
<span class="font_lighter">
|
||||
<%= l(:label_end_time) %>
|
||||
:
|
||||
<%= bid.deadline %>
|
||||
</span>
|
||||
<span style="float: right">
|
||||
<% if betweentime(bid.deadline) < 0 %>
|
||||
<span style="color: red; float: right">
|
||||
<%= l(:label_commit_limit)%>
|
||||
</span>
|
||||
<% else %>
|
||||
<script type="text/javascript">
|
||||
window.setInterval(function(){ShowCountDown(<%= bid.deadline.year%>,<%= bid.deadline.month%>,<%= bid.deadline.day + 1%>,"show_deadtime_span_<%= bid.id%>");},1000)
|
||||
</script>
|
||||
<span id="show_deadtime_span_<%= bid.id%>" style="float: right">
|
||||
</span>
|
||||
<% end %>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<div class="pagination">
|
||||
<%= pagination_links_full bid_pages %>
|
||||
</div>
|
@ -0,0 +1,9 @@
|
||||
<%= form_for @message, :url =>{:controller=>'messages',:action => 'new', :board_id => @board.id, :is_board => 'true'}, :html => {:multipart => true, :id => 'message-form'} do |f| %>
|
||||
|
||||
<%= render :partial => 'form_course', :locals => {:f => f} %>
|
||||
<li>
|
||||
<%= link_to l(:button_cancel), course_boards_path(@course), :class => 'grey_btn fr ml10' %>
|
||||
<a href="#" onclick="$('#message-form').submit();" class="blue_btn fr " style="margin-left: 55px"><%= l(:button_submit)%></a>
|
||||
<div class="cl"></div>
|
||||
</li>
|
||||
<% end %>
|
@ -0,0 +1,42 @@
|
||||
|
||||
<% if topic.project %>
|
||||
<%#= board_breadcrumb(@message) %>
|
||||
<!--<h3><%#= avatar(@topic.author, :size => "24") %><span style = "width:100%;word-break:break-all;word-wrap: break-word;"><%#=h @topic.subject %></span></h3>-->
|
||||
<div class="talk_new ml15">
|
||||
<ul>
|
||||
<%= form_for topic, { :as => :message,
|
||||
:url => {:controller => 'messages',:action => 'edit', :is_board => 'true',:id => topic.id, :board_id => topic.board_id},
|
||||
:html => {:multipart => true,
|
||||
:id => 'message-form' + topic.id.to_s,
|
||||
:method => :post}
|
||||
} do |f| %>
|
||||
<%= render :partial => 'form_project',
|
||||
:locals => {:f => f, :replying => !topic.parent.nil?} %>
|
||||
<a href="#" onclick="$('#message-form<%= topic.id%>').submit();"class="blue_btn fl c_white" ><%= l(:button_submit)%></a>
|
||||
<%= link_to l(:button_cancel), board_message_url(topic.board, topic.root, :r => (topic.parent_id && topic.id)), :class => "blue_btn grey_btn fl c_white" %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
<% elsif topic.course %>
|
||||
<%#= course_board_breadcrumb(@message) %>
|
||||
<div class="talk_new ml15">
|
||||
<ul>
|
||||
<%= form_for topic, {
|
||||
:as => :message,
|
||||
:url => {:controller => 'messages',:action => 'edit', :is_board => 'true',:id => topic.id, :board_id => topic.board_id},
|
||||
:html => {:multipart => true,
|
||||
:id => 'message-form' + topic.id.to_s,
|
||||
:method => :post}
|
||||
} do |f| %>
|
||||
<%= render :partial => 'form_course',
|
||||
:locals => {:f => f, :replying => !topic.parent.nil?} %>
|
||||
<a href="javascript:void(0)" onclick="$('#message-form<%= topic.id%>').submit();"class="blue_btn fl c_white"><%= l(:button_submit)%></a>
|
||||
<%= link_to l(:button_cancel), board_message_url(topic.board,topic.root, :r => (topic.parent_id &&topic.id)), :class => "blue_btn grey_btn fl c_white" %>
|
||||
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
|
||||
<div id="preview" class="wiki"></div>
|
@ -0,0 +1,9 @@
|
||||
<%= form_for @message, :url =>{:controller=>'messages',:action => 'new', :board_id => @board.id, :is_board => 'true'}, :html => {:multipart => true, :id => 'message-form'} do |f| %>
|
||||
|
||||
<%= render :partial => 'form_project', :locals => {:f => f} %>
|
||||
<li>
|
||||
<%= link_to l(:button_cancel), project_boards_path(@project), :class => 'grey_btn fr ml10' %>
|
||||
<a href="#" onclick="$('#message-form').submit();" class="blue_btn fr " style="margin-left: 55px"><%= l(:button_submit)%></a>
|
||||
<div class="cl"></div>
|
||||
</li>
|
||||
<% end %>
|
@ -1,10 +1,10 @@
|
||||
$("#polls_<%= @poll.id %>").html("<%= escape_javascript(render :partial => 'poll',:locals => {:poll => @poll}) %>");
|
||||
$('#ajax-modal').html("<%= escape_javascript(render :partial => 'alert', locals: { :message => l(:label_memo_create_succ)}) %>");
|
||||
showModal('ajax-modal', '250px');
|
||||
//$('#ajax-modal').css('height','111px');
|
||||
$('#ajax-modal').siblings().remove();
|
||||
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
||||
"<a href='javascript:' onclick='close_alert_form();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
|
||||
$('#ajax-modal').parent().removeClass("alert_praise");
|
||||
$('#ajax-modal').parent().css("top","").css("left","");
|
||||
$("#polls_<%= @poll.id %>").html("<%= escape_javascript(render :partial => 'poll',:locals => {:poll => @poll}) %>");
|
||||
$('#ajax-modal').html("<%= escape_javascript(render :partial => 'alert', locals: { :message => l(:label_memo_create_succ)}) %>");
|
||||
showModal('ajax-modal', '250px');
|
||||
//$('#ajax-modal').css('height','111px');
|
||||
$('#ajax-modal').siblings().remove();
|
||||
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
||||
"<a href='javascript:' onclick='close_alert_form();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
|
||||
$('#ajax-modal').parent().removeClass("alert_praise");
|
||||
$('#ajax-modal').parent().css("top","").css("left","");
|
||||
$('#ajax-modal').parent().addClass("poll_alert_form");
|
@ -1,10 +1,10 @@
|
||||
$("#polls_<%= @poll.id %>").html("<%= escape_javascript(render :partial => 'poll',:locals => {:poll => @poll}) %>");
|
||||
$('#ajax-modal').html("<%= escape_javascript(render :partial => 'alert', locals: { :message => l(:label_poll_republish_success)}) %>");
|
||||
showModal('ajax-modal', '250px');
|
||||
//$('#ajax-modal').css('height','80px');
|
||||
$('#ajax-modal').siblings().remove();
|
||||
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
||||
"<a href='javascript:' onclick='close_alert_form();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
|
||||
$('#ajax-modal').parent().removeClass("alert_praise");
|
||||
$('#ajax-modal').parent().css("top","").css("left","");
|
||||
$("#polls_<%= @poll.id %>").html("<%= escape_javascript(render :partial => 'poll',:locals => {:poll => @poll}) %>");
|
||||
$('#ajax-modal').html("<%= escape_javascript(render :partial => 'alert', locals: { :message => l(:label_poll_republish_success)}) %>");
|
||||
showModal('ajax-modal', '250px');
|
||||
//$('#ajax-modal').css('height','80px');
|
||||
$('#ajax-modal').siblings().remove();
|
||||
$('#ajax-modal').before("<span style='float: right;cursor:pointer;'>" +
|
||||
"<a href='javascript:' onclick='close_alert_form();'><img src='/images/bid/close.png' width='26px' height='26px' /></a></span>");
|
||||
$('#ajax-modal').parent().removeClass("alert_praise");
|
||||
$('#ajax-modal').parent().css("top","").css("left","");
|
||||
$('#ajax-modal').parent().addClass("poll_alert_form");
|
@ -1,110 +1,110 @@
|
||||
<script type="text/javascript">
|
||||
// $(this).ready(function(){
|
||||
// $('.tag_show').hover(function() {
|
||||
// $(this).children("span").show();
|
||||
// }, function() {
|
||||
// $(this).children("span").hide();
|
||||
// });
|
||||
// })
|
||||
</script>
|
||||
<!-- 1代表是user类型 2代表是project类型 3代表是issue类型 4代表需求 7代表竞赛 9代表课程-->
|
||||
<% @tags = obj.reload.tag_list %>
|
||||
<% if non_list_all and (@tags.size > 0) %>
|
||||
<!-- 这里是显示的非主页的tag 所以当tag数量较多时 不必全部显示 用“更多”代替 -->
|
||||
<% if @tags.size > Setting.show_tags_length.to_i then %>
|
||||
<% i = 0 %>
|
||||
<% until i>Setting.show_tags_length.to_i do %>
|
||||
<div id="tag">
|
||||
<%= link_to @tags[i], :controller => "tags", :action => "index", :q => @tags[i], :object_flag => object_flag, :obj_id => obj.id %>
|
||||
</div>
|
||||
<% i += 1 %>
|
||||
<% end %>
|
||||
<%= more_tags(obj.id,object_flag)%>
|
||||
<% else %>
|
||||
<% @tags.each do |tag| %>
|
||||
<div id="tag">
|
||||
<%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<!-- 用来显示三大对象的主页中的tag 故是全部显示 -->
|
||||
<% if @tags.size > 0 %>
|
||||
<% @tags.each do |tag| %>
|
||||
<!--object_flag == '2'为项目 项目暂时单独出来,后面其它几个选项也需样式重构-->
|
||||
<% if object_flag == '2' %>
|
||||
<span class="re_tag f_l">
|
||||
<%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id, :class => 'pt5' %>
|
||||
<% if (ProjectInfo.find_by_project_id(obj.id)).try(:user_id) == User.current.id %>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
<% end %>
|
||||
</span>
|
||||
<% else %>
|
||||
<div id="tag">
|
||||
<span class="tag_show">
|
||||
<%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id %>
|
||||
<!-- 对用户主页 是本人 ,对项目,需求,问题是管理员 -->
|
||||
<% case object_flag %>
|
||||
<% when '1' %>
|
||||
<% if User.current.eql?(obj) %>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% when '3' %>
|
||||
<% if (ProjectInfo.find_by_project_id(obj.project_id)).try(:user_id) == User.current.id %>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% when '4' %>
|
||||
<% if obj.author_id == User.current.id %>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% when '5' %>
|
||||
<% test = Forum.find(obj.id) %>
|
||||
<% if test && test.creator_id == User.current.id %>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% when '6' %>
|
||||
<%# if (User.current.logged? &&
|
||||
User.current.admin?
|
||||
# && (@project && User.current.member_of?(@project))
|
||||
)
|
||||
%>
|
||||
<% if obj.author_id == User.current.id || User.current.admin?%>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% when '7' %>
|
||||
<% if obj.author_id == User.current.id %>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% when '9' %>
|
||||
<% if (CourseInfos.find_by_course_id(obj.id)).try(:user_id) == User.current.id %>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</span>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<script type="text/javascript">
|
||||
// $(this).ready(function(){
|
||||
// $('.tag_show').hover(function() {
|
||||
// $(this).children("span").show();
|
||||
// }, function() {
|
||||
// $(this).children("span").hide();
|
||||
// });
|
||||
// })
|
||||
</script>
|
||||
<!-- 1代表是user类型 2代表是project类型 3代表是issue类型 4代表需求 7代表竞赛 9代表课程-->
|
||||
<% @tags = obj.reload.tag_list %>
|
||||
<% if non_list_all and (@tags.size > 0) %>
|
||||
<!-- 这里是显示的非主页的tag 所以当tag数量较多时 不必全部显示 用“更多”代替 -->
|
||||
<% if @tags.size > Setting.show_tags_length.to_i then %>
|
||||
<% i = 0 %>
|
||||
<% until i>Setting.show_tags_length.to_i do %>
|
||||
<div id="tag">
|
||||
<%= link_to @tags[i], :controller => "tags", :action => "index", :q => @tags[i], :object_flag => object_flag, :obj_id => obj.id %>
|
||||
</div>
|
||||
<% i += 1 %>
|
||||
<% end %>
|
||||
<%= more_tags(obj.id,object_flag)%>
|
||||
<% else %>
|
||||
<% @tags.each do |tag| %>
|
||||
<div id="tag">
|
||||
<%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<!-- 用来显示三大对象的主页中的tag 故是全部显示 -->
|
||||
<% if @tags.size > 0 %>
|
||||
<% @tags.each do |tag| %>
|
||||
<!--object_flag == '2'为项目 项目暂时单独出来,后面其它几个选项也需样式重构-->
|
||||
<% if object_flag == '2' %>
|
||||
<span class="re_tag f_l">
|
||||
<%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id, :class => 'pt5' %>
|
||||
<% if (ProjectInfo.find_by_project_id(obj.id)).try(:user_id) == User.current.id %>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
<% end %>
|
||||
</span>
|
||||
<% else %>
|
||||
<div id="tag">
|
||||
<span class="tag_show">
|
||||
<%= link_to tag, :controller => "tags", :action => "index", :q => tag, :object_flag => object_flag, :obj_id => obj.id %>
|
||||
<!-- 对用户主页 是本人 ,对项目,需求,问题是管理员 -->
|
||||
<% case object_flag %>
|
||||
<% when '1' %>
|
||||
<% if User.current.eql?(obj) %>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% when '3' %>
|
||||
<% if (ProjectInfo.find_by_project_id(obj.project_id)).try(:user_id) == User.current.id %>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% when '4' %>
|
||||
<% if obj.author_id == User.current.id %>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% when '5' %>
|
||||
<% test = Forum.find(obj.id) %>
|
||||
<% if test && test.creator_id == User.current.id %>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% when '6' %>
|
||||
<%# if (User.current.logged? &&
|
||||
User.current.admin?
|
||||
# && (@project && User.current.member_of?(@project))
|
||||
)
|
||||
%>
|
||||
<% if obj.author_id == User.current.id || User.current.admin?%>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% when '7' %>
|
||||
<% if obj.author_id == User.current.id %>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% when '9' %>
|
||||
<% if (CourseInfos.find_by_course_id(obj.id)).try(:user_id) == User.current.id %>
|
||||
<span class='del'>
|
||||
<%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
|
||||
:taggable_id => obj.id, :taggable_type => object_flag %>
|
||||
</span>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</span>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
@ -1,11 +1,11 @@
|
||||
<% selector = ".#{watcher_css(watched)}" %>
|
||||
<% id_selector = "#{watcher_css(watched)}" %>
|
||||
if($("<%= selector %>").get(0) == undefined)
|
||||
{
|
||||
$("#<%= id_selector %>").each(function(){$(this).replaceWith("<%= escape_javascript watcher_link_for_project(watched, user) %>")});
|
||||
}
|
||||
else
|
||||
{
|
||||
$("<%= selector %>").each(function(){$(this).replaceWith("<%= escape_javascript watcher_link(watched, user) %>")});
|
||||
}
|
||||
|
||||
<% selector = ".#{watcher_css(watched)}" %>
|
||||
<% id_selector = "#{watcher_css(watched)}" %>
|
||||
if($("<%= selector %>").get(0) == undefined)
|
||||
{
|
||||
$("#<%= id_selector %>").each(function(){$(this).replaceWith("<%= escape_javascript watcher_link_for_project(watched, user) %>")});
|
||||
}
|
||||
else
|
||||
{
|
||||
$("<%= selector %>").each(function(){$(this).replaceWith("<%= escape_javascript watcher_link(watched, user) %>")});
|
||||
}
|
||||
|
||||
|
@ -1,25 +1,25 @@
|
||||
<li style="overflow:hidden;word-break:break-all;height:100%;word-wrap: break-word;" class='<%= cycle("odd", "even") %>'>
|
||||
<div style="float: left;">
|
||||
<%= image_tag(get_project_avatar(project), :class => "avatar-4") %>
|
||||
</div>
|
||||
<!-- 上左下右 -->
|
||||
<div style="float: left; margin-left: 10px; width: 380px;">
|
||||
<% unless project.is_public %>
|
||||
<span class="private_project">
|
||||
<%= l(:label_private) %>
|
||||
</span>
|
||||
<% end %>
|
||||
<%= link_to( project.name, project_path(project.id), :class => "d-g-blue d-p-project-name",:title => "#{project.name}" )%>
|
||||
(<%= link_to l(:label_project_member_amount, :count => projectCount(project)), project_member_path(project) ,:course =>'0' %>)
|
||||
</div>
|
||||
<div style=" float: left;margin:5px; margin-left: 10px; width: 380px;min-height: 42px;">
|
||||
<span class='font_lighter' title ='<%= project.short_description%>'> <%=project.description.truncate(90, omission: '...')%> </span>
|
||||
</div>
|
||||
<div >
|
||||
<%= content_tag "span", l(:label_project_score)+ ":" + red_project_scores(project).to_i.to_s,
|
||||
:style => "cursor: pointer; display: inline-block; float: right; color: #ec6300;",
|
||||
:title => l(:label_project_score_tips),
|
||||
:class => "tooltip",
|
||||
:id => "tooltip-#{project.id}" %>
|
||||
</div>
|
||||
<li style="overflow:hidden;word-break:break-all;height:100%;word-wrap: break-word;" class='<%= cycle("odd", "even") %>'>
|
||||
<div style="float: left;">
|
||||
<%= image_tag(get_project_avatar(project), :class => "avatar-4") %>
|
||||
</div>
|
||||
<!-- 上左下右 -->
|
||||
<div style="float: left; margin-left: 10px; width: 380px;">
|
||||
<% unless project.is_public %>
|
||||
<span class="private_project">
|
||||
<%= l(:label_private) %>
|
||||
</span>
|
||||
<% end %>
|
||||
<%= link_to( project.name, project_path(project.id), :class => "d-g-blue d-p-project-name",:title => "#{project.name}" )%>
|
||||
(<%= link_to l(:label_project_member_amount, :count => projectCount(project)), project_member_path(project) ,:course =>'0' %>)
|
||||
</div>
|
||||
<div style=" float: left;margin:5px; margin-left: 10px; width: 380px;min-height: 42px;">
|
||||
<span class='font_lighter' title ='<%= project.short_description%>'> <%=project.description.truncate(90, omission: '...')%> </span>
|
||||
</div>
|
||||
<div >
|
||||
<%= content_tag "span", l(:label_project_score)+ ":" + red_project_scores(project).to_i.to_s,
|
||||
:style => "cursor: pointer; display: inline-block; float: right; color: #ec6300;",
|
||||
:title => l(:label_project_score_tips),
|
||||
:class => "tooltip",
|
||||
:id => "tooltip-#{project.id}" %>
|
||||
</div>
|
||||
</li>
|
@ -1 +1 @@
|
||||
Rails.application.config.session_store ActionDispatch::Session::CacheStore, :expire_after => 20.minutes, :key => '_trustie_session', :domain => :all
|
||||
Rails.application.config.session_store ActionDispatch::Session::CacheStore, :expire_after => 90.minutes, :key => '_trustie_session', :domain => :all
|
||||
|
@ -0,0 +1,5 @@
|
||||
class AddIndexToHomeworkattachBidId < ActiveRecord::Migration
|
||||
def change
|
||||
add_index(:homework_attaches,:bid_id)
|
||||
end
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
class AddIndexToStudentforcourseStudentId < ActiveRecord::Migration
|
||||
def change
|
||||
add_index(:students_for_courses,:student_id)
|
||||
end
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
class AddIndexToStudentforcourseCourseId < ActiveRecord::Migration
|
||||
def change
|
||||
add_index(:students_for_courses,:course_id)
|
||||
end
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
class AddIndexToHomeworkforcourseCourseId < ActiveRecord::Migration
|
||||
def change
|
||||
add_index(:homework_for_courses,:course_id)
|
||||
end
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
class AddIndexToHomeworkforcourseBidId < ActiveRecord::Migration
|
||||
def change
|
||||
add_index(:homework_for_courses,:bid_id)
|
||||
end
|
||||
end
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,11 @@
|
||||
desc "compress and backup avatar"
|
||||
task :compress_avatar => :environment do
|
||||
path = File.join(Rails.root, "public/images/avatars/User")
|
||||
Dir.foreach(path) do |f|
|
||||
if f.to_s =~ /^\d+$/
|
||||
puts f
|
||||
image = Trustie::Utils::Image.new(File.join(path,f), true)
|
||||
image.compress(300)
|
||||
end
|
||||
end
|
||||
end
|
@ -1 +1,2 @@
|
||||
require 'trustie/utils'
|
||||
require 'trustie/utils'
|
||||
require 'trustie/utils/image'
|
||||
|
@ -0,0 +1,35 @@
|
||||
#coding=utf-8
|
||||
|
||||
module Trustie
|
||||
module Utils
|
||||
class Image
|
||||
def initialize(file, bak)
|
||||
@file = file
|
||||
@bak = bak
|
||||
end
|
||||
|
||||
def compress(size=300)
|
||||
backup if @bak
|
||||
begin
|
||||
f = Magick::ImageList.new(@file)
|
||||
if f.format != 'GIF'
|
||||
width = size
|
||||
if f[0].columns > width
|
||||
proportion = (width/f[0].columns.to_f)
|
||||
height = (f[0].rows*proportion)
|
||||
f.resize_to_fill!(width,height.to_i)
|
||||
f.write(@file)
|
||||
end
|
||||
end
|
||||
rescue Exception => e
|
||||
logger.error "[Error] compress : ===> #{e}"
|
||||
end
|
||||
end
|
||||
|
||||
def backup
|
||||
FileUtils.cp @file, "#{@file}.bak"
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
@ -1,6 +1,6 @@
|
||||
source 'http://ruby.taobao.org'
|
||||
|
||||
gem 'rich', '1.4.6'
|
||||
gem 'kaminari'
|
||||
gem 'htmlentities'
|
||||
gem 'paperclip', '~> 3.5.4'
|
||||
source 'http://ruby.taobao.org'
|
||||
|
||||
gem 'rich', '1.4.6'
|
||||
gem 'kaminari'
|
||||
gem 'htmlentities'
|
||||
gem 'paperclip', '~> 3.5.4'
|
||||
|
@ -0,0 +1,37 @@
|
||||
KindEditor.plugin('paste', function(K) {
|
||||
var editor = this,
|
||||
name = 'paste';
|
||||
var contentWindow = document.getElementsByTagName('iframe')[0].contentWindow;
|
||||
contentWindow.document.getElementsByTagName('body')[0].onpaste = function(event) {
|
||||
// use event.originalEvent.clipboard for newer chrome versions
|
||||
var items = (event.clipboardData || event.originalEvent.clipboardData).items;
|
||||
console.log(JSON.stringify(items)); // will give you the mime types
|
||||
// find pasted image among pasted items
|
||||
var blob = null;
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
if (items[i].type.indexOf("image") === 0) {
|
||||
blob = items[i].getAsFile();
|
||||
}
|
||||
}
|
||||
// load image if there is a pasted image
|
||||
if (blob !== null) {
|
||||
var reader = new FileReader();
|
||||
reader.onload = function(event) {
|
||||
console.log(event.target.result); // data url!
|
||||
var data = new FormData();
|
||||
data.append("imgFile", blob, "imageFilename.png");
|
||||
$.ajax({
|
||||
url: '/kindeditor/upload?dir=image',
|
||||
contentType: false,
|
||||
type: 'POST',
|
||||
data: data,
|
||||
processData: false,
|
||||
success: function(data) {
|
||||
editor.exec('insertimage', JSON.parse(data).url);
|
||||
}
|
||||
});
|
||||
};
|
||||
reader.readAsDataURL(blob);
|
||||
}
|
||||
}
|
||||
});
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue