From 2a971c3bc6e436c8d01e5a6719001ed9429522b5 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Fri, 24 Jun 2016 11:24:48 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=89=E7=9A=84?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=B7=BB=E5=8A=A0=E6=88=90=E5=91=98=E7=9A=84?= =?UTF-8?q?BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/organizations/setting.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/organizations/setting.html.erb b/app/views/organizations/setting.html.erb index ebf3f5445..3a5a8c175 100644 --- a/app/views/organizations/setting.html.erb +++ b/app/views/organizations/setting.html.erb @@ -112,7 +112,7 @@ <%= form_tag url_for(:controller => 'org_member', :action => 'create', :org => @organization),:id=>'org_member_add_form',:remote=>true do |f|%> <%# if @organization.secdomain_name.nil? %> - <%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript host_with_protocol + "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> + <%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> <%# else %> <%#= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript secdomain_with_protocol(@organization.secdomain_name) + "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> <%# end %> From 64d87b73988657765cd4852b287ea4ffbe87bb95 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Fri, 24 Jun 2016 13:50:28 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BB=84=E7=BB=87?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=88=90=E5=91=98=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/organizations_controller.rb | 8 +++++++ .../org_member_autocomplete.js.erb | 23 +++++++++++++++++++ app/views/organizations/setting.html.erb | 3 ++- config/routes.rb | 1 + 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 app/views/organizations/org_member_autocomplete.js.erb diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb index b36ef592d..e052ec20f 100644 --- a/app/controllers/organizations_controller.rb +++ b/app/controllers/organizations_controller.rb @@ -642,4 +642,12 @@ class OrganizationsController < ApplicationController OrgMessage.create(:user_id => params[:user_id], :organization_id => @organization.id, :message_type => 'AgreeApplySubdomain', :message_id => @organization.id, :sender_id => User.current.id, :viewed => 0, :content => params[:org_domain]) end end + + def org_member_autocomplete + @org = Organization.find(params[:org]) + @flag = params[:flag] || false + respond_to do |format| + format.js + end + end end diff --git a/app/views/organizations/org_member_autocomplete.js.erb b/app/views/organizations/org_member_autocomplete.js.erb new file mode 100644 index 000000000..1dbb972f8 --- /dev/null +++ b/app/views/organizations/org_member_autocomplete.js.erb @@ -0,0 +1,23 @@ +<% if @org%> +var checked = $("#principals_for_new_member input:checked").size(); +if(checked > 0) +{ + alert('翻页或搜索后将丢失当前选择的用户数据!'); +} +<% if @flag == "true"%> +$('#principals_for_new_member').html('<%= escape_javascript(find_user_not_in_current_org_by_name(@org)) %>'); +<% else%> +$('#principals_for_new_member').html('<%= escape_javascript(find_user_not_in_current_org_by_name(@org)) %>'); +<% end%> + +<%end%> +var collection=$("#principals_for_new_member").children("#principals").children("label"); +collection.css("text-overflow","ellipsis"); +collection.css("white-space","nowrap"); +collection.css("width","200px"); +collection.css("overflow","hidden"); +for(i=0;i 'org_member', :action => 'create', :org => @organization),:id=>'org_member_add_form',:remote=>true do |f|%> <%# if @organization.secdomain_name.nil? %> - <%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> + <%#= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript host_with_protocol + "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> + <%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{url_for(:controller => 'organizations', :action => 'org_member_autocomplete', :org=> @organization.id)}')" %> <%# else %> <%#= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript secdomain_with_protocol(@organization.secdomain_name) + "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> <%# end %> diff --git a/config/routes.rb b/config/routes.rb index ec8fa2337..7008b3ab7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -104,6 +104,7 @@ RedmineApp::Application.routes.draw do post 'agree_apply_subdomain' post 'update_field_by_admin' post 'reset_update_field_by_admin' + get 'org_member_autocomplete' end end From 86a5eccae6731968f43c80cdca011e62f3e2f726 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Fri, 24 Jun 2016 14:16:39 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E7=BB=84=E7=BB=87=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E4=B8=AD=E6=B7=BB=E5=8A=A0=E6=88=90=E5=91=98BUG=E8=A7=A3?= =?UTF-8?q?=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/organizations_controller.rb | 8 ------- .../org_member_autocomplete.js.erb | 23 ------------------- app/views/organizations/setting.html.erb | 4 ++-- config/routes.rb | 1 - public/javascripts/application.js | 1 + 5 files changed, 3 insertions(+), 34 deletions(-) delete mode 100644 app/views/organizations/org_member_autocomplete.js.erb diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb index e052ec20f..b36ef592d 100644 --- a/app/controllers/organizations_controller.rb +++ b/app/controllers/organizations_controller.rb @@ -642,12 +642,4 @@ class OrganizationsController < ApplicationController OrgMessage.create(:user_id => params[:user_id], :organization_id => @organization.id, :message_type => 'AgreeApplySubdomain', :message_id => @organization.id, :sender_id => User.current.id, :viewed => 0, :content => params[:org_domain]) end end - - def org_member_autocomplete - @org = Organization.find(params[:org]) - @flag = params[:flag] || false - respond_to do |format| - format.js - end - end end diff --git a/app/views/organizations/org_member_autocomplete.js.erb b/app/views/organizations/org_member_autocomplete.js.erb deleted file mode 100644 index 1dbb972f8..000000000 --- a/app/views/organizations/org_member_autocomplete.js.erb +++ /dev/null @@ -1,23 +0,0 @@ -<% if @org%> -var checked = $("#principals_for_new_member input:checked").size(); -if(checked > 0) -{ - alert('翻页或搜索后将丢失当前选择的用户数据!'); -} -<% if @flag == "true"%> -$('#principals_for_new_member').html('<%= escape_javascript(find_user_not_in_current_org_by_name(@org)) %>'); -<% else%> -$('#principals_for_new_member').html('<%= escape_javascript(find_user_not_in_current_org_by_name(@org)) %>'); -<% end%> - -<%end%> -var collection=$("#principals_for_new_member").children("#principals").children("label"); -collection.css("text-overflow","ellipsis"); -collection.css("white-space","nowrap"); -collection.css("width","200px"); -collection.css("overflow","hidden"); -for(i=0;i 'org_member', :action => 'create', :org => @organization),:id=>'org_member_add_form',:remote=>true do |f|%> <%# if @organization.secdomain_name.nil? %> - <%#= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript host_with_protocol + "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> - <%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{url_for(:controller => 'organizations', :action => 'org_member_autocomplete', :org=> @organization.id)}')" %> + <%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> + <%#= javascript_tag "observeSearchfield('not_org_member_search', null, '#{url_for(:controller => 'organizations', :action => 'org_member_autocomplete', :org=> @organization.id)}')" %> <%# else %> <%#= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript secdomain_with_protocol(@organization.secdomain_name) + "/org_member/org_member_autocomplete?" + {:org=> @organization.id}.to_query }')" %> <%# end %> diff --git a/config/routes.rb b/config/routes.rb index 7008b3ab7..ec8fa2337 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -104,7 +104,6 @@ RedmineApp::Application.routes.draw do post 'agree_apply_subdomain' post 'update_field_by_admin' post 'reset_update_field_by_admin' - get 'org_member_autocomplete' end end diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 22483c1d5..a2f14332d 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -547,6 +547,7 @@ function observeSearchfield(fieldId, targetId, url) { $.ajax({ url: url, type: 'get', + dataType: 'jsonp', data: {q: $this.val()}, success: function(data){ if(targetId) $('#'+targetId).html(data); }, beforeSend: function(){ $this.addClass('ajax-loading'); }, From 9ec1f916b6851bab2894411d78a48b7b395c4f45 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Fri, 24 Jun 2016 15:38:46 +0800 Subject: [PATCH 4/9] . --- app/controllers/wechats_controller.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index 15d4ab2e1..78484ca7f 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -189,9 +189,9 @@ class WechatsController < ActionController::Base def join_class(params, user) course = nil - course = Course.where(qrcode: params[:ticket]) if params[:ticket] - course = Course.where(invite_code: params[:invite_code]) if params[:invite_code] - raise "课程不存在" if course.blank? + course = Course.where(qrcode: params[:ticket]).first if params[:ticket] + course = Course.where(invite_code: params[:invite_code]).first if params[:invite_code] + raise "课程不存在" unless course cs = CoursesService.new status = cs.join_course(course.invite_code, user) @@ -200,7 +200,6 @@ class WechatsController < ActionController::Base raise CoursesService::JoinCourseError.message(status[:state]) end - course = status[:course] news = (1..1).each_with_object([]) { |n, memo| memo << { title: '恭喜您成功加入班级,开始学习吧!', content: "课程名称: #{course.name}\n班级名称: #{course.name}\n任课老师: #{course.teacher.show_name}\n进入班级,和小伙伴愉快的学习吧!"} } return request.reply.news(news) do |article, n, index| # article is return object From c522d7160cafbd6b2f3a4537f6db061da3a66722 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Fri, 24 Jun 2016 15:40:27 +0800 Subject: [PATCH 5/9] . --- app/controllers/wechats_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index 78484ca7f..c2891e850 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -194,7 +194,7 @@ class WechatsController < ActionController::Base raise "课程不存在" unless course cs = CoursesService.new - status = cs.join_course(course.invite_code, user) + status = cs.join_course({invite_code: course.invite_code}, user) logger.info status if status[:state] != 0 raise CoursesService::JoinCourseError.message(status[:state]) From 9a9f6400da0376131e91a3b5413e554f7b6067b9 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Fri, 24 Jun 2016 15:42:00 +0800 Subject: [PATCH 6/9] . --- app/controllers/wechats_controller.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index c2891e850..33561c242 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -13,7 +13,7 @@ class WechatsController < ActionController::Base if !uw return sendBind() else - return join_class({invite_code: content}, uw.user) + return join_class({invite_code: content}, uw.user, request) end rescue => e logger.error e.inspect @@ -53,7 +53,7 @@ class WechatsController < ActionController::Base if !uw return sendBind() else - return join_class({ticket: ticket}, uw.user) + return join_class({ticket: ticket}, uw.user, request) end rescue => e logger.error e.inspect @@ -187,7 +187,7 @@ class WechatsController < ActionController::Base end end - def join_class(params, user) + def join_class(params, user, request) course = nil course = Course.where(qrcode: params[:ticket]).first if params[:ticket] course = Course.where(invite_code: params[:invite_code]).first if params[:invite_code] From 657e5060712eedab31b2b68bb7fa47768d63437c Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Fri, 24 Jun 2016 15:45:50 +0800 Subject: [PATCH 7/9] . --- app/services/courses_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 3c74c328c..bdd6564ae 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -355,7 +355,7 @@ class CoursesService #如果加入角色为教师或者教辅,并且当前是学生,或者是要成为教辅,当前不是教辅,或者要成为教师,当前不是教师。那么要发送请求 elsif (params[:role] != "10" && roleName == "Student") || (params[:role] == "7" && roleName != "TeachingAsistant" ) || (params[:role] == "9" && roleName != "Teacher" ) #如果已经发送过消息了,那么就要给个提示 - if CourseMessage.where("course_message_type = 'JoinCourseRequest' and user_id = #{course.tea_id} and content = #{params[:role]} and course_message_id = #{User.current.id} and course_id = #{course.id} and status = 0 ").count != 0 + if CourseMessage.where("course_message_type = 'JoinCourseRequest' and user_id = #{course.tea_id} and course_message_id = #{User.current.id} and course_id = #{course.id} and status = 0 ").count != 0 @state = 7 else Mailer.run.join_course_request(course, User.current, params[:role]) From 4436e87c8475e3e2776b586ff14399f279150f77 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Fri, 24 Jun 2016 16:35:27 +0800 Subject: [PATCH 8/9] . --- app/controllers/wechats_controller.rb | 44 ++++++++++++--------------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index 33561c242..2afb85ace 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -8,18 +8,7 @@ class WechatsController < ActionController::Base # default text responder when no other match on :text do |request, content| #邀请码 - begin - uw = user_binded?(request[:FromUserName]) - if !uw - return sendBind() - else - return join_class({invite_code: content}, uw.user, request) - end - rescue => e - logger.error e.inspect - logger.error e.backtrace.join("\n") - return request.reply.text e - end + sendBindClass(request, {invite_code: content}) end # When receive 'help', will trigger this responder @@ -48,24 +37,13 @@ class WechatsController < ActionController::Base # When subscribe user scan scene_id in public account on :scan, with: 'scene_id' do |request, ticket| - begin - uw = user_binded?(request[:FromUserName]) - if !uw - return sendBind() - else - return join_class({ticket: ticket}, uw.user, request) - end - rescue => e - logger.error e.inspect - logger.error e.backtrace.join("\n") - return request.reply.text e - end + sendBindClass(request, {ticket: ticket}) end # When no any on :scan responder can match subscribe user scaned scene_id on :event, with: 'scan' do |request| if request[:EventKey].present? - request.reply.text "event scan got EventKey #{request[:EventKey]} Ticket #{request[:Ticket]}" + sendBindClass(request, {ticket: request[:Ticket]}) end end @@ -161,6 +139,22 @@ class WechatsController < ActionController::Base end end + + def sendBindClass(request, params) + begin + uw = user_binded?(request[:FromUserName]) + if !uw + return sendBind(request) + else + return join_class(params, uw.user, request) + end + rescue => e + logger.error e.inspect + logger.error e.backtrace.join("\n") + return request.reply.text e + end + end + def default_msg(request) uw = user_binded?(request[:FromUserName]) if uw && uw.user From c39a982093650a6f23049d4ff670d921857d93cf Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Fri, 24 Jun 2016 16:51:40 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/wechats/user_activities.html.erb | 42 +++++++++++----------- public/assets/wechat/invite_code.html | 3 +- public/javascripts/wechat/build/app.min.js | 9 ++--- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/app/views/wechats/user_activities.html.erb b/app/views/wechats/user_activities.html.erb index 2b4ebc703..80d254dae 100644 --- a/app/views/wechats/user_activities.html.erb +++ b/app/views/wechats/user_activities.html.erb @@ -28,27 +28,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/assets/wechat/invite_code.html b/public/assets/wechat/invite_code.html index 6f56f7e86..1aa0c8830 100644 --- a/public/assets/wechat/invite_code.html +++ b/public/assets/wechat/invite_code.html @@ -7,7 +7,8 @@ '}}]); -app.config(["$routeProvider","$httpProvider","$locationProvider","config",function(e,o,r,t){var l=t.rootPath,n={delay:["auth",function(e){return e.get_bind()}]},s=function(e,o){return{templateUrl:l+e,controller:o,resolve:n}};e.when("/login",{templateUrl:l+"login.html",controller:"LoginController"}).when("/reg",{templateUrl:l+"reg.html",controller:"RegController"}).when("/activites",s("activities.html","ActivityController")).when("/issues/:id",s("issue_detail.html","IssueController")).when("/project_discussion/:id",s("project_discussion.html","DiscussionController")).when("/homework/:id",s("homework_detail.html","HomeworkController")).when("/course_notice/:id",s("course_notice.html","CourseNoticeController")).when("/course_discussion/:id",s("course_discussion.html","DiscussionController")).when("/journal_for_message/:id",s("jour_message_detail.html","JournalsController")).when("/blog_comment/:id",s("blog_detail.html","BlogController")).when("/add_class",s("add_class.html","AddClassController")).when("/myclass",s("myclass.html","MyClassController")).otherwise({redirectTo:"/activites"}),o.interceptors.push(["$q","$rootScope",function(e,o){return void 0==o.activeCalls&&(o.activeCalls=0),{request:function(e){return o.activeCalls+=1,e},requestError:function(e){return o.activeCalls-=1,e},response:function(e){return o.activeCalls-=1,e},responseError:function(e){return o.activeCalls-=1,e}}}])}]); \ No newline at end of file +app.config(["$routeProvider","$httpProvider","$locationProvider","config",function(e,o,t,r){var l=r.rootPath,n={delay:["auth",function(e){return e.get_bind()}]},i=function(e,o){return{templateUrl:l+e,controller:o,resolve:n}};e.when("/login",{templateUrl:l+"login.html",controller:"LoginController"}).when("/reg",{templateUrl:l+"reg.html",controller:"RegController"}).when("/activites",i("activities.html","ActivityController")).when("/issues/:id",i("issue_detail.html","IssueController")).when("/project_discussion/:id",i("project_discussion.html","DiscussionController")).when("/homework/:id",i("homework_detail.html","HomeworkController")).when("/course_notice/:id",i("course_notice.html","CourseNoticeController")).when("/course_discussion/:id",i("course_discussion.html","DiscussionController")).when("/journal_for_message/:id",i("jour_message_detail.html","JournalsController")).when("/blog_comment/:id",i("blog_detail.html","BlogController")).when("/add_class",i("add_class.html","AddClassController")).when("/myclass",i("myclass.html","MyClassController")).when("/invite_code",i("invite_code.html","InviteCodeController")).otherwise({redirectTo:"/activites"}),o.interceptors.push(["$q","$rootScope",function(e,o){return void 0==o.activeCalls&&(o.activeCalls=0),{request:function(e){return o.activeCalls+=1,e},requestError:function(e){return o.activeCalls-=1,e},response:function(e){return o.activeCalls-=1,e},responseError:function(e){return o.activeCalls-=1,e}}}])}]); \ No newline at end of file