加入邀请码

dev_pull
guange 9 years ago
parent 52d4d36097
commit d348981721

@ -26,6 +26,8 @@ module Mobile
u.nil? || u.user_extensions.nil? ? "" : u.user_extensions.student_id
when :realname
u.nil? ? "" : get_user_realname(u)
when :name
u.nil? ? "" : u.show_name
end
end
end
@ -57,6 +59,11 @@ module Mobile
user_expose :student_num
# 活跃值
user_expose :active_count
user_expose :role_name
user_expose :name
end
end

@ -270,13 +270,22 @@ module CoursesHelper
# =====================================================================================
# return people list
def searchPeopleByName(course, role_name)
course.members.select{|m|
m.roles.any?{|r|r.name == role_name}
}
end
def searchTeacherAndAssistant project
#searchPeopleByRoles(project, TeacherRoles)
members = []
project.members.includes(:user).each do |m|
members << m if m && m.user && m.user.allowed_to?(:as_teacher,project)
searchPeopleByName(project, 'Manager').concat(
searchPeopleByName(project, 'Teacher')
).concat(
searchPeopleByName(project, 'TeachingAsistant')
)
end
members
def searchStudent project
searchPeopleByName(project, 'Student')
end
def TeacherAndAssistantCount course
@ -293,19 +302,6 @@ module CoursesHelper
members
end
def searchStudent project
#searchPeopleByRoles(project, StudentRoles)
members = []
project.members.each do |m|
if m && m.user && m.user.allowed_to?(:as_student,project)
members << m
end
end
members
end
def searchStudent_by_name project, name
#searchPeopleByRoles(project, StudentRoles)
members = []

@ -457,8 +457,9 @@ class Course < ActiveRecord::Base
CODES = %W(2 3 4 5 6 7 8 9 A B C D E F G H J K L N M O P Q R S T U V W X Y Z)
def generate_invite_code
code = invite_code
if !invite_code || invite_code.size <6
self.invite_code = CODES.sample(6).join
if !invite_code || invite_code.size <5
self.invite_code = CODES.sample(5).join
return generate_invite_code if Course.where(invite_code: invite_code).present?
save! && reload
code = invite_code
end

@ -68,7 +68,6 @@ class CoursesService
if current_user.nil? || !(current_user.admin? || c.is_public == 1 || (c.is_public == 0 && current_user.member_of_course?(c)))
raise '403'
end
@teachers= searchTeacherAndAssistant(c)
#@canShowCode = isCourseTeacher(User.current.id,course) && params[:role] != '1'
case params[:role]
when '1'
@ -87,7 +86,11 @@ class CoursesService
gender = m.user.user_extensions.gender.nil? ? 0 : m.user.user_extensions.gender
work_unit = get_user_work_unit m.user
location = get_user_location m.user
users << {:id => m.user.id, :img_url => img_url, :nickname => m.user.login, :gender => gender, :work_unit => work_unit, :mail => m.user.mail, :location => location, :brief_introduction => m.user.user_extensions.brief_introduction,:realname=>m.user.realname}
users << {:id => m.user.id, :img_url => img_url, :nickname => m.user.login, :gender => gender,
:work_unit => work_unit, :mail => m.user.mail, :location => location,
role_name: m.roles.first.name,
name: m.user.show_name,
:brief_introduction => m.user.user_extensions.brief_introduction,:realname=>m.user.realname}
end
users
end

@ -0,0 +1,6 @@
class AddIndexToInviteCode < ActiveRecord::Migration
def change
add_column :courses, :qrcode, :string
add_index :courses, :invite_code, unique: true
end
end

@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20160614072229) do
ActiveRecord::Schema.define(:version => 20160624032138) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
@ -551,8 +551,11 @@ ActiveRecord::Schema.define(:version => 20160614072229) do
t.integer "is_copy", :default => 0
t.integer "visits", :default => 0
t.string "invite_code"
t.string "qrcode"
end
add_index "courses", ["invite_code"], :name => "index_courses_on_invite_code", :unique => true
create_table "custom_fields", :force => true do |t|
t.string "type", :limit => 30, :default => "", :null => false
t.string "name", :limit => 30, :default => "", :null => false

@ -15,22 +15,17 @@
</div>
</div>
<div ng-class="{'undis': currentTab!=1}">
<div class="class-detail-row border-top f13 c-grey3"><span class="fl ml10">资源名称001</span></div>
<div class="class-detail-row f13 c-grey3"><span class="fl ml10">资源名称002</span></div>
<div class="class-detail-row f13 c-grey3"><span class="fl ml10">资源名称003</span></div>
<div class="class-detail-row f13 c-grey3"><span class="fl ml10">资源名称004</span></div>
<div class="class-detail-row f13 c-grey3"><span class="fl ml10">资源名称005</span></div>
<div class="class-detail-row f13 c-grey3"><span class="fl ml10">资源名称006</span></div>
<div ng-repeat="r in resources|filter:searchText" ng-class="['class-detail-row', 'f13', 'c-grey3', {'border-top': $first}]"><span class="fl ml10">{{r.filename}}</span></div>
</div>
<div ng-class="{'undis': currentTab!=2}">
<div class="member-banner f13 c-grey3">授课老师</div>
<div class="class-detail-row f13 c-grey3" ng-repeat="teacher in teachers|filter:searchText">
<img ng-src="/images/wechat/{{teacher.gender==0 ? 'male' : 'female'}}.jpg" width="30" class="fl ml10 img-circle mt4" /><span class="fl ml10">{{teacher.realname}}</span><span class="fr mr10 c-grey2">教辅</span><img ng-src="/images/wechat/{{teacher.gender==0 ? 'male' : 'female'}}.png" width="15" class="fl ml10 mt10" />
<img ng-src="/images/wechat/{{teacher.gender==0 ? 'male' : 'female'}}.jpg" width="30" class="fl ml10 img-circle mt4" /><span class="fl ml10">{{teacher.name}}</span><span class="fr mr10 c-grey2">{{teacher.role_name|identify}}</span><img ng-src="/images/wechat/{{teacher.gender==0 ? 'male' : 'female'}}.png" width="15" class="fl ml10 mt10" />
</div>
<div class="member-banner f13 mt10 c-grey3">我的同学</div>
<div class="class-detail-row f13 c-grey3" ng-repeat="student in students|filter:searchText">
<img ng-src="/images/wechat/{{student.gender==0 ? 'male' : 'female'}}.jpg" width="30" class="fl ml10 img-circle mt4" /><span class="fl ml10">{{student.realname}}</span><img ng-src="/images/wechat/{{student.gender==0 ? 'male' : 'female'}}.png" width="15" class="fl ml10 mt10" />
<img ng-src="/images/wechat/{{student.gender==0 ? 'male' : 'female'}}.jpg" width="30" class="fl ml10 img-circle mt4" /><span class="fl ml10">{{student.name}}</span><img ng-src="/images/wechat/{{student.gender==0 ? 'male' : 'female'}}.png" width="15" class="fl ml10 mt10" />
</div>
</div>

@ -22,11 +22,18 @@ app.controller('MyClassController', ['$scope', 'config','$http', 'auth','$locati
vm.course = {};
vm.students = [];
vm.teachers = [];
vm.resources = [];
vm.invite = function(){
$location.path("/invite_code").search({id: courseid});
};
$http.post(config.apiUrl + "courses/"+courseid+"/attachments",
{token: auth.token(), name: ''}
).then(function(response){
vm.resources = response.data.data;
});
$http.get(config.apiUrl+ 'courses/'+courseid+"?token="+auth.token()).then(
function(response){
console.log(response.data);

@ -3,3 +3,12 @@ app.filter('safeHtml', ['$sce',function ($sce) {
return $sce.trustAsHtml(input);
}
}]);
app.filter('identify', function () {
return function(input){
if (input == 'TeachingAsistant'){
return '教辅'
}
return '';
}
})

@ -4,6 +4,7 @@
/*基本样式*/
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-left: 1.4em; margin-right: 0.4em; border-radius: 4px; font-family: "Microsoft YaHei"; background-size: 100% 100%; margin-top:5px;}
@ -125,8 +126,8 @@ a.underline {text-decoration:underline;}
/*20160613邀请码样式*/
.qr-code-wrap {width:100%; padding:40px 0; background-color:#3b94d6;}
.qr-code-box {width:225px; height:332px; 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; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;}
.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;}

Loading…
Cancel
Save