diff --git a/app/views/issues/_issue_replies.html.erb b/app/views/issues/_issue_replies.html.erb
index 344987913..070238a81 100644
--- a/app/views/issues/_issue_replies.html.erb
+++ b/app/views/issues/_issue_replies.html.erb
@@ -40,7 +40,6 @@
l(:button_delete),
{:controller => 'issues',:action => 'delete_journal', :id => issue.id,:journal_id=>comment.id},
:method => :get,
- :remote=>true,
:class => 'fr mr20',
:data => {:confirm => l(:text_are_you_sure)},
:title => l(:button_delete)
@@ -73,7 +72,7 @@
<%= render :partial => 'attachments/issue_reply', :locals => {:container => @issue} %>
-
+
发送
<% end %>
diff --git a/app/views/issues/_jounal_refresh.js.erb b/app/views/issues/_jounal_refresh.js.erb
new file mode 100644
index 000000000..0945ba04d
--- /dev/null
+++ b/app/views/issues/_jounal_refresh.js.erb
@@ -0,0 +1,21 @@
+$("#reply_div_<%= @issue.id %>").html("<%= escape_javascript(render :partial => 'issues/issue_replies', :locals => {:issue => @issue}) %>");
+$("#issue_detail_show").html('<%= escape_javascript(render :partial => 'issues/detail') %>')
+$("#issue_edit_show").html('<%= escape_javascript(render :partial => 'issues/edit') %>')
+$("#div_issue_attachment_<%=@issue.id %>").html("<%= escape_javascript(render :partial => 'issues/issue_attachments', :locals => {:issue => @issue}) %>");
+sd_create_editor_from_data(<%= @issue.id %>, null, "100%", "<%= @issue.class.name %>");
+issue_desc_editor = KindEditor.create('#issue_description',
+ {"width":"85%",
+ "resizeType":0,
+ "no_label":true,
+ "at_id":<%= @issue.project_id%>,
+ "at_type":"Project",
+ "autoHeightMode":true,
+ "afterCreate":"eval(function(){ if(typeof enablePasteImg ==='function'){enablePasteImg(self);};if(typeof enableAt ==='function'){enableAt(self, \"<%=@issue.project_id %>\", 'Project');}; this.loadPlugin('autoheight')})",
+ "emotionsBasePath":'<%= Setting.host_name%>',
+ "height":300,
+ "allowFileManager":true,
+ "uploadJson":"/kindeditor/upload",
+ "fileManagerJson":"/kindeditor/filemanager"});
+// $("#issue_test_<%#= @issue.id %>").html("<%#= escape_javascript(render :partial => 'issues/edit', :locals => {:issue => Issue.find( @issue_id)}) %>");
+$(".homepagePostReplyBannerCount").html('回复(<%= @issue.journals.count %>)');
+sd_create_editor_from_data(<%= @issue.id%>, null, "100%","<%= @issue.class.name %>");
\ No newline at end of file
diff --git a/app/views/issues/add_journal.js.erb b/app/views/issues/add_journal.js.erb
index 838e2d83d..eeaa52faa 100644
--- a/app/views/issues/add_journal.js.erb
+++ b/app/views/issues/add_journal.js.erb
@@ -1,25 +1,5 @@
<% if @issue_id %> //issue详情中回复
- $("#reply_div_<%= @issue_id %>").html("<%= escape_javascript(render :partial => 'issues/issue_replies', :locals => {:issue => Issue.find( @issue_id),:replies_all_i=>0}) %>");
- $("#div_issue_attachment_<%=@issue.id %>").html("<%= escape_javascript(render :partial => 'issues/issue_attachments', :locals => {:issue => Issue.find( @issue_id)}) %>");
- $("#issue_detail_show").html('<%= escape_javascript(render :partial => 'issues/detail') %>')
- $("#issue_edit_show").html('<%= escape_javascript(render :partial => 'issues/edit') %>')
- sd_create_editor_from_data(<%= @issue.id %>, null, "100%", "<%= @issue.class.name %>");
- issue_desc_editor = KindEditor.create('#issue_description',
- {"width":"85%",
- "resizeType":0,
- "no_label":true,
- "at_id":<%= @issue.project_id%>,
- "at_type":"Project",
- "autoHeightMode":true,
- "afterCreate":"eval(function(){ if(typeof enablePasteImg ==='function'){enablePasteImg(self);};if(typeof enableAt ==='function'){enableAt(self, \"<%=@issue.project_id %>\", 'Project');}; this.loadPlugin('autoheight')})",
- "emotionsBasePath":'<%= Setting.host_name%>',
- "height":300,
- "allowFileManager":true,
- "uploadJson":"/kindeditor/upload",
- "fileManagerJson":"/kindeditor/filemanager"});
-// $("#issue_test_<%#= @issue.id %>").html("<%#= escape_javascript(render :partial => 'issues/edit', :locals => {:issue => Issue.find( @issue_id)}) %>");
- $(".homepagePostReplyBannerCount").html('回复(<%= Issue.find( @issue_id).journals.count %>)')
- sd_create_editor_from_data(<%= @issue.id %>, null, "100%","<%=@issue.class.name%>");
+ <%= render "jounal_refresh" %>
<%else%>
$("#div_user_issue_reply_<%=@user_activity_id %>").html("<%= escape_javascript(render :partial => 'users/project_issue_reply', :locals => {:activity => @issue, :user_activity_id => @user_activity_id}) %>");
sd_create_editor_from_data(<%= @user_activity_id %>, null, "100%", "UserActivity");
diff --git a/app/views/issues/add_reply.js.erb b/app/views/issues/add_reply.js.erb
index a818830cd..22581e37a 100644
--- a/app/views/issues/add_reply.js.erb
+++ b/app/views/issues/add_reply.js.erb
@@ -1,8 +1,8 @@
<% if @user_activity_id %>
+<%# 动态中 %>
$("#div_user_issue_reply_<%=@user_activity_id%>").html("<%= escape_javascript(render :partial => 'users/project_issue_reply', :locals => {:activity => @issue, :user_activity_id => @user_activity_id}) %>");
sd_create_editor_from_data(<%= @user_activity_id%>, null, "100%","<%=@issue.class.name%>");
<% else %>
- $("#reply_div_<%= @issue.id %>").html("<%= escape_javascript(render :partial => 'issues/issue_replies', :locals => {:issue => @issue}) %>");
- $(".homepagePostReplyBannerCount").html('回复(<%= @issue.journals.count %>)');
- sd_create_editor_from_data(<%= @issue.id%>, null, "100%","<%=@issue.class.name%>");
+<%# issue详情 %>
+ <%= render "jounal_refresh" %>
<% end %>
\ No newline at end of file
diff --git a/app/views/issues/delete_journal.js.erb b/app/views/issues/delete_journal.js.erb
index 120c4bf7e..d105fe90f 100644
--- a/app/views/issues/delete_journal.js.erb
+++ b/app/views/issues/delete_journal.js.erb
@@ -2,7 +2,5 @@
$("#div_user_issue_reply_<%=@user_activity_id%>").html("<%= escape_javascript(render :partial => 'users/project_issue_reply', :locals => {:activity => @issue, :user_activity_id => @user_activity_id}) %>");
sd_create_editor_from_data(<%= @user_activity_id%>, null, "100%","<%=@issue.class.name%>");
<% else %>
-$("#reply_div_<%= @issue.id %>").html("<%= escape_javascript(render :partial => 'issues/issue_replies', :locals => {:issue => @issue,:replies_all_i=>0}) %>");
-$(".homepagePostReplyBannerCount").html('回复(<%= @issue.journals.count %>)')
-sd_create_editor_from_data(<%= @issue.id%>, null, "100%","<%=@issue.class.name%>");
+ <%= render "jounal_refresh" %>
<% end %>
\ No newline at end of file
diff --git a/app/views/layouts/_course_base_info.html.erb b/app/views/layouts/_course_base_info.html.erb
index 04162fc9c..546b27421 100644
--- a/app/views/layouts/_course_base_info.html.erb
+++ b/app/views/layouts/_course_base_info.html.erb
@@ -3,8 +3,10 @@
<% student_num = studentCount(@course) %>
<% course_file_num = visable_attachemnts_incourse(@course).count %>
- <%=link_to @course.syllabus.title, syllabus_path(@course.syllabus_id), :class => 'sy_cgrey' %>
- >
+ <% if @course.syllabus %>
+ <%=link_to @course.syllabus.title, syllabus_path(@course.syllabus_id), :class => 'sy_cgrey' %>
+ >
+ <% end %>
<%=link_to @course.name, course_path(@course), :class => 'sy_cgrey' %>
@@ -16,7 +18,9 @@
<%= link_to "班级配置", {:controller => 'courses', :action => 'settings', :id => @course}, :class => "postOptionLink" %>
<%= link_to @course.is_public == 0 ? "设为公开" : "设为私有", {:controller => 'courses', :action => 'private_or_public', :id => @course},:remote=>true,:confirm=>"您确定要设置为"+(@course.is_public == 0 ? "公开" : "私有")+"吗", :class => "postOptionLink" %>
<%= link_to "复制学期", copy_course_course_path(@course.id),:remote=>true, :class => "postOptionLink" %>
- <%= link_to "进入课程", syllabus_path(@course.syllabus), :class => "postOptionLink", :target => "_blank" %>
+ <% if @course.syllabus %>
+ <%= link_to "进入课程", syllabus_path(@course.syllabus), :class => "postOptionLink", :target => "_blank" %>
+ <% end %>
@@ -28,7 +32,15 @@
<%= image_tag(url_to_avatar(@course), :width => "110", :height => "110", :alt => "班级logo") %>
-
邀请码<%=@course.generate_invite_code %>
+
邀 请 码
+
+ <% if User.current.admin? || User.current.member_of_course?(@course) %>
+ <%=@course.generate_invite_code %>
+ <% else %>
+ 请询问老师
+ <% end %>
+
+
diff --git a/app/views/my/account.html.erb b/app/views/my/account.html.erb
index f35d47079..46e8e015a 100644
--- a/app/views/my/account.html.erb
+++ b/app/views/my/account.html.erb
@@ -369,7 +369,7 @@
function apply_add_school(){
var htmlvalue = "<%= escape_javascript( render :partial => 'my/apply_add_school' )%>";
pop_up_box(htmlvalue,580,20,48);
-
+ $("#schoolname").val($("input[name='province']").val());
}
function add_school(name){
$.ajax({
diff --git a/app/views/student_work/_programing_work_show.html.erb b/app/views/student_work/_programing_work_show.html.erb
index c111fbe48..c4df9e715 100644
--- a/app/views/student_work/_programing_work_show.html.erb
+++ b/app/views/student_work/_programing_work_show.html.erb
@@ -26,7 +26,7 @@
编程代码:
- <%= work.description ? work.description : "该作品尚未提交相关内容。"%>
+
<%= work.description if work.description%>
diff --git a/app/views/student_work/_show.html.erb b/app/views/student_work/_show.html.erb
index 039baa386..484e8eb0e 100644
--- a/app/views/student_work/_show.html.erb
+++ b/app/views/student_work/_show.html.erb
@@ -59,14 +59,9 @@
内容:
- <% com_contents = work.work_status %>
- <% if com_contents != 0 && work.description %>
-
- <%= work.description.html_safe %>
-
- <% else %>
- 该作品未在线下完成提交
- <% end %>
+
+ <%= work.description.html_safe if work.description%>
+
diff --git a/app/views/wechats/user_activities.html.erb b/app/views/wechats/user_activities.html.erb
index d21449648..f5cfb8250 100644
--- a/app/views/wechats/user_activities.html.erb
+++ b/app/views/wechats/user_activities.html.erb
@@ -18,6 +18,8 @@
window.g_redirect_path = '<%= @path %>';
<% if @course_id %>
window.g_courseid = <%= @course_id %>;
+ <% elsif @project_id %>
+ window.g_projectid = <%= @project_id %>;
<% end %>
diff --git a/config/locales/courses/zh.yml b/config/locales/courses/zh.yml
index 9a07e0fa8..ac7e1b4a3 100644
--- a/config/locales/courses/zh.yml
+++ b/config/locales/courses/zh.yml
@@ -37,7 +37,7 @@ zh:
label_message_acts: 论坛动态
label_journalsForMessage_acts: 留言动态
label_poll_acts: 问卷动态
- label_all_cats: 全部动态
+ label_all_cats: 班级动态
#
# 课程托管平台主页
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index f80aa6bb4..df9c26895 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -2141,21 +2141,21 @@ zh:
label_resource_belongs_project: 所属项目
#微信模板消息
- label_new_homework_template: 您有新作业了
- label_update_homework_template: 您的作业已被修改
- label_course_topic_template: 课程问答区有新帖子发布了
- label_topic_comment_template: 您的帖子有新回复了
- label_project_topic_template: 项目讨论区有新帖子发布了
- label_issue_comment_template: 您的缺陷有新回复了
- label_notice_comment_template: 您的课程通知有新回复了
- label_news_comment_template: 您的项目新闻有新回复了
- label_homework_comment_template: 您的作业有新回复了
- label_new_second_comment_template: 您有新回复了
- label_new_journals_template: 您有新留言了
- label_journals_comment_template: 您的留言有新回复了
- label_blog_comment_template: 您的博客有新回复了
- label_new_blog_template: 有新博客了
- label_new_issue_template: 有新的问题动态了
- label_new_notice_template: 您的课程有新通知了
+ label_new_homework_template: 您有新作业了。
+ label_update_homework_template: 您的作业已被修改。
+ label_course_topic_template: 课程问答区有新帖子发布了。
+ label_topic_comment_template: 您的帖子有新回复了。
+ label_project_topic_template: 项目讨论区有新帖子发布了。
+ label_issue_comment_template: 您的缺陷有新回复了。
+ label_notice_comment_template: 您的课程通知有新回复了。
+ label_news_comment_template: 您的项目新闻有新回复了。
+ label_homework_comment_template: 您的作业有新回复了。
+ label_new_second_comment_template: 您有新回复了。
+ label_new_journals_template: 您有新留言了。
+ label_journals_comment_template: 您的留言有新回复了。
+ label_blog_comment_template: 您的博客有新回复了。
+ label_new_blog_template: 有新博客了。
+ label_new_issue_template: 有新的问题动态了。
+ label_new_notice_template: 您的课程有新通知了。
#edit yk
label_code_work_tests: 代码测试列表
diff --git a/config/menu.yml b/config/menu.yml
index cc799b531..52272e8a0 100644
--- a/config/menu.yml
+++ b/config/menu.yml
@@ -11,9 +11,9 @@ button:
name: "我的课程"
url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=class_list#wechat_redirect"
-
- type: "click"
+ type: "view"
name: "我的项目"
- key: "PROJECT"
+ url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=project_list#wechat_redirect"
-
type: "view"
name: "我的宝库"
@@ -30,11 +30,11 @@ button:
type: "click"
name: "加入项目"
key: "JOIN_PROJECT"
- -
- type: "click"
- name: "反馈"
- key: "FEEDBACK"
-
type: "view"
name: "历史推文"
url: "http://mp.weixin.qq.com/mp/getmasssendmsg?__biz=MzIwOTM2NDkxMA==#wechat_webview_type=1&wechat_redirect"
+ -
+ type: "click"
+ name: "联系我们"
+ key: "FEEDBACK"
diff --git a/config/menu.yml.production b/config/menu.yml.production
index 1128f9961..f97c27d7d 100644
--- a/config/menu.yml.production
+++ b/config/menu.yml.production
@@ -2,18 +2,22 @@ button:
-
type: "view"
name: "我的动态"
- url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=http://www.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=activities#wechat_redirect"
+ url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=activities#wechat_redirect"
-
- name: "我的课程"
+ name: "我的群组"
sub_button:
-
type: "view"
- name: "课程"
- url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=http://www.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=class_list#wechat_redirect"
+ name: "我的课程"
+ url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=class_list#wechat_redirect"
-
type: "view"
- name: "资源"
- url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=http://www.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=myresource#wechat_redirect"
+ name: "我的项目"
+ url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=project_list#wechat_redirect"
+ -
+ type: "view"
+ name: "我的宝库"
+ url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=myresource#wechat_redirect"
-
name: "更多"
@@ -24,9 +28,13 @@ button:
key: "JOIN_CLASS"
-
type: "click"
- name: "反馈"
- key: "FEEDBACK"
+ name: "加入项目"
+ key: "JOIN_PROJECT"
-
type: "view"
name: "历史推文"
url: "http://mp.weixin.qq.com/mp/getmasssendmsg?__biz=MzIwOTM2NDkxMA==#wechat_webview_type=1&wechat_redirect"
+ -
+ type: "click"
+ name: "联系我们"
+ key: "FEEDBACK"
diff --git a/config/menu.yml.test b/config/menu.yml.test
index 521ff290a..bdc47ba8d 100644
--- a/config/menu.yml.test
+++ b/config/menu.yml.test
@@ -2,22 +2,22 @@ button:
-
type: "view"
name: "我的动态"
- url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.forge.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=activities#wechat_redirect"
+ url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.forge.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=activities#wechat_redirect"
-
name: "我的群组"
sub_button:
-
type: "view"
name: "我的课程"
- url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.forge.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=class_list#wechat_redirect"
+ url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.forge.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=class_list#wechat_redirect"
-
- type: "click"
+ type: "view"
name: "我的项目"
- key: "PROJECT"
+ url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.forge.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=project_list#wechat_redirect"
-
type: "view"
name: "我的宝库"
- url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.forge.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=myresource#wechat_redirect"
+ url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.forge.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=myresource#wechat_redirect"
-
name: "更多"
@@ -30,11 +30,11 @@ button:
type: "click"
name: "加入项目"
key: "JOIN_PROJECT"
- -
- type: "click"
- name: "反馈"
- key: "FEEDBACK"
-
type: "view"
name: "历史推文"
url: "http://mp.weixin.qq.com/mp/getmasssendmsg?__biz=MzIwOTM2NDkxMA==#wechat_webview_type=1&wechat_redirect"
+ -
+ type: "click"
+ name: "联系我们"
+ key: "FEEDBACK"
diff --git a/config/routes.rb b/config/routes.rb
index 2cc2bd906..b07600400 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1074,6 +1074,7 @@ RedmineApp::Application.routes.draw do
get 'admin/approve_applied_schools'
post 'admin/edit_applied_schools'
get 'admin/all_schools'
+ get 'admin/apply_shcool_sort', as: :apply_shcool_sort
delete 'admin/delete_applied_schools'
get 'admin/leave_messages'
diff --git a/config/wechat.yml b/config/wechat.yml.template
similarity index 54%
rename from config/wechat.yml
rename to config/wechat.yml.template
index b8bf670a1..02ec8db55 100644
--- a/config/wechat.yml
+++ b/config/wechat.yml.template
@@ -2,19 +2,11 @@ default: &default
# corpid: "corpid"
# corpsecret: "corpsecret"
# agentid: 1
-#
-#- # guange test
- #appid: "wxf694495398c7d470"
- #secret: "743e038392f1d89540e95f8f7645849a"
#production
appid: "wx8e1ab05163a28e37"
secret: "beb4d3bc4b32b3557811680835357841"
- #test
-# appid: "wxc09454f171153c2d"
-# secret: "dff5b606e34dcafe24163ec82c2715f8"
-
token: "123456"
access_token: "1234567"
encrypt_mode: false # if true must fill encoding_aes_key
@@ -22,24 +14,14 @@ default: &default
#production
encoding_aes_key: "QGfP13YP4BbQGkkrlYuxpn4ZIDXpBJww4fxl8CObvNw"
jsapi_ticket: "C:/Users/[user_name]/wechat_jsapi_ticket"
-#
-# #template
+
+ #template
binding_succ_notice: "jjpDrgFErnmkrE9tf2M3o0t31ZrJ7mr0YtuE_wyLaMc"
journal_notice: "uC1zAw4F2q6HTA3Pcj8VUO6wKKKiYFwnPJB4iXxpdoM"
homework_message_notice: "tCf7teCVqc2vl2LZ_hppIdWmpg8yLcrI8XifxYePjps"
class_notice: "MQ_mFupbXP-9jWbeHT3C5xqNBvPo8EIlNv4ULakSpJA"
create_class_notice: "2GtJJGzzNlNy2i0UrsjEDlvfSVIUXQfSo47stpcQAVw"
-
- #test
-# encoding_aes_key: "QyocNOkRmrT5HzBpCG54EVPUQjk86nJapXNVDQm6Yy6"
-# jsapi_ticket: "C:/Users/[user_name]/wechat_jsapi_ticket"
-#
-# #template
-# binding_succ_notice: "n4KLwcWNrIMYkKxWL2hUwzunm5RTT54EbWem2MIUapU"
-# journal_notice: "XpHHYkqSGkwuF9vHthRdmPQLvCFRQ4_NbRBP12T7ciE"
-# homework_message_notice: "Kom0TsYYKsNKCS6luweYVRo9z-mH0wRPr24b1clGCPQ"
-# class_notice: "8LVu33l6bP-56SDomVgHn-yJc57YpCwwJ81rAJgRONk"
-# create_class_notice: "9CDIvHIKiGwPEQWRw_-wieec1o50tMXQPPZIfECKu0I"
+ create_project_notice: "jYu0iimbDpgWYZaTLXioZe2lvqoWTdKnUPyphTJ1mxs"
production:
<<: *default
diff --git a/config/wechat.yml.test b/config/wechat.yml.test
index 9bc33029e..ec5e760fa 100644
--- a/config/wechat.yml.test
+++ b/config/wechat.yml.test
@@ -2,26 +2,26 @@ default: &default
# corpid: "corpid"
# corpsecret: "corpsecret"
# agentid: 1
-# Or if using public account, only need above two line
- # guange test
- #appid: "wxf694495398c7d470"
- #secret: "743e038392f1d89540e95f8f7645849a"
-
- appid: "wx8e1ab05163a28e37"
- secret: "beb4d3bc4b32b3557811680835357841"
+ #test
+ appid: "wxc09454f171153c2d"
+ secret: "dff5b606e34dcafe24163ec82c2715f8"
token: "123456"
- access_token: ".access_token"
+ access_token: "1234567"
encrypt_mode: false # if true must fill encoding_aes_key
- encoding_aes_key: "QGfP13YP4BbQGkkrlYuxpn4ZIDXpBJww4fxl8CObvNw"
- jsapi_ticket: "tmp/wechat_jsapi_ticket"
+
+ #test
+ encoding_aes_key: "QyocNOkRmrT5HzBpCG54EVPUQjk86nJapXNVDQm6Yy6"
+ jsapi_ticket: "C:/Users/[user_name]/wechat_jsapi_ticket"
#template
- binding_succ_notice: "jjpDrgFErnmkrE9tf2M3o0t31ZrJ7mr0YtuE_wyLaMc"
- journal_notice: "uC1zAw4F2q6HTA3Pcj8VUO6wKKKiYFwnPJB4iXxpdoM"
- homework_message_notice: "tCf7teCVqc2vl2LZ_hppIdWmpg8yLcrI8XifxYePjps"
- class_notice: "MQ_mFupbXP-9jWbeHT3C5xqNBvPo8EIlNv4ULakSpJA"
+ binding_succ_notice: "n4KLwcWNrIMYkKxWL2hUwzunm5RTT54EbWem2MIUapU"
+ journal_notice: "XpHHYkqSGkwuF9vHthRdmPQLvCFRQ4_NbRBP12T7ciE"
+ homework_message_notice: "Kom0TsYYKsNKCS6luweYVRo9z-mH0wRPr24b1clGCPQ"
+ class_notice: "8LVu33l6bP-56SDomVgHn-yJc57YpCwwJ81rAJgRONk"
+ create_class_notice: "9CDIvHIKiGwPEQWRw_-wieec1o50tMXQPPZIfECKu0I"
+ create_project_notice: "R2ZaQKJfDJgujPcHWPzadKHIRkIyj2CjX2o_qIuRqig"
production:
<<: *default
diff --git a/db/schema.rb b/db/schema.rb
index b6ff384ca..8d845f9d2 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20160728041513) do
+ActiveRecord::Schema.define(:version => 20160725091759) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
@@ -52,17 +52,6 @@ ActiveRecord::Schema.define(:version => 20160728041513) do
add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token"
add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id"
- create_table "applied_messages", :force => true do |t|
- t.integer "user_id"
- t.integer "applied_id"
- t.string "applied_type"
- t.integer "viewed"
- t.integer "status"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.string "name"
- end
-
create_table "applied_projects", :force => true do |t|
t.integer "project_id", :null => false
t.integer "user_id", :null => false
@@ -306,16 +295,14 @@ ActiveRecord::Schema.define(:version => 20160728041513) do
add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids"
create_table "changesets", :force => true do |t|
- t.integer "repository_id", :null => false
- t.string "revision", :null => false
+ t.integer "repository_id", :null => false
+ t.string "revision", :null => false
t.string "committer"
- t.datetime "committed_on", :null => false
+ t.datetime "committed_on", :null => false
t.text "comments"
t.date "commit_date"
t.string "scmid"
t.integer "user_id"
- t.integer "project_id"
- t.integer "type", :default => 0
end
add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on"
diff --git a/lib/email_verifier b/lib/email_verifier
deleted file mode 160000
index 222a9bdd7..000000000
--- a/lib/email_verifier
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 222a9bdd72014f197baf2131ab71cc41660111ed
diff --git a/lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb b/lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb
index 06d661478..26c78cdd2 100644
--- a/lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb
+++ b/lib/plugins/acts_as_watchable/lib/acts_as_watchable.rb
@@ -51,7 +51,7 @@ module Redmine
#通过model层删除以触发before_destroy事件 -by zjc
watchers = Watcher.find_by_sql "select * from `watchers` where watchable_type = 'Principal' AND watchable_id = #{self.id} AND user_id = #{user.id}"
watchers.each do |watcher|
- watcher.destroy
+ watcher.destroy
end
#Watcher.delete_all "watchable_type = 'Principal' AND watchable_id = #{self.id} AND user_id = #{user.id}"
else
diff --git a/lib/wechat/lib/wechat.rb b/lib/wechat/lib/wechat.rb
index 266e1aa06..c223844b7 100644
--- a/lib/wechat/lib/wechat.rb
+++ b/lib/wechat/lib/wechat.rb
@@ -1,3 +1,4 @@
+require 'wechat/cache_file.rb'
require 'wechat/api_loader'
require 'wechat/api'
require 'wechat/corp_api'
diff --git a/lib/wechat/lib/wechat/cache_file.rb b/lib/wechat/lib/wechat/cache_file.rb
new file mode 100644
index 000000000..0e51b24ee
--- /dev/null
+++ b/lib/wechat/lib/wechat/cache_file.rb
@@ -0,0 +1,25 @@
+#coding=utf-8
+#
+
+module Wechat
+ class CacheFile
+ class << self
+ def cache
+ if defined?(Rails)
+ Rails.cache
+ else
+ File
+ end
+ end
+
+ def read(key)
+ cache.read(key) || ''
+ end
+
+ def write(key, val)
+ cache.write(key, val)
+ end
+ end
+ end
+end
+
diff --git a/lib/wechat/lib/wechat/ticket/jsapi_base.rb b/lib/wechat/lib/wechat/ticket/jsapi_base.rb
index b6ab510a0..cc02ce243 100644
--- a/lib/wechat/lib/wechat/ticket/jsapi_base.rb
+++ b/lib/wechat/lib/wechat/ticket/jsapi_base.rb
@@ -44,7 +44,7 @@ module Wechat
protected
def read_ticket_from_file
- td = JSON.parse(File.read(jsapi_ticket_file))
+ td = JSON.parse(CacheFile.read(jsapi_ticket_file))
@got_ticket_at = td.fetch('got_ticket_at').to_i
@ticket_life_in_seconds = td.fetch('expires_in').to_i
@access_ticket = td.fetch('ticket')
@@ -54,7 +54,7 @@ module Wechat
def write_ticket_to_file(ticket_hash)
ticket_hash.merge!('got_ticket_at'.freeze => Time.now.to_i)
- File.write(jsapi_ticket_file, ticket_hash.to_json)
+ CacheFile.write(jsapi_ticket_file, ticket_hash.to_json)
end
def remain_life_seconds
diff --git a/lib/wechat/lib/wechat/token/access_token_base.rb b/lib/wechat/lib/wechat/token/access_token_base.rb
index 7b8cecfac..ba980e319 100644
--- a/lib/wechat/lib/wechat/token/access_token_base.rb
+++ b/lib/wechat/lib/wechat/token/access_token_base.rb
@@ -21,7 +21,7 @@ module Wechat
protected
def read_token_from_file
- td = JSON.parse(File.read(token_file))
+ td = JSON.parse(CacheFile.read(token_file))
@got_token_at = td.fetch('got_token_at').to_i
@token_life_in_seconds = td.fetch('expires_in').to_i
@access_token = td.fetch('access_token')
@@ -31,7 +31,7 @@ module Wechat
def write_token_to_file(token_hash)
token_hash.merge!('got_token_at'.freeze => Time.now.to_i)
- File.write(token_file, token_hash.to_json)
+ CacheFile.write(token_file, token_hash.to_json)
end
def remain_life_seconds
diff --git a/plugins/redmine_ckeditor/.gitmodules b/plugins/redmine_ckeditor/.gitmodules
deleted file mode 100644
index de30e7590..000000000
--- a/plugins/redmine_ckeditor/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "app/assets/javascripts/ckeditor-releases"]
- path = app/assets/javascripts/ckeditor-releases
- url = git://github.com/ckeditor/ckeditor-releases.git
diff --git a/public/assets/wechat/activities.html b/public/assets/wechat/activities.html
index c2df0c8e7..fbdfb1152 100644
--- a/public/assets/wechat/activities.html
+++ b/public/assets/wechat/activities.html
@@ -35,7 +35,7 @@
【作业】{{act.subject|safeHtml}}
-
+
迟交扣分:{{act.homework_common_detail.late_penalty}}分 匿评开启时间:{{act.homework_common_detail.evaluation_start}}
缺评扣分:{{act.homework_common_detail.absence_penalty}}分/作品 匿评关闭时间:{{act.homework_common_detail.evaluation_end}}
@@ -73,7 +73,7 @@
【通知】{{act.subject|safeHtml}}
@@ -109,7 +109,7 @@
【帖子】{{act.subject|safeHtml}}
@@ -162,7 +162,7 @@
【问题】{{act.subject|safeHtml}}
-
+
状态:{{act.issue_detail.issue_status}} 优先级:{{act.issue_detail.issue_priority}}
指派给:{{act.issue_detail.issue_assigned_to}} 完成度:{{act.issue_detail.done_ratio}}%
@@ -201,7 +201,7 @@
【帖子】{{act.subject|safeHtml}}
@@ -251,7 +251,7 @@
{{act.latest_update}}
@@ -289,7 +289,7 @@
【博客】{{act.subject|safeHtml}}
@@ -335,7 +335,7 @@
【作业】{{act.subject|safeHtml}}
-
+
迟交扣分:{{act.homework_common_detail.late_penalty}}分 匿评开启时间:{{act.homework_common_detail.evaluation_start}}
缺评扣分:{{act.homework_common_detail.absence_penalty}}分/作品 匿评关闭时间:{{act.homework_common_detail.evaluation_end}}
@@ -373,7 +373,7 @@
【通知】{{act.subject|safeHtml}}
@@ -409,7 +409,7 @@
【帖子】{{act.subject|safeHtml}}
@@ -469,7 +469,7 @@
【问题】{{act.subject|safeHtml}}
-
+
状态:{{act.issue_detail.issue_status}} 优先级:{{act.issue_detail.issue_priority}}
指派给:{{act.issue_detail.issue_assigned_to}} 完成度:{{act.issue_detail.done_ratio}}%
@@ -508,7 +508,7 @@
【帖子】{{act.subject|safeHtml}}
diff --git a/public/assets/wechat/app.html b/public/assets/wechat/app.html
index 726755c3d..74af26cfe 100644
--- a/public/assets/wechat/app.html
+++ b/public/assets/wechat/app.html
@@ -1,55 +1,56 @@
-
-
-
-
- 仅供本地调试使用
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 仅供本地调试使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/assets/wechat/blog_detail.html b/public/assets/wechat/blog_detail.html
index d18575b94..ee9e968d2 100644
--- a/public/assets/wechat/blog_detail.html
+++ b/public/assets/wechat/blog_detail.html
@@ -13,11 +13,13 @@
- {{blog.title}}
- 博客 {{blog.created_at}}
+
+
{{blog.title}}
+
博客 {{blog.created_at}}
-
-
+
+
+
赞
{{blog.praise_count}}
@@ -31,64 +33,32 @@
-
-
-
+
+
+
-
+
{{journal.user.realname}}
-
-
-
{{journal.lasted_comment}}
+
{{journal.lasted_comment}}
-
-
-
-
-
-
- {{journal.parents_reply_top[0].user.realname}}
-
-
-
-
{{journal.parents_reply_top[0].lasted_comment}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
↓ ↑ 点击展开更多楼层
-
-
-
-
+
+
{{reply_bottom.user.realname}}
-
-
-
{{reply_bottom.lasted_comment}}
+
{{reply_bottom.lasted_comment}}
-
+
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html
index 01628c2f4..5b9b71b0d 100644
--- a/public/assets/wechat/class.html
+++ b/public/assets/wechat/class.html
@@ -1,6 +1,6 @@
-
{{course.name}}邀请码
+
{{course.name}} 邀请码
@@ -31,12 +31,16 @@
授课老师
-
{{teacher.name}} {{teacher.role_name|identify}}
+
{{teacher.name}}
+
+
管理员
+
教辅
我的同学
@@ -50,8 +54,8 @@
{{r.exercise_name}} 发送
-
暂无小测验,
- 请登录Trustie网站,在PC浏览器中上传小测验。
+
暂无测验,
+ 请登录Trustie网站,在PC浏览器中上传测验。
diff --git a/public/assets/wechat/class_list.html b/public/assets/wechat/class_list.html
index 2c3b3b7b9..ece31ceeb 100644
--- a/public/assets/wechat/class_list.html
+++ b/public/assets/wechat/class_list.html
@@ -5,13 +5,13 @@
我创建的课程
@@ -20,13 +20,13 @@
我参与的课程
@@ -35,7 +35,7 @@
diff --git a/public/assets/wechat/course_discussion.html b/public/assets/wechat/course_discussion.html
index 7d358fb25..9ef7bc429 100644
--- a/public/assets/wechat/course_discussion.html
+++ b/public/assets/wechat/course_discussion.html
@@ -13,41 +13,60 @@
-
{{discussion.subject}}
-
{{discussion.course_project_name}} - 课程问答区 {{discussion.created_on}}
-
-
-
-
赞
-
{{discussion.praise_count}}
-
{{discussion.praise_count}}
-
-
-
回复
-
{{discussion.replies_count}}
+
+
{{discussion.subject}}
+
{{discussion.course_project_name}} - 课程问答区 {{discussion.created_on}}
+
+
+
+
赞
+
{{discussion.praise_count}}
+
{{discussion.praise_count}}
+
+
+
-
-
-
+
+
-
+
{{journal.user.realname}}
-
-
-
{{journal.lasted_comment}}
+
{{journal.lasted_comment}}
-
+
+
+
+
+
↓ ↑ 点击展开更多楼层
+
+
+ {{reply_bottom.user.realname}}
+
+
{{reply_bottom.lasted_comment}}
+
+
+
+
+
+
+
+
-
+
diff --git a/public/assets/wechat/course_notice.html b/public/assets/wechat/course_notice.html
index e8b36fb27..b2771100b 100644
--- a/public/assets/wechat/course_notice.html
+++ b/public/assets/wechat/course_notice.html
@@ -12,41 +12,41 @@
-
{{news.title}}
-
{{news.course_name}} - 课程通知 {{news.created_on}}
-
-
-
-
赞
-
{{news.praise_count}}
-
{{news.praise_count}}
-
-
-
回复
-
{{news.comments_count}}
+
+
{{news.title}}
+
{{news.course_name}} - 课程通知 {{news.created_on}}
+
+
+
+
赞
+
{{news.praise_count}}
+
{{news.praise_count}}
+
+
+
-
-
+
{{comments.author.realname}}
-
-
-
{{comments.created_on}}
+
{{comments.created_on}}
-
+
-
+
diff --git a/public/assets/wechat/edit_class_member.html b/public/assets/wechat/edit_class_member.html
new file mode 100644
index 000000000..2a15af150
--- /dev/null
+++ b/public/assets/wechat/edit_class_member.html
@@ -0,0 +1,21 @@
+
+
+
+
角色变更
+
{{current_edit_member.user.realname == "" ? current_edit_member.user.name : current_edit_member.user.realname}}
+
角色
+
+
+
+
+
+
+
+
diff --git a/public/assets/wechat/edit_project_member.html b/public/assets/wechat/edit_project_member.html
new file mode 100644
index 000000000..8677844b7
--- /dev/null
+++ b/public/assets/wechat/edit_project_member.html
@@ -0,0 +1,21 @@
+
+
+
+
角色变更
+
{{current_edit_member.user.real_name == "" ? current_edit_member.user.name : current_edit_member.user.real_name}}
+
角色
+
+
+
+
+
+
+
+
diff --git a/public/assets/wechat/homework_detail.html b/public/assets/wechat/homework_detail.html
index 8ec30acd8..599774dfc 100644
--- a/public/assets/wechat/homework_detail.html
+++ b/public/assets/wechat/homework_detail.html
@@ -12,47 +12,65 @@
-
{{homework.name}}
-
{{homework.course_name}} - 普通作业 编程作业 分组作业 {{homework.publish_time}}
-
-
迟交扣分:{{homework.late_penalty}}分
-
匿评开启时间:{{homework.evaluation_start}}
-
缺评扣分:{{homework.absence_penalty}}分/作品
-
匿评关闭时间:{{homework.evaluation_end}}
+
+
{{homework.name}}
+
{{homework.course_name}} - 普通作业 编程作业 分组作业 {{homework.publish_time}}
+
+
迟交扣分:{{homework.late_penalty}}分
+
匿评开启时间:{{homework.evaluation_start}}
+
缺评扣分:{{homework.absence_penalty}}分/作品
+
匿评关闭时间:{{homework.evaluation_end}}
+
赞
{{homework.praise_count}}
{{homework.praise_count}}
-
-
+
+
-
+
{{journal.user.realname}}
-
-
-
{{journal.lasted_comment}}
+
{{journal.lasted_comment}}
-
+
+
+
+
+
↓ ↑ 点击展开更多楼层
+
+
+ {{reply_bottom.user.realname}}
+
+
{{reply_bottom.lasted_comment}}
+
+
+
+
+
+
+
-
+
-
+
diff --git a/public/assets/wechat/issue_detail.html b/public/assets/wechat/issue_detail.html
index 953fec3c7..852103b81 100644
--- a/public/assets/wechat/issue_detail.html
+++ b/public/assets/wechat/issue_detail.html
@@ -13,46 +13,46 @@
-
{{issue.subject}}
-
{{issue.project_name}} - 项目问题 {{issue.created_on}}
+
+
{{issue.subject}}
+
{{issue.project_name}} - 项目问题 {{issue.created_on}}
-
-
状 态:{{issue.issue_status}}
-
优先级:{{issue.issue_priority}}
-
指派给:{{issue.issue_assigned_to}}
-
完成度:{{issue.done_ratio}}%
-
-
-
赞
-
{{issue.praise_count}}
-
{{issue.praise_count}}
-
-
-
回复
-
{{issue.journals_count}}
+
+
状 态:{{issue.issue_status}}
+
优先级:{{issue.issue_priority}}
+
指派给:{{issue.issue_assigned_to}}
+
完成度:{{issue.done_ratio}}%
+
+
+
赞
+
{{issue.praise_count}}
+
{{issue.praise_count}}
+
+
+
-
-
+
{{journal.user.realname}}
-
-
-
{{journal.created_on}}
+
{{journal.created_on}}
-
+
-
+
diff --git a/public/assets/wechat/jour_message_detail.html b/public/assets/wechat/jour_message_detail.html
index cdeeaa30b..78760da71 100644
--- a/public/assets/wechat/jour_message_detail.html
+++ b/public/assets/wechat/jour_message_detail.html
@@ -12,43 +12,60 @@
-
留言 {{message.created_on}}
+
+
留言 {{message.created_on}}
-
-
-
-
赞
-
{{message.praise_count}}
-
{{message.praise_count}}
-
-
-
-
+
-
+
{{journal.user.realname}}
-
-
-
{{journal.lasted_comment}}
+
{{journal.lasted_comment}}
-
+
+
+
+
↓ ↑ 点击展开更多楼层
+
+
+ {{reply_bottom.user.realname}}
+
+
{{reply_bottom.lasted_comment}}
+
+
+
+
+
+
+
-
+
-
+
diff --git a/public/assets/wechat/myresource.html b/public/assets/wechat/myresource.html
index 90fb13892..e58b1c80c 100644
--- a/public/assets/wechat/myresource.html
+++ b/public/assets/wechat/myresource.html
@@ -32,15 +32,15 @@
暂无作业,
请登录Trustie网站,在PC浏览器中创建作业。
-
-
{{r.exercise_name}} 发送
-
题目来源:{{r.coursename}}
-
-
-
暂无测验,
- 请登录Trustie网站,在PC浏览器中创建测验。
-
+
+
+
+
+
+
+
+
+
+
diff --git a/public/assets/wechat/new_class.html b/public/assets/wechat/new_class.html
index 5ce75d358..e4d02be5a 100644
--- a/public/assets/wechat/new_class.html
+++ b/public/assets/wechat/new_class.html
@@ -1,14 +1,14 @@
-
+
diff --git a/public/assets/wechat/new_project.html b/public/assets/wechat/new_project.html
new file mode 100644
index 000000000..785de322f
--- /dev/null
+++ b/public/assets/wechat/new_project.html
@@ -0,0 +1,28 @@
+
diff --git a/public/assets/wechat/project.html b/public/assets/wechat/project.html
new file mode 100644
index 000000000..76ebc0430
--- /dev/null
+++ b/public/assets/wechat/project.html
@@ -0,0 +1,132 @@
+
+
+
{{project.name}} 邀请码
+
+
+
+
+
+
+
+
+
+
+
+
+
{{act.author.realname}}
+
{{act.author.nickname}}
+
+
+
+
{{act.latest_update}}
+
+
【问题】{{act.subject|safeHtml}}
+
+
+
状态:{{act.issue_detail.issue_status}} 优先级:{{act.issue_detail.issue_priority}}
+
指派给:{{act.issue_detail.issue_assigned_to}} 完成度:{{act.issue_detail.done_ratio}}%
+
+
+
+
来源: {{act.course_project_name}}
+
+
赞
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{act.author.realname}}
+
{{act.author.nickname}}
+
+
+
+
{{act.latest_update}}
+
+
【帖子】{{act.subject|safeHtml}}
+
+
+
+
来源: {{act.course_project_name}}
+
+
赞
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{act.author.realname}} 创建了{{act.course_project_name}} | 项目
+
{{act.latest_update}}
+
+
+
+
+
+
+
+
+
+
+
+
+
管理人员({{project_master_members.length}})
+
+
{{master.user.real_name == "" ? master.user.name : master.user.real_name }} {{teacher.role_name|identify}}
+
+
+
+
开发人员({{project_develop_members.length}})
+
+
{{develop.user.real_name == "" ? develop.user.name : develop.user.real_name}}
+
+
+
+
报告人员({{project_report_members.length}})
+
+
{{report.user.real_name == "" ? report.user.name : report.user.real_name}}
+
+
+
+
+
+
+
diff --git a/public/assets/wechat/project_discussion.html b/public/assets/wechat/project_discussion.html
index 3c2ef5d3e..cc3d4b1c8 100644
--- a/public/assets/wechat/project_discussion.html
+++ b/public/assets/wechat/project_discussion.html
@@ -12,42 +12,60 @@
-
{{discussion.subject}}
-
{{discussion.course_project_name}} - 项目讨论区 {{discussion.created_on}}
+
+
{{discussion.subject}}
+
{{discussion.course_project_name}} - 项目讨论区 {{discussion.created_on}}
-
-
-
-
赞
-
{{discussion.praise_count}}
-
{{discussion.praise_count}}
-
-
-
-
-
+
+
-
+
{{journal.user.realname}}
-
-
-
{{journal.lasted_comment}}
+
{{journal.lasted_comment}}
-
+
+
+
+
↓ ↑ 点击展开更多楼层
+
+
+ {{reply_bottom.user.realname}}
+
+
{{reply_bottom.lasted_comment}}
+
+
+
+
+
+
+
+
-
+
diff --git a/public/assets/wechat/project_invite_code.html b/public/assets/wechat/project_invite_code.html
new file mode 100644
index 000000000..a17b8fe85
--- /dev/null
+++ b/public/assets/wechat/project_invite_code.html
@@ -0,0 +1,16 @@
+
+
+
+
{{project.name}}
+
+
邀请码:{{project.invite_code}}
+
+
+
+
+
+
1.点击右上角"发送给朋友",邀请朋友加入项目
+ 2.长按二维码,通过“识别图中二维码”功能加入项目
+ 3.通过“加入项目”菜单输入邀请码加入项目(长按邀请码可以复制哦~)
+
+
\ No newline at end of file
diff --git a/public/assets/wechat/project_list.html b/public/assets/wechat/project_list.html
new file mode 100644
index 000000000..1d385dabf
--- /dev/null
+++ b/public/assets/wechat/project_list.html
@@ -0,0 +1,38 @@
+
+
+
项目列表
+
+
+
我创建的项目
+
+
+ {{project.name}}
+ >
+ {{project.member_count}}人
+
+
+
+
+
+
+
+
我参与的项目
+
+
+ {{project.name}}
+ >
+ {{project.member_count}}人
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/assets/wechat/send_class_list.html b/public/assets/wechat/send_class_list.html
index 72a52fc3f..b6d250d5d 100644
--- a/public/assets/wechat/send_class_list.html
+++ b/public/assets/wechat/send_class_list.html
@@ -19,6 +19,6 @@
-
发送
+
发送
diff --git a/public/assets/wechat/templates/comment_reply.html b/public/assets/wechat/templates/comment_reply.html
new file mode 100644
index 000000000..f5699abca
--- /dev/null
+++ b/public/assets/wechat/templates/comment_reply.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ {{journal.parents_reply_top[i].user.realname}}
+
+
{{journal.parents_reply_top[i].lasted_comment}}
+
+
+
+
+
+
+
+
diff --git a/public/javascripts/wechat/controllers/activity.js b/public/javascripts/wechat/controllers/activity.js
index 8847e8e10..678733a82 100644
--- a/public/javascripts/wechat/controllers/activity.js
+++ b/public/javascripts/wechat/controllers/activity.js
@@ -122,12 +122,14 @@ app.controller('ActivityController',
}
break;
}
+ rms.save("tab_num",$scope.currentTab);
}
- $scope.currentTab = 1;
+
+ $scope.currentTab = rms.get('tab_num') || 1;
if($scope.activities.length<=0){
- $scope.loadActData(1,0);
+ $scope.loadActData('tab_num',0);
} else {
$timeout(function(){
window.scrollTo(0, rms.get("yoffset"));
@@ -136,7 +138,7 @@ app.controller('ActivityController',
//跳到详情页
$scope.goDetail = function(type, act_id,id){
- rms.save("yoffset", document.documentElement.scrollTop);
+ rms.save("yoffset", document.documentElement.scrollTop || document.body.scrollTop);
rms.save("activities",$scope.activities);
rms.save("course_activities",$scope.course_activities);
rms.save("project_activities",$scope.project_activities);
diff --git a/public/javascripts/wechat/controllers/blog.js b/public/javascripts/wechat/controllers/blog.js
index 40902fa12..5fb61151d 100644
--- a/public/javascripts/wechat/controllers/blog.js
+++ b/public/javascripts/wechat/controllers/blog.js
@@ -20,15 +20,15 @@ app.controller('BlogController',
$scope.page = 0;
}
else{
- $scope.blog.blog_comment_children = $scope.blog.blog_comment_children.concat(data.data.blog_comment_children);
+ $scope.blog.all_children = $scope.blog.all_children.concat(data.data.all_children);
}
- $scope.has_more = $scope.blog.blog_comment_children.length < $scope.blog.comment_count;
+ $scope.has_more = $scope.blog.all_children.length < $scope.blog.comment_count;
console.log($scope.has_more);
}
else{
comment_id = data.data.id;
- for (var i in $scope.blog.blog_comment_children) {
- var comment = $scope.blog.blog_comment_children[i];
+ for (var i in $scope.blog.all_children) {
+ var comment = $scope.blog.all_children[i];
if(comment.id == comment_id){
// comment.parents_reply_top = comment.parents_reply_top.concat(data.data.parents_reply_top);
comment.parents_reply_top = data.data.parents_reply_top.concat(comment.parents_reply_top);
diff --git a/public/javascripts/wechat/controllers/class.js b/public/javascripts/wechat/controllers/class.js
index 75e1709cc..490ecc033 100644
--- a/public/javascripts/wechat/controllers/class.js
+++ b/public/javascripts/wechat/controllers/class.js
@@ -2,7 +2,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location
var vm = $scope;
var courseid = $routeParams.id;
-
+ var tag = $routeParams.tag;
var getUsers = function(){
@@ -126,7 +126,13 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location
if (response.data.status == 0){
vm.course = response.data.data;
resetMenu(vm.course.current_user_is_teacher);
- vm.tab(1);
+ if(tag){
+ vm.tab(4);
+ tag = null;
+ }
+ else{
+ vm.tab(1);
+ }
}
else{
vm.alertService.showMessage('提示', response.data.message);
@@ -139,11 +145,19 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location
var resetMenu = function(is_teacher){
vm.isTeacher = is_teacher;
if(is_teacher){
- vm.menus = ["课件", "作业", "小测验", "学生管理"];
+ vm.menus = ["课件", "作业", "测验", "成员管理"];
} else {
vm.menus = ['课件', "我的同学"];
}
}
+ vm.onSetting = function(user){
+ rms.save('current_edit_member', user);
+ $location.path("/edit_class_member").search({id: courseid,user_id: user.id});
+ };
+
+
+
+
}]);
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/discussion.js b/public/javascripts/wechat/controllers/discussion.js
index 7e0811a0d..60bfb3ee3 100644
--- a/public/javascripts/wechat/controllers/discussion.js
+++ b/public/javascripts/wechat/controllers/discussion.js
@@ -6,7 +6,33 @@ app.controller('DiscussionController', ['$scope', '$http', '$routeParams', 'auth
type: 'messages',
replyType: 'Message',
loadCallback: function(data){
- $scope.discussion = data.data;
+ console.log(data.data);
+
+ //回复级别 0 一级回复 1 二级回复
+ replytype = data.type;
+ page = data.page;
+
+ if (replytype == 0){
+ if (page == 0){
+ $scope.discussion = data.data;
+ $scope.page = 0;
+ }
+ else{
+ $scope.discussion.all_children = $scope.discussion.all_children.concat(data.data.all_children);
+ }
+ $scope.has_more = $scope.discussion.all_children.length < $scope.discussion.comment_count;
+ console.log($scope.has_more);
+ }
+ else{
+ comment_id = data.data.id;
+ for (var i in $scope.discussion.all_children) {
+ var comment = $scope.discussion.all_children[i];
+ if(comment.id == comment_id){
+// comment.parents_reply_top = comment.parents_reply_top.concat(data.data.parents_reply_top);
+ comment.parents_reply_top = data.data.parents_reply_top.concat(comment.parents_reply_top);
+ }
+ }
+ }
},
replyCallback: function(){
}
diff --git a/public/javascripts/wechat/controllers/edit_class.js b/public/javascripts/wechat/controllers/edit_class.js
index 5f377e594..0a09ce1e3 100644
--- a/public/javascripts/wechat/controllers/edit_class.js
+++ b/public/javascripts/wechat/controllers/edit_class.js
@@ -47,7 +47,7 @@ app.controller('EditClassController', ['$scope', '$http', 'auth', 'config', 'ale
token: auth.token()
}).then(function(response){
if(response.data.status!=0){
- vm.alertService_1.showMessage('出错了', response.data.message);
+ vm.alertService_1.showMessage('提示', response.data.message);
} else {
vm.alertService_1.showMessage('提示', '删除班级成功', function(){
vm.syllabus.courses.splice(index, 1);
diff --git a/public/javascripts/wechat/controllers/edit_class_member.js b/public/javascripts/wechat/controllers/edit_class_member.js
new file mode 100644
index 000000000..cddc183c5
--- /dev/null
+++ b/public/javascripts/wechat/controllers/edit_class_member.js
@@ -0,0 +1,72 @@
+
+
+app.controller('EditClassMemberController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms', function($scope, $http, auth, config, alertService, $location,$routeParams, rms){
+ var vm = $scope;
+
+// vm.current_edit_member = rms.get('current_edit_member');
+ vm.current_edit_member = null;
+
+ vm.alertService = alertService.create();
+
+ var course_id = $routeParams.id;
+ var user_id = $routeParams.user_id;
+ if(!vm.current_edit_member){
+ $http.post(config.apiUrl+'courses/get_member_info', {
+ token: auth.token(),
+ id: course_id,
+ user_id:user_id
+ }).then(function(response){
+ if(response.data.status!=0){
+ vm.alertService.showMessage('提示', response.data.message);
+ } else {
+ course_id = response.data.course_id;
+ user_id = response.data.user_id;
+ vm.current_edit_member = response.data.member_info;
+ vm.current_roles_id = vm.current_edit_member.roles_id;
+ }
+ });
+ }
+
+ console.log(vm.current_edit_member);
+
+ vm.cancel = function(){
+ vm.alertService.showMessage('提示', '您确定不对角色进行变更吗?', function(){
+// rms.save("project_master_members",[]);
+// rms.save("project_develop_members",[]);
+// rms.save("project_report_members",[]);
+ window.history.back();
+// $location.path("/project").search({id: project_id});
+ });
+ };
+
+ vm.edit_member_role = function(){
+ if(vm.current_roles_id == vm.current_edit_member.roles_id){
+ vm.alertService.showMessage('提示', "该用户当前已是该角色");
+ return;
+ }
+
+ $http.post(config.apiUrl+'courses/edit_member_role', {
+ token: auth.token(),
+ id: course_id,
+ user_id:vm.current_edit_member.user.id,
+ role_id:vm.current_edit_member.roles_id
+ }).then(function(response){
+ if(response.data.status!=0){
+ vm.alertService.showMessage('提示', response.data.message);
+ } else {
+ vm.alertService.showMessage('提示', '修改角色成功', function(){
+// window.history.back();
+
+ $location.path("/class").search({id: course_id,tag:1});
+ });
+ }
+ });
+
+
+ };
+
+ vm.selectRole = function(role_id){
+ vm.current_edit_member.roles_id = role_id;
+ }
+
+}] );
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/edit_project_member.js b/public/javascripts/wechat/controllers/edit_project_member.js
new file mode 100644
index 000000000..1063c0b13
--- /dev/null
+++ b/public/javascripts/wechat/controllers/edit_project_member.js
@@ -0,0 +1,80 @@
+
+
+app.controller('EditProjectMemberController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms', function($scope, $http, auth, config, alertService, $location,$routeParams, rms){
+ var vm = $scope;
+
+// vm.current_edit_member = rms.get('current_edit_member');
+
+ vm.current_edit_member = null;
+
+ vm.alertService = alertService.create();
+
+ var project_id = $routeParams.id;
+ var user_id = $routeParams.user_id;
+ if(!vm.current_edit_member){
+ $http.post(config.apiUrl+'projects/get_member_info', {
+ token: auth.token(),
+ id: project_id,
+ user_id:user_id
+ }).then(function(response){
+ if(response.data.status!=0){
+ vm.alertService.showMessage('提示', response.data.message);
+ } else {
+ project_id = response.data.project_id;
+ user_id = response.data.user_id;
+ vm.current_edit_member = response.data.member_info;
+ vm.current_roles_id = vm.current_edit_member.roles_id;
+ }
+ });
+ }
+
+ console.log(vm.current_edit_member);
+
+ vm.cancel = function(){
+ vm.alertService.showMessage('提示', '您确定不对角色进行变更吗?', function(){
+// rms.save("project_master_members",[]);
+// rms.save("project_develop_members",[]);
+// rms.save("project_report_members",[]);
+ window.history.back();
+// $location.path("/project").search({id: project_id});
+ });
+ };
+
+ vm.edit_member_role = function(){
+ if(vm.current_roles_id == vm.current_edit_member.roles_id){
+ vm.alertService.showMessage('提示', "该用户当前已是该角色");
+ return;
+ }
+
+ $http.post(config.apiUrl+'projects/edit_member_role', {
+ token: auth.token(),
+ id: project_id,
+ user_id:vm.current_edit_member.user.id,
+ role_id:vm.current_edit_member.roles_id
+ }).then(function(response){
+ if(response.data.status!=0){
+ vm.alertService.showMessage('提示', response.data.message);
+ } else {
+ vm.alertService.showMessage('提示', '修改角色成功', function(){
+ rms.save('project_activities_page',0);
+ rms.save("project_activities",[]);
+ rms.save("project_has_more",false);
+ rms.save("project",null);
+ rms.save("project_master_members",[]);
+ rms.save("project_develop_members",[]);
+ rms.save("project_report_members",[]);
+ rms.save('tab_num',null);
+// window.history.back();
+ $location.path("/project").search({id: project_id,tag:1});
+ });
+ }
+ });
+
+
+ };
+
+ vm.selectRole = function(role_id){
+ vm.current_edit_member.roles_id = role_id;
+ }
+
+}] );
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/homework.js b/public/javascripts/wechat/controllers/homework.js
index 58f70db5a..2898fc27f 100644
--- a/public/javascripts/wechat/controllers/homework.js
+++ b/public/javascripts/wechat/controllers/homework.js
@@ -6,8 +6,33 @@ app.controller('HomeworkController', ['$scope', '$http', '$routeParams', 'auth',
type: 'whomeworks',
replyType: 'HomeworkCommon',
loadCallback: function(data){
- console.log(data);
- $scope.homework = data.data;
+ console.log(data.data);
+
+ //回复级别 0 一级回复 1 二级回复
+ replytype = data.type;
+ page = data.page;
+
+ if (replytype == 0){
+ if (page == 0){
+ $scope.homework = data.data;
+ $scope.page = 0;
+ }
+ else{
+ $scope.homework.all_children = $scope.homework.all_children.concat(data.data.all_children);
+ }
+ $scope.has_more = $scope.homework.all_children.length < $scope.homework.comment_count;
+ console.log($scope.has_more);
+ }
+ else{
+ comment_id = data.data.id;
+ for (var i in $scope.homework.all_children) {
+ var comment = $scope.homework.all_children[i];
+ if(comment.id == comment_id){
+// comment.parents_reply_top = comment.parents_reply_top.concat(data.data.parents_reply_top);
+ comment.parents_reply_top = data.data.parents_reply_top.concat(comment.parents_reply_top);
+ }
+ }
+ }
},
replyCallback: function(){
}
diff --git a/public/javascripts/wechat/controllers/invite_code.js b/public/javascripts/wechat/controllers/invite_code.js
index 0c8bbe09e..ca69e308c 100644
--- a/public/javascripts/wechat/controllers/invite_code.js
+++ b/public/javascripts/wechat/controllers/invite_code.js
@@ -1,34 +1,18 @@
-/**
- * Created by guange on 16/6/22.
- */
-
-
-app.controller('InviteCodeController', ['$scope','$http', '$routeParams','config','auth', function($scope, $http, $routeParams, config, auth){
- var vm = $scope;
-
- vm.course = {};
- var courseid = $routeParams.id;
- $http.get(config.apiUrl+ 'courses/'+courseid+"?token="+auth.token()).then(
- function(response){
- console.log(response.data);
- vm.course = response.data.data;
- }
- );
-
- vm.share = function(){
- window.WeixinJSBridge.invoke('sendAppMessage',{
- 'appid': 'wxf694495398c7d470', // 公众号appID
- 'type': 'link', // 非必填,music,vido或link,默认为link。
- 'data_url': '', // 非必填,连接地址,如音乐的mp3数据地址,供内置播放器使用
- 'img_url': 'http://pnewsapp.tc.qq.com/newsapp_bt/0/9963967/640', // 缩略图地址
- 'img_height':370, // 缩略图高度
- 'img_width':550, // 缩略图宽度
- 'link':'http://view.inews.qq.com/a/WXN2013101101385701', // 链接地址
- 'desc':'desc', // 描述
- 'title':'title' // 标题
- },function(res){
- //alert(res.err_msg);
- });
- }
-
-}]);
+/**
+ * Created by guange on 16/6/22.
+ */
+
+
+app.controller('InviteCodeController', ['$scope','$http', '$routeParams','config','auth', function($scope, $http, $routeParams, config, auth){
+ var vm = $scope;
+
+ vm.course = {};
+ var courseid = $routeParams.id;
+ $http.get(config.apiUrl+ 'courses/'+courseid+"?token="+auth.token()).then(
+ function(response){
+ console.log(response.data);
+ vm.course = response.data.data;
+ }
+ );
+
+}]);
diff --git a/public/javascripts/wechat/controllers/journals.js b/public/javascripts/wechat/controllers/journals.js
index 76b4f8cf6..23f3b908b 100644
--- a/public/javascripts/wechat/controllers/journals.js
+++ b/public/javascripts/wechat/controllers/journals.js
@@ -5,7 +5,34 @@ app.controller('JournalsController', ['$scope', '$http', '$routeParams', 'auth',
type: 'journal_for_messages',
replyType: 'JournalsForMessage',
loadCallback: function(data){
- $scope.message = data.data;
+ console.log(data.data);
+
+ //回复级别 0 一级回复 1 二级回复
+ replytype = data.type;
+ page = data.page;
+
+ if (replytype == 0){
+ if (page == 0){
+ $scope.message = data.data;
+ $scope.page = 0;
+ }
+ else{
+ $scope.message.all_children = $scope.message.all_children.concat(data.data.all_children);
+ }
+ $scope.has_more = $scope.message.all_children.length < $scope.message.comment_count;
+ console.log($scope.has_more);
+ }
+ else{
+ comment_id = data.data.id;
+ for (var i in $scope.message.all_children) {
+ var comment = $scope.message.all_children[i];
+ if(comment.id == comment_id){
+// comment.parents_reply_top = comment.parents_reply_top.concat(data.data.parents_reply_top);
+ comment.parents_reply_top = data.data.parents_reply_top.concat(comment.parents_reply_top);
+ }
+ }
+ }
+
},
replyCallback: function(){
}
diff --git a/public/javascripts/wechat/controllers/myresource.js b/public/javascripts/wechat/controllers/myresource.js
index 15428bb34..b5489c065 100644
--- a/public/javascripts/wechat/controllers/myresource.js
+++ b/public/javascripts/wechat/controllers/myresource.js
@@ -1,6 +1,7 @@
app.controller('MyResourceController', ['$scope', '$http', 'auth', 'config', '$location', 'rms', function($scope, $http, auth, config, $location,rms){
var vm = $scope;
- vm.menus = ['课件', '作业', '测验'];
+// vm.menus = ['课件', '作业', '测验'];
+ vm.menus = ['课件', '作业'];
vm.resources = [];
vm.homeworks = [];
@@ -137,8 +138,11 @@ app.controller('MyResourceController', ['$scope', '$http', 'auth', 'config', '$l
}
break;
}
+ rms.save("resource_tab_num",vm.currentTab);
}
- vm.tab(1);
+ var currentTab = rms.get('resource_tab_num') || 1;
+
+ vm.tab(currentTab);
}] );
diff --git a/public/javascripts/wechat/controllers/new_project.js b/public/javascripts/wechat/controllers/new_project.js
new file mode 100644
index 000000000..6eb6a1caa
--- /dev/null
+++ b/public/javascripts/wechat/controllers/new_project.js
@@ -0,0 +1,47 @@
+
+
+app.controller('NewProjectController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','rms', function($scope, $http, auth, config, alertService, $location,rms){
+ var vm = $scope;
+
+ vm.alertService = alertService.create();
+
+ vm.project = {
+ name:""
+ };
+
+ vm.addClass = function(){
+ vm.syllabus.courses.push({});
+ };
+
+ vm.deleteClass = function(index){
+ vm.syllabus.courses.splice(index, 1);
+ }
+
+ vm.newProject = function (frm, project) {
+ frm.$setSubmitted();
+ console.log(project);
+
+ if(!frm.$valid){
+ console.log(frm.$error);
+ return;
+ }
+
+ $http.post(config.apiUrl+"projects/create", {
+ token: auth.token(),
+ name: project.name
+ }).then(function(response){
+ if(response.data.status!=0){
+ vm.alertService.showMessage('出错了', response.data.message);
+ } else {
+ vm.alertService.showMessage('提示', '新建项目成功', function(){
+// window.history.back();
+ rms.save('projects',[]);
+ $location.path("/project_list");
+ });
+ }
+ console.log(response.data.data);
+ });
+
+ }
+
+}] );
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/project.js b/public/javascripts/wechat/controllers/project.js
new file mode 100644
index 000000000..0d6ca99f2
--- /dev/null
+++ b/public/javascripts/wechat/controllers/project.js
@@ -0,0 +1,204 @@
+app.controller('ProjectController', ['$scope', 'config','$http','$timeout', 'auth','$location','$routeParams','alertService','rms','common', function($scope, config, $http,$timeout, auth, $location, $routeParams,alertService,rms,common){
+ $scope.replaceUrl = function(url){
+ return url;
+ };
+
+ var vm = $scope;
+ var projectid = $routeParams.id;
+ var tag = $routeParams.tag;
+
+ vm.project_activities_page = rms.get('project_activities_page') || 0;
+ vm.project_activities = rms.get("project_activities") || [];
+ vm.project_has_more = rms.get("project_has_more");
+
+ vm.project = rms.get("project") || null;
+
+
+// vm.project_members_page = rms.get('project_members_page') || 0;
+ vm.project_master_members = rms.get("project_master_members") || [];
+ vm.project_develop_members = rms.get("project_develop_members") || [];
+ vm.project_report_members = rms.get("project_report_members") || [];
+
+// vm.project_members_has_more = rms.get("project_members_has_more");
+
+ vm.alertService = alertService.create();
+
+ //跳入邀请界面
+ vm.invite = function(){
+ vm.alertService.showMessage('提示', "该功能将在近日开放,敬请期待!");
+
+
+// $location.path("/project_invite_code").search({id: projectid});
+ };
+
+ //获取项目动态
+ vm.getActivities = function(page){
+ $http({
+ method: 'POST',
+ url: apiUrl + "projects/activities?id=" + projectid,
+ data:{token:auth.token(),page:page}
+ }).then(function successCallback(response) {
+ console.log(response.data);
+ if(response.data.status == 0){
+ vm.project_activities_page = response.data.page;
+ if(response.data.page > 0)
+ {
+ vm.project_activities = vm.project_activities.concat(response.data.data);
+ }
+ else{
+ vm.project_activities = response.data.data;
+ vm.project_activities_page = 0;
+ vm.project_has_more = (response.data.count + response.data.page * 10) < response.data.all_count;
+ }
+ }
+ else{
+ vm.alertService.showMessage('提示', response.data.message);
+ }
+
+
+ }, function errorCallback(response) {
+ });
+ }
+
+ vm.getMembers = function(page){
+ $http({
+ method: 'POST',
+ url: apiUrl + "projects/members?id=" + projectid,
+ data:{token:auth.token(),page:page}
+ }).then(function successCallback(response) {
+ console.log(response.data);
+ if(response.data.status == 0){
+// vm.project_members_page = response.data.page;
+// if(response.data.page > 0)
+// {
+// vm.project_members = vm.project_members.concat(response.data.data);
+// }
+// else{
+// vm.project_members = response.data.data;
+// vm.project_members_page = 0;
+// vm.project_members_has_more = (response.data.count + response.data.page * 10) < response.data.all_count;
+// }
+ vm.project_master_members = response.data.master_members;
+ vm.project_develop_members = response.data.develop_members;
+ vm.project_report_members = response.data.report_members;
+
+ }
+ else{
+ vm.alertService.showMessage('提示', response.data.message);
+ }
+
+
+ }, function errorCallback(response) {
+ });
+ }
+
+ //跳到详情页
+ vm.goDetail = function(type, act_id,id){
+ rms.save("yoffset", document.documentElement.scrollTop);
+ rms.save("project_activities",vm.project_activities);
+ rms.save("project",vm.project);
+ $location.path('/'+type+'/'+act_id);
+ }
+
+ //切换 按钮
+ vm.tab = function(index){
+ vm.currentTab = index;
+ vm.searchText = '';
+
+ if(index == 1 && vm.project_activities.length <= 0 ){
+ vm.getActivities(0);
+ }
+ else if(index == 2 && vm.project_master_members.length <= 0){
+ vm.getMembers(0);
+ }
+
+ rms.save("tab_num",vm.currentTab);
+ };
+
+ //初始化TAB按钮
+ var resetMenu = function(can_setting){
+ if(can_setting){
+ vm.menus = ["项目动态", "成员管理"];
+ } else {
+ vm.menus = ['项目动态', "我的伙伴"];
+ }
+ }
+ if(vm.project){
+ resetMenu(vm.project.can_setting);
+ }
+
+ vm.currentTab = rms.get('tab_num');
+
+ //
+ if(!vm.currentTab){
+ $http.get(config.apiUrl+ 'projects/'+projectid+"?token="+auth.token()).then(
+ function(response) {
+ console.log(response.data);
+
+ if (response.data.status == 0){
+ vm.project = response.data.data;
+ resetMenu(vm.project.can_setting);
+ if(tag){
+ vm.tab(2);
+ tag = null;
+ }
+ else{
+ vm.tab(1);
+ }
+ }
+ else{
+ vm.alertService.showMessage('提示', response.data.message,function(){
+ window.history.back();
+ });
+
+ }
+ }
+ );
+ vm.currentTab = 1;
+ vm.tab(vm.currentTab);
+ } else {
+ $timeout(function(){
+ window.scrollTo(0, rms.get("yoffset"));
+ });
+ }
+
+ vm.addPraise = function(act){
+ for(var i in vm.project_activities){
+ if(vm.project_activities[i].act_id == act.act_id){
+ vm.project_activities[i].praise_count += 1;
+ vm.project_activities[i].has_praise = true;
+ break;
+ }
+ }
+
+ common.addCommonPraise(act);
+ };
+
+ vm.decreasePraise = function(act){
+ for(var i in vm.project_activities){
+ if(vm.project_activities[i].act_id == act.act_id){
+ vm.project_activities[i].praise_count -= 1;
+ vm.project_activities[i].has_praise = false;
+ break;
+ }
+ }
+
+ common.decreaseCommonPraise(act);
+ };
+
+ vm.onSetting = function(data){
+ rms.save('current_edit_member', data);
+
+ rms.save('project_activities_page',vm.project_activities_page);
+ rms.save("project_activities",vm.project_activities);
+ rms.save("project_has_more",vm.project_has_more);
+
+ rms.save("project",vm.project);
+ rms.save("project_master_members",vm.project_master_members);
+ rms.save("project_develop_members",vm.project_develop_members);
+ rms.save("project_report_members",vm.project_report_members);
+
+ $location.path("/edit_project_member").search({id: projectid,user_id: data.user.id});
+ };
+
+}]);
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/project_invite_code.js b/public/javascripts/wechat/controllers/project_invite_code.js
new file mode 100644
index 000000000..eb3032650
--- /dev/null
+++ b/public/javascripts/wechat/controllers/project_invite_code.js
@@ -0,0 +1,34 @@
+/**
+ * Created by guange on 16/6/22.
+ */
+
+
+app.controller('ProjectInviteCodeController', ['$scope','$http', '$routeParams','config','auth', function($scope, $http, $routeParams, config, auth){
+ var vm = $scope;
+
+ vm.project = {};
+ var projectid = $routeParams.id;
+ $http.get(config.apiUrl+ 'projects/'+projectid+"?token="+auth.token()).then(
+ function(response){
+ console.log(response.data);
+ vm.project = response.data.data;
+ }
+ );
+
+ vm.share = function(){
+ window.WeixinJSBridge.invoke('sendAppMessage',{
+ 'appid': 'wxf694495398c7d470', // 公众号appID
+ 'type': 'link', // 非必填,music,vido或link,默认为link。
+ 'data_url': '', // 非必填,连接地址,如音乐的mp3数据地址,供内置播放器使用
+ 'img_url': 'http://pnewsapp.tc.qq.com/newsapp_bt/0/9963967/640', // 缩略图地址
+ 'img_height':370, // 缩略图高度
+ 'img_width':550, // 缩略图宽度
+ 'link':'http://view.inews.qq.com/a/WXN2013101101385701', // 链接地址
+ 'desc':'desc', // 描述
+ 'title':'title' // 标题
+ },function(res){
+ //alert(res.err_msg);
+ });
+ }
+
+}]);
diff --git a/public/javascripts/wechat/controllers/project_list.js b/public/javascripts/wechat/controllers/project_list.js
new file mode 100644
index 000000000..058b7dde2
--- /dev/null
+++ b/public/javascripts/wechat/controllers/project_list.js
@@ -0,0 +1,79 @@
+/**
+ * Created by guange on 16/6/27.
+ */
+
+
+app.controller('ProjectListController', ['$scope', 'config', 'auth', '$http', '$location', 'alertService','rms',
+ function ($scope, config, auth, $http, $location, alertService,rms) {
+ var vm = $scope;
+// vm.projects = rms.get('projects') || [];
+ vm.projects = [];
+
+ vm.alertService_1 = alertService.create();
+ vm.alertService_3 = alertService.create();
+
+ var loadProjectList = function () {
+ $http.get(config.apiUrl + "projects?token=" + auth.token()).then(
+ function (response) {
+ console.log(response.data);
+ vm.projects = response.data.data;
+ rms.save('projects', vm.projects);
+ }
+ );
+ };
+
+ if(vm.projects.length<=0){
+ loadProjectList();
+ }
+
+ vm.goProject = function (project_id) {
+
+ rms.save('project_activities_page',0);
+ rms.save("project_activities",[]);
+ rms.save("project_has_more",false);
+ rms.save("project",null);
+ rms.save('project_members_page',0);
+ rms.save("project_members",[]);
+ rms.save("project_members_has_more",false);
+ rms.save('tab_num',null);
+ console.log(project_id);
+ $location.path("/project").search({id: project_id});
+ };
+
+ vm.newProject = function () {
+ $location.path("/new_project");
+ };
+
+ vm.joinProject = function () {
+ vm.alertService_1.showMessage('提示', "该功能将在近日开放,敬请期待!");
+
+// vm.alertService_3.showMessage('提示', '请输入6位项目邀请码(不区分大小写)', function(){
+// if (vm.alertService_3.invite && vm.alertService_3.invite.length == 6) {
+// $http.post(config.apiUrl + "projects/join", {
+// token: auth.token(),
+// invite_code: vm.alertService_3.invite
+// }).then(function (response) {
+// console.log(response.data);
+// if (response.data.status != 0) {
+// vm.alertService_1.showMessage('提示', response.data.message);
+// } else {
+// vm.alertService_1.showMessage('提示', '加入项目成功');
+// vm.alertService_3.invite = "";
+// loadProjectList();
+// }
+// });
+// } else {
+// if(vm.alertService_3.invite){
+// vm.alertService_1.showMessage('提示', '邀请码格式不正确');
+// }
+// }
+// });
+ };
+
+ vm.onSetting = function (project) {
+ console.log(project);
+ rms.save('current_edit_project', project);
+ $location.path("/edit_project").search({id: project.id});
+ }
+
+ }]);
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/send_class_list.js b/public/javascripts/wechat/controllers/send_class_list.js
index eee462ee3..bc81cfc08 100644
--- a/public/javascripts/wechat/controllers/send_class_list.js
+++ b/public/javascripts/wechat/controllers/send_class_list.js
@@ -49,14 +49,20 @@ app.controller('SendClassListController', ['$scope', '$http','$routeParams', 'co
var tip = "";
if (vm.myresource_sendIndex == 1){
tip = "课件已发送到目标班级。";
+ vm.alertService.showMessage('发送成功', tip, function () {
+ rms.save('page',0);
+ rms.save("resources",[]);
+ rms.save("has_more",false);
+ window.history.back();
+ });
}
else if(vm.myresource_sendIndex == 2){
tip = "题目已发送到目标班级的作业列表,但需要您访问Trustie网站设置发布和截止时间,以激活相应作业,谢谢。";
+ vm.alertService.showMessage('发送成功', tip, function () {
+ window.history.back();
+ });
}
- vm.alertService.showMessage('发送成功', tip, function () {
- window.history.back();
- });
} else {
vm.alertService.showMessage('发送出错', response.data.message);
}
diff --git a/public/javascripts/wechat/directives/comment_reply.js b/public/javascripts/wechat/directives/comment_reply.js
new file mode 100644
index 000000000..05b8b55b6
--- /dev/null
+++ b/public/javascripts/wechat/directives/comment_reply.js
@@ -0,0 +1,9 @@
+app.directive('commentReply', ['config', function(config){
+ return {
+ templateUrl: config.rootPath+ 'templates/comment_reply.html',
+ scope: {
+ i: "=",
+ journal: "="
+ }
+ }
+}]);
\ No newline at end of file
diff --git a/public/javascripts/wechat/directives/ellipsis.js b/public/javascripts/wechat/directives/ellipsis.js
new file mode 100644
index 000000000..dd826d6a3
--- /dev/null
+++ b/public/javascripts/wechat/directives/ellipsis.js
@@ -0,0 +1,25 @@
+/**
+ * Created by Tim on 7/22/16.
+ */
+app.directive('ellipsisShow',["$timeout",function(timer){
+ return{
+ restrict: 'A',
+ scope: {},
+ link: function(scope, element){
+ timer(function() {
+ var textSplit = element.text().split(" ");
+ var newContent = [];
+ element.text("");
+ for (var i = 0; i < textSplit.length; i++) {
+ newContent = newContent + " " + textSplit[i];
+ element.text(newContent);
+ if(element[0].scrollHeight >= 100){
+ newContent = newContent + " " + textSplit[i+1] + " " + textSplit[i+2] + " " + textSplit[i+3] + " " + textSplit[i+4] + "...";
+ element.text(newContent);
+ break;
+ }
+ }
+ });
+ }
+ }
+}]);
\ No newline at end of file
diff --git a/public/javascripts/wechat/directives/input_auto.js b/public/javascripts/wechat/directives/input_auto.js
index 1f2550882..9cd77188b 100644
--- a/public/javascripts/wechat/directives/input_auto.js
+++ b/public/javascripts/wechat/directives/input_auto.js
@@ -6,7 +6,7 @@ app.directive('inputAuto',function(){
var copyContainer = element.parent().children().children().eq(0);
var sendButton = element.next();
element.on('input',function(){
- console.log(sendButton);
+ //console.log(sendButton);
copyContainer.html(element[0].value);
var textHeight = copyContainer[0].scrollHeight-10;
element.css('height', textHeight + 'px');
diff --git a/public/javascripts/wechat/others/factory.js b/public/javascripts/wechat/others/factory.js
index a329c2906..89e2b700f 100644
--- a/public/javascripts/wechat/others/factory.js
+++ b/public/javascripts/wechat/others/factory.js
@@ -60,7 +60,7 @@ app.factory('auth', ['$http','$routeParams', '$q', 'session', 'config',function(
}
var getToken = function(){
- return session.get("token");
+ return 'token';//session.get("token");
}
return {get_bind: isBind, token: getToken};
}]);
@@ -89,7 +89,7 @@ app.factory('rms', function(){
return {save: save, get: get};
});
-app.factory('common', ['$http', 'auth', '$routeParams','rms', function($http, auth, $routeParams,rms){
+app.factory('common', ['$http', 'auth', '$routeParams','rms','config', function($http, auth, $routeParams,rms,config){
var addCommonReply = function(id, type, data, cb){
if(!data.comment || data.comment.length<=0){
@@ -117,6 +117,33 @@ app.factory('common', ['$http', 'auth', '$routeParams','rms', function($http, au
if(typeof cb === 'function'){
cb();
}
+
+ //保证内外回复数一致
+ activities = rms.get("activities") || [];
+ course_activities = rms.get("course_activities") || [];
+ project_activities = rms.get("project_activities") || [];
+ for(var i in activities){
+ if(activities[i].act_id == id){
+ activities[i].reply_count += 1;
+ break;
+ }
+ }
+ for(var i in course_activities){
+ if(course_activities[i].act_id == id){
+ course_activities[i].reply_count += 1;
+ break;
+ }
+ }
+ for(var i in project_activities){
+ if(project_activities[i].act_id == id){
+ project_activities[i].reply_count += 1;
+ break;
+ }
+ }
+ rms.save("activities",activities);
+ rms.save("course_activities",course_activities);
+ rms.save("project_activities",project_activities);
+
}, function errorCallback(response) {
});
};
@@ -132,6 +159,7 @@ app.factory('common', ['$http', 'auth', '$routeParams','rms', function($http, au
return $http({
method: 'POST',
url: apiUrl+ type + "/" + id,
+ dataType: 'jsonp',
data:{token:auth.token(),type:replytype,page:page}
})
};
@@ -268,7 +296,9 @@ app.factory('common', ['$http', 'auth', '$routeParams','rms', function($http, au
});
};
+ args.scope.commentreply_path = config.rootPath+ 'templates/comment_reply.html';
+
}
return {init: init, addCommonReply: addCommonReply, loadCommonData: loadCommonData, addCommonPraise: addCommonPraise, decreaseCommonPraise: decreaseCommonPraise};
-}]);
\ No newline at end of file
+}]);
diff --git a/public/javascripts/wechat/others/routes.js b/public/javascripts/wechat/others/routes.js
index a40951bcc..8596ee706 100644
--- a/public/javascripts/wechat/others/routes.js
+++ b/public/javascripts/wechat/others/routes.js
@@ -8,8 +8,8 @@ app.config(['$routeProvider',"$httpProvider", "$locationProvider",'config', func
var makeRoute = function(path, ctrl){
return {
templateUrl: rootPath + path,
- controller: ctrl,
- resolve: resolve
+ controller: ctrl
+ //resolve: resolve
}
}
//$locationProvider.html5Mode(true);
@@ -34,9 +34,15 @@ app.config(['$routeProvider',"$httpProvider", "$locationProvider",'config', func
.when('/new_class', makeRoute('new_class.html', 'NewClassController'))
.when('/edit_class', makeRoute('edit_class.html', 'EditClassController'))
.when('/class_list', makeRoute('class_list.html', 'ClassListController'))
+ .when('/edit_class_member', makeRoute('edit_class_member.html', 'EditClassMemberController'))
.when('/myresource', makeRoute('myresource.html', 'MyResourceController'))
.when('/invite_code', {templateUrl: rootPath + 'invite_code.html', controller: 'InviteCodeController'})
.when('/send_class_list', makeRoute('send_class_list.html', 'SendClassListController'))
+ .when('/project_list', makeRoute('project_list.html', 'ProjectListController'))
+ .when('/project', makeRoute('project.html', 'ProjectController'))
+ .when('/edit_project_member', makeRoute('edit_project_member.html', 'EditProjectMemberController'))
+ .when('/new_project', makeRoute('new_project.html', 'NewProjectController'))
+ .when('/project_invite_code', {templateUrl: rootPath + 'project_invite_code.html', controller: 'ProjectInviteCodeController'})
.otherwise({
redirectTo: '/activites'
});
@@ -57,6 +63,14 @@ app.config(['$routeProvider',"$httpProvider", "$locationProvider",'config', func
return rejection;
},
response: function (response) {
+ // var data = response.data;
+ // if(data && data.status==405){
+ // var rootScope = $injector.get('$rootScope');
+ // var state = $injector.get('$rootScope').$state.current.name;
+ // rootScope.stateBeforLogin = state;
+ // rootScope.$state.go("login");
+ // return $q.reject(response);
+ // }
$rootScope.activeCalls -= 1;
return response;
},
diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css
index c3a38415a..987141088 100644
--- a/public/stylesheets/weui/weixin.css
+++ b/public/stylesheets/weui/weixin.css
@@ -1,232 +1,245 @@
-@charset "utf-8";
-/* CSS Document */
-
-/*基本样式*/
-body,table,input,textarea,select,button { font-family: "微软雅黑","宋体","Helvetica Neue", Helvetica, Arial, sans-serif;}
-body, ul, h1,h2,h3,h4,h5,p,pre,input {padding:0px; margin:0px;}
-body{background-color: #efeff4;}
-ul li {list-style:none;}
-img {max-width:100%;}
-blockquote {border:1px solid #d4d4d4; padding: 0.6em; margin: 5px 0.4em 5px 1.4em; border-radius: 4px; font-family: "Microsoft YaHei"; background-size: 100% 100%;}
-.text-control {word-break:normal; word-wrap:break-word;}
-.f12 {font-size:12px;}
-.f13 {font-size:13px;}
-.f14 {font-size:14px;}
-.f15 {font-size:15px;}
-.f16 {font-size:16px;}
-.fb {font-weight:bold;}
-.mt2 {margin-top:2px;}
-.mt3 {margin-top:3px;}
-.mt4 {margin-top:4px;}
-.mt5 {margin-top:5px;}
-.mt10 {margin-top:10px;}
-.mt11 {margin-top:11px;}
-.mt12 {margin-top:12px;}
-.mt15 {margin-top:15px;}
-.mt30 {margin-top:30px;}
-.mt70 {margin-top:70px;}
-.mb5 {margin-bottom:5px;}
-.mb10 {margin-bottom:10px;}
-.mb20 {margin-bottom:20px;}
-.mb50 {margin-bottom:50px;}
-.ml5 {margin-left:5px;}
-.ml10 {margin-left:10px;}
-.mr5 {margin-right:5px;}
-.mr10 {margin-right:10px;}
-.ml15 {margin-left:15px;}
-.ml35 {margin-left:35px;}
-.mr15 {margin-right:15px;}
-.mr20 {margin-right:20px;}
-.ml25 {margin-left:25px;}
-.mr25 {margin-right:25px;}
-.ml55 {margin-left:55px;}
-.mr55 {margin-right:55px;}
-.c-red {color:#e81a1a;}
-.c-blue {color:#269ac9;}
-.c-grey {color:#9a9a9a !important;}
-.c-grey2 {color:#707070;}
-.c-grey3 {color:#555555;}
-.c-grey4 {color:#888888;}
-.c-grey5 {color:#aaaaaa;}
-.c-grey6 {color:#777777;}
-.c-blue {color:#3b94d6;}
-.c-white {color:#ffffff;}
-.c-black {color:#333}
-a {color:#707070;}
-a.c-grey {color:#707070;}
-a.c-grey2 {color:#9a9a9a;}
-a.c-grey3 {color:#353535;}
-a.c-green {color:#0bb20c;}
-a:link,a:visited{text-decoration:none;}
-a:hover,a:active{cursor:pointer;}
-a.link-blue {color:#269ac9;}
-a.link-blue2 {color:#3b94d6;}
-a.underline {text-decoration:underline;}
-.border-radius {border-radius:5px;}
-.w36 {width:36px;}
-.max-width-60 {max-width:60px;}
-.max-width-130 {max-width:130px;}
-.hidden {overflow:hidden; white-space:nowrap; text-overflow:ellipsis;}
-.inline-block {display:inline-block;}
-.dis {display:block;}
-.undis {display:none;}
-.text-nowrap {white-space:nowrap;}
-.v-top {vertical-align:top;}
-.tac {text-align:center;}
-.block-center {margin-left:auto; margin-right:auto; display:block;}
-
-/*背景色*/
-.bg-grey {background-color:#c1c1c1 !important;}
-.bg-blue {background-color:#3b94d6;}
-
-/*按钮样式*/
-.btn1 {width:100%; height:40px; line-height:40px; vertical-align:middle; text-align:center; color:#fff; display:block; border-radius:5px;}
-.bg-blue:not(.btn-disabled):active {background-color:#2780c2;}
-.btn-disabled {background-color:#ccc !important;}
-.btn2 {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; margin:18px auto 20px auto; border-radius:50px; display:block;}
-
-/*tab*/
-.tab-wrap {position:relative; width:100%; line-height:38px; display:-webkit-box; display:-moz-box; display:-ms-flexbox; display:-webkit-flex; display:flex; font-size:13px; background-color:#fff;}
-.tab-wrap a {position:relative; display:block; -webkit-box-flex:1; -moz-box-flex:1; -ms-flex:1; flex:1;}
-.tab-wrap a:first-child:after {display:none;}
-.tab-wrap a:after {content:" "; position:absolute; left:0; top:0; width:1px; height:100%; border-left:1px solid #ccc; color:#707070;}
-.weixin-tab {text-align:center; border-bottom:1px solid #ccc;}
-
-/*bottom-tab*/
-.bottom-tab-wrap {position:fixed; width:100%; bottom:0; line-height:38px; display:-webkit-box; display:-moz-box; display:-ms-flexbox; display:-webkit-flex; display:flex; font-size:13px; background-color:#fff;}
-.bottom-tab-wrap a {display:block; -webkit-box-flex:1; -moz-box-flex:1; -ms-flex:1; flex:1; position:relative;}
-.bottom-tab-wrap a:after {content:" "; position:absolute; left:0; top:0; width:1px; height:100%; border-left:1px solid #ccc; color:#707070;}
-
-/*动态样式*/
-.post-container {width:100%;}
-.post-wrapper {width:100%; background-color:#ffffff; margin:10px auto;}
-.post-main {padding:10px 15px; color:#9a9a9a;}
-.post-avatar {width:30px; height:30px;}
-.post-title {font-size:13px; text-align:left;}
-.post-detail-info {font-size:13px; text-align:left; color:#9a9a9a;}
-.fl {float:left;}
-.fr {float:right;}
-.cl {clear:both; overflow:hidden;}
-.post-content {width:100%; font-size:14px; line-height:20px; height:100px; overflow:hidden; word-break:break-all; word-wrap:break-word;}
-.post-all-content a {color:#136ec2;}
-.post-interactive {width:100%; height:35px; line-height:35px; vertical-align:middle; border-top:1px solid #e6e6e6; background-color:#f8f9fb;}
-.post-interactive-column,
-.post-interactive-reply,
-.post-interactive-praise {width:50%; text-align:center; float:left; font-size:13px;}
-.more-wrap {width:100%;}
-.more-events {width:100%; font-size:13px; text-align:center; margin:0 auto; padding: 5px 0; border-top:1px solid #e6e6e6; border-bottom:1px solid #e6e6e6; border-radius:3px; background-color:#f8f9fb; }
-.border-bottom {border-bottom:1px solid #e6e6e6;}
-.post-reply-wrap {width:100%;}
-.post-reply-wrap:first-child {border-top:1px solid #ccc;}
-.post-input-wrap {width:100%; position:fixed; bottom:0;}
-.post-input-wrap2 {width:100%;}
-.post-reply-row {padding:10px 15px; color:#9a9a9a; background-color:#fff;}
-.post-reply-avatar {width:45px; height:30px; text-align:center; margin-right:10px;}
-.post-reply-user {font-size:13px; text-align:left; margin-bottom:10px;}
-.post-reply-content {font-size:13px; text-align:left; word-break:break-all; word-wrap:break-word; overflow:hidden; padding-bottom:15px; border-bottom:1px solid #ccc;}
-.post-reply-content img {max-width:100%;}
-.post-reply-content a {color:#136ec2;}
-.post-reply-date, .post-reply-trigger {font-size:13px;}
-.post-input-container {position:relative; padding-right:70px;}
-.copy-input-container {position:relative; padding-right:70px;}
-.copy-input {width:100%; height:18px; line-height:18px; padding:5px; vertical-align: middle; font-size:12px; border-radius:3px; position:absolute; left:-999em;}
-.post-reply-input {width:100%; height:18px; max-height:54px; line-height:18px; vertical-align: middle; font-size:13px; border:1px solid #e6e6e6; outline:none; padding:5px; margin:0; border-radius:3px; overflow-y:auto; resize:none; background-color:#f0eff4;}
-.post-reply-submit {position:absolute; font-size:13px; height:30px; line-height:30px; vertical-align:middle; padding:0 8px; color:#fff; background-color:#269ac9; outline:none; border:none; top:0; right:0;}
-.reply-icon {background:url(/images/wechat/icon_list.gif) -150px -155px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;}
-.praise-icon {background:url(/images/wechat/icon_list.gif) -36px -88px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;}
-.praised-icon {background:url(/images/wechat/icon_list.gif) -152px -86px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;}
-.num-block {display:inline-block; vertical-align:top;}
-.post-op-banner {height:20px; line-height:20px; vertical-align:middle;}
-
-/*20160628动态新样式*/
-.post-dynamic-author {width:50%; height:30px; line-height:30px; font-size:14px; color:#5b5b5b; vertical-align:middle;}
-.post-dynamic-time {height:30px; line-height:30px; vertical-align:middle;}
-.post-dynamic-title {font-size:15px;}
-.post-dynamic-from {width:50%; font-size:13px;}
-.post-box-shadow {box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5);}
-
-/* loading 弹框*/
-.loading-bg {position:fixed; width:100%; height:100%; left:0; top:0; z-index:99; background:rgba(206, 206, 206, 0.3); overflow:hidden;}
-.loading-box {position:absolute; top:50%; background:rgba(240,240,240, 0.5); width:160px; height:72px; left:50%; margin-top:-36px; margin-left:-80px; text-align:center;}
-.loading-box img {margin-top: 3px; text-align: center;}
-.loading-box span {display: block; font-size:12px;}
-
-/*帖子锁定样式*/
-.locked_btn_cir {background: url("/images/wechat/locked.png") 0 0 no-repeat; cursor: default;}
-
-/*20150612加入班级样式*/
-.add-class-box {position:fixed; width:80%; max-width:300px; min-width:240px; font-size:15px; color:#444; background-color:#fff; box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5); border-radius:5px; top:50%; left:50%; transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); -moz-transform: translate(-50%,-50%); -webkit-transform: translate(-50%,-50%); -o-transform: translate(-50%,-50%);}
-.add-class-tip {padding-top:1.2em; padding-bottom:.5em; font-weight:400;}
-.class-number-input {width:80%; max-width:240px; height:28px; border:1px solid #ccc; padding-left:5px; margin:0 auto; display:block;}
-.cancel-btn {width:49%; height:37px; line-height:37px; text-align:center; vertical-align:middle; border-top:1px solid #ccc;}
-.submit-btn {width:49%; height:37px; line-height:37px; text-align:center; vertical-align:middle; border-top:1px solid #ccc;}
-.slice {width:2%; text-align:center; border-top:1px solid #ccc;}
-.slice-line {width:1px; height:37px; margin:auto; background:#ccc;}
-
-/*20160613邀请码样式*/
-.qr-code-wrap {width:100%; padding:40px 0; background-color:#3b94d6;}
-.qr-code-box {width:225px; background-color:#fff; border-radius:3px; margin:0 auto;}
-.share-class-name {font-size:18px; color:#3b3b3b; text-align:center; padding:12px; border-bottom:1px solid #cccccc;}
-.qr-img-wrap {width:100%; border-bottom:1px dashed #ccc;}
-.qr-code-img {margin:36px auto; display:block;}
-.invitation-code-wrap {text-align:center; font-size:18px; color:#3b3b3b; padding:16px;}
-.share-code-wrap {width:100%; background-color:#efeff4;}
-.share-code-btn, .finish-btn {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; background-color:#ff7239; margin:18px auto 20px auto; border-radius:50px; display:block;}
-.share-code-instruction {max-width:228px; font-size:12px; color:#666; line-height:20px; margin:0 auto;}
-
-/*20160613班级详情*/
-.class-detail-name, .blue-title {width:100%; height:45px; line-height:45px; vertical-align:middle; background-color:#3b94d6; color:#fff; font-size:18px; text-align:center;}
-.blue-title-sub {position:absolute; right:10px;}
-.slice2 {width:2%; text-align:center; background-color:#fff; border-bottom:1px solid #ccc;}
-.slice3 {width:1%; height:38px; text-align:center; background-color:#fff; border-bottom:1px solid #ccc;}
-.slice-line2 {width:1px; height:38px; margin:auto; background:#ccc;}
-.class-detail-tab {width:23%; height:38px; line-height:38px; font-size:13px; color:#444; background-color:#fff; float:left; text-align:center; vertical-align:middle; border-bottom:1px solid #ccc;}
-.class-detail-tab2 {width:32%; height:38px; line-height:38px; font-size:13px; color:#444; background-color:#fff; float:left; text-align:center; vertical-align:middle; border-bottom:1px solid #ccc;}
-.class-detail-tab3 {width:48%; height:38px; line-height:38px; font-size:13px; color:#444; background-color:#fff; float:left; text-align:center; vertical-align:middle; border-bottom:1px solid #ccc;}
-.class-tab-active {border-bottom:3px solid #3b94d6;}
-.tab-active-arrow {border-width:4px; position:absolute; top:41px; left:50%; transform:translate(-50%,0); border-color:#3b94d6 transparent transparent transparent; border-style:solid dashed dashed dashed;}
-.class-search-wrap {padding:8px 12px; position:relative;}
-.class-search-inner {padding:0 30px; background-color:#fff;}
-.class-search-icon {position:absolute; top:16px; left:16px;}
-.class-detail-search {width:100%; height:33px; color:#999; background-color:#fff; border:none; outline:none;}
-.border-top {border-top:1px solid #ccc;}
-.class-detail-row {width:100%; line-height:18px; padding:10px 0; border-bottom:1px solid #ccc; background-color:#fff;}
-.class-member-row {width:100%; line-height:18px; padding:5px 0; border-bottom:1px solid #ccc; background-color:#fff;}
-.class-test-tip {text-align:center; font-size:13px; color:#444; padding-top:40px;}
-.img-circle {border-radius:50%;}
-.member-banner {height:24px; line-height:24px; text-align:center; vertical-align:middle; background-color:#dfdfdf;}
-.resource-width {width:76%;}
-.courseware-from-width {max-width:57%;}
-.other-from-width {max-width:80%;}
-
-/*20160614班级列表*/
-.course-diff-row {width:100%; height:28px; line-height:28px; vertical-align:middle; background-color:#fff; border-bottom:1px solid #ccc;}
-.course-list-row {width:100%; height:38px; line-height:38px; vertical-align:middle; border-top:1px solid #ccc; border-bottom:1px solid #ccc; background-color:#fff;}
-.class-list {width:100%; border-bottom:1px solid #ccc;}
-.class-list li {height:40px; line-height:40px; vertical-align:middle; margin:0 25px; border-left:1px solid #ccc; border-bottom:1px solid #ccc; position:relative;}
-.class-list-name {max-width:75%; display:inline-block;}
-.class-list-dot {position:absolute; top:13px; left:-8px;}
-.border-bottom-none {border-bottom:none !important;}
-.border-top-none {border-top:none !important;}
-.students-amount {height:14px; line-height:14px; vertical-align:middle; padding:2px 5px; background-color:#e6e6e6; border-radius:10px;}
-.new-class-btn {font-size:15px; color:#fff; background-color:#3b94d6; padding:10px 40px; border-radius:20px; display:inline-block; margin:0 auto;}
-.join-class-btn {font-size:15px; color:#444; background-color:#ccc; padding:10px 40px; border-radius:20px; display:inline-block; margin:0 auto;}
-.new-class-input {width:60%; color:#555; height:16px; line-height:16px; vertical-align:middle; border:none; outline:none; padding:8px 0;}
-.class-list-setting {position:absolute; top:10px; right:10px;}
-
-/*20160616登录注册*/
-.login-wrap {padding:0 10px;}
-.input-box-wrap {padding-right:17px;}
-.input-box { -webkit-appearance: none; font-size: 15px;width:100%; height:18px; padding: 10px 0px 10px 5px; line-height:18px; border:1px solid #ccc; border-radius:5px;}
-.login-op-wrap {height:30px; line-height:30px; vertical-align:middle;}
-.login-box{display:inline-block; width:14px; height:14px; line-height:14px; text-align:center; vertical-align:middle; border:1px solid #ccc; background:#fff; border-radius:3px; color:#fff; cursor:pointer;}
-.login-box.checked{background:#63c360; border:1px solid #63c360;}
-.login-box.checked:after{content:url(/images/wechat/checked.png);}
-.forget-psw-wrap {width:60px; margin:0 auto;}
-.forget-psw {position:fixed; bottom:10px;}
-
-/*二级回复*/
-.mult-reply-container{ border:solid 1px #f3ddb3; background:#fffef4; padding:4px;color:#999;}
-.mult-reply-content{ color:#707070; font-size:13px;}
-.mult-reply-hide{ text-align:center; display:block; font-size:14px; color:#aaa; border-bottom:1px solid #F3DDB3; padding:8px 0;}
-.mult-reply-arrow{ color:#aaa; margin-right:10px; font-size:14px; font-weight:bold;}
\ No newline at end of file
+@charset "utf-8";
+/* CSS Document */
+
+/*基本样式*/
+body,table,input,textarea,select,button { font-family: "微软雅黑","宋体","Helvetica Neue", Helvetica, Arial, sans-serif;}
+body, ul, h1,h2,h3,h4,h5,p,pre,input {padding:0px; margin:0px;}
+body{background-color: #efeff4;}
+ul li {list-style:none;}
+img {max-width:100%;}
+blockquote {border:1px solid #d4d4d4; padding: 0.6em; margin: 5px 0.4em 5px 1.4em; border-radius: 4px; font-family: "Microsoft YaHei"; background-size: 100% 100%;}
+.text-control {word-break:normal; word-wrap:break-word;}
+.f12 {font-size:12px;}
+.f13 {font-size:13px;}
+.f14 {font-size:14px;}
+.f15 {font-size:15px;}
+.f16 {font-size:16px;}
+.fb {font-weight:bold;}
+.mt2 {margin-top:2px;}
+.mt3 {margin-top:3px;}
+.mt4 {margin-top:4px;}
+.mt5 {margin-top:5px;}
+.mt10 {margin-top:10px;}
+.mt11 {margin-top:11px;}
+.mt12 {margin-top:12px;}
+.mt15 {margin-top:15px;}
+.mt30 {margin-top:30px;}
+.mt70 {margin-top:70px;}
+.mb5 {margin-bottom:5px;}
+.mb10 {margin-bottom:10px;}
+.mb15 {margin-bottom:15px;}
+.mb20 {margin-bottom:20px;}
+.mb50 {margin-bottom:50px;}
+.ml5 {margin-left:5px;}
+.ml10 {margin-left:10px;}
+.ml40 {margin-left:40px;}
+.mr5 {margin-right:5px;}
+.mr10 {margin-right:10px;}
+.ml15 {margin-left:15px;}
+.ml35 {margin-left:35px;}
+.mr15 {margin-right:15px;}
+.mr20 {margin-right:20px;}
+.ml25 {margin-left:25px;}
+.mr25 {margin-right:25px;}
+.ml55 {margin-left:55px;}
+.mr55 {margin-right:55px;}
+.c-red {color:#e81a1a;}
+.c-blue {color:#269ac9;}
+.c-grey {color:#9a9a9a !important;}
+.c-grey2 {color:#707070;}
+.c-grey3 {color:#555555;}
+.c-grey4 {color:#888888;}
+.c-grey5 {color:#aaaaaa;}
+.c-grey6 {color:#777777;}
+.c-blue {color:#3b94d6;}
+.c-white {color:#ffffff;}
+.c-black {color:#333}
+a {color:#707070;}
+a.c-grey {color:#707070;}
+a.c-grey2 {color:#9a9a9a;}
+a.c-grey3 {color:#353535;}
+a.c-green {color:#0bb20c;}
+a:link,a:visited{text-decoration:none;}
+a:hover,a:active{cursor:pointer;}
+a.link-blue {color:#269ac9;}
+a.link-blue2 {color:#3b94d6;}
+a.underline {text-decoration:underline;}
+.border-radius {border-radius:5px;}
+.w36 {width:36px;}
+.max-width-60 {max-width:60px;}
+.max-width-130 {max-width:130px;}
+.hidden {overflow:hidden; white-space:nowrap; text-overflow:ellipsis;}
+.inline-block {display:inline-block;}
+.dis {display:block;}
+.undis {display:none;}
+.text-nowrap {white-space:nowrap;}
+.v-top {vertical-align:top;}
+.tac {text-align:center;}
+.block-center {margin-left:auto; margin-right:auto; display:block;}
+
+/*背景色*/
+.bg-grey {background-color:#c1c1c1 !important;}
+.bg-blue {background-color:#3b94d6;}
+
+/*按钮样式*/
+.btn1 {width:100%; height:40px; line-height:40px; vertical-align:middle; text-align:center; color:#fff; display:block; border-radius:5px;}
+.bg-blue:not(.btn-disabled):active {background-color:#2780c2;}
+.btn-disabled {background-color:#ccc !important;}
+.btn2 {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; margin:18px auto 20px auto; border-radius:50px; display:block;}
+.btn3 {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; border-radius:50px; display:block;}
+.fixed-bottom-btn {position:fixed; bottom:5px; left:50%; transform:translate(-50%,0);}
+
+/*tab*/
+.tab-wrap {position:relative; width:100%; line-height:38px; display:-webkit-box; display:-moz-box; display:-ms-flexbox; display:-webkit-flex; display:flex; font-size:13px; background-color:#fff;}
+.tab-wrap a {position:relative; display:block; -webkit-box-flex:1; -moz-box-flex:1; -ms-flex:1; flex:1;}
+.tab-wrap a:first-child:after {display:none;}
+.tab-wrap a:after {content:" "; position:absolute; left:0; top:0; width:1px; height:100%; border-left:1px solid #ccc; color:#707070;}
+.weixin-tab {text-align:center; border-bottom:1px solid #ccc;}
+
+/*bottom-tab*/
+.bottom-tab-wrap {position:fixed; width:100%; bottom:0; line-height:38px; display:-webkit-box; display:-moz-box; display:-ms-flexbox; display:-webkit-flex; display:flex; font-size:13px; background-color:#fff;}
+.bottom-tab-wrap a {display:block; -webkit-box-flex:1; -moz-box-flex:1; -ms-flex:1; flex:1; position:relative;}
+.bottom-tab-wrap a:after {content:" "; position:absolute; left:0; top:0; width:1px; height:100%; border-left:1px solid #ccc; color:#707070;}
+
+/*动态样式*/
+.post-container {width:100%;}
+.post-wrapper {width:100%; background-color:#ffffff; margin:10px auto;}
+.post-main {padding:10px 15px; color:#9a9a9a;}
+.post-avatar {width:30px; height:30px;}
+.post-title {font-size:13px; text-align:left;}
+.post-detail-info {font-size:13px; text-align:left; color:#9a9a9a;}
+.fl {float:left;}
+.fr {float:right;}
+.cl {clear:both; overflow:hidden;}
+.post-content {width:100%; font-size:14px; line-height:20px; height:100px; overflow:hidden; word-break:normal; word-wrap:break-word; text-align:justify;}
+.post-all-content a {color:#136ec2;}
+.post-interactive {width:100%; height:35px; line-height:35px; vertical-align:middle; border-top:1px solid #e6e6e6; background-color:#f8f9fb;}
+.post-interactive-column,
+.post-interactive-reply,
+.post-interactive-praise {width:50%; text-align:center; float:left; font-size:13px;}
+.more-wrap {width:100%;}
+.more-events {width:100%; font-size:13px; text-align:center; margin:0 auto; padding: 5px 0; border-top:1px solid #e6e6e6; border-bottom:1px solid #e6e6e6; border-radius:3px; background-color:#f8f9fb; }
+.border-bottom {border-bottom:1px solid #e6e6e6;}
+.post-reply-wrap {width:100%;}
+.post-reply-wrap:first-child {border-top:1px solid #ccc;}
+.post-input-wrap {width:100%; position:fixed; bottom:0; background-color:#fff;}
+.post-input-wrap2 {width:100%;}
+.post-reply-row {margin:10px 15px; color:#9a9a9a; background-color:#fff; border-bottom:1px solid #f0f0f0;}
+.post-reply-avatar {width:45px; height:30px; text-align:center; margin-right:10px;}
+.post-reply-user {font-size:13px; text-align:left; margin-bottom:10px;}
+.post-reply-content {font-size:13px; word-break:break-all; word-wrap:break-word; overflow:hidden; text-align:justify;}
+.post-reply-content img {max-width:100%;}
+.post-reply-content a {color:#136ec2;}
+.post-reply-date, .post-reply-trigger {font-size:13px;}
+.post-input-container {position:relative; padding-right:70px;}
+.copy-input-container {position:relative; padding-right:70px;}
+.copy-input {width:100%; height:18px; line-height:18px; padding:5px; vertical-align: middle; font-size:12px; border-radius:3px; position:absolute; left:-999em;}
+.post-reply-input {width:100%; height:18px; max-height:54px; line-height:18px; vertical-align: middle; font-size:13px; border:1px solid #e6e6e6; outline:none; padding:5px; margin:0; border-radius:3px; overflow-y:auto; resize:none; background-color:#f0eff4;}
+.post-reply-submit {position:absolute; font-size:13px; height:30px; line-height:30px; vertical-align:middle; padding:0 8px; color:#fff; background-color:#269ac9; outline:none; border:none; top:0; right:0;}
+.reply-icon {background:url(/images/wechat/icon_list.gif) -150px -155px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;}
+.praise-icon {background:url(/images/wechat/icon_list.gif) -36px -88px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;}
+.praised-icon {background:url(/images/wechat/icon_list.gif) -152px -86px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;}
+.num-block {display:inline-block; vertical-align:top;}
+.post-op-banner {height:20px; line-height:20px; vertical-align:middle;}
+
+/*20160628动态新样式*/
+.post-dynamic-author {width:50%; height:30px; line-height:30px; font-size:14px; color:#5b5b5b; vertical-align:middle;}
+.post-dynamic-time {height:30px; line-height:30px; vertical-align:middle;}
+.post-dynamic-title {font-size:15px;}
+.post-dynamic-from {width:50%; font-size:13px;}
+.post-box-shadow {box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5);}
+.post-reply-author {width:50%; height:20px; line-height:20px; font-size:12px; color:#5d5d5d; vertical-align:middle;}
+.post-reply-time {height:20px; line-height:20px; vertical-align:middle;}
+
+/* loading 弹框*/
+.loading-bg {position:fixed; width:100%; height:100%; left:0; top:0; z-index:99; background:rgba(206, 206, 206, 0.3); overflow:hidden;}
+.loading-box {position:absolute; top:50%; background:rgba(240,240,240, 0.5); width:160px; height:72px; left:50%; margin-top:-36px; margin-left:-80px; text-align:center;}
+.loading-box img {margin-top: 3px; text-align: center;}
+.loading-box span {display: block; font-size:12px;}
+
+/*帖子锁定样式*/
+.locked_btn_cir {background: url("/images/wechat/locked.png") 0 0 no-repeat; cursor: default;}
+
+/*20150612加入班级样式*/
+.add-class-box {position:fixed; width:80%; max-width:300px; min-width:240px; font-size:15px; color:#444; background-color:#fff; box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5); border-radius:5px; top:50%; left:50%; transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); -moz-transform: translate(-50%,-50%); -webkit-transform: translate(-50%,-50%); -o-transform: translate(-50%,-50%);}
+.add-class-tip {padding-top:1.2em; padding-bottom:.5em; font-weight:400;}
+.class-number-input {width:80%; max-width:240px; height:28px; border:1px solid #ccc; padding-left:5px; margin:0 auto; display:block;}
+.cancel-btn {width:49%; height:37px; line-height:37px; text-align:center; vertical-align:middle; border-top:1px solid #ccc;}
+.submit-btn {width:49%; height:37px; line-height:37px; text-align:center; vertical-align:middle; border-top:1px solid #ccc;}
+.slice {width:2%; text-align:center; border-top:1px solid #ccc;}
+.slice-line {width:1px; height:37px; margin:auto; background:#ccc;}
+
+/*20160613邀请码样式*/
+.qr-code-wrap {width:100%; padding:40px 0; background-color:#3b94d6;}
+.qr-code-box {width:225px; background-color:#fff; border-radius:3px; margin:0 auto;}
+.share-class-name {font-size:18px; color:#3b3b3b; text-align:center; padding:12px; border-bottom:1px solid #cccccc;}
+.qr-img-wrap {width:100%; border-bottom:1px dashed #ccc;}
+.qr-code-img {margin:36px auto; display:block;}
+.invitation-code-wrap {text-align:center; font-size:18px; color:#3b3b3b; padding:16px;}
+.share-code-wrap {width:100%; background-color:#efeff4;}
+.share-code-btn, .finish-btn {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; background-color:#ff7239; margin:18px auto 20px auto; border-radius:50px; display:block;}
+.share-code-instruction {max-width:228px; font-size:12px; color:#666; line-height:20px; margin:0 auto;}
+
+/*20160613班级详情*/
+.class-detail-name, .blue-title {width:100%; height:45px; line-height:45px; vertical-align:middle; background-color:#3b94d6; color:#fff; font-size:18px; text-align:center;}
+.blue-title-sub {position:absolute; right:10px;}
+.slice2 {width:2%; text-align:center; background-color:#fff; border-bottom:1px solid #ccc;}
+.slice3 {width:1%; height:38px; text-align:center; background-color:#fff; border-bottom:1px solid #ccc;}
+.slice-line2 {width:1px; height:38px; margin:auto; background:#ccc;}
+.class-detail-tab {width:23%; height:38px; line-height:38px; font-size:13px; color:#444; background-color:#fff; float:left; text-align:center; vertical-align:middle; border-bottom:1px solid #ccc;}
+.class-detail-tab2 {width:32%; height:38px; line-height:38px; font-size:13px; color:#444; background-color:#fff; float:left; text-align:center; vertical-align:middle; border-bottom:1px solid #ccc;}
+.class-detail-tab3 {width:48%; height:38px; line-height:38px; font-size:13px; color:#444; background-color:#fff; float:left; text-align:center; vertical-align:middle; border-bottom:1px solid #ccc;}
+.class-tab-active {border-bottom:3px solid #3b94d6;}
+.tab-active-arrow {border-width:4px; position:absolute; top:41px; left:50%; transform:translate(-50%,0); border-color:#3b94d6 transparent transparent transparent; border-style:solid dashed dashed dashed;}
+.class-search-wrap {padding:8px 12px; position:relative;}
+.class-search-inner {padding:0 30px; background-color:#fff;}
+.class-search-icon {position:absolute; top:16px; left:16px;}
+.class-detail-search {width:100%; height:33px; color:#999; background-color:#fff; border:none; outline:none;}
+.border-top {border-top:1px solid #ccc;}
+.class-detail-row {width:100%; line-height:18px; padding:10px 0; border-bottom:1px solid #ccc; background-color:#fff;}
+.class-member-row {width:100%; line-height:18px; padding:5px 0; border-bottom:1px solid #ccc; background-color:#fff; position:relative;}
+.class-test-tip {text-align:center; font-size:13px; color:#444; padding-top:40px;}
+.img-circle {border-radius:50% !important;}
+.member-banner {height:24px; line-height:24px; text-align:center; vertical-align:middle; background-color:#dfdfdf;}
+.resource-width {width:76%;}
+.courseware-from-width {max-width:57%;}
+.other-from-width {max-width:80%;}
+.course-name-width {width:68%;}
+
+/*20160614班级列表*/
+.course-diff-row {width:100%; height:28px; line-height:28px; vertical-align:middle; background-color:#fff; border-bottom:1px solid #ccc;}
+.course-list-row {width:100%; height:38px; line-height:38px; vertical-align:middle; border-top:1px solid #ccc; border-bottom:1px solid #ccc; background-color:#fff;}
+.class-list {width:100%; border-bottom:1px solid #ccc;}
+.class-list li {height:40px; line-height:40px; vertical-align:middle; margin:0 25px; border-left:1px solid #ccc; border-bottom:1px solid #ccc; position:relative;}
+.class-list-name {max-width:75%; display:inline-block;}
+.class-list-dot {position:absolute; top:13px; left:-8px;}
+.border-bottom-none {border-bottom:none !important;}
+.border-top-none {border-top:none !important;}
+.students-amount {height:14px; line-height:14px; vertical-align:middle; padding:2px 5px; background-color:#e6e6e6; border-radius:10px;}
+.new-class-btn {font-size:15px; color:#fff; background-color:#3b94d6; padding:10px 40px; border-radius:20px; display:inline-block; margin:0 auto;}
+.join-class-btn {font-size:15px; color:#444; background-color:#ccc; padding:10px 40px; border-radius:20px; display:inline-block; margin:0 auto;}
+.new-class-input {width:60%; color:#555; height:16px; line-height:16px; vertical-align:middle; border:none; outline:none; padding:8px 0;}
+.class-list-setting {position:absolute; top:11px; right:10px;}
+.class-setting-wrap {width:38px; height:38px; position:absolute; top:0; right:0;}
+
+/*20160616登录注册*/
+.login-wrap {padding:0 10px;}
+.input-box-wrap {padding-right:17px;}
+.input-box { -webkit-appearance: none; font-size: 15px;width:100%; height:18px; padding: 10px 0px 10px 5px; line-height:18px; border:1px solid #ccc; border-radius:5px;}
+.login-op-wrap {height:30px; line-height:30px; vertical-align:middle;}
+.login-box{display:inline-block; width:14px; height:14px; line-height:14px; text-align:center; vertical-align:middle; border:1px solid #ccc; background:#fff; border-radius:3px; color:#fff; cursor:pointer;}
+.login-box.checked{background:#63c360; border:1px solid #63c360;}
+.login-box.checked:after{content:url(/images/wechat/checked.png);}
+.forget-psw-wrap {width:60px; margin:0 auto;}
+.forget-psw {position:fixed; bottom:10px;}
+
+/*二级回复*/
+.mult-reply-container{ border:solid 1px #f3ddb3; background:#fffef4; padding:4px;color:#999;}
+.mult-reply-content{ color:#555; font-size:13px;}
+.mult-reply-hide{ text-align:center; display:block; font-size:14px; color:#aaa; border-bottom:1px solid #F3DDB3; padding:8px 0;}
+.mult-reply-arrow{ color:#aaa; margin-right:10px; font-size:14px; font-weight:bold;}
+
+
+/*20160729项目说明*/
+.project-intro {line-height:2;}
+.project-intro li {list-style:disc; margin-left:20px;}
\ No newline at end of file