From bb1e7616b953d907963dec8a4174862564b83ff4 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 20 Aug 2019 09:35:14 +0800 Subject: [PATCH 01/97] =?UTF-8?q?=E9=87=91=E8=AF=BE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/subjects_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/subjects_controller.rb b/app/controllers/subjects_controller.rb index ac5bd027f..5389ff961 100644 --- a/app/controllers/subjects_controller.rb +++ b/app/controllers/subjects_controller.rb @@ -1,7 +1,7 @@ class SubjectsController < ApplicationController before_action :require_login, :check_auth, except: [:index, :show, :right_banner] # before_action :check_auth, except: [:index] - before_action :check_account, except: [:index, :show] + before_action :check_account, except: [:index, :show, :right_banner] before_action :find_subject, except: [:index, :create, :new, :append_to_stage] before_action :allowed, only: [:update, :edit, :destroy, :publish, :cancel_publish, :cancel_has_publish, :search_members, :add_subject_members, :statistics, :shixun_report, :school_report, From ee2547d0151bc185e774b2df3786db829097ba2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Tue, 20 Aug 2019 09:37:46 +0800 Subject: [PATCH 02/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/modules/paths/PathDetail/PathDetailIndex.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/react/src/modules/paths/PathDetail/PathDetailIndex.js b/public/react/src/modules/paths/PathDetail/PathDetailIndex.js index 0e4a581a3..d64763980 100644 --- a/public/react/src/modules/paths/PathDetail/PathDetailIndex.js +++ b/public/react/src/modules/paths/PathDetail/PathDetailIndex.js @@ -476,7 +476,7 @@ class PathDetailIndex extends Component{ } { - this.props.checkIfLogin()===false?"123213":progress === undefined ? "" : progress === null ? "" : + this.props.checkIfLogin()===false?"":progress === undefined ? "" : progress === null ? "" :

我的进展 From a6076a4ecf2a46bc579fcb536784e62022ae565a Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 20 Aug 2019 09:50:57 +0800 Subject: [PATCH 03/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index aaf24eadb..d97c26127 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -12,7 +12,7 @@ class CoursesController < ApplicationController end before_action :require_login, except: [:index, :show, :students, :teachers, :board_list, :mine, :all_course_groups, - :left_banner, :top_banner] + :left_banner, :top_banner, :informs, :online_learning] before_action :check_account, only: [:new, :create, :apply_to_join_course, :join_excellent_course] before_action :check_auth, except: [:index, :show, :students, :teachers, :board_list, :mine, :all_course_groups, :left_banner, :top_banner, :apply_to_join_course, :exit_course] From 28280a7d7da14df231d8192e1dd89c772fa8a5df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Tue, 20 Aug 2019 10:04:46 +0800 Subject: [PATCH 04/97] Merge branches 'dev_Ysm' and 'dev_admin' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_Ysl # Conflicts: # app/controllers/application_controller.rb --- .../modules/courses/elearning/Elearning.js | 40 +++++++++++++++++-- .../courses/elearning/YslDetailCards.js | 3 ++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/public/react/src/modules/courses/elearning/Elearning.js b/public/react/src/modules/courses/elearning/Elearning.js index 4f55fb178..4d469274e 100644 --- a/public/react/src/modules/courses/elearning/Elearning.js +++ b/public/react/src/modules/courses/elearning/Elearning.js @@ -4,7 +4,9 @@ import { WordsBtn,on, off, trigger,markdownToHTML,getImageUrl} from 'educoder'; import './myelearning.css' import axios from 'axios'; import YslDetailCards from "./YslDetailCards.js"; -import Jointheclass from '../../modals/Jointheclass' +import Jointheclass from '../../modals/Jointheclass'; +import LoginDialog from "../../login/LoginDialog"; + //在线学习 class Elearning extends Component{ constructor(props){ @@ -23,7 +25,8 @@ class Elearning extends Component{ shixunsmessage:"", startshixunCombattype:false, isSpins:false, - + userlogin:"", + isRender:false, } } @@ -58,6 +61,10 @@ class Elearning extends Component{ }) }); + this.setState({ + userlogin:this.props.current_user.login, + }) + } @@ -68,6 +75,7 @@ class Elearning extends Component{ }; //开始学习 Startlearning=()=>{ + this.Tojoinclass(); if(this.props.isNotMember()===true){ this.setState({ yslJointhe:true @@ -206,7 +214,28 @@ class Elearning extends Component{ this.setState({ startshixunCombattypes:false }) + }; + Modifyloginvalue=()=>{ + this.setState({ + isRender:false, + }) + }; + Tojoinclass=()=> { + let {userlogin} = this.state; + if (userlogin === undefined) { + this.setState({ + isRender: true + }) + return + } + if (userlogin === "") { + this.setState({ + isRender: true + }) + return; + } } + render(){ let{description,whethertoedit,isSpin,start_learning,hidestartshixunsreplacevalues,learned,last_shixun,stages} =this.state; const isNotMembers=this.props.isNotMember();//非课堂成员 @@ -214,6 +243,11 @@ class Elearning extends Component{ return(

+ {isRender===true?this.Modifyloginvalue()} + {...this.props} + {...this.state} + />:""} this.ysljoinmodalCancel()} ysljoinmodalCanceltwo={()=>this.ysljoinmodalCanceltwo()}> :
{/*开始学习*/} - this.Startlearningtwo()} Myreload={()=>this.Myreload()} > + this.Startlearningtwo()} Myreload={()=>this.Myreload()} Tojoinclass={()=>this.Tojoinclass()}>
} diff --git a/public/react/src/modules/courses/elearning/YslDetailCards.js b/public/react/src/modules/courses/elearning/YslDetailCards.js index 1d5c77284..38cc32d18 100644 --- a/public/react/src/modules/courses/elearning/YslDetailCards.js +++ b/public/react/src/modules/courses/elearning/YslDetailCards.js @@ -33,6 +33,9 @@ class YslDetailCards extends Component{ }) }; startgameid=(id)=>{ + // 上面传过来的方法是用来没登入弹出弹框的 + this.props.Tojoinclass(); + if(this.props.isNotMember()===true){ //这个是外部传过来的 this.props.Startlearningtwo(); From e3a906516100e9a68cc583b48304dcafccc55206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Tue, 20 Aug 2019 10:11:14 +0800 Subject: [PATCH 05/97] Merge branches 'dev_Ysm' and 'dev_admin' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_Ysl # Conflicts: # app/controllers/application_controller.rb --- public/react/src/modules/courses/elearning/Elearning.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/react/src/modules/courses/elearning/Elearning.js b/public/react/src/modules/courses/elearning/Elearning.js index 4d469274e..d587d88c8 100644 --- a/public/react/src/modules/courses/elearning/Elearning.js +++ b/public/react/src/modules/courses/elearning/Elearning.js @@ -237,7 +237,7 @@ class Elearning extends Component{ } render(){ - let{description,whethertoedit,isSpin,start_learning,hidestartshixunsreplacevalues,learned,last_shixun,stages} =this.state; + let{description,whethertoedit,isSpin,start_learning,hidestartshixunsreplacevalues,learned,last_shixun,stages,isRender} =this.state; const isNotMembers=this.props.isNotMember();//非课堂成员 const antIcon = ; return( From dbdd03378c687ac06b1725bd2a5214e83d0657b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Tue, 20 Aug 2019 10:16:02 +0800 Subject: [PATCH 06/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/public/css/edu-all.css | 1 + public/stylesheets/educoder/edu-all.css | 1 + 2 files changed, 2 insertions(+) diff --git a/public/react/public/css/edu-all.css b/public/react/public/css/edu-all.css index 55f42e608..c8f567058 100644 --- a/public/react/public/css/edu-all.css +++ b/public/react/public/css/edu-all.css @@ -122,6 +122,7 @@ em.vertical-line{display: inline-block;width: 2px;background: #999;height: 10px} border: 1px solid #fff; border-radius: 3px; font-size: 14px; + opacity: 0.56; background-size: 100% 100%;padding: 0px 8px;color: #fff;float: left;} .tag-orange{position: absolute;right: 0px;top:12px;} .tag-orange .tag-name{display: block;width: auto;background-color:#FF6800; diff --git a/public/stylesheets/educoder/edu-all.css b/public/stylesheets/educoder/edu-all.css index 5a464a4c0..797307e18 100644 --- a/public/stylesheets/educoder/edu-all.css +++ b/public/stylesheets/educoder/edu-all.css @@ -124,6 +124,7 @@ em.vertical-line{display: inline-block;width: 2px;background: #999;height: 10px} border: 1px solid #fff; border-radius: 3px; font-size: 14px; + opacity: 0.56; background-size: 100% 100%;padding: 0px 8px;color: #fff;float: left;} .tag-orange{position: absolute;right: 0px;top:12px;} .tag-orange .tag-name{display: block;width: auto;background-color:#FF6800; From de5ff94bea87eaab1a245bddc10b44b9d95aa664 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 20 Aug 2019 10:40:35 +0800 Subject: [PATCH 07/97] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E7=9A=84=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/homework_commons_controller.rb | 2 -- app/models/course.rb | 5 +++++ app/models/homework_common.rb | 3 +++ .../20190820021047_migrate_course_task_position.rb | 13 +++++++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20190820021047_migrate_course_task_position.rb diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb index 5d1733983..eb3576f24 100644 --- a/app/controllers/homework_commons_controller.rb +++ b/app/controllers/homework_commons_controller.rb @@ -37,8 +37,6 @@ class HomeworkCommonsController < ApplicationController @category = @main_category.course_second_categories.find_by(id: params[:category]) tip_exception("子目录id有误") if !@category.present? @homework_commons = @homework_commons.where(course_second_category_id: params[:category]) - elsif @homework_type == 4 - @homework_commons = @homework_commons end @all_count = @homework_commons.size diff --git a/app/models/course.rb b/app/models/course.rb index b7bea6ec0..baed1efe6 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -32,7 +32,12 @@ class Course < ApplicationRecord has_many :teacher_course_members, -> { teachers_and_admin }, class_name: 'CourseMember' has_many :teacher_users, through: :teacher_course_members, source: :user has_many :course_messages, dependent: :destroy + has_many :homework_commons, dependent: :destroy + has_many :normal_homeworks, -> { normals }, class_name: 'HomeworkCommon' + has_many :group_homeworks, -> { groups }, class_name: 'HomeworkCommon' + has_many :practice_homeworks, -> { practices }, class_name: 'HomeworkCommon' + has_many :homework_group_settings has_many :graduation_works, dependent: :destroy diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index f198a7143..e510ca666 100644 --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -48,6 +48,9 @@ class HomeworkCommon < ApplicationRecord scope :search_homework_type, lambda {|num| where(homework_type:num)} scope :unified_setting, -> {where("unified_setting = ? ", 1)} + scope :normals, -> {where(homework_type: %i[normal])} + scope :groups, -> {where(homework_type: %i[group])} + scope :practices, -> {where(homework_type: %i[practice])} # 是否显示参考答案 def view_answer identity, user_id diff --git a/db/migrate/20190820021047_migrate_course_task_position.rb b/db/migrate/20190820021047_migrate_course_task_position.rb new file mode 100644 index 000000000..cf1b633bd --- /dev/null +++ b/db/migrate/20190820021047_migrate_course_task_position.rb @@ -0,0 +1,13 @@ +class MigrateCourseTaskPosition < ActiveRecord::Migration[5.2] + def change + add_column :homework_commons, :position, :integer, :default => 0 + + Course.find_each do |course| + puts course.id + course.practice_homeworks.order("IF(ISNULL(homework_commons.publish_time),0,1), homework_commons.publish_time DESC, + homework_commons.created_at DESC").reverse.each_with_index do |homework, index| + homework.update_columns(position: index + 1) + end + end + end +end From 38e307487a29dd9f904356d0c1a920a39bdc0aa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Tue, 20 Aug 2019 10:46:05 +0800 Subject: [PATCH 08/97] Merge branches 'dev_Ysm' and 'dev_admin' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_Ysl # Conflicts: # app/controllers/application_controller.rb --- .../modules/courses/elearning/Elearning.js | 26 +++++++++--------- .../courses/elearning/YslDetailCards.js | 27 +++++++++++++++---- 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/public/react/src/modules/courses/elearning/Elearning.js b/public/react/src/modules/courses/elearning/Elearning.js index d587d88c8..81f300538 100644 --- a/public/react/src/modules/courses/elearning/Elearning.js +++ b/public/react/src/modules/courses/elearning/Elearning.js @@ -75,7 +75,19 @@ class Elearning extends Component{ }; //开始学习 Startlearning=()=>{ - this.Tojoinclass(); + let {userlogin} = this.state; + if (userlogin === undefined) { + this.setState({ + isRender: true + }) + return + } + if (userlogin === "") { + this.setState({ + isRender: true + }) + return; + } if(this.props.isNotMember()===true){ this.setState({ yslJointhe:true @@ -221,20 +233,10 @@ class Elearning extends Component{ }) }; Tojoinclass=()=> { - let {userlogin} = this.state; - if (userlogin === undefined) { - this.setState({ - isRender: true - }) - return - } - if (userlogin === "") { this.setState({ isRender: true }) - return; - } - } + }; render(){ let{description,whethertoedit,isSpin,start_learning,hidestartshixunsreplacevalues,learned,last_shixun,stages,isRender} =this.state; diff --git a/public/react/src/modules/courses/elearning/YslDetailCards.js b/public/react/src/modules/courses/elearning/YslDetailCards.js index 38cc32d18..a1ad44e67 100644 --- a/public/react/src/modules/courses/elearning/YslDetailCards.js +++ b/public/react/src/modules/courses/elearning/YslDetailCards.js @@ -34,13 +34,30 @@ class YslDetailCards extends Component{ }; startgameid=(id)=>{ // 上面传过来的方法是用来没登入弹出弹框的 - this.props.Tojoinclass(); + try { + let {userlogin} = this.props; + if (userlogin === undefined) { + this.props.Tojoinclass(); + return + } + if (userlogin === "") { + this.props.Tojoinclass(); + return; + } + }catch (e) { - if(this.props.isNotMember()===true){ - //这个是外部传过来的 - this.props.Startlearningtwo(); - return } + + try { + if(this.props.isNotMember()===true){ + //这个是外部传过来的 + this.props.Startlearningtwo(); + return + } + }catch (e) { + + } + let url = "/shixuns/" + id + "/shixun_exec.json"; axios.get(url).then((response) => { From ab59a180c3bc25e08fbbb48afdd652f4b06f1c27 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 20 Aug 2019 10:54:30 +0800 Subject: [PATCH 09/97] =?UTF-8?q?=E5=AE=9E=E8=B7=B5=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E7=9A=84=E5=90=8D=E7=A7=B0=E9=95=BF=E5=BA=A6=E9=99=90=E5=88=B6?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/shixuns_controller.rb | 20 ++++++++++---------- app/controllers/subjects_controller.rb | 4 ++-- app/models/subject.rb | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index c9b56bb98..b9c2086d8 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -562,16 +562,16 @@ class ShixunsController < ApplicationController commit_id = commit["id"] end - # 如果该实训是金课中的实训,则将当前用户加入到当期开课的课堂 - # if StageShixun.exists?(shixun_id: @shixun.id, subject_id: Subject.where(excellent: 1)) - # subject = Subject.where(excellent: 1, id: StageShixun.where(shixun_id: @shixun.id).pluck(:subject_id)).take - # course = subject.courses.where("start_date is not null and start_date <= '#{Date.today}' and end_date is not null and end_date >= '#{Date.today}'").take - # if course.present? && !CourseMember.exists?(course_id: course.id, user_id: current_user.id) - # # 为了不影响后续操作,用create而不是create! - # CourseMember.create(course_id: course.id, user_id: current_user.id, role: 4) - # CourseAddStudentCreateWorksJob.perform_later(course.id, [current_user.id]) - # end - # end + 如果该实训是金课中的实训,则将当前用户加入到当期开课的课堂 + if StageShixun.exists?(shixun_id: @shixun.id, subject_id: Subject.where(excellent: 1)) + subject = Subject.where(id: StageShixun.where(shixun_id: @shixun.id).pluck(:subject_id), excellent: 1).take(1) + course = subject.courses.where("start_date is not null and start_date <= '#{Date.today}' and end_date is not null and end_date >= '#{Date.today}'").take + if course.present? && !CourseMember.exists?(course_id: course.id, user_id: current_user.id) + # 为了不影响后续操作,用create而不是create! + CourseMember.create(course_id: course.id, user_id: current_user.id, role: 4) + CourseAddStudentCreateWorksJob.perform_later(course.id, [current_user.id]) + end + end ActiveRecord::Base.transaction do begin diff --git a/app/controllers/subjects_controller.rb b/app/controllers/subjects_controller.rb index 5389ff961..431423d87 100644 --- a/app/controllers/subjects_controller.rb +++ b/app/controllers/subjects_controller.rb @@ -149,7 +149,7 @@ class SubjectsController < ApplicationController end def choose_subject_shixun - @search = params[:search] + @search = params[:search].strip @type = params[:type] # 超级管理员用户显示所有未隐藏的实训、非管理员显示合作团队用户的实训(对本单位公开且未隐藏) if current_user.admin? @@ -163,7 +163,7 @@ class SubjectsController < ApplicationController tag_ids = @shixuns.joins(:shixun_tag_repertoires).pluck(:tag_repertoire_id).uniq @tags = TagRepertoire.select([:id, :name]).where(id: tag_ids) - if params[:search] + unless @search.blank? @shixuns = @shixuns.where("name like ?", "%#{@search}%") end diff --git a/app/models/subject.rb b/app/models/subject.rb index 113460375..5116cce75 100644 --- a/app/models/subject.rb +++ b/app/models/subject.rb @@ -21,7 +21,7 @@ class Subject < ApplicationRecord # 开放课堂 has_many :courses, -> { order("courses.id ASC") } - validates :name, length: { maximum: 40 } + validates :name, length: { maximum: 60 } validates :description, length: { maximum: 5000 } validates :learning_notes, length: { maximum: 500 } From 0095202a66bf14d75659d87a2439dc16cd592937 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 20 Aug 2019 11:01:05 +0800 Subject: [PATCH 10/97] tiaoz --- app/controllers/subjects_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/subjects_controller.rb b/app/controllers/subjects_controller.rb index 431423d87..df6ee31de 100644 --- a/app/controllers/subjects_controller.rb +++ b/app/controllers/subjects_controller.rb @@ -149,7 +149,7 @@ class SubjectsController < ApplicationController end def choose_subject_shixun - @search = params[:search].strip + @search = params[:search].strip if params[:search] @type = params[:type] # 超级管理员用户显示所有未隐藏的实训、非管理员显示合作团队用户的实训(对本单位公开且未隐藏) if current_user.admin? From 4aa48dfaed4076d7416b5f438aee41958ebd6fe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Tue, 20 Aug 2019 11:16:45 +0800 Subject: [PATCH 11/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/modules/courses/Index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/react/src/modules/courses/Index.js b/public/react/src/modules/courses/Index.js index 1430b8c5d..57d323955 100644 --- a/public/react/src/modules/courses/Index.js +++ b/public/react/src/modules/courses/Index.js @@ -828,7 +828,7 @@ class CoursesIndex extends Component{ {/*新建精品课堂*/} {/*coursesId 课堂id */} {/*id 是否是私有或者公有*/} - () } From c497048359ff11b60fa0aff6ea119369438d9bf5 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 20 Aug 2019 11:26:18 +0800 Subject: [PATCH 12/97] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E9=87=91=E8=AF=BE?= =?UTF-8?q?=E6=97=B6=E8=BF=94=E5=9B=9E=E8=AF=BE=E5=A0=82=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 7 ++++++- app/controllers/shixuns_controller.rb | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index d97c26127..725c9815b 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -100,7 +100,12 @@ class CoursesController < ApplicationController # GET /courses/new def new @course = Course.new - normal_status("成功") + unless params[:subject_id].blank? + subject = Subject.find_by(id: params[:subject_id], excellent: 1) + render :json => {status: 0, course_name: "#{subject&.name}第#{subject&.courses&.count.to_i + 1}期"} + else + normal_status("成功") + end end # Get /courses/:id/settings diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index b9c2086d8..ebc2db1d6 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -564,7 +564,7 @@ class ShixunsController < ApplicationController 如果该实训是金课中的实训,则将当前用户加入到当期开课的课堂 if StageShixun.exists?(shixun_id: @shixun.id, subject_id: Subject.where(excellent: 1)) - subject = Subject.where(id: StageShixun.where(shixun_id: @shixun.id).pluck(:subject_id), excellent: 1).take(1) + subject = Subject.find_by(id: StageShixun.where(shixun_id: @shixun.id).pluck(:subject_id), excellent: 1) course = subject.courses.where("start_date is not null and start_date <= '#{Date.today}' and end_date is not null and end_date >= '#{Date.today}'").take if course.present? && !CourseMember.exists?(course_id: course.id, user_id: current_user.id) # 为了不影响后续操作,用create而不是create! From 0e13d279dd0c0e526f51a7f2b599e08bc9735f26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Tue, 20 Aug 2019 11:37:20 +0800 Subject: [PATCH 13/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/modules/paths/PathDetail/DetailCardsEditAndAdd.js | 4 ++-- public/react/src/modules/paths/PathDetail/OpenCourse.js | 5 +++-- public/react/src/modules/paths/PathDetail/PathDetailIndex.js | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/public/react/src/modules/paths/PathDetail/DetailCardsEditAndAdd.js b/public/react/src/modules/paths/PathDetail/DetailCardsEditAndAdd.js index ed99968cb..8a48fabea 100644 --- a/public/react/src/modules/paths/PathDetail/DetailCardsEditAndAdd.js +++ b/public/react/src/modules/paths/PathDetail/DetailCardsEditAndAdd.js @@ -620,8 +620,8 @@ class DetailCardsEditAndAdd extends Component{
} - {this.props.detailInfoList===undefined?"":this.props.detailInfoList.allow_statistics===true?editPanel===false?
- +点击新建阶段(选择1至多个实训项目,组成一个阶段) + {this.props.detailInfoList===undefined?"":this.props.detailInfoList.allow_statistics===true?editPanel===false?
+ +点击新建阶段(选择1至多个实训项目,组成一个阶段)
:'':''}
) diff --git a/public/react/src/modules/paths/PathDetail/OpenCourse.js b/public/react/src/modules/paths/PathDetail/OpenCourse.js index bd9b309fd..b8c6fb287 100644 --- a/public/react/src/modules/paths/PathDetail/OpenCourse.js +++ b/public/react/src/modules/paths/PathDetail/OpenCourse.js @@ -68,10 +68,11 @@ class OpenCourse extends Component {

- + 开放课堂:所有用户可以随时访问 - + + 私有课堂:仅报名参与的课堂成员可以访问 diff --git a/public/react/src/modules/paths/PathDetail/PathDetailIndex.js b/public/react/src/modules/paths/PathDetail/PathDetailIndex.js index d64763980..889f9d9f0 100644 --- a/public/react/src/modules/paths/PathDetail/PathDetailIndex.js +++ b/public/react/src/modules/paths/PathDetail/PathDetailIndex.js @@ -542,7 +542,7 @@ class PathDetailIndex extends Component{ { detailInfoList===undefined?"":detailInfoList.allow_add_member===true?

{key!=0?
this.moveup(item)}>
:""} - {key+1!= members&&members.length?
this.movedown(item)}>
:""} + {key+1=== members.length?"":
this.movedown(item)}>
}
:"" } From e07baf9f3d62f28b774bd01111c3d44a15b08704 Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Tue, 20 Aug 2019 11:55:59 +0800 Subject: [PATCH 14/97] merge --- app/controllers/courses_controller.rb | 7 +------ app/controllers/shixuns_controller.rb | 2 +- .../src/modules/paths/PathDetail/DetailCardsEditAndAdd.js | 4 ++-- public/react/src/modules/paths/PathDetail/OpenCourse.js | 5 ++--- .../react/src/modules/paths/PathDetail/PathDetailIndex.js | 2 +- 5 files changed, 7 insertions(+), 13 deletions(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 725c9815b..d97c26127 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -100,12 +100,7 @@ class CoursesController < ApplicationController # GET /courses/new def new @course = Course.new - unless params[:subject_id].blank? - subject = Subject.find_by(id: params[:subject_id], excellent: 1) - render :json => {status: 0, course_name: "#{subject&.name}第#{subject&.courses&.count.to_i + 1}期"} - else - normal_status("成功") - end + normal_status("成功") end # Get /courses/:id/settings diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index ebc2db1d6..b9c2086d8 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -564,7 +564,7 @@ class ShixunsController < ApplicationController 如果该实训是金课中的实训,则将当前用户加入到当期开课的课堂 if StageShixun.exists?(shixun_id: @shixun.id, subject_id: Subject.where(excellent: 1)) - subject = Subject.find_by(id: StageShixun.where(shixun_id: @shixun.id).pluck(:subject_id), excellent: 1) + subject = Subject.where(id: StageShixun.where(shixun_id: @shixun.id).pluck(:subject_id), excellent: 1).take(1) course = subject.courses.where("start_date is not null and start_date <= '#{Date.today}' and end_date is not null and end_date >= '#{Date.today}'").take if course.present? && !CourseMember.exists?(course_id: course.id, user_id: current_user.id) # 为了不影响后续操作,用create而不是create! diff --git a/public/react/src/modules/paths/PathDetail/DetailCardsEditAndAdd.js b/public/react/src/modules/paths/PathDetail/DetailCardsEditAndAdd.js index 8a48fabea..ed99968cb 100644 --- a/public/react/src/modules/paths/PathDetail/DetailCardsEditAndAdd.js +++ b/public/react/src/modules/paths/PathDetail/DetailCardsEditAndAdd.js @@ -620,8 +620,8 @@ class DetailCardsEditAndAdd extends Component{
} - {this.props.detailInfoList===undefined?"":this.props.detailInfoList.allow_statistics===true?editPanel===false?
- +点击新建阶段(选择1至多个实训项目,组成一个阶段) + {this.props.detailInfoList===undefined?"":this.props.detailInfoList.allow_statistics===true?editPanel===false?
+ +点击新建阶段(选择1至多个实训项目,组成一个阶段)
:'':''}
) diff --git a/public/react/src/modules/paths/PathDetail/OpenCourse.js b/public/react/src/modules/paths/PathDetail/OpenCourse.js index b8c6fb287..bd9b309fd 100644 --- a/public/react/src/modules/paths/PathDetail/OpenCourse.js +++ b/public/react/src/modules/paths/PathDetail/OpenCourse.js @@ -68,11 +68,10 @@ class OpenCourse extends Component {

- + 开放课堂:所有用户可以随时访问 - - + 私有课堂:仅报名参与的课堂成员可以访问 diff --git a/public/react/src/modules/paths/PathDetail/PathDetailIndex.js b/public/react/src/modules/paths/PathDetail/PathDetailIndex.js index 889f9d9f0..d64763980 100644 --- a/public/react/src/modules/paths/PathDetail/PathDetailIndex.js +++ b/public/react/src/modules/paths/PathDetail/PathDetailIndex.js @@ -542,7 +542,7 @@ class PathDetailIndex extends Component{ { detailInfoList===undefined?"":detailInfoList.allow_add_member===true?

{key!=0?
this.moveup(item)}>
:""} - {key+1=== members.length?"":
this.movedown(item)}>
} + {key+1!= members&&members.length?
this.movedown(item)}>
:""}
:"" } From 84dbad63b0f943b17364242fdea7e1ca4f6d8a8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Tue, 20 Aug 2019 12:01:15 +0800 Subject: [PATCH 15/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/modules/courses/Index.js | 2 +- .../src/modules/courses/new/Goldsubject.js | 44 ++++++++++++------- .../modules/paths/PathDetail/OpenCourse.js | 4 +- 3 files changed, 31 insertions(+), 19 deletions(-) diff --git a/public/react/src/modules/courses/Index.js b/public/react/src/modules/courses/Index.js index 57d323955..01117b4f8 100644 --- a/public/react/src/modules/courses/Index.js +++ b/public/react/src/modules/courses/Index.js @@ -828,7 +828,7 @@ class CoursesIndex extends Component{ {/*新建精品课堂*/} {/*coursesId 课堂id */} {/*id 是否是私有或者公有*/} - () } diff --git a/public/react/src/modules/courses/new/Goldsubject.js b/public/react/src/modules/courses/new/Goldsubject.js index d72ccc486..418a57fd0 100644 --- a/public/react/src/modules/courses/new/Goldsubject.js +++ b/public/react/src/modules/courses/new/Goldsubject.js @@ -145,9 +145,24 @@ class Goldsubject extends Component { console.log(error); }) }else{ + let subjectid= this.props.match.params.subjectid; let url = "/courses/new.json" - axios.get(url).then((result) => { - console.log(result) + axios.get(url,{params:{ + subject_id:subjectid, //这是带过来的值 + }}).then((response) => { + if (response) { + // this.goback + if(response.data){ + console.log("获取Goldsubject.js"); + console.log(response.data); + if(response.data.status===0){ + this.props.form.setFieldsValue({ + classroom: response.data.course_name, + name: response.data.name, + }); + } + } + } }).catch((error) => { console.log(error); }) @@ -159,10 +174,7 @@ class Goldsubject extends Component { school:user_school, Whethertocreateanewclassroom:true, }); - this.handleSearchschool(user_school); - - } @@ -700,17 +712,17 @@ class Goldsubject extends Component { {options} )} - - {/*(如果本学期包含多个班级,只需创建一个课堂然后在课堂内部建立不同的分班)*/} -

- - 正确示例:数据结构2019春季班级 -

-

- - 错误示例:2019春季班级数据结构 -

-
+ {/**/} + {/* /!*(如果本学期包含多个班级,只需创建一个课堂然后在课堂内部建立不同的分班)*!/*/} + {/*

*/} + {/* */} + {/* 正确示例:数据结构2019春季班级*/} + {/*

*/} + {/*

*/} + {/* */} + {/* 错误示例:2019春季班级数据结构*/} + {/*

*/} + {/*
*/}
diff --git a/public/react/src/modules/paths/PathDetail/OpenCourse.js b/public/react/src/modules/paths/PathDetail/OpenCourse.js index bd9b309fd..6f75886a2 100644 --- a/public/react/src/modules/paths/PathDetail/OpenCourse.js +++ b/public/react/src/modules/paths/PathDetail/OpenCourse.js @@ -26,9 +26,9 @@ class OpenCourse extends Component { console.log(this.props.match.params.pathId) if(value===0){ - window.open(`/courses/${this.props.match.params.pathId}/newgold/0 `); + window.open(`/courses/news/${this.props.match.params.pathId}/newgold/0 `); }else{ - window.open(`/courses/${this.props.match.params.pathId}/newgold/1`); + window.open(`/courses/news/${this.props.match.params.pathId}/newgold/1`); } this.props.OpenCourseCancel(); } From ff96a521d925cb3853a299222e3efa612fbd7ecd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Tue, 20 Aug 2019 12:08:19 +0800 Subject: [PATCH 16/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/search/SearchPage.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/react/src/search/SearchPage.js b/public/react/src/search/SearchPage.js index 5c23d331e..499eb2f68 100644 --- a/public/react/src/search/SearchPage.js +++ b/public/react/src/search/SearchPage.js @@ -240,7 +240,9 @@ class SearchPage extends Component{ return (
关卡标签: - 1?" tzbq ":" tzbqx"} + 1?" tzbq ":" tzbqx"} style={{ + width:"100%" + }} dangerouslySetInnerHTML={{__html:item6}} />
) From 720aad8a3a3b55d3a30455e9d65c18350269dc35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Tue, 20 Aug 2019 12:19:50 +0800 Subject: [PATCH 17/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/modules/paths/PathDetail/DetailTop.js | 21 +++++++++---------- .../paths/PathDetail/PathDetailIndex.js | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/public/react/src/modules/paths/PathDetail/DetailTop.js b/public/react/src/modules/paths/PathDetail/DetailTop.js index 14342aff6..7a1e74856 100644 --- a/public/react/src/modules/paths/PathDetail/DetailTop.js +++ b/public/react/src/modules/paths/PathDetail/DetailTop.js @@ -321,7 +321,13 @@ class DetailTop extends Component{ { detailInfoList.allow_send === true?this.props.courses===undefined? :"":"" } - +
+ {this.props.courses===undefined?"":detailInfoList.is_creator===true?this.OpenCoursefun()}>开课:""} + {detailInfoList===undefined?"":detailInfoList.allow_statistics===true?this.props.courses===undefined?"": + 学习统计 + :"" + } +
{ @@ -335,11 +341,11 @@ class DetailTop extends Component{ { detailInfoList.member_count!=0 ?
  • 学习人数{detailInfoList.member_count}
  • : ""} } - {this.props.courses===undefined?
    +
    {detailInfoList===undefined?"":detailInfoList.allow_delete===true?删除路径:""} + >删除课程:""} { detailInfoList.publish_status===0&&detailInfoList.allow_add_member===true? @@ -356,16 +362,9 @@ class DetailTop extends Component{ detailInfoList.publish_status===2 && detailInfoList.allow_statistics===true? 撤销发布:"" } -
    :""} +
    - {this.props.courses===undefined?"":detailInfoList.is_creator===true?
    - this.OpenCoursefun()}>开课 - - 学习统计 - -
    :""} -
    {this.props.courses===undefined||this.props.courses.length===0?"":
    diff --git a/public/react/src/modules/paths/PathDetail/PathDetailIndex.js b/public/react/src/modules/paths/PathDetail/PathDetailIndex.js index d64763980..c576a3515 100644 --- a/public/react/src/modules/paths/PathDetail/PathDetailIndex.js +++ b/public/react/src/modules/paths/PathDetail/PathDetailIndex.js @@ -542,7 +542,7 @@ class PathDetailIndex extends Component{ { detailInfoList===undefined?"":detailInfoList.allow_add_member===true?
    {key!=0?
    this.moveup(item)}>
    :""} - {key+1!= members&&members.length?
    this.movedown(item)}>
    :""} + {key+1== members.length?"":
    this.movedown(item)}>
    }
    :"" } From 972cd6efa3b92b58073957e60308b4802c3c3bc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Tue, 20 Aug 2019 13:49:24 +0800 Subject: [PATCH 18/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/modules/paths/PathDetail/OpenCourse.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/react/src/modules/paths/PathDetail/OpenCourse.js b/public/react/src/modules/paths/PathDetail/OpenCourse.js index 6f75886a2..ccc11185e 100644 --- a/public/react/src/modules/paths/PathDetail/OpenCourse.js +++ b/public/react/src/modules/paths/PathDetail/OpenCourse.js @@ -68,10 +68,11 @@ class OpenCourse extends Component {

    - + 开放课堂:所有用户可以随时访问 - + + 私有课堂:仅报名参与的课堂成员可以访问 From 56cc4aec698c6e1b4ff1f2be38280d14275520f9 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 20 Aug 2019 14:11:36 +0800 Subject: [PATCH 19/97] tiaoz --- app/controllers/shixuns_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index b9c2086d8..4e3b206e2 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -562,7 +562,7 @@ class ShixunsController < ApplicationController commit_id = commit["id"] end - 如果该实训是金课中的实训,则将当前用户加入到当期开课的课堂 + # 如果该实训是金课中的实训,则将当前用户加入到当期开课的课堂 if StageShixun.exists?(shixun_id: @shixun.id, subject_id: Subject.where(excellent: 1)) subject = Subject.where(id: StageShixun.where(shixun_id: @shixun.id).pluck(:subject_id), excellent: 1).take(1) course = subject.courses.where("start_date is not null and start_date <= '#{Date.today}' and end_date is not null and end_date >= '#{Date.today}'").take From 9b720cde16126a341d09913d4277f53a91559645 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 20 Aug 2019 14:32:18 +0800 Subject: [PATCH 20/97] tiaoz --- app/controllers/courses_controller.rb | 14 ++++++++++++-- app/models/homework_common.rb | 6 +++--- config/routes.rb | 2 ++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index aaf24eadb..c1c0336be 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -26,12 +26,14 @@ class CoursesController < ApplicationController :base_info, :get_historical_courses, :create_group_by_importing_file, :attahcment_category_list,:export_member_scores_excel, :duplicate_course, :switch_to_teacher, :switch_to_assistant, :switch_to_student, :exit_course, - :informs, :update_informs, :join_excellent_course, :online_learning] + :informs, :update_informs, :join_excellent_course, :online_learning, + :update_task_position, :tasks_list] before_action :teacher_allowed, only: [:update, :destroy, :settings, :search_teacher_candidate, :transfer_to_course_group, :delete_from_course, :search_users, :add_students_by_search, :get_historical_courses, :add_teacher_popup, :add_teacher] before_action :admin_allowed, only: [:set_invite_code_halt, :set_public_or_private, :change_course_admin, - :set_course_group, :create_group_by_importing_file, :update_informs] + :set_course_group, :create_group_by_importing_file, :update_informs, + :update_task_position, :tasks_list] before_action :teacher_or_admin_allowed, only: [:graduation_group_list, :create_graduation_group, :join_graduation_group, :change_course_teacher, :export_member_scores_excel, :course_group_list, :teacher_application_review, :apply_teachers, :delete_course_teacher] @@ -1115,6 +1117,14 @@ class CoursesController < ApplicationController render_ok(count: count, courses: courses.select(:id, :name).as_json) end + def tasks_list + + end + + def update_task_position + + end + private # Use callbacks to share common setup or constraints between actions. diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index e510ca666..ae6ecfd5d 100644 --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -48,9 +48,9 @@ class HomeworkCommon < ApplicationRecord scope :search_homework_type, lambda {|num| where(homework_type:num)} scope :unified_setting, -> {where("unified_setting = ? ", 1)} - scope :normals, -> {where(homework_type: %i[normal])} - scope :groups, -> {where(homework_type: %i[group])} - scope :practices, -> {where(homework_type: %i[practice])} + scope :normals, -> {where(homework_type: %i[normal]).order("position desc")} + scope :groups, -> {where(homework_type: %i[group]).order("position desc")} + scope :practices, -> {where(homework_type: %i[practice]).order("position desc")} # 是否显示参考答案 def view_answer identity, user_id diff --git a/config/routes.rb b/config/routes.rb index 2ecd6502e..7577f3afb 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -351,6 +351,8 @@ Rails.application.routes.draw do post 'update_informs' get 'online_learning' post 'join_excellent_course' + get 'tasks_list' + post 'update_task_position' end collection do From 500d0761eb66e6a6deaee6702f6cfb5a090896d8 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 20 Aug 2019 14:33:38 +0800 Subject: [PATCH 21/97] tiaoz --- app/controllers/shixuns_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index 4e3b206e2..bfd386e1c 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -564,7 +564,7 @@ class ShixunsController < ApplicationController # 如果该实训是金课中的实训,则将当前用户加入到当期开课的课堂 if StageShixun.exists?(shixun_id: @shixun.id, subject_id: Subject.where(excellent: 1)) - subject = Subject.where(id: StageShixun.where(shixun_id: @shixun.id).pluck(:subject_id), excellent: 1).take(1) + subject = Subject.find_by(id: StageShixun.where(shixun_id: @shixun.id).pluck(:subject_id), excellent: 1) course = subject.courses.where("start_date is not null and start_date <= '#{Date.today}' and end_date is not null and end_date >= '#{Date.today}'").take if course.present? && !CourseMember.exists?(course_id: course.id, user_id: current_user.id) # 为了不影响后续操作,用create而不是create! From 300996b0d7d89006797a66b18376e3c34900cca7 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 20 Aug 2019 14:49:42 +0800 Subject: [PATCH 22/97] tiaoz --- app/controllers/courses_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index d97c26127..591494141 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -152,7 +152,7 @@ class CoursesController < ApplicationController end rescue => e uid_logger_error(e.message) - tip_exception("课堂创建失败!") + tip_exception(e.message) raise ActiveRecord::Rollback end end From 38e1a27cad2c2077de762c42fa4de1d214d36e36 Mon Sep 17 00:00:00 2001 From: jingquan huang Date: Tue, 20 Aug 2019 14:51:39 +0800 Subject: [PATCH 23/97] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tasks/user.rake | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/tasks/user.rake b/lib/tasks/user.rake index 7e2cd2c57..144876009 100644 --- a/lib/tasks/user.rake +++ b/lib/tasks/user.rake @@ -43,12 +43,18 @@ namespace :sync do is_test: true } user = User.create!(edit_params) - puts "aa" + user.password = "edu12345678" + user.save! UserExtension.create!(user_id: user.id, school_id: 117) puts i end end + task :password => :environment do + + end + + # 随机生成字符 def generate_identifier(container, num) code = DCODES.sample(num).join From ce44b6f051cc4fe01c30f70961c00fe99721dd1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Tue, 20 Aug 2019 15:20:23 +0800 Subject: [PATCH 24/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/paths/PathDetail/DetailCardsEditAndEdit.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/public/react/src/modules/paths/PathDetail/DetailCardsEditAndEdit.js b/public/react/src/modules/paths/PathDetail/DetailCardsEditAndEdit.js index 08419ede7..478575564 100644 --- a/public/react/src/modules/paths/PathDetail/DetailCardsEditAndEdit.js +++ b/public/react/src/modules/paths/PathDetail/DetailCardsEditAndEdit.js @@ -82,11 +82,12 @@ class DetailCardsEditAndEdit extends Component{ //打开选择实训弹框初始化tag标签和列表 changeTag(id,search){ this.setState({ + ChooseShixunListshixun_list:[], + page:1, hometypepvisible:true }) let pathId=this.props.pathid; - let {page}=this.state; - let url='/paths/'+pathId+'/choose_subject_shixun.json?page='+page + let url='/paths/'+pathId+'/choose_subject_shixun.json?page='+1 if(search!="" && search!=undefined){ url+="&search="+search; } @@ -523,7 +524,7 @@ class DetailCardsEditAndEdit extends Component{ ` } -

    @@ -552,7 +553,7 @@ class DetailCardsEditAndEdit extends Component{ }) } -
    +
    }
    取消 确定 From 2867b3bd0429f1852c58eef026f94c729ebcd769 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Tue, 20 Aug 2019 15:57:59 +0800 Subject: [PATCH 25/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/App.js | 3 ++- .../courses/coursesPublic/Addcourses.js | 11 ++++++++-- .../src/modules/courses/new/Goldsubject.js | 3 ++- .../modules/modals/Certifiedprofessional.js | 19 ++++++++++++++--- public/react/src/modules/modals/certfed.css | 21 +++++++++++++++++++ 5 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 public/react/src/modules/modals/certfed.css diff --git a/public/react/src/App.js b/public/react/src/App.js index 95b2853d6..2b62d1907 100644 --- a/public/react/src/App.js +++ b/public/react/src/App.js @@ -19,6 +19,7 @@ import Trialapplicationysl from './modules/login/Trialapplicationysl'; import Trialapplicationreview from './modules/user/Trialapplicationreview'; import Addcourses from "./modules/courses/coursesPublic/Addcourses"; import AccountProfile from "./modules/user/AccountProfile"; +import Certifiedprofessional from "./modules/modals/Certifiedprofessional" import Trialapplication from './modules/login/Trialapplication' import NotFoundPage from './NotFoundPage' @@ -305,7 +306,7 @@ class App extends Component { - + {/**/} diff --git a/public/react/src/modules/courses/coursesPublic/Addcourses.js b/public/react/src/modules/courses/coursesPublic/Addcourses.js index 8c9709fee..87a0899d7 100644 --- a/public/react/src/modules/courses/coursesPublic/Addcourses.js +++ b/public/react/src/modules/courses/coursesPublic/Addcourses.js @@ -213,7 +213,13 @@ class Addcourses extends Component{ student:student } ).then((response) => { + console.log(217); + console.log(response); if(response === undefined){ + this.setState({ + Addcoursestype:false, + isSpin:false + }); return } if(response.data.status===0){ @@ -254,7 +260,7 @@ class Addcourses extends Component{ }); this.setState({ Addcoursestype:false - }) + }); if(Addcoursestype===true){ this.props.hideAddcoursestype(); } @@ -273,7 +279,8 @@ class Addcourses extends Component{ isSpin:false }) }).catch((error) => { - console.log(error) + console.log(error); + console.log("报错了报错报错了"); this.setState({ isSpin:false }) diff --git a/public/react/src/modules/courses/new/Goldsubject.js b/public/react/src/modules/courses/new/Goldsubject.js index 418a57fd0..385f9bc50 100644 --- a/public/react/src/modules/courses/new/Goldsubject.js +++ b/public/react/src/modules/courses/new/Goldsubject.js @@ -169,6 +169,7 @@ class Goldsubject extends Component { // console.log(user_school); this.props.form.setFieldsValue({ school:user_school, + starttime:moment().format(dateFormat), }); this.setState({ school:user_school, @@ -830,7 +831,7 @@ class Goldsubject extends Component { {getFieldDecorator("checkboxgroup", { initialValue: [ - "announcement","online_learning","shixun_homework", "exercise", + "announcement","online_learning","shixun_homework","common_homework", ], })( diff --git a/public/react/src/modules/modals/Certifiedprofessional.js b/public/react/src/modules/modals/Certifiedprofessional.js index a7c06c31e..ff29a5ade 100644 --- a/public/react/src/modules/modals/Certifiedprofessional.js +++ b/public/react/src/modules/modals/Certifiedprofessional.js @@ -1,6 +1,7 @@ import React, { Component } from 'react'; import { Modal} from 'antd'; import axios from 'axios'; +import certfed from './certfed.css'; //认证职业 class Certifiedprofessional extends Component { @@ -70,12 +71,24 @@ class Certifiedprofessional extends Component { centered={true} visible={this.state.mydisplay} width="600px" + heigth="307px" >
    -

    请在完成条件后重试

    -
    +

    请在完成条件后重试

    +
    +
    + + 未实名认证 +
    +
    + + 未职业认证 +
    +
    +
    diff --git a/public/react/src/modules/modals/certfed.css b/public/react/src/modules/modals/certfed.css new file mode 100644 index 000000000..66a847b36 --- /dev/null +++ b/public/react/src/modules/modals/certfed.css @@ -0,0 +1,21 @@ +.yslcenter +{ + display: flex; + justify-content:center; + display: flex; + flex-direction:column; +} +.yslcentercerlfed +{ display: flex; + justify-content:center; + display: flex; + flex-direction:row; +} +.fontsizecoirlysl{ + color: #333333; + font-size: 16px; +} +.fontsizecoirlysltwo{ + font-size: 14px; + color: #979797; +} \ No newline at end of file From 1fd84fe597dd15a6bf3080c90ddb836d61c43733 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Tue, 20 Aug 2019 16:12:33 +0800 Subject: [PATCH 26/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/courses/exercise/Studentshavecompletedthelist.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js b/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js index 921834b80..3906b090d 100644 --- a/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js +++ b/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js @@ -1182,7 +1182,7 @@ class Studentshavecompletedthelist extends Component { }) } - this.Searchdatasys(this.state.order, this.state.commit_status, this.state.review, this.state.checkedValuesineinfo, this.state.searchtext, pageNumber, 20); + this.Searchdatasys(this.state.order, this.state.course_groupyslstwo, this.state.review, this.state.checkedValuesineinfo, this.state.searchtext, pageNumber, 20); } paginationonChanges = (pageNumber) => { From 0ae581714488c8725571ff18f5f93e75f228f2e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Tue, 20 Aug 2019 16:24:29 +0800 Subject: [PATCH 27/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/modules/courses/new/Goldsubject.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/react/src/modules/courses/new/Goldsubject.js b/public/react/src/modules/courses/new/Goldsubject.js index 385f9bc50..0fe39bcd1 100644 --- a/public/react/src/modules/courses/new/Goldsubject.js +++ b/public/react/src/modules/courses/new/Goldsubject.js @@ -169,11 +169,12 @@ class Goldsubject extends Component { // console.log(user_school); this.props.form.setFieldsValue({ school:user_school, - starttime:moment().format(dateFormat), + starttime:moment(new Date(),dateFormat), }); this.setState({ school:user_school, Whethertocreateanewclassroom:true, + datatimetwo: moment(new Date(),dateFormat), }); this.handleSearchschool(user_school); } From 35ad9d249fe08d718193561b4bb9d091d55eb10e Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 20 Aug 2019 16:37:48 +0800 Subject: [PATCH 28/97] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E7=9A=84=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 78 +++++++++++++++++++++- app/models/homework_common.rb | 1 + app/views/courses/tasks_list.json.jbuilder | 7 ++ 3 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 app/views/courses/tasks_list.json.jbuilder diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index c1c0336be..67cd6b1d6 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -40,6 +40,8 @@ class CoursesController < ApplicationController before_action :validate_course_name, only: [:create, :update] before_action :find_board, only: :board_list before_action :validate_page_size, only: :mine + before_action :course_tasks, only: [:tasks_list, :update_task_position] + before_action :find_container, only: [:update_task_position] if RUBY_PLATFORM =~ /linux/ require 'simple_xlsx_reader' @@ -1118,11 +1120,41 @@ class CoursesController < ApplicationController end def tasks_list - + case params[:container_type] + when 'shixun_homework' + @tasks = @course.practice_homeworks + when 'common_homework' + @tasks = @course.normal_homeworks + when 'group_homework' + @tasks = @course.group_homeworks + when 'exercise' + @tasks = @course.exercises + when 'poll' + @tasks = @course.polls + when 'graduation_topic' + @tasks = @course.graduation_topics + when 'graduation_task' + @tasks = @course.graduation_tasks + when 'attachment' + @tasks = @course.attachments + else + tip_exception("请指定任务类型") + end end def update_task_position - + tip_exception("缺少position参数") if params[:position].blank? + unless params[:position].to_i == @task.position + if params[:position].to_i < @task.position + @tasks.where("position < #{@task.position} and position >= ?", params[:position]).update_all("position = position + 1") + else + @tasks.where("position > #{@task.position} and position <= ?", params[:position]).update_all("position = position - 1") + end + @task.update_attributes(position: params[:position]) + normal_status(0, "移动成功") + else + normal_status(-1, "位置没有变化") + end end private @@ -1185,6 +1217,48 @@ class CoursesController < ApplicationController end end + def course_tasks + case params[:container_type] + when 'shixun_homework' + @tasks = @course.practice_homeworks + when 'common_homework' + @tasks = @course.normal_homeworks + when 'group_homework' + @tasks = @course.group_homeworks + when 'exercise' + @tasks = @course.exercises + when 'poll' + @tasks = @course.polls + when 'graduation_topic' + @tasks = @course.graduation_topics + when 'graduation_task' + @tasks = @course.graduation_tasks + when 'attachment' + @tasks = @course.attachments + else + tip_exception("请指定任务类型") + end + end + + def find_container + case params[:container_type] + when 'shixun_homework', 'common_homework', 'group_homework' + @task = HomeworkCommon.find_by(id: params[:container_id]) + when 'exercise' + @task = Exercise.find_by(id: params[:container_id]) + when 'poll' + @task = Poll.find_by(id: params[:container_id]) + when 'graduation_topic' + @task = GraduationTopic.find_by(id: params[:container_id]) + when 'graduation_task' + @task = GraduationTask.find_by(id: params[:container_id]) + when 'attachment' + @task = Attachment.find_by(id: params[:container_id]) + else + tip_exception("container_type参数有误") + end + end + def student_act_score group_id, search sql_select = %Q{SELECT cm.*,( SELECT SUM(student_works.work_score) diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index ae6ecfd5d..332aff045 100644 --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -12,6 +12,7 @@ class HomeworkCommon < ApplicationRecord belongs_to :course, counter_cache: true belongs_to :homework_bank, optional: true + belongs_to :user has_many :homework_challenge_settings, dependent: :destroy has_one :homework_commons_shixun, dependent: :destroy diff --git a/app/views/courses/tasks_list.json.jbuilder b/app/views/courses/tasks_list.json.jbuilder new file mode 100644 index 000000000..29de925a6 --- /dev/null +++ b/app/views/courses/tasks_list.json.jbuilder @@ -0,0 +1,7 @@ +json.tasks @tasks.each do |task| + json.user_name task.user.real_name + json.task_id task.id + json.task_name task.name + json.category task.course_second_category&.name + json.position task.position +end \ No newline at end of file From b208a73638b68c946f6b078dd920592a6aa7f18a Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 20 Aug 2019 16:50:22 +0800 Subject: [PATCH 29/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 9369ba33f..17188c6f8 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -104,7 +104,12 @@ class CoursesController < ApplicationController # GET /courses/new def new @course = Course.new - normal_status("成功") + unless params[:subject_id].blank? + subject = Subject.find_by(id: params[:subject_id], excellent: 1) + render :json => {status: 0, course_name: "#{subject&.name}第#{subject&.courses&.count.to_i + 1}期"} + else + normal_status("成功") + end end # Get /courses/:id/settings From 7d3e53afae197ab2c1c4220d1c3b58928788e9e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Tue, 20 Aug 2019 16:50:26 +0800 Subject: [PATCH 30/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/modules/modals/Jointheclass.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/react/src/modules/modals/Jointheclass.js b/public/react/src/modules/modals/Jointheclass.js index 1150e178b..7d8ce788a 100644 --- a/public/react/src/modules/modals/Jointheclass.js +++ b/public/react/src/modules/modals/Jointheclass.js @@ -55,7 +55,7 @@ class Jointheclass extends Component { width="600px" >
    -

    是否确认该加入课堂?

    +

    是否确认该加入课堂?

    + + + {this.props.courses===undefined?"":detailInfoList.is_creator===false?this.state.courseslist.map((item,key)=>{ + return( + + + + + + )}):"" + } + + - {this.state.MenuItemskey}次开课 + 第{this.state.MenuItemskey}次开课 diff --git a/public/react/src/modules/paths/PathDetail/PathDetailIndex.js b/public/react/src/modules/paths/PathDetail/PathDetailIndex.js index c576a3515..edac5ca01 100644 --- a/public/react/src/modules/paths/PathDetail/PathDetailIndex.js +++ b/public/react/src/modules/paths/PathDetail/PathDetailIndex.js @@ -461,7 +461,7 @@ class PathDetailIndex extends Component{
    -
    15&&clickdetailInfoListtype===false?"newsubscript mb9 color-grey-9 fr":"newsubscript mb9 color-grey-9 none"} +
    20&&clickdetailInfoListtype===false?"newsubscript mb9 color-grey-9 fr":"newsubscript mb9 color-grey-9 none"} onClick={()=>this.clickNewsubscript(0)} >...
    From 1befeb1b88fd9ce753e45e22f358d9cdd7271e73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Wed, 21 Aug 2019 10:21:26 +0800 Subject: [PATCH 36/97] b --- public/react/src/modules/paths/PathDetail/DetailTop.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/react/src/modules/paths/PathDetail/DetailTop.js b/public/react/src/modules/paths/PathDetail/DetailTop.js index 7de687555..d66a0c2da 100644 --- a/public/react/src/modules/paths/PathDetail/DetailTop.js +++ b/public/react/src/modules/paths/PathDetail/DetailTop.js @@ -397,7 +397,7 @@ class DetailTop extends Component{ - {this.props.courses===undefined?"":detailInfoList.is_creator===false?this.state.courseslist.map((item,key)=>{ + {this.props.courses===undefined?"":detailInfoList.is_creator===true?this.state.courseslist.map((item,key)=>{ return( From c1de3fd7c46ad89970fa530083bd408b6ca7acf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Wed, 21 Aug 2019 10:56:10 +0800 Subject: [PATCH 37/97] =?UTF-8?q?=E7=B2=BE=E8=AF=BE=E6=9D=83=E9=99=90?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/modules/paths/PathDetail/DetailTop.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/react/src/modules/paths/PathDetail/DetailTop.js b/public/react/src/modules/paths/PathDetail/DetailTop.js index d66a0c2da..02df977d3 100644 --- a/public/react/src/modules/paths/PathDetail/DetailTop.js +++ b/public/react/src/modules/paths/PathDetail/DetailTop.js @@ -510,24 +510,24 @@ class DetailTop extends Component{ {item.course_status.status===0?
    即将开课
    :""} {item.course_status.status===1?
    {item.course_status.time}
    :""} {item.course_status.status===2? - detailInfoList.is_creator===true?
    已结束
    :item.course_identity<6? + detailInfoList.is_creator===true||detailInfoList.allow_add_member===true?
    已结束
    :item.course_identity<6?
    已结束
    :"":""} {item.course_status.status===0? - detailInfoList.is_creator===true?
    + detailInfoList.is_creator===true||detailInfoList.allow_add_member===true? 进入课堂 :item.course_identity<6?
    报名成功
    :this.JoinnowCourse(item.course_id)}>立即报名:""} {item.course_status.status===1? - detailInfoList.is_creator===true?this.JoinnowCourse(item.course_id)}> + detailInfoList.is_creator===true||detailInfoList.allow_add_member===true?this.JoinnowCourse(item.course_id)}> 进入课堂 :item.course_identity<6? 立即学习 :this.JoinnowCourse(item.course_id)}>立即加入:""} {item.course_status.status===2? - detailInfoList.is_creator===true? + detailInfoList.is_creator===true||detailInfoList.allow_add_member===true? 进入课堂 :item.course_identity<6? 进入课堂 From 1c5905ab1b215fd8be34b2c7a4059c502e2290e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Wed, 21 Aug 2019 12:22:19 +0800 Subject: [PATCH 38/97] =?UTF-8?q?=E8=B5=84=E6=BA=90=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../courses/coursesPublic/SelectSetting.js | 38 ++++++++++--------- .../courses/coursesPublic/sendResource.js | 14 +++---- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/public/react/src/modules/courses/coursesPublic/SelectSetting.js b/public/react/src/modules/courses/coursesPublic/SelectSetting.js index b453d0075..2870c5d12 100644 --- a/public/react/src/modules/courses/coursesPublic/SelectSetting.js +++ b/public/react/src/modules/courses/coursesPublic/SelectSetting.js @@ -461,11 +461,7 @@ class Selectsetting extends Component{ - -
    - - +
  • {datalist&&datalist.title} @@ -632,7 +633,7 @@ class Selectsetting extends Component{ {this.state.newfileListtypes===true?

    请先上传资源

    :""} -

    +

    -

    - - 勾选后所有用户可见,否则仅课堂成员可见 - -
    + {/*
    */} + {/**/} + {/*勾选后所有用户可见,否则仅课堂成员可见*/} + {/**/} + {/*
    */} {/*{this.props.has_course_groups&&this.props.has_course_groups===true?:""}*/} - {/*{this.state.course_groupss&&this.state.course_groupss.length>0?*/} - {/*统一设置(选中则所有分班使用相同的发布设置,否则各个单独设置)*/} - {/*:""}*/} + {this.state.course_groupss&&this.state.course_groupss.length>0? + 统一设置(选中则所有分班使用相同的发布设置,否则各个单独设置) + :""} -
    - 勾选后所有用户可见,否则仅课堂成员可见 - + {/*
    */} + {/*勾选后所有用户可见,否则仅课堂成员可见*/} + {/**/} - {/*{this.state.course_groups_count&&this.state.course_groups_count>0?*/} - {/*统一设置(选中则所有分班使用相同的发布设置,否则各个单独设置)*/} - {/*:""}*/} + {this.state.course_groups_count&&this.state.course_groups_count>0? + 统一设置(选中则所有分班使用相同的发布设置,否则各个单独设置) + :""} - + this.setHistoryFun("/courses/"+this.props.match.params.coursesId+"/teachers")}> 教师 {coursedata.teacher_count} - + this.setHistoryFun("/courses/"+this.props.match.params.coursesId+"/students")}> 学生 {coursedata.student_count} {coursedata.credit===null?"": From 013f4faf6a407a6f741cd4dd5c4039353edb1813 Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Wed, 21 Aug 2019 15:28:29 +0800 Subject: [PATCH 49/97] =?UTF-8?q?migrate=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/migrate/20190820102040_change_exercise_1930_position.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/db/migrate/20190820102040_change_exercise_1930_position.rb b/db/migrate/20190820102040_change_exercise_1930_position.rb index c46616e28..acf99b9e5 100644 --- a/db/migrate/20190820102040_change_exercise_1930_position.rb +++ b/db/migrate/20190820102040_change_exercise_1930_position.rb @@ -3,7 +3,7 @@ class ChangeExercise1930Position < ActiveRecord::Migration[5.2] exs = Exercise.all.includes(:exercise_questions) exs.each do |ex| ex_questions = ex&.exercise_questions&.select(:id,:question_number,:exercise_id)&.order("question_number ASC") #试卷的位置迁移 - if ex_questions.exists? + if ex_questions.present? ex_questions.each_with_index do |q,index| puts index q_num = index + 1 @@ -14,7 +14,7 @@ class ChangeExercise1930Position < ActiveRecord::Migration[5.2] end ex_q_bank = ex&.exercise_bank&.exercise_bank_questions&.select(:id,:question_number,:exercise_bank_id,:shixun_id)&.order("question_number ASC") #试卷的习题库位置迁移 - if ex_q_bank.exists? + if ex_q_bank.present? ex_q_bank.each_with_index do |q,index| puts index q_num_1 = index + 1 From 6e7c302c9cc549a735acd9a07ebbf607a690a6bc Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Wed, 21 Aug 2019 15:46:20 +0800 Subject: [PATCH 50/97] =?UTF-8?q?standard=5Fanswer=20=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E9=A2=98=E9=A1=BA=E5=BA=8F=E5=8F=8D=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/modules/page/main/ChooseEvaluateView.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/react/src/modules/page/main/ChooseEvaluateView.js b/public/react/src/modules/page/main/ChooseEvaluateView.js index 754869521..e9a2b6eed 100644 --- a/public/react/src/modules/page/main/ChooseEvaluateView.js +++ b/public/react/src/modules/page/main/ChooseEvaluateView.js @@ -60,8 +60,8 @@ class ChooseEvaluateView extends Component { : item.result === true ?
      -
    • 正确选项:{item.actual_output}
    • -
    • 你的选项:{item.standard_answer}
    • +
    • 正确选项:{item.standard_answer}
    • +
    • 你的选项:{item.actual_output}
    :
      From 877c49f8cda8d033630ba06243d6de37d8aef0c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Wed, 21 Aug 2019 15:51:47 +0800 Subject: [PATCH 51/97] =?UTF-8?q?=E5=AF=BC=E8=88=AA=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../courses/coursesDetail/CoursesLeftNav.js | 75 +++++++++++-------- 1 file changed, 43 insertions(+), 32 deletions(-) diff --git a/public/react/src/modules/courses/coursesDetail/CoursesLeftNav.js b/public/react/src/modules/courses/coursesDetail/CoursesLeftNav.js index 16c71f942..d3b68ac32 100644 --- a/public/react/src/modules/courses/coursesDetail/CoursesLeftNav.js +++ b/public/react/src/modules/courses/coursesDetail/CoursesLeftNav.js @@ -880,8 +880,10 @@ class Coursesleftnav extends Component{ return(
      -
    • this.showsandians(e,key,item.category_url,1)} className={this.props.mainurl===item.category_url&&key===this.props.indexs?"liactive":"clearfix active"} onMouseLeave={(e)=>this.hidesandian(e,key)} onMouseEnter={(e)=>this.showsandian(e,key)}> - this.showsandians(e,key,item.category_url,1)} className={ item.second_category===undefined?"fl ml20 pd0":item.second_category.length===0?"fl ml20 pd0":this.state.sandiantypes===key?"fl ml20 pd0 ebebeb":"fl ml20 pd0"}> + +
    • this.showsandians(e,key,item.category_url,1)} className={this.props.mainurl===item.category_url&&key===this.props.indexs?"liactive":"clearfix active"} onMouseLeave={(e)=>this.hidesandian(e,key)} onMouseEnter={(e)=>this.showsandian(e,key)}> + + this.showsandians(e,key,item.category_url,1)} className={ item.second_category===undefined?"fl ml20 pd0":item.second_category.length===0?"fl ml20 pd0":this.state.sandiantypes===key?"fl ml20 pd0 ebebeb":"fl ml20 pd0"}> { item.type==="announcement"?: item.type==="online_learning"?: @@ -912,7 +914,8 @@ class Coursesleftnav extends Component{ :""} -
    • + + {/*下拉列表*/} @@ -950,14 +953,15 @@ class Coursesleftnav extends Component{ > {/*"/courses/"+this.props.match.params.coursesId+"/"+item.type+"/"+iem.category_type+"/"+iem.category_id*/} +
    • this.selectnavids(e,key,iem.category_id,item.type+"child",iem.second_category_url,key)} onMouseLeave={(e)=>this.twosandianhide(e,index,item.type)} onMouseEnter={(e)=>this.twosandianshow(e,index,item.type)} key={index} ref={provided.innerRef} {...provided.draggableProps} {...provided.dragHandleProps} - title={iem.category_name.length<10?"":iem.category_name} - > + > + {iem.category_name} {iem.category_count===0?"":iem.category_count} @@ -971,6 +975,7 @@ class Coursesleftnav extends Component{ {provided.placeholder} +
    • @@ -993,31 +998,35 @@ class Coursesleftnav extends Component{ return(
      {/**/} - -
    • this.setnavid(e,key,item.id,item.type,item.category_url)} onMouseEnter={(e)=>this.showsandian(e,key)} - title={item.name.length<7?"":item.name} - > - - { - item.type==="announcement"?: - item.type==="online_learning"?: - item.type==="shixun_homework"?: - item.type==="common_homework"?: - item.type==="group_homework"?: - item.type==="graduation"?: - item.type==="exercise"?: - item.type==="poll"?: - item.type==="attachment"?: - item.type==="board"?: - item.type==="course_group"?:"" - } - - this.selectnavid(e,key,item.id,item.type,item.category_url)}>{item.name} - {item.task_count===0?"":item.task_count} - - -
    • + + +
    • this.setnavid(e,key,item.id,item.type,item.category_url)} onMouseEnter={(e)=>this.showsandian(e,key)} + + > + + + { + item.type==="announcement"?: + item.type==="online_learning"?: + item.type==="shixun_homework"?: + item.type==="common_homework"?: + item.type==="group_homework"?: + item.type==="graduation"?: + item.type==="exercise"?: + item.type==="poll"?: + item.type==="attachment"?: + item.type==="board"?: + item.type==="course_group"?:"" + } + + this.selectnavid(e,key,item.id,item.type,item.category_url)}>{item.name} + {item.task_count===0?"":item.task_count} + + + +
    • + {/*
      */} @@ -1035,8 +1044,9 @@ class Coursesleftnav extends Component{ } } return( - -
    • + +
    • + this.selectnavids(e,key,iem.category_id,item.type+"child",iem.second_category_url,key)} > {/*{iem.category_name}*/} @@ -1044,6 +1054,7 @@ class Coursesleftnav extends Component{ {iem.category_count===0?"":iem.category_count} +
    • ) From 46589f9a76112090f3e260f768109be04a89cad1 Mon Sep 17 00:00:00 2001 From: jingquan huang Date: Wed, 21 Aug 2019 15:53:49 +0800 Subject: [PATCH 52/97] =?UTF-8?q?=E8=AF=B7=E6=B1=82=E6=9C=80=E5=A4=A7?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/application_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index e7b4bdac6..ec3ea326c 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -451,7 +451,7 @@ class ApplicationController < ActionController::Base cpu_limit = config.cpu_limit.presence || 1 cpu_request = config.lower_cpu_limit.presence || 0.1 memory_limit = config.memory_limit.presence || 1024 - request_limit = config.resource_limit.presence || 10 + request_limit = config.request_limit.presence || 10 resource_limit = config.resource_limit.presence || 10000 container << {:image => mirror.name, :cpuLimit => cpu_limit, From bdd02b3dbdeecd36705b5ba0115361fdd5895884 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Wed, 21 Aug 2019 15:58:09 +0800 Subject: [PATCH 53/97] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E7=9A=84=E6=8E=92=E5=BA=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 60 ++++++++++--------- app/services/homeworks_service.rb | 1 + ...0820021047_migrate_course_task_position.rb | 8 --- ...migrate_course_shixun_homework_position.rb | 11 ++++ 4 files changed, 43 insertions(+), 37 deletions(-) create mode 100644 db/migrate/20190821072722_migrate_course_shixun_homework_position.rb diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 5c3f2e743..bfd7a4464 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -41,7 +41,6 @@ class CoursesController < ApplicationController before_action :find_board, only: :board_list before_action :validate_page_size, only: :mine before_action :course_tasks, only: [:tasks_list, :update_task_position] - before_action :find_container, only: [:update_task_position] if RUBY_PLATFORM =~ /linux/ require 'simple_xlsx_reader' @@ -1150,17 +1149,20 @@ class CoursesController < ApplicationController end def update_task_position - tip_exception("缺少position参数") if params[:position].blank? - unless params[:position].to_i == @task.position - if params[:position].to_i < @task.position - @tasks.where("position < #{@task.position} and position >= ?", params[:position]).update_all("position = position + 1") - else - @tasks.where("position > #{@task.position} and position <= ?", params[:position]).update_all("position = position - 1") + Rails.logger.info("#######task_ids_length#{params[:task_ids].uniq.length}#########task_count:#{@tasks.count}") + tip_exception("task_ids参数有误") if params[:task_ids].blank? || params[:task_ids].uniq.length != @tasks.count + ActiveRecord::Base.transaction do + begin + @tasks.each do |task| + position = params[:task_ids].reverse.index(task.id).to_i + 1 + task.update_attributes!(position: position) + end + normal_status(0, "移动成功") + rescue Exception => e + uid_logger(e.message) + tip_exception(e.message) + raise ActiveRecord::Rollback end - @task.update_attributes(position: params[:position]) - normal_status(0, "移动成功") - else - normal_status(-1, "位置没有变化") end end @@ -1247,24 +1249,24 @@ class CoursesController < ApplicationController end end - def find_container - case params[:container_type] - when 'shixun_homework', 'common_homework', 'group_homework' - @task = HomeworkCommon.find_by(id: params[:container_id]) - when 'exercise' - @task = Exercise.find_by(id: params[:container_id]) - when 'poll' - @task = Poll.find_by(id: params[:container_id]) - when 'graduation_topic' - @task = GraduationTopic.find_by(id: params[:container_id]) - when 'graduation_task' - @task = GraduationTask.find_by(id: params[:container_id]) - when 'attachment' - @task = Attachment.find_by(id: params[:container_id]) - else - tip_exception("container_type参数有误") - end - end + # def find_container + # case params[:container_type] + # when 'shixun_homework', 'common_homework', 'group_homework' + # @task = HomeworkCommon.find_by(id: params[:container_id]) + # when 'exercise' + # @task = Exercise.find_by(id: params[:container_id]) + # when 'poll' + # @task = Poll.find_by(id: params[:container_id]) + # when 'graduation_topic' + # @task = GraduationTopic.find_by(id: params[:container_id]) + # when 'graduation_task' + # @task = GraduationTask.find_by(id: params[:container_id]) + # when 'attachment' + # @task = Attachment.find_by(id: params[:container_id]) + # else + # tip_exception("container_type参数有误") + # end + # end def student_act_score group_id, search sql_select = %Q{SELECT cm.*,( diff --git a/app/services/homeworks_service.rb b/app/services/homeworks_service.rb index a21614efc..78be3b8f9 100644 --- a/app/services/homeworks_service.rb +++ b/app/services/homeworks_service.rb @@ -9,6 +9,7 @@ class HomeworksService homework_detail_manual = HomeworkDetailManual.new homework.homework_detail_manual = homework_detail_manual + homework.position = course.practice_homeworks.first&.position.to_i + 1 if homework.save! homework_detail_manual.save! if homework_detail_manual diff --git a/db/migrate/20190820021047_migrate_course_task_position.rb b/db/migrate/20190820021047_migrate_course_task_position.rb index cf1b633bd..f32ac88b1 100644 --- a/db/migrate/20190820021047_migrate_course_task_position.rb +++ b/db/migrate/20190820021047_migrate_course_task_position.rb @@ -1,13 +1,5 @@ class MigrateCourseTaskPosition < ActiveRecord::Migration[5.2] def change add_column :homework_commons, :position, :integer, :default => 0 - - Course.find_each do |course| - puts course.id - course.practice_homeworks.order("IF(ISNULL(homework_commons.publish_time),0,1), homework_commons.publish_time DESC, - homework_commons.created_at DESC").reverse.each_with_index do |homework, index| - homework.update_columns(position: index + 1) - end - end end end diff --git a/db/migrate/20190821072722_migrate_course_shixun_homework_position.rb b/db/migrate/20190821072722_migrate_course_shixun_homework_position.rb new file mode 100644 index 000000000..9a19b12e3 --- /dev/null +++ b/db/migrate/20190821072722_migrate_course_shixun_homework_position.rb @@ -0,0 +1,11 @@ +class MigrateCourseShixunHomeworkPosition < ActiveRecord::Migration[5.2] + def change + Course.find_each do |course| + puts course.id + course.practice_homeworks.order("IF(ISNULL(homework_commons.publish_time),0,1), homework_commons.publish_time DESC, + homework_commons.created_at DESC").reverse.each_with_index do |homework, index| + homework.update_columns(position: index + 1) + end + end + end +end From 1ca41960959582dc3f78127286c95bd0ad281a90 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Wed, 21 Aug 2019 16:08:25 +0800 Subject: [PATCH 54/97] =?UTF-8?q?=E9=87=91=E8=AF=BE=E7=9A=84=E9=A6=96?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 5c3f2e743..58d7d6827 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -62,6 +62,9 @@ class CoursesController < ApplicationController @courses = Course.where(is_delete: 0, is_hidden: 0, is_end: 0) end + # 金课未开课的不显示在首页 + @courses = @courses.where("start_date is null or start_date <= '#{Date.today}'") + # 根据搜索关键字进一步筛选 if params[:search].present? # REDO:Extension From 524941916dbc57862c75f91bf2fb77526a76d582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Wed, 21 Aug 2019 16:08:27 +0800 Subject: [PATCH 55/97] =?UTF-8?q?=E5=AF=BC=E8=88=AA=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../courses/coursesDetail/CoursesLeftNav.js | 75 ++++++++----------- 1 file changed, 32 insertions(+), 43 deletions(-) diff --git a/public/react/src/modules/courses/coursesDetail/CoursesLeftNav.js b/public/react/src/modules/courses/coursesDetail/CoursesLeftNav.js index d3b68ac32..16c71f942 100644 --- a/public/react/src/modules/courses/coursesDetail/CoursesLeftNav.js +++ b/public/react/src/modules/courses/coursesDetail/CoursesLeftNav.js @@ -880,10 +880,8 @@ class Coursesleftnav extends Component{ return(
      - -
    • this.showsandians(e,key,item.category_url,1)} className={this.props.mainurl===item.category_url&&key===this.props.indexs?"liactive":"clearfix active"} onMouseLeave={(e)=>this.hidesandian(e,key)} onMouseEnter={(e)=>this.showsandian(e,key)}> - - this.showsandians(e,key,item.category_url,1)} className={ item.second_category===undefined?"fl ml20 pd0":item.second_category.length===0?"fl ml20 pd0":this.state.sandiantypes===key?"fl ml20 pd0 ebebeb":"fl ml20 pd0"}> +
    • this.showsandians(e,key,item.category_url,1)} className={this.props.mainurl===item.category_url&&key===this.props.indexs?"liactive":"clearfix active"} onMouseLeave={(e)=>this.hidesandian(e,key)} onMouseEnter={(e)=>this.showsandian(e,key)}> + this.showsandians(e,key,item.category_url,1)} className={ item.second_category===undefined?"fl ml20 pd0":item.second_category.length===0?"fl ml20 pd0":this.state.sandiantypes===key?"fl ml20 pd0 ebebeb":"fl ml20 pd0"}> { item.type==="announcement"?: item.type==="online_learning"?: @@ -914,8 +912,7 @@ class Coursesleftnav extends Component{ :""} - -
    • + {/*下拉列表*/} @@ -953,15 +950,14 @@ class Coursesleftnav extends Component{ > {/*"/courses/"+this.props.match.params.coursesId+"/"+item.type+"/"+iem.category_type+"/"+iem.category_id*/} -
    • this.selectnavids(e,key,iem.category_id,item.type+"child",iem.second_category_url,key)} onMouseLeave={(e)=>this.twosandianhide(e,index,item.type)} onMouseEnter={(e)=>this.twosandianshow(e,index,item.type)} key={index} ref={provided.innerRef} {...provided.draggableProps} {...provided.dragHandleProps} - + title={iem.category_name.length<10?"":iem.category_name} > - + {iem.category_name} {iem.category_count===0?"":iem.category_count} @@ -975,7 +971,6 @@ class Coursesleftnav extends Component{ {provided.placeholder} -
    • @@ -998,35 +993,31 @@ class Coursesleftnav extends Component{ return(
      {/**/} - - -
    • this.setnavid(e,key,item.id,item.type,item.category_url)} onMouseEnter={(e)=>this.showsandian(e,key)} - - > - - - { - item.type==="announcement"?: - item.type==="online_learning"?: - item.type==="shixun_homework"?: - item.type==="common_homework"?: - item.type==="group_homework"?: - item.type==="graduation"?: - item.type==="exercise"?: - item.type==="poll"?: - item.type==="attachment"?: - item.type==="board"?: - item.type==="course_group"?:"" - } - - this.selectnavid(e,key,item.id,item.type,item.category_url)}>{item.name} - {item.task_count===0?"":item.task_count} - - - -
    • - + +
    • this.setnavid(e,key,item.id,item.type,item.category_url)} onMouseEnter={(e)=>this.showsandian(e,key)} + title={item.name.length<7?"":item.name} + > + + { + item.type==="announcement"?: + item.type==="online_learning"?: + item.type==="shixun_homework"?: + item.type==="common_homework"?: + item.type==="group_homework"?: + item.type==="graduation"?: + item.type==="exercise"?: + item.type==="poll"?: + item.type==="attachment"?: + item.type==="board"?: + item.type==="course_group"?:"" + } + + this.selectnavid(e,key,item.id,item.type,item.category_url)}>{item.name} + {item.task_count===0?"":item.task_count} + + +
    • {/*
      */} @@ -1044,9 +1035,8 @@ class Coursesleftnav extends Component{ } } return( - -
    • - + +
    • this.selectnavids(e,key,iem.category_id,item.type+"child",iem.second_category_url,key)} > {/*{iem.category_name}*/} @@ -1054,7 +1044,6 @@ class Coursesleftnav extends Component{ {iem.category_count===0?"":iem.category_count} -
    • ) From d3c34a197729ca91604c2d41c695d1f48fb81451 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Wed, 21 Aug 2019 16:19:07 +0800 Subject: [PATCH 56/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/App.js | 3 +- .../courses/busyWork/CommonWorkDetailIndex.js | 6 +- .../busyWork/common/WorkDetailPageHeader.js | 5 +- .../courses/coursesDetail/CoursesBanner.js | 22 ++++- .../courses/coursesPublic/Addcourses.js | 94 ++++++------------- .../src/modules/courses/new/CoursesNew.js | 83 +++++++++++++--- .../shixunHomework/ShixunHomeworkPage.js | 3 +- .../shixunHomework/Trainingjobsetting.js | 44 ++++----- .../react/src/modules/message/js/MessagSub.js | 2 + .../modules/modals/Certifiedprofessional.js | 48 +++------- public/react/src/modules/tpm/NewHeader.js | 47 +++++++++- 11 files changed, 215 insertions(+), 142 deletions(-) diff --git a/public/react/src/App.js b/public/react/src/App.js index 9621fdc18..ab3ebb02d 100644 --- a/public/react/src/App.js +++ b/public/react/src/App.js @@ -19,7 +19,6 @@ import Trialapplicationysl from './modules/login/Trialapplicationysl'; import Trialapplicationreview from './modules/user/Trialapplicationreview'; import Addcourses from "./modules/courses/coursesPublic/Addcourses"; import AccountProfile from "./modules/user/AccountProfile"; -import Certifiedprofessional from "./modules/modals/Certifiedprofessional" import Trialapplication from './modules/login/Trialapplication' import NotFoundPage from './NotFoundPage' @@ -306,7 +305,7 @@ class App extends Component { - + {/**/} diff --git a/public/react/src/modules/courses/busyWork/CommonWorkDetailIndex.js b/public/react/src/modules/courses/busyWork/CommonWorkDetailIndex.js index 4d82f4182..a2a65ae22 100644 --- a/public/react/src/modules/courses/busyWork/CommonWorkDetailIndex.js +++ b/public/react/src/modules/courses/busyWork/CommonWorkDetailIndex.js @@ -282,11 +282,15 @@ class CommonWorkDetailIndex extends Component{ onClick={() => this.setState({moduleName: '参考答案'})} className={`${childModuleName == '参考答案' ? 'active' : '' } `} to={`/courses/${courseId}/${moduleEngName}/${workId}/answer`}>参考答案} + + {this.props.isAdmin() ? this.setState({moduleName: '设置'})} className={`${childModuleName == '设置' ? 'active' : '' } `} style={{paddingLeft:'38px'}} - to={`/courses/${courseId}/${moduleEngName}/${workId}/setting`}>设置 + to={`/courses/${courseId}/${moduleEngName}/${workId}/setting`}>设置: + "" + } {/* { this.props.tabRightComponents } */} diff --git a/public/react/src/modules/courses/busyWork/common/WorkDetailPageHeader.js b/public/react/src/modules/courses/busyWork/common/WorkDetailPageHeader.js index 56460a44a..a092c5066 100644 --- a/public/react/src/modules/courses/busyWork/common/WorkDetailPageHeader.js +++ b/public/react/src/modules/courses/busyWork/common/WorkDetailPageHeader.js @@ -144,10 +144,13 @@ class WorkDetailPageHeader extends Component{ {view_answer == true && 参考答案} + {this.props.isAdmin()? 设置 + to={`/courses/${courseId}/${moduleEngName}/${workId}/setting`}>设置: + "" + } { this.props.tabRightComponents } diff --git a/public/react/src/modules/courses/coursesDetail/CoursesBanner.js b/public/react/src/modules/courses/coursesDetail/CoursesBanner.js index c53233d79..e9b3164ed 100644 --- a/public/react/src/modules/courses/coursesDetail/CoursesBanner.js +++ b/public/react/src/modules/courses/coursesDetail/CoursesBanner.js @@ -12,6 +12,7 @@ import Guide from './CoursesGuide'; import AddStudentModal from '../members/modal/AddStudentModal' import AddTeacherModal from '../members/modal/AddTeacherModal' import Jointheclass from '../../modals/Jointheclass' +import Certifiedprofessional from "../../modals/Certifiedprofessional"; // 点击按钮复制功能 // function jsCopy(){ // var e = document.getElementById("copy_invite_code"); @@ -48,6 +49,8 @@ class CoursesBanner extends Component { is_guide:false, excellent:false,//是否是精品课堂 yslJointhe:false, + mydisplay:false + } } componentDidMount() { @@ -58,9 +61,22 @@ class CoursesBanner extends Component { componentWillUnmount() { off('updatabanner', this.updatabanner) } - - onloadupdatabanner=()=>{ + HideAddcoursestypess=(i)=>{ + console.log("调用了"); + this.setState({ + Addcoursestypes:false, + mydisplay:true, + occupation:i, + }) + }; + ModalCancelsy=()=>{ + this.setState({ + mydisplay:false, + }) + }; + + onloadupdatabanner=()=>{ this.updatabanner() } updatabanner=()=>{ @@ -407,7 +423,9 @@ class CoursesBanner extends Component { {Addcoursestypes === true ? this.tojoinclass(2)} + HideAddcoursestypess={(i)=>this.HideAddcoursestypess(i)} /> : ""} + { + console.log("submittojoinclass"); + console.log(response); if(response === undefined){ this.setState({ // Addcoursestype:false, isSpin:false }); + // try { + // this.props.HideAddcoursestypess(3); + // }catch (e) { + // + // } return } + if(response.data.status===-2){ + this.setState({ + Addcoursestype:false, + isSpin:false + }); + try { + if(response.data.message==="该课堂要求成员完成实名认证"){ + this.props.HideAddcoursestypess(1); + } + if(response.data.message==="该课堂要求成员完成职业认证"){ + this.props.HideAddcoursestypess(2); + + } + if(response.data.message==="该课堂要求成员完成实名和职业认证"){ + this.props.HideAddcoursestypess(3); + } + }catch (e) { + this.props.showNotification(response.data.message); + } + return; + } if(response.data.status===0){ - // course_id: 1545 - // message: "成功" - // status: 0 - // this.setState({ - // // loadtype:true, - // // modalsType:true, - // // modalsTopval:response.data.message, - // // modalSave:this.submitasyn, - // course_id:response.data.course_id - // }) - // https://www.trustie.net/issues/22365 if (response.data.course_id == 2704) { this.props.history.push('/courses/2704/boards/8367/messages/42072') @@ -263,14 +281,6 @@ class Addcourses extends Component{ this.props.hideAddcoursestype(); } - - // this.setState({ - // loadtype:true, - // modalsType:true, - // modalsTopval:response.data.message, - // modalSave:this.submitasyn, - // course_id:undefined - // }) } this.setState({ @@ -285,52 +295,6 @@ class Addcourses extends Component{ }); }) - // if(value===0){ - // const form = new FormData(); - // form.append('invite_code', tojoinclasstitle); - // form.append('role', pamst); - // form.append('type', 1); - // axios.post(url,form,[true] - // ).then((response) => { - // if( response.data.state===0){ - // this.submitstatevalue(0,"加入成功",response.data.course_id) - // }else if( response.data.state===1){ - // }else if( response.data.state===2){ - // this.submitstatevalue( 0,"课堂已过期! 请联系课堂管理员重启课堂。(在配置课堂处)") - // }else if( response.data.state===3){ - // this.submitstatevalue( 0,"您已是课堂成员)",response.data.course_id) - // }else if( response.data.state===4){ - // this.submitstatevalue( 0,"您输入的邀请码错误)") - // }else if( response.data.state===5){ - // this.submitstatevalue( 0,"您还未登录") - // }else if( response.data.state===6){ - // this.submitstatevalue( 0,"申请已提交,请等待审核") - // }else if( response.data.state===7){ - // this.submitstatevalue( 0," 您已经发送过申请了,请耐心等待") - // }else if( response.data.state===8){ - // this.submitstatevalue( 0,"您已经是该课堂的教师了",response.data.course_id) - // }else if( response.data.state==9){ - // this.submitstatevalue( 0,"您已经是该课堂的教辅了",response.data.course_id) - // }else if( response.data.state==10){ - // this.submitstatevalue(0,"您已经是该课堂的管理员了",response.data.course_id) - // }else if( response.data.state==11){ - // this.submitstatevalue(0," 该课堂已归档,请联系老师") - // }else if( response.data.state==12){ - // this.submitstatevalue(0,"您已经发送过申请了,请耐心等待师") - // }else if( response.data.state==13){ - // this.submitstatevalue(0,"您申请已提交,请等待审核") - // }else if( response.data.state==14){ - // this.submitstatevalue("此邀请码已停用,请与老师联系") - // }else if( response.data.state==15){ - // this.submitstatevalue(0,"您已是课堂成员! 加入分班请在课堂具体分班页面进行") - // }else { - // this.submitstatevalue(0," 未知错误,请稍后再试") - // } - // }) - // - // } - - } render(){ diff --git a/public/react/src/modules/courses/new/CoursesNew.js b/public/react/src/modules/courses/new/CoursesNew.js index 8629ba944..b87b4e81d 100644 --- a/public/react/src/modules/courses/new/CoursesNew.js +++ b/public/react/src/modules/courses/new/CoursesNew.js @@ -43,9 +43,11 @@ class CoursesNew extends Component { listvalue: undefined, fetching:false, boolxinjian:false, + checkboxgroup:undefined, + checkbofrup:["shixun_homework","common_homework","group_homework","exercise","attachment","course_group","graduation","poll","board"], + checkbofrups:[], } } - componentDidMount() { @@ -76,7 +78,32 @@ class CoursesNew extends Component { is_public: data.is_public === 1 ? true : false, Realnamecertification: data.authentication, Professionalcertification:data.professional_certification, - }) + + }); + try { + var datasysl=[]; + var dataysl2=[]; + var dataysl3=[]; + var checkbofrup =this.state.checkbofrup; + dataysl2=data.course_module_types; + datasysl=checkbofrup; + for (var k=0;k { console.log(error); @@ -442,7 +469,7 @@ class CoursesNew extends Component { this.applyForAddOrgForm.setVisible(true) } render() { - let {datatime,school,searchlistscholl} = this.state; + let {datatime,school,searchlistscholl,checkboxgroup} = this.state; const {getFieldDecorator} = this.props.form; const propsWithoutForm = Object.assign({}, this.props) delete propsWithoutForm.form @@ -669,17 +696,49 @@ class CoursesNew extends Component { "shixun_homework", "common_homework", "group_homework", "exercise", "attachment", "course_group", ], })( + this.props.match.params.coursesId != undefined? - 实训作业 - 普通作业 - 分组作业 - 试卷 - 资源 - 分班 - 毕业设计 - 问卷 - 讨论 + { + checkboxgroup===undefined?"":checkboxgroup.length===0?"":checkboxgroup.map((item,key)=>{ + return( + item ==="shixun_homework"? + 实训作业 + :item ==="common_homework"? + 普通作业 + :item ==="group_homework"? + 分组作业 + :item ==="exercise"? + 试卷 + :item ==="attachment"? + 资源 + :item ==="course_group"? + 分班 + :item ==="graduation"? + 毕业设计 + :item ==="poll"? + 问卷 + :item ==="board"? + 讨论 + :"" + ) + }) + } + : + + 实训作业 + 普通作业 + 分组作业 + 试卷 + 资源 + 分班 + 毕业设计 + 问卷 + 讨论 + + + + )}
      diff --git a/public/react/src/modules/courses/shixunHomework/ShixunHomeworkPage.js b/public/react/src/modules/courses/shixunHomework/ShixunHomeworkPage.js index 7263594af..f46d3f6b1 100644 --- a/public/react/src/modules/courses/shixunHomework/ShixunHomeworkPage.js +++ b/public/react/src/modules/courses/shixunHomework/ShixunHomeworkPage.js @@ -186,9 +186,10 @@ class ShixunHomeworkPage extends Component { ` } :""} + {this.props.isAdmin() ? this.ChangeTab(3)} - >设置 + >设置:""} {/*{this.props.isAdmin() ? { - if (response != undefined) - if (response && response.data.status === -1) { - if(response.data.message==="该课堂要求成员完成实名认证"){ - this.setState({ - mydisplay:true, - occupation:1, - }) - - }else if(response.data.message==="该课堂要求成员完成职业认证"){ - this.setState({ - mydisplay:true, - occupation:2, - }) - }else if(response.data.message==="该课堂要求成员完成实名和职业认证"){ - this.setState({ - mydisplay:true, - occupation:3, - }) - } - } - return response; - }, (error) => { - //TODO 这里如果样式变了会出现css不加载的情况 - - }); + // axios.interceptors.response.use((response) => { + // if (response != undefined) + // if (response && response.data.status === -1) { + // + // } + // return response; + // }, (error) => { + // //TODO 这里如果样式变了会出现css不加载的情况 + // + // }); } modalCancel=()=>{ - this.setState({ - mydisplay:false, - }) + this.props.ModalCancelsy(); }; setDownload=()=>{ @@ -63,7 +45,7 @@ class Certifiedprofessional extends Component { render() { // console.log("加入金品课堂2"); // console.log(this.props); - let{occupation} =this.state; + let{occupation} =this.props; return( diff --git a/public/react/src/modules/tpm/NewHeader.js b/public/react/src/modules/tpm/NewHeader.js index dff749515..66a120716 100644 --- a/public/react/src/modules/tpm/NewHeader.js +++ b/public/react/src/modules/tpm/NewHeader.js @@ -3,6 +3,7 @@ import { BrowserRouter as Router, Route, Link } from "react-router-dom"; import { Redirect } from 'react-router'; import AccountProfile from"../user/AccountProfile"; import PropTypes from 'prop-types'; +import Certifiedprofessional from "../../modules/modals/Certifiedprofessional" // import searchImg from '../../../../images/educoder/icon/search.svg' @@ -62,7 +63,9 @@ class NewHeader extends Component { isRender:false, showSearchOpentype:false, showTrial:false, - setevaluatinghides:false + setevaluatinghides:false, + occupation:0, + mydisplay:false } // console.log("176") // console.log(props); @@ -95,7 +98,29 @@ class NewHeader extends Component { //获取游览器地址 window.sessionStorage.setItem("yslgeturls",JSON.stringify(window.location.href)) - + // axios.interceptors.response.use((response) => { + // if (response != undefined) + // if (response && response.data.status === -1) { + // if (response.data.message === "该课堂要求成员完成实名认证") { + // + // } else if (response.data.message === "该课堂要求成员完成职业认证") { + // console.log("该课堂要求成员完成职业认证"); + // this.HideAddcoursestypess(2); + // + // + // + // return + // } else if (response.data.message === "该课堂要求成员完成实名和职业认证") { + // console.log("该课堂要求成员完成实名和职业认证"); + // this.HideAddcoursestypess(3); + // return + // + // } + // } + // return response; + // }, (error) => { + // + // }); } componentDidUpdate = (prevProps) => { @@ -326,7 +351,20 @@ class NewHeader extends Component { this.setState({ Addcoursestypes:false }) - } + }; + HideAddcoursestypess=(i)=>{ + console.log("调用了"); + this.setState({ + Addcoursestypes:false, + mydisplay:true, + occupation:i, + }) + }; + ModalCancelsy=()=>{ + this.setState({ + mydisplay:false, + }) + }; hidetojoinclass=()=>{ @@ -880,7 +918,10 @@ submittojoinclass=(value)=>{ {Addcoursestypes===true?this.HideAddcoursestypess(i)} />:""} + + {/* /courses/join_course_multi_role */}
    • From 491d6352d5fef9e0b8e5b85a95cf20372b274ff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Wed, 21 Aug 2019 16:25:44 +0800 Subject: [PATCH 57/97] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../courses/coursesDetail/CoursesBanner.js | 51 ++++++++++--------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/public/react/src/modules/courses/coursesDetail/CoursesBanner.js b/public/react/src/modules/courses/coursesDetail/CoursesBanner.js index 5e332f3be..efc30ee2e 100644 --- a/public/react/src/modules/courses/coursesDetail/CoursesBanner.js +++ b/public/react/src/modules/courses/coursesDetail/CoursesBanner.js @@ -518,7 +518,32 @@ class CoursesBanner extends Component {
    • - {excellent===false? + {/*{excellent===false?*/} + {/* :*/} + {/*
      */} + {/* */} + {/* /!*coursedata.course_identity === 6 是非课堂成员*!/*/} + {/* {coursedata.course_identity === 6&&coursedata.educoder_teacher===false?*/} + {/* this.myyslgradin()}>加入课堂: ""}*/} + + {/* {coursedata.course_identity === 6&&coursedata.educoder_teacher===true?*/} + {/* this.myyslgradin()}>加入课堂: ""}*/} + + {/* /!*{this.props.isStudent()? this.exitclass()}*!/*/} + {/* /!*> 退出课堂 :""}*!/*/} + {/*
      */} + + {/*}*/}
      {coursedata.switch_to_student === true ? 退出课堂 :""}
      - : -
      - - {/*coursedata.course_identity === 6 是非课堂成员*/} - {coursedata.course_identity === 6&&coursedata.educoder_teacher===false? - this.myyslgradin()}>加入课堂: ""} - - {coursedata.course_identity === 6&&coursedata.educoder_teacher===true? - this.myyslgradin()}>加入课堂: ""} - - {/*{this.props.isStudent()? this.exitclass()}*/} - {/*> 退出课堂 :""}*/} -
      - } {!!time_limit && - {`本关最大执行时间:${time_limit}秒`}} + {`本关最大执行时间:${real_time_limit}秒`}} {!gameBuilding && record ? { record } 秒 From fa5f7d6ebb72531b97fb4785263e50453361c00c Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Wed, 21 Aug 2019 16:34:38 +0800 Subject: [PATCH 60/97] =?UTF-8?q?=E6=96=87=E6=A1=A3=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E7=9A=84=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/concerns/git_common.rb | 1 + app/controllers/concerns/git_helper.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/app/controllers/concerns/git_common.rb b/app/controllers/concerns/git_common.rb index 452204419..cd21622aa 100644 --- a/app/controllers/concerns/git_common.rb +++ b/app/controllers/concerns/git_common.rb @@ -29,6 +29,7 @@ module GitCommon def file_content @content = git_fle_content @repo_path, @path + Rails.logger.info("##############_____@content.present?___________########################{@content.present?}") end # 版本库提交记录 diff --git a/app/controllers/concerns/git_helper.rb b/app/controllers/concerns/git_helper.rb index d77e1c3f6..eeb4671a4 100644 --- a/app/controllers/concerns/git_helper.rb +++ b/app/controllers/concerns/git_helper.rb @@ -10,6 +10,7 @@ module GitHelper def git_fle_content(repo_path, path) begin Rails.logger.info("git file content: repo_path is #{repo_path}, path is #{path}") + content = GitService.file_content(repo_path: repo_path, path: path) Rails.logger.info("git file content: content is #{content}") From a06163769f038b210f7706e32183de87a680f02b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Wed, 21 Aug 2019 16:42:03 +0800 Subject: [PATCH 61/97] =?UTF-8?q?=E5=AF=BC=E8=88=AA=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/images/educoder/headNavLogo.png | Bin 2816 -> 8980 bytes public/images/educoder/oldheadNavLogo.png | Bin 8980 -> 0 bytes .../src/modules/paths/ShixunPathSearch.js | 33 ++++++++++++------ 3 files changed, 22 insertions(+), 11 deletions(-) delete mode 100644 public/images/educoder/oldheadNavLogo.png diff --git a/public/images/educoder/headNavLogo.png b/public/images/educoder/headNavLogo.png index 436d23490404beedcf7cd776bbf8ed0282794ca4..8df93d54db625930fb046fe95bf1a54fc5d8c613 100644 GIT binary patch literal 8980 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 kbMJ>xVB9eMsT7d{xq`|2G8@h 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 SnFiSa0000PAbw}GyN9ouz~0;U0{kAXY64aW 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 kbMJ>xVB9eMsT7d{xq`|2G8@{ - let url='/paths.json?order='+order+'&page='+page; - if(select!=""){ - url+='&select='+select; - } - if(search!=""){ - url+='&search='+search; - } - axios.get(url).then((result)=>{ + let url='/paths.json'; + // '?order='+order+'&page='+page; + // if(select!=""){ + // url+='&select='+select; + // } + // if(search!=""){ + // url+='&search='+search; + // } + axios.get(url,{params:{ + order:order, + page:page, + select:select, + // search:search + }}).then((result)=>{ if(result.status==200){ this.setState({ sortList:result.data.tags, @@ -104,7 +110,12 @@ class ShixunPathSearch extends Component{ }) } - render() { + + setHistoryFun=(url)=>{ + this.props.history.push(url) + } + + render() { let { order,sortList,search,page,total_count,select }=this.state; return (
      @@ -114,7 +125,7 @@ class ShixunPathSearch extends Component{
      -
    • 0 ? "" : "active"}>全部
    • +
    • 0 ? "" : "active"}>this.changeSelect(null)}>全部
    • { sortList && sortList.map((item,key)=>{ return( From e538d64f9aa1920ec228c9b8222f2b9777b0ea40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Wed, 21 Aug 2019 16:59:42 +0800 Subject: [PATCH 62/97] =?UTF-8?q?logo=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/images/educoder/newheadNavLogo.png | Bin 0 -> 2816 bytes public/react/src/modules/tpm/NewHeader.js | 18 +++++++++--------- public/react/src/modules/tpm/TPMIndex.css | 5 +++++ 3 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 public/images/educoder/newheadNavLogo.png diff --git a/public/images/educoder/newheadNavLogo.png b/public/images/educoder/newheadNavLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..436d23490404beedcf7cd776bbf8ed0282794ca4 GIT binary patch literal 2816 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 SnFiSa0000{ {...this.props} {...this.state} />:""} - + 高校智能化教学与实训平台 - + '; -$('link[rel=stylesheet]').eq(0).before(cssHtml); - -}); \ No newline at end of file diff --git a/app/assets/javascripts/admin/libs/bootstrap-inputmask/inputmask.js b/app/assets/javascripts/admin/libs/bootstrap-inputmask/inputmask.js deleted file mode 100644 index a8010ea8f..000000000 --- a/app/assets/javascripts/admin/libs/bootstrap-inputmask/inputmask.js +++ /dev/null @@ -1,360 +0,0 @@ -/* =========================================================== - * Bootstrap: inputmask.js v3.1.0 - * http://jasny.github.io/bootstrap/javascript/#inputmask - * - * Based on Masked Input plugin by Josh Bush (digitalbush.com) - * =========================================================== - * Copyright 2012-2014 Arnold Daniels - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { "use strict"; - - var isIphone = (window.orientation !== undefined) - var isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1 - var isIE = window.navigator.appName == 'Microsoft Internet Explorer' - - // INPUTMASK PUBLIC CLASS DEFINITION - // ================================= - - var Inputmask = function (element, options) { - if (isAndroid) return // No support because caret positioning doesn't work on Android - - this.$element = $(element) - this.options = $.extend({}, Inputmask.DEFAULTS, options) - this.mask = String(this.options.mask) - - this.init() - this.listen() - - this.checkVal() //Perform initial check for existing values - } - - Inputmask.DEFAULTS = { - mask: "", - placeholder: "_", - definitions: { - '9': "[0-9]", - 'a': "[A-Za-z]", - 'w': "[A-Za-z0-9]", - '*': "." - } - } - - Inputmask.prototype.init = function() { - var defs = this.options.definitions - var len = this.mask.length - - this.tests = [] - this.partialPosition = this.mask.length - this.firstNonMaskPos = null - - $.each(this.mask.split(""), $.proxy(function(i, c) { - if (c == '?') { - len-- - this.partialPosition = i - } else if (defs[c]) { - this.tests.push(new RegExp(defs[c])) - if (this.firstNonMaskPos === null) - this.firstNonMaskPos = this.tests.length - 1 - } else { - this.tests.push(null) - } - }, this)) - - this.buffer = $.map(this.mask.split(""), $.proxy(function(c, i) { - if (c != '?') return defs[c] ? this.options.placeholder : c - }, this)) - - this.focusText = this.$element.val() - - this.$element.data("rawMaskFn", $.proxy(function() { - return $.map(this.buffer, function(c, i) { - return this.tests[i] && c != this.options.placeholder ? c : null - }).join('') - }, this)) - } - - Inputmask.prototype.listen = function() { - if (this.$element.attr("readonly")) return - - var pasteEventName = (isIE ? 'paste' : 'input') + ".mask" - - this.$element - .on("unmask.bs.inputmask", $.proxy(this.unmask, this)) - - .on("focus.bs.inputmask", $.proxy(this.focusEvent, this)) - .on("blur.bs.inputmask", $.proxy(this.blurEvent, this)) - - .on("keydown.bs.inputmask", $.proxy(this.keydownEvent, this)) - .on("keypress.bs.inputmask", $.proxy(this.keypressEvent, this)) - - .on(pasteEventName, $.proxy(this.pasteEvent, this)) - } - - //Helper Function for Caret positioning - Inputmask.prototype.caret = function(begin, end) { - if (this.$element.length === 0) return - if (typeof begin == 'number') { - end = (typeof end == 'number') ? end : begin - return this.$element.each(function() { - if (this.setSelectionRange) { - this.setSelectionRange(begin, end) - } else if (this.createTextRange) { - var range = this.createTextRange() - range.collapse(true) - range.moveEnd('character', end) - range.moveStart('character', begin) - range.select() - } - }) - } else { - if (this.$element[0].setSelectionRange) { - begin = this.$element[0].selectionStart - end = this.$element[0].selectionEnd - } else if (document.selection && document.selection.createRange) { - var range = document.selection.createRange() - begin = 0 - range.duplicate().moveStart('character', -100000) - end = begin + range.text.length - } - return { - begin: begin, - end: end - } - } - } - - Inputmask.prototype.seekNext = function(pos) { - var len = this.mask.length - while (++pos <= len && !this.tests[pos]); - - return pos - } - - Inputmask.prototype.seekPrev = function(pos) { - while (--pos >= 0 && !this.tests[pos]); - - return pos - } - - Inputmask.prototype.shiftL = function(begin,end) { - var len = this.mask.length - - if (begin < 0) return - - for (var i = begin, j = this.seekNext(end); i < len; i++) { - if (this.tests[i]) { - if (j < len && this.tests[i].test(this.buffer[j])) { - this.buffer[i] = this.buffer[j] - this.buffer[j] = this.options.placeholder - } else - break - j = this.seekNext(j) - } - } - this.writeBuffer() - this.caret(Math.max(this.firstNonMaskPos, begin)) - } - - Inputmask.prototype.shiftR = function(pos) { - var len = this.mask.length - - for (var i = pos, c = this.options.placeholder; i < len; i++) { - if (this.tests[i]) { - var j = this.seekNext(i) - var t = this.buffer[i] - this.buffer[i] = c - if (j < len && this.tests[j].test(t)) - c = t - else - break - } - } - }, - - Inputmask.prototype.unmask = function() { - this.$element - .unbind(".mask") - .removeData("inputmask") - } - - Inputmask.prototype.focusEvent = function() { - this.focusText = this.$element.val() - var len = this.mask.length - var pos = this.checkVal() - this.writeBuffer() - - var that = this - var moveCaret = function() { - if (pos == len) - that.caret(0, pos) - else - that.caret(pos) - } - - moveCaret() - setTimeout(moveCaret, 50) - } - - Inputmask.prototype.blurEvent = function() { - this.checkVal() - if (this.$element.val() !== this.focusText) - this.$element.trigger('change') - } - - Inputmask.prototype.keydownEvent = function(e) { - var k = e.which - - //backspace, delete, and escape get special treatment - if (k == 8 || k == 46 || (isIphone && k == 127)) { - var pos = this.caret(), - begin = pos.begin, - end = pos.end - - if (end - begin === 0) { - begin = k != 46 ? this.seekPrev(begin) : (end = this.seekNext(begin - 1)) - end = k == 46 ? this.seekNext(end) : end - } - this.clearBuffer(begin, end) - this.shiftL(begin, end - 1) - - return false - } else if (k == 27) {//escape - this.$element.val(this.focusText) - this.caret(0, this.checkVal()) - return false - } - } - - Inputmask.prototype.keypressEvent = function(e) { - var len = this.mask.length - - var k = e.which, - pos = this.caret() - - if (e.ctrlKey || e.altKey || e.metaKey || k < 32) {//Ignore - return true - } else if (k) { - if (pos.end - pos.begin !== 0) { - this.clearBuffer(pos.begin, pos.end) - this.shiftL(pos.begin, pos.end - 1) - } - - var p = this.seekNext(pos.begin - 1) - if (p < len) { - var c = String.fromCharCode(k) - if (this.tests[p].test(c)) { - this.shiftR(p) - this.buffer[p] = c - this.writeBuffer() - var next = this.seekNext(p) - this.caret(next) - } - } - return false - } - } - - Inputmask.prototype.pasteEvent = function() { - var that = this - - setTimeout(function() { - that.caret(that.checkVal(true)) - }, 0) - } - - Inputmask.prototype.clearBuffer = function(start, end) { - var len = this.mask.length - - for (var i = start; i < end && i < len; i++) { - if (this.tests[i]) - this.buffer[i] = this.options.placeholder - } - } - - Inputmask.prototype.writeBuffer = function() { - return this.$element.val(this.buffer.join('')).val() - } - - Inputmask.prototype.checkVal = function(allow) { - var len = this.mask.length - //try to place characters where they belong - var test = this.$element.val() - var lastMatch = -1 - - for (var i = 0, pos = 0; i < len; i++) { - if (this.tests[i]) { - this.buffer[i] = this.options.placeholder - while (pos++ < test.length) { - var c = test.charAt(pos - 1) - if (this.tests[i].test(c)) { - this.buffer[i] = c - lastMatch = i - break - } - } - if (pos > test.length) - break - } else if (this.buffer[i] == test.charAt(pos) && i != this.partialPosition) { - pos++ - lastMatch = i - } - } - if (!allow && lastMatch + 1 < this.partialPosition) { - this.$element.val("") - this.clearBuffer(0, len) - } else if (allow || lastMatch + 1 >= this.partialPosition) { - this.writeBuffer() - if (!allow) this.$element.val(this.$element.val().substring(0, lastMatch + 1)) - } - return (this.partialPosition ? i : this.firstNonMaskPos) - } - - - // INPUTMASK PLUGIN DEFINITION - // =========================== - - var old = $.fn.inputmask - - $.fn.inputmask = function (options) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.inputmask') - - if (!data) $this.data('bs.inputmask', (data = new Inputmask(this, options))) - }) - } - - $.fn.inputmask.Constructor = Inputmask - - - // INPUTMASK NO CONFLICT - // ==================== - - $.fn.inputmask.noConflict = function () { - $.fn.inputmask = old - return this - } - - - // INPUTMASK DATA-API - // ================== - - $(document).on('focus.bs.inputmask.data-api', '[data-mask]', function (e) { - var $this = $(this) - if ($this.data('bs.inputmask')) return - $this.inputmask($this.data()) - }) - -}(window.jQuery); diff --git a/app/assets/javascripts/admin/libs/bootstrap-select/bootstrap-select.min.css b/app/assets/javascripts/admin/libs/bootstrap-select/bootstrap-select.min.css deleted file mode 100644 index 36fd6900e..000000000 --- a/app/assets/javascripts/admin/libs/bootstrap-select/bootstrap-select.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * bootstrap-select v1.4.2 - * http://silviomoreto.github.io/bootstrap-select/ - * - * Copyright 2013 bootstrap-select - * Licensed under the MIT license - */.bootstrap-select.btn-group,.bootstrap-select.btn-group[class*="span"]{float:none;display:inline-block;margin-bottom:10px;margin-left:0}.form-search .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group{margin-bottom:0}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:0}.bootstrap-select.btn-group.pull-right,.bootstrap-select.btn-group[class*="span"].pull-right,.row-fluid .bootstrap-select.btn-group[class*="span"].pull-right{float:right}.input-append .bootstrap-select.btn-group{margin-left:-1px}.input-prepend .bootstrap-select.btn-group{margin-right:-1px}.bootstrap-select:not([class*="span"]):not([class*="col-"]):not([class*="form-control"]){width:220px}.bootstrap-select{width:220px\0}.bootstrap-select.form-control:not([class*="span"]){width:100%}.bootstrap-select>.btn{width:100%}.error .bootstrap-select .btn{border:1px solid #b94a48}.dropdown-menu{z-index:2000}.bootstrap-select.show-menu-arrow.open>.btn{z-index:2051}.bootstrap-select .btn:focus{outline:thin dotted #333 !important;outline:5px auto -webkit-focus-ring-color !important;outline-offset:-2px}.bootstrap-select.btn-group .btn .filter-option{overflow:hidden;position:absolute;left:12px;right:25px;text-align:left}.bootstrap-select.btn-group .btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group>.disabled,.bootstrap-select.btn-group .dropdown-menu li.disabled>a{cursor:not-allowed}.bootstrap-select.btn-group>.disabled:focus{outline:none !important}.bootstrap-select.btn-group[class*="span"] .btn{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu dt{display:block;padding:3px 20px;cursor:default}.bootstrap-select.btn-group .div-contain{overflow:hidden}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li>a.opt{position:relative;padding-left:35px}.bootstrap-select.btn-group .dropdown-menu li>a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:normal}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a i.check-mark{display:inline-block;position:absolute;right:15px;margin-top:2.5px}.bootstrap-select.btn-group .dropdown-menu li a i.check-mark{display:none}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:hover small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:focus small,.bootstrap-select.btn-group .dropdown-menu li.active:not(.disabled)>a small{color:#64b1d8;color:rgba(255,255,255,0.4)}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:normal}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #CCC;border-bottom-color:rgba(0,0,0,0.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid white;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after{display:block}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px}.mobile-device{position:absolute;top:0;left:0;display:block !important;width:100%;height:100% !important;opacity:0}.bootstrap-select.fit-width{width:auto !important}.bootstrap-select.btn-group.fit-width .btn .filter-option{position:static}.bootstrap-select.btn-group.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.control-group.error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select-searchbox{padding:4px 8px}.bootstrap-select-searchbox input{margin-bottom:0} diff --git a/app/assets/javascripts/admin/libs/bootstrap-select/bootstrap-select.min.js b/app/assets/javascripts/admin/libs/bootstrap-select/bootstrap-select.min.js deleted file mode 100644 index cd4f7fe27..000000000 --- a/app/assets/javascripts/admin/libs/bootstrap-select/bootstrap-select.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * bootstrap-select v1.4.2 - * http://silviomoreto.github.io/bootstrap-select/ - * - * Copyright 2013 bootstrap-select - * Licensed under the MIT license - */ -;!function(b){b.expr[":"].icontains=function(e,c,d){return b(e).text().toUpperCase().indexOf(d[3].toUpperCase())>=0};var a=function(d,c,f){if(f){f.stopPropagation();f.preventDefault()}this.$element=b(d);this.$newElement=null;this.$button=null;this.$menu=null;this.options=b.extend({},b.fn.selectpicker.defaults,this.$element.data(),typeof c=="object"&&c);if(this.options.title===null){this.options.title=this.$element.attr("title")}this.val=a.prototype.val;this.render=a.prototype.render;this.refresh=a.prototype.refresh;this.setStyle=a.prototype.setStyle;this.selectAll=a.prototype.selectAll;this.deselectAll=a.prototype.deselectAll;this.init()};a.prototype={constructor:a,init:function(){this.$element.hide();this.multiple=this.$element.prop("multiple");var d=this.$element.attr("id");this.$newElement=this.createView();this.$element.after(this.$newElement);this.$menu=this.$newElement.find("> .dropdown-menu");this.$button=this.$newElement.find("> button");this.$searchbox=this.$newElement.find("input");if(d!==undefined){var c=this;this.$button.attr("data-id",d);b('label[for="'+d+'"]').click(function(f){f.preventDefault();c.$button.focus()})}this.checkDisabled();this.clickListener();if(this.options.liveSearch){this.liveSearchListener()}this.render();this.liHeight();this.setStyle();this.setWidth();if(this.options.container){this.selectPosition()}this.$menu.data("this",this);this.$newElement.data("this",this)},createDropdown:function(){var c=this.multiple?" show-tick":"";var f=this.options.header?'
      '+this.options.header+"
      ":"";var e=this.options.liveSearch?'':"";var d='
      ';return b(d)},createView:function(){var c=this.createDropdown();var d=this.createLi();c.find("ul").append(d);return c},reloadLi:function(){this.destroyLi();var c=this.createLi();this.$menu.find("ul").append(c)},destroyLi:function(){this.$menu.find("li").remove()},createLi:function(){var d=this,e=[],c="";this.$element.find("option").each(function(){var i=b(this);var g=i.attr("class")||"";var h=i.attr("style")||"";var m=i.data("content")?i.data("content"):i.html();var k=i.data("subtext")!==undefined?''+i.data("subtext")+"":"";var j=i.data("icon")!==undefined?' ':"";if(j!==""&&(i.is(":disabled")||i.parent().is(":disabled"))){j=""+j+""}if(!i.data("content")){m=j+''+m+k+""}if(d.options.hideDisabled&&(i.is(":disabled")||i.parent().is(":disabled"))){e.push('')}else{if(i.parent().is("optgroup")&&i.data("divider")!==true){if(i.index()===0){var l=i.parent().attr("label");var n=i.parent().data("subtext")!==undefined?''+i.parent().data("subtext")+"":"";var f=i.parent().data("icon")?' ':"";l=f+''+l+n+"";if(i[0].index!==0){e.push('
      '+l+"
      "+d.createA(m,"opt "+g,h))}else{e.push("
      "+l+"
      "+d.createA(m,"opt "+g,h))}}else{e.push(d.createA(m,"opt "+g,h))}}else{if(i.data("divider")===true){e.push('
      ')}else{if(b(this).data("hidden")===true){e.push("")}else{e.push(d.createA(m,g,h))}}}}});b.each(e,function(f,g){c+="
    • "+g+"
    • "});if(!this.multiple&&this.$element.find("option:selected").length===0&&!this.options.title){this.$element.find("option").eq(0).prop("selected",true).attr("selected","selected")}return b(c)},createA:function(e,c,d){return''+e+''},render:function(){var d=this;this.$element.find("option").each(function(h){d.setDisabled(h,b(this).is(":disabled")||b(this).parent().is(":disabled"));d.setSelected(h,b(this).is(":selected"))});this.tabIndex();var g=this.$element.find("option:selected").map(function(){var j=b(this);var i=j.data("icon")&&d.options.showIcon?' ':"";var h;if(d.options.showSubtext&&j.attr("data-subtext")&&!d.multiple){h=' '+j.data("subtext")+""}else{h=""}if(j.data("content")&&d.options.showContent){return j.data("content")}else{if(j.attr("title")!==undefined){return j.attr("title")}else{return i+j.html()+h}}}).toArray();var f=!this.multiple?g[0]:g.join(this.options.multipleSeparator);if(this.multiple&&this.options.selectedTextFormat.indexOf("count")>-1){var c=this.options.selectedTextFormat.split(">");var e=this.options.hideDisabled?":not([disabled])":"";if((c.length>1&&g.length>c[1])||(c.length==1&&g.length>=2)){f=this.options.countSelectedText.replace("{0}",g.length).replace("{1}",this.$element.find('option:not([data-divider="true"]):not([data-hidden="true"])'+e).length)}}if(!f){f=this.options.title!==undefined?this.options.title:this.options.noneSelectedText}this.$button.attr("title",b.trim(f));this.$newElement.find(".filter-option").html(f)},setStyle:function(e,d){if(this.$element.attr("class")){this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device/gi,""))}var c=e?e:this.options.style;if(d=="add"){this.$button.addClass(c)}else{if(d=="remove"){this.$button.removeClass(c)}else{this.$button.removeClass(this.options.style);this.$button.addClass(c)}}},liHeight:function(){var e=this.$menu.parent().clone().appendTo("body"),f=e.addClass("open").find("> .dropdown-menu"),d=f.find("li > a").outerHeight(),c=this.options.header?f.find(".popover-title").outerHeight():0,g=this.options.liveSearch?f.find(".bootstrap-select-searchbox").outerHeight():0;e.remove();this.$newElement.data("liHeight",d).data("headerHeight",c).data("searchHeight",g)},setSize:function(){var h=this,d=this.$menu,i=d.find(".inner"),t=this.$newElement.outerHeight(),f=this.$newElement.data("liHeight"),r=this.$newElement.data("headerHeight"),l=this.$newElement.data("searchHeight"),k=d.find("li .divider").outerHeight(true),q=parseInt(d.css("padding-top"))+parseInt(d.css("padding-bottom"))+parseInt(d.css("border-top-width"))+parseInt(d.css("border-bottom-width")),o=this.options.hideDisabled?":not(.disabled)":"",n=b(window),g=q+parseInt(d.css("margin-top"))+parseInt(d.css("margin-bottom"))+2,p,u,s,j=function(){u=h.$newElement.offset().top-n.scrollTop();s=n.height()-u-t};j();if(this.options.header){d.css("padding-top",0)}if(this.options.size=="auto"){var e=function(){var v;j();p=s-g;if(h.options.dropupAuto){h.$newElement.toggleClass("dropup",(u>s)&&((p-g)3){v=f*3+g-2}else{v=0}d.css({"max-height":p+"px",overflow:"hidden","min-height":v+"px"});i.css({"max-height":p-r-l-q+"px","overflow-y":"auto","min-height":v-q+"px"})};e();b(window).resize(e);b(window).scroll(e)}else{if(this.options.size&&this.options.size!="auto"&&d.find("li"+o).length>this.options.size){var m=d.find("li"+o+" > *").filter(":not(.div-contain)").slice(0,this.options.size).last().parent().index();var c=d.find("li").slice(0,m+1).find(".div-contain").length;p=f*this.options.size+c*k+q;if(h.options.dropupAuto){this.$newElement.toggleClass("dropup",(u>s)&&(p .dropdown-menu").css("width");d.remove();this.$newElement.css("width",c)}else{if(this.options.width=="fit"){this.$menu.css("min-width","");this.$newElement.css("width","").addClass("fit-width")}else{if(this.options.width){this.$menu.css("min-width","");this.$newElement.css("width",this.options.width)}else{this.$menu.css("min-width","");this.$newElement.css("width","")}}}if(this.$newElement.hasClass("fit-width")&&this.options.width!=="fit"){this.$newElement.removeClass("fit-width")}},selectPosition:function(){var e=this,d="
      ",f=b(d),h,g,c=function(i){f.addClass(i.attr("class")).toggleClass("dropup",i.hasClass("dropup"));h=i.offset();g=i.hasClass("dropup")?0:i[0].offsetHeight;f.css({top:h.top+g,left:h.left,width:i[0].offsetWidth,position:"absolute"})};this.$newElement.on("click",function(){c(b(this));f.appendTo(e.options.container);f.toggleClass("open",!b(this).hasClass("open"));f.append(e.$menu)});b(window).resize(function(){c(e.$newElement)});b(window).on("scroll",function(){c(e.$newElement)});b("html").on("click",function(i){if(b(i.target).closest(e.$newElement).length<1){f.removeClass("open")}})},mobile:function(){this.$element.addClass("mobile-device").appendTo(this.$newElement);if(this.options.container){this.$menu.hide()}},refresh:function(){this.reloadLi();this.render();this.setWidth();this.setStyle();this.checkDisabled();this.liHeight()},update:function(){this.reloadLi();this.setWidth();this.setStyle();this.checkDisabled();this.liHeight()},setSelected:function(c,d){this.$menu.find("li").eq(c).toggleClass("selected",d)},setDisabled:function(c,d){if(d){this.$menu.find("li").eq(c).addClass("disabled").find("a").attr("href","#").attr("tabindex",-1)}else{this.$menu.find("li").eq(c).removeClass("disabled").find("a").removeAttr("href").attr("tabindex",0)}},isDisabled:function(){return this.$element.is(":disabled")},checkDisabled:function(){var c=this;if(this.isDisabled()){this.$button.addClass("disabled").attr("tabindex",-1)}else{if(this.$button.hasClass("disabled")){this.$button.removeClass("disabled")}if(this.$button.attr("tabindex")==-1){if(!this.$element.data("tabindex")){this.$button.removeAttr("tabindex")}}}this.$button.click(function(){return !c.isDisabled()})},tabIndex:function(){if(this.$element.is("[tabindex]")){this.$element.data("tabindex",this.$element.attr("tabindex"));this.$button.attr("tabindex",this.$element.data("tabindex"))}},clickListener:function(){var c=this;b("body").on("touchstart.dropdown",".dropdown-menu",function(d){d.stopPropagation()});this.$newElement.on("click",function(){c.setSize();if(!c.options.liveSearch&&!c.multiple){setTimeout(function(){c.$menu.find(".selected a").focus()},10)}});this.$menu.on("click","li a",function(k){var g=b(this).parent().index(),j=c.$element.val(),f=c.$element.prop("selectedIndex");if(c.multiple){k.stopPropagation()}k.preventDefault();if(!c.isDisabled()&&!b(this).parent().hasClass("disabled")){var d=c.$element.find("option");var i=d.eq(g);if(!c.multiple){d.prop("selected",false);i.prop("selected",true)}else{var h=i.prop("selected");i.prop("selected",!h)}if(!c.multiple){c.$button.focus()}else{if(c.options.liveSearch){c.$searchbox.focus()}}if((j!=c.$element.val()&&c.multiple)||(f!=c.$element.prop("selectedIndex")&&!c.multiple)){c.$element.change()}}});this.$menu.on("click","li.disabled a, li dt, li .div-contain, .popover-title, .popover-title :not(.close)",function(d){if(d.target==this){d.preventDefault();d.stopPropagation();if(!c.options.liveSearch){c.$button.focus()}else{c.$searchbox.focus()}}});this.$menu.on("click",".popover-title .close",function(){c.$button.focus()});this.$searchbox.on("click",function(d){d.stopPropagation()});this.$element.change(function(){c.render()})},liveSearchListener:function(){var d=this,c=b('
    • ');this.$newElement.on("click.dropdown.data-api",function(){d.$menu.find(".active").removeClass("active");if(!!d.$searchbox.val()){d.$searchbox.val("");d.$menu.find("li").show();if(!!c.parent().length){c.remove()}}if(!d.multiple){d.$menu.find(".selected").addClass("active")}setTimeout(function(){d.$searchbox.focus()},10)});this.$searchbox.on("input propertychange",function(){if(d.$searchbox.val()){d.$menu.find("li").show().not(":icontains("+d.$searchbox.val()+")").hide();if(!d.$menu.find("li").filter(":visible:not(.no-results)").length){if(!!c.parent().length){c.remove()}c.html('No results match "'+d.$searchbox.val()+'"').show();d.$menu.find("li").last().after(c)}else{if(!!c.parent().length){c.remove()}}}else{d.$menu.find("li").show();if(!!c.parent().length){c.remove()}}d.$menu.find("li.active").removeClass("active");d.$menu.find("li").filter(":visible:not(.divider)").eq(0).addClass("active").find("a").focus();b(this).focus()});this.$menu.on("mouseenter","a",function(f){d.$menu.find(".active").removeClass("active");b(f.currentTarget).parent().not(".disabled").addClass("active")});this.$menu.on("mouseleave","a",function(){d.$menu.find(".active").removeClass("active")})},val:function(c){if(c!==undefined){this.$element.val(c);this.$element.change();return this.$element}else{return this.$element.val()}},selectAll:function(){this.$element.find("option").prop("selected",true).attr("selected","selected");this.render()},deselectAll:function(){this.$element.find("option").prop("selected",false).removeAttr("selected");this.render()},keydown:function(p){var q,o,i,n,k,j,r,f,h,m,d,s,g={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"};q=b(this);i=q.parent();if(q.is("input")){i=q.parent().parent()}m=i.data("this");if(m.options.liveSearch){i=q.parent().parent()}if(m.options.container){i=m.$menu}o=b("[role=menu] li:not(.divider) a",i);s=m.$menu.parent().hasClass("open");if(m.options.liveSearch){if(/(^9$|27)/.test(p.keyCode)&&s&&m.$menu.find(".active").length===0){p.preventDefault();m.$menu.parent().removeClass("open");m.$button.focus()}o=b("[role=menu] li:not(.divider):visible",i);if(!q.val()&&!/(38|40)/.test(p.keyCode)){if(o.filter(".active").length===0){o=m.$newElement.find("li").filter(":icontains("+g[p.keyCode]+")")}}}if(!o.length){return}if(/(38|40)/.test(p.keyCode)){if(!s){m.$menu.parent().addClass("open")}n=o.index(o.filter(":focus"));j=o.parent(":not(.disabled):visible").first().index();r=o.parent(":not(.disabled):visible").last().index();k=o.eq(n).parent().nextAll(":not(.disabled):visible").eq(0).index();f=o.eq(n).parent().prevAll(":not(.disabled):visible").eq(0).index();h=o.eq(k).parent().prevAll(":not(.disabled):visible").eq(0).index();if(m.options.liveSearch){o.each(function(e){if(b(this).is(":not(.disabled)")){b(this).data("index",e)}});n=o.index(o.filter(".active"));j=o.filter(":not(.disabled):visible").first().data("index");r=o.filter(":not(.disabled):visible").last().data("index");k=o.eq(n).nextAll(":not(.disabled):visible").eq(0).data("index");f=o.eq(n).prevAll(":not(.disabled):visible").eq(0).data("index");h=o.eq(k).prevAll(":not(.disabled):visible").eq(0).data("index")}d=q.data("prevIndex");if(p.keyCode==38){if(m.options.liveSearch){n-=1}if(n!=h&&n>f){n=f}if(nr){n=r}if(n==d){n=j}}q.data("prevIndex",n);if(!m.options.liveSearch){o.eq(n).focus()}else{p.preventDefault();if(!q.is(".dropdown-toggle")){o.removeClass("active");o.eq(n).addClass("active").find("a").focus();q.focus()}}}else{if(!q.is("input")){var c=[],l,t;o.each(function(){if(b(this).parent().is(":not(.disabled)")){if(b.trim(b(this).text().toLowerCase()).substring(0,1)==g[p.keyCode]){c.push(b(this).parent().index())}}});l=b(document).data("keycount");l++;b(document).data("keycount",l);t=b.trim(b(":focus").text().toLowerCase()).substring(0,1);if(t!=g[p.keyCode]){l=1;b(document).data("keycount",l)}else{if(l>=c.length){b(document).data("keycount",0);if(l>c.length){l=1}}}o.eq(c[l-1]).focus()}}if(/(13|32|^9$)/.test(p.keyCode)&&s){if(!/(32)/.test(p.keyCode)){p.preventDefault()}if(!m.options.liveSearch){b(":focus").click()}else{if(!/(32)/.test(p.keyCode)){m.$menu.find(".active a").click();q.focus()}}b(document).data("keycount",0)}if((/(^9$|27)/.test(p.keyCode)&&s&&(m.multiple||m.options.liveSearch))||(/(27)/.test(p.keyCode)&&!s)){m.$menu.parent().removeClass("open");m.$button.focus()}},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},destroy:function(){this.$newElement.remove();this.$element.remove()}};b.fn.selectpicker=function(e,f){var c=arguments;var g;var d=this.each(function(){if(b(this).is("select")){var m=b(this),l=m.data("selectpicker"),h=typeof e=="object"&&e;if(!l){m.data("selectpicker",(l=new a(this,h,f)))}else{if(h){for(var j in h){l.options[j]=h[j]}}}if(typeof e=="string"){var k=e;if(l[k] instanceof Function){[].shift.apply(c);g=l[k].apply(l,c)}else{g=l.options[k]}}}});if(g!==undefined){return g}else{return d}};b.fn.selectpicker.defaults={style:"btn-default",size:"auto",title:null,selectedTextFormat:"values",noneSelectedText:"Nothing selected",countSelectedText:"{0} of {1} selected",width:false,container:false,hideDisabled:false,showSubtext:false,showIcon:true,showContent:true,dropupAuto:true,header:false,liveSearch:false,multipleSeparator:", ",iconBase:"glyphicon",tickIcon:"glyphicon-ok"};b(document).data("keycount",0).on("keydown",".bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bootstrap-select-searchbox input",a.prototype.keydown).on("focusin.modal",".bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bootstrap-select-searchbox input",function(c){c.stopPropagation()})}(window.jQuery); \ No newline at end of file diff --git a/app/assets/javascripts/admin/libs/bootstrap-select2/select2-spinner.gif b/app/assets/javascripts/admin/libs/bootstrap-select2/select2-spinner.gif deleted file mode 100644 index 5b33f7e54f4e55b6b8774d86d96895db9af044b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1849 zcma*odr(tX9tZI2z31lM+(&YVk%mZ}5P~KlG2s=WSbGzm0!x7^P##Mnh7t-jP!X0Q zk_SQ}Po-L1tlDK;6l?(>v)e5ZBQx4|Y-Q?nr@Px3?9h(3ZWr3^tj=`TP57gKr87N$ zp2wWee1GRRCwo_xahnw)5cxNPJbCg2L6DV|6`#+yw6v6!mDS$f9-JvFD^n;GQ&UrZ zzh5jCkByB101O60U0q#p_1BM>Cv-vP?&s4@g_((4_1L=L$(a91)0=J91Gas#R{McE znYG^9*0A5YZ>#;~+Wkn(W5B0^yELIYLP!K}mB~<)AM@1&nqekynuaEGqPrzoH|KodRXJy)%+w_fu3nE5>@Bd_b zqC$EQ;{c`T&?EsNO|igL9gC7Ygxv?aQUEXMq?~>wg{EyW;VcJ37CUF#HjrT=KQO_* zS>M9yydXk18D(+QDJ1>r);Lav_uYKp$T?4vr{Q$lTo&pKv^?(>L-)G2*lwH!Ah7k? z7oH<8h-(KTKt5V6$8gF)C7Io&P5=SjTh)=zV=E2EUhQZP##L8S{d%UK>>+y82>+FV+#^BzW7u3F)Bb>=lYQ%%j`F>ASe zo*cw@V#u6T`A2He;70mR(V&iV&-7{qP~=SRf&jm9-T{*ZeZ}$rd0#6c&fLG^xJcf5 z+p<`wJYgW+_s*V{uI$nMB;%8`S_3>PfGOj3Rq}@Cx^+j?rk92fANSFDBYnOqQ>Vdj z)(|$AhP4t&Lb=Gvo2#3Gl%9<=Gv`Mz?Po@P4iLF!x}GUWJICDlFk-hS^Whyh7x~VH z@0vD1>HYD4&e+~yzS*-sFR{9`{QEEZO1zg7>R&7cHts-6j!xHVdA8eI+ZlVzd%`es zJT@$#GX(gvCJ1oJN%yLBK}{V=V;seo;!w|Yte!W1%5qLNFWqvZW>h&IiH+oPT=b@E zPhGzv5=(Un*X>v`>%8h_nj^NdYcE6NHS_ifkCV$*D)Tqrbu`s;<=t<4 zAHNqNV?6(g<1PY-w@#I-WYFViz?9TrkMr)u0g`O`u|>T;k|2sV*YF^punvT;$SuTy{j3Gv)yqD!R_CF>yR)MzmmYS5v+~R zXAdD%ng9?df;wd8GxR#%3O+gz};Vo;)sK%Bj-q>Oq%R7JU-KD?vYu>#2UjaDo z&8$>5xW~?KPD_#XFToU1hIb*VOMidUr6iYiO0N|i-7s`T8!cFT`rN!^1Pt78J93i6 z5HI1wIM$94m{3SLDvISDe6$ZG1;eq_D9RTaaC>=cO{@Bs>$IlPCPJJ$h$)-3vzNUQ6OsN#_zWxey!_9%hxwH2_dEJi=yY|1c7nDm2_Lm!Cof8-R_+9UkS zcBE(o47yE)oMR(Q=dp1a2wTX5KvvGyLqlWTa7V&!A*|w|)ax~1_~aJ0=_Lilg*0iQk7#ZD EAHN$8j{pDw diff --git a/app/assets/javascripts/admin/libs/bootstrap-select2/select2.css b/app/assets/javascripts/admin/libs/bootstrap-select2/select2.css deleted file mode 100644 index 6bad4dc21..000000000 --- a/app/assets/javascripts/admin/libs/bootstrap-select2/select2.css +++ /dev/null @@ -1,589 +0,0 @@ -/* -Version: 3.4.3 Timestamp: Tue Sep 17 06:47:14 PDT 2013 -*/ -.select2-container { - margin: 0; - position: relative; - display: inline-block; - /* inline-block for ie7 */ - zoom: 1; - *display: inline; - vertical-align: middle; -} - -.select2-container, -.select2-drop, -.select2-search, -.select2-search input { - /* - Force border-box so that % widths fit the parent - container without overlap because of margin/padding. - - More Info : http://www.quirksmode.org/css/box.html - */ - -webkit-box-sizing: border-box; /* webkit */ - -moz-box-sizing: border-box; /* firefox */ - box-sizing: border-box; /* css3 */ -} - -.select2-container .select2-choice { - display: block; - height: 26px; - padding: 0 0 0 8px; - overflow: hidden; - position: relative; - - border: 1px solid #aaa; - white-space: nowrap; - line-height: 26px; - color: #444; - text-decoration: none; - - border-radius: 4px; - - background-clip: padding-box; - - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - background-color: #fff; -} - -.select2-container.select2-drop-above .select2-choice { - border-bottom-color: #aaa; - - border-radius: 0 0 4px 4px; - -} - -.select2-container.select2-allowclear .select2-choice .select2-chosen { - margin-right: 42px; -} - -.select2-container .select2-choice > .select2-chosen { - margin-right: 26px; - display: block; - overflow: hidden; - - white-space: nowrap; - - text-overflow: ellipsis; -} - -.select2-container .select2-choice abbr { - display: none; - width: 12px; - height: 12px; - position: absolute; - right: 24px; - top: 8px; - - font-size: 1px; - text-decoration: none; - - border: 0; - background: url('select2.png') right top no-repeat; - cursor: pointer; - outline: 0; -} - -.select2-container.select2-allowclear .select2-choice abbr { - display: inline-block; -} - -.select2-container .select2-choice abbr:hover { - background-position: right -11px; - cursor: pointer; -} - -.select2-drop-mask { - border: 0; - margin: 0; - padding: 0; - position: fixed; - left: 0; - top: 0; - min-height: 100%; - min-width: 100%; - height: auto; - width: auto; - opacity: 0; - z-index: 9998; - /* styles required for IE to work */ - background-color: #fff; - filter: alpha(opacity=0); -} - -.select2-drop { - width: 100%; - margin-top: -1px; - position: absolute; - z-index: 9999; - top: 100%; - - background: #fff; - color: #000; - border: 1px solid #aaa; - border-top: 0; - - border-radius: 0 0 4px 4px; - - -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15); - box-shadow: 0 4px 5px rgba(0, 0, 0, .15); -} - -.select2-drop-auto-width { - border-top: 1px solid #aaa; - width: auto; -} - -.select2-drop-auto-width .select2-search { - padding-top: 4px; -} - -.select2-drop.select2-drop-above { - margin-top: 1px; - border-top: 1px solid #aaa; - border-bottom: 0; - - border-radius: 4px 4px 0 0; - - -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); - box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); -} - -.select2-drop-active { - border: 1px solid #5897fb; - border-top: none; -} - -.select2-drop.select2-drop-above.select2-drop-active { - border-top: 1px solid #5897fb; -} - -.select2-container .select2-choice .select2-arrow { - display: inline-block; - width: 18px; - height: 100%; - position: absolute; - right: 0; - top: 0; - - border-left: 1px solid #aaa; - border-radius: 0 4px 4px 0; - - background-clip: padding-box; - - background: #ccc; -} - -.select2-container .select2-choice .select2-arrow b { - display: block; - width: 100%; - height: 100%; - background: url('select2.png') no-repeat 0 1px; -} - -.select2-search { - display: inline-block; - width: 100%; - min-height: 26px; - margin: 0; - padding-left: 4px; - padding-right: 4px; - position: relative; - z-index: 10000; - white-space: nowrap; -} - -.select2-search input { - width: 100%; - height: auto !important; - min-height: 26px; - padding: 4px 20px 4px 5px; - margin: 0; - - outline: 0; - font-family: sans-serif; - font-size: 1em; - - border: 1px solid #aaa; - border-radius: 0; - - -webkit-box-shadow: none; - box-shadow: none; - - background: #fff url('select2.png') no-repeat 100% -22px; - background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); - background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); - background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); - background: url('select2.png') no-repeat 100% -22px, linear-gradient(top, #fff 85%, #eee 99%); -} - -.select2-drop.select2-drop-above .select2-search input { - margin-top: 4px; -} - -.select2-search input.select2-active { - background: #fff url('select2-spinner.gif') no-repeat 100%; - background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); - background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); - background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); - background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(top, #fff 85%, #eee 99%); -} - -.select2-container-active .select2-choice, -.select2-container-active .select2-choices { - border: 1px solid #5897fb; - outline: none; - - -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); - box-shadow: 0 0 5px rgba(0, 0, 0, .3); -} - -.select2-dropdown-open .select2-choice { - border-bottom-color: transparent; - -webkit-box-shadow: 0 1px 0 #fff inset; - box-shadow: 0 1px 0 #fff inset; - - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - - background-color: #eee; - background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee)); - background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%); - background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); - background-image: linear-gradient(top, #fff 0%, #eee 50%); -} - -.select2-dropdown-open.select2-drop-above .select2-choice, -.select2-dropdown-open.select2-drop-above .select2-choices { - border: 1px solid #5897fb; - border-top-color: transparent; - - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee)); - background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%); - background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); - background-image: linear-gradient(bottom, #fff 0%, #eee 50%); -} - -.select2-dropdown-open .select2-choice .select2-arrow { - background: transparent; - border-left: none; - filter: none; -} -.select2-dropdown-open .select2-choice .select2-arrow b { - background-position: -18px 1px; -} - -/* results */ -.select2-results { - max-height: 200px; - padding: 0 0 0 4px; - margin: 4px 4px 4px 0; - position: relative; - overflow-x: hidden; - overflow-y: auto; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -.select2-results ul.select2-result-sub { - margin: 0; - padding-left: 0; -} - -.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px } -.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px } -.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px } -.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px } -.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px } -.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px } -.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px } - -.select2-results li { - list-style: none; - display: list-item; - background-image: none; -} - -.select2-results li.select2-result-with-children > .select2-result-label { - font-weight: bold; -} - -.select2-results .select2-result-label { - padding: 3px 7px 4px; - margin: 0; - cursor: pointer; - - min-height: 1em; - - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.select2-results .select2-highlighted { - background: #3875d7; - color: #fff; -} - -.select2-results li em { - background: #feffde; - font-style: normal; -} - -.select2-results .select2-highlighted em { - background: transparent; -} - -.select2-results .select2-highlighted ul { - background: #fff; - color: #000; -} - - -.select2-results .select2-no-results, -.select2-results .select2-searching, -.select2-results .select2-selection-limit { - background: #f4f4f4; - display: list-item; -} - -/* -disabled look for disabled choices in the results dropdown -*/ -.select2-results .select2-disabled.select2-highlighted { - color: #666; - background: #f4f4f4; - display: list-item; - cursor: default; -} -.select2-results .select2-disabled { - background: #f4f4f4; - display: list-item; - cursor: default; -} - -.select2-results .select2-selected { - display: none; -} - -.select2-more-results.select2-active { - background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%; -} - -.select2-more-results { - background: #f4f4f4; - display: list-item; -} - -/* disabled styles */ - -.select2-container.select2-container-disabled .select2-choice { - background-color: #f4f4f4; - background-image: none; - border: 1px solid #ddd; - cursor: default; -} - -.select2-container.select2-container-disabled .select2-choice .select2-arrow { - background-color: #f4f4f4; - background-image: none; - border-left: 0; -} - -.select2-container.select2-container-disabled .select2-choice abbr { - display: none; -} - - -/* multiselect */ - -.select2-container-multi .select2-choices { - height: auto !important; - height: 1%; - margin: 0; - padding: 0; - position: relative; - - border: 1px solid #aaa; - cursor: text; - overflow: hidden; - - background-color: #fff; - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff)); - background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%); - background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%); - background-image: linear-gradient(top, #eee 1%, #fff 15%); -} - -.select2-locked { - padding: 3px 5px 3px 5px !important; -} - -.select2-container-multi .select2-choices { - min-height: 26px; -} - -.select2-container-multi.select2-container-active .select2-choices { - border: 1px solid #5897fb; - outline: none; - - -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); - box-shadow: 0 0 5px rgba(0, 0, 0, .3); -} -.select2-container-multi .select2-choices li { - float: left; - list-style: none; -} -.select2-container-multi .select2-choices .select2-search-field { - margin: 0; - padding: 0; - white-space: nowrap; -} - -.select2-container-multi .select2-choices .select2-search-field input { - padding: 5px; - margin: 1px 0; - - font-family: sans-serif; - font-size: 100%; - color: #666; - outline: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - background: transparent !important; -} - -.select2-container-multi .select2-choices .select2-search-field input.select2-active { - background: #fff url('select2-spinner.gif') no-repeat 100% !important; -} - -.select2-default { - color: #999 !important; -} - -.select2-container-multi .select2-choices .select2-search-choice { - padding: 3px 5px 3px 18px; - margin: 3px 0 3px 5px; - position: relative; - - line-height: 13px; - color: #333; - cursor: default; - border: 1px solid #aaaaaa; - - border-radius: 3px; - - -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); - box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); - - background-clip: padding-box; - - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - background-color: #e4e4e4; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0); - background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee)); - background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); - background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); - background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); -} -.select2-container-multi .select2-choices .select2-search-choice .select2-chosen { - cursor: default; -} -.select2-container-multi .select2-choices .select2-search-choice-focus { - background: #d4d4d4; -} - -.select2-search-choice-close { - display: block; - width: 12px; - height: 13px; - position: absolute; - right: 3px; - top: 4px; - - font-size: 1px; - outline: none; - background: url('select2.png') right top no-repeat; -} - -.select2-container-multi .select2-search-choice-close { - left: 3px; -} - -.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover { - background-position: right -11px; -} -.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close { - background-position: right -11px; -} - -/* disabled styles */ -.select2-container-multi.select2-container-disabled .select2-choices { - background-color: #f4f4f4; - background-image: none; - border: 1px solid #ddd; - cursor: default; -} - -.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice { - padding: 3px 5px 3px 5px; - border: 1px solid #ddd; - background-image: none; - background-color: #f4f4f4; -} - -.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none; - background: none; -} -/* end multiselect */ - - -.select2-result-selectable .select2-match, -.select2-result-unselectable .select2-match { - text-decoration: underline; -} - -.select2-offscreen, .select2-offscreen:focus { - clip: rect(0 0 0 0) !important; - width: 1px !important; - height: 1px !important; - border: 0 !important; - margin: 0 !important; - padding: 0 !important; - overflow: hidden !important; - position: absolute !important; - outline: 0 !important; - left: 0px !important; - top: 0px !important; -} - -.select2-display-none { - display: none; -} - -.select2-measure-scrollbar { - position: absolute; - top: -10000px; - left: -10000px; - width: 100px; - height: 100px; - overflow: scroll; -} -/* Retina-ize icons */ - - diff --git a/app/assets/javascripts/admin/libs/bootstrap-select2/select2.min.js b/app/assets/javascripts/admin/libs/bootstrap-select2/select2.min.js deleted file mode 100644 index 0910fdfe8..000000000 --- a/app/assets/javascripts/admin/libs/bootstrap-select2/select2.min.js +++ /dev/null @@ -1,22 +0,0 @@ -/* -Copyright 2012 Igor Vaynberg - -Version: 3.4.3 Timestamp: Tue Sep 17 06:47:14 PDT 2013 - -This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU -General Public License version 2 (the "GPL License"). You may choose either license to govern your -use of this software only upon the condition that you accept all of the terms of either the Apache -License or the GPL License. - -You may obtain a copy of the Apache License and the GPL License at: - -http://www.apache.org/licenses/LICENSE-2.0 -http://www.gnu.org/licenses/gpl-2.0.html - -Unless required by applicable law or agreed to in writing, software distributed under the Apache License -or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -either express or implied. See the Apache License and the GPL License for the specific language governing -permissions and limitations under the Apache License and the GPL License. -*/ -!function(a){"undefined"==typeof a.fn.each2&&a.extend(a.fn,{each2:function(b){for(var c=a([0]),d=-1,e=this.length;++dc;c++)e=a.charAt(c),b+=m[e]||e;return b}function o(a,b){for(var c=0,d=b.length;d>c;c+=1)if(q(a,b[c]))return c;return-1}function p(){var b=a(l);b.appendTo("body");var c={width:b.width()-b[0].clientWidth,height:b.height()-b[0].clientHeight};return b.remove(),c}function q(a,c){return a===c?!0:a===b||c===b?!1:null===a||null===c?!1:a.constructor===String?a+""==c+"":c.constructor===String?c+""==a+"":!1}function r(b,c){var d,e,f;if(null===b||b.length<1)return[];for(d=b.split(c),e=0,f=d.length;f>e;e+=1)d[e]=a.trim(d[e]);return d}function s(a){return a.outerWidth(!1)-a.width()}function t(c){var d="keyup-change-value";c.on("keydown",function(){a.data(c,d)===b&&a.data(c,d,c.val())}),c.on("keyup",function(){var e=a.data(c,d);e!==b&&c.val()!==e&&(a.removeData(c,d),c.trigger("keyup-change"))})}function u(c){c.on("mousemove",function(c){var d=i;(d===b||d.x!==c.pageX||d.y!==c.pageY)&&a(c.target).trigger("mousemove-filtered",c)})}function v(a,c,d){d=d||b;var e;return function(){var b=arguments;window.clearTimeout(e),e=window.setTimeout(function(){c.apply(d,b)},a)}}function w(a){var c,b=!1;return function(){return b===!1&&(c=a(),b=!0),c}}function x(a,b){var c=v(a,function(a){b.trigger("scroll-debounced",a)});b.on("scroll",function(a){o(a.target,b.get())>=0&&c(a)})}function y(a){a[0]!==document.activeElement&&window.setTimeout(function(){var d,b=a[0],c=a.val().length;a.focus(),a.is(":visible")&&b===document.activeElement&&(b.setSelectionRange?b.setSelectionRange(c,c):b.createTextRange&&(d=b.createTextRange(),d.collapse(!1),d.select()))},0)}function z(b){b=a(b)[0];var c=0,d=0;if("selectionStart"in b)c=b.selectionStart,d=b.selectionEnd-c;else if("selection"in document){b.focus();var e=document.selection.createRange();d=document.selection.createRange().text.length,e.moveStart("character",-b.value.length),c=e.text.length-d}return{offset:c,length:d}}function A(a){a.preventDefault(),a.stopPropagation()}function B(a){a.preventDefault(),a.stopImmediatePropagation()}function C(b){if(!h){var c=b[0].currentStyle||window.getComputedStyle(b[0],null);h=a(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:c.fontSize,fontFamily:c.fontFamily,fontStyle:c.fontStyle,fontWeight:c.fontWeight,letterSpacing:c.letterSpacing,textTransform:c.textTransform,whiteSpace:"nowrap"}),h.attr("class","select2-sizer"),a("body").append(h)}return h.text(b.val()),h.width()}function D(b,c,d){var e,g,f=[];e=b.attr("class"),e&&(e=""+e,a(e.split(" ")).each2(function(){0===this.indexOf("select2-")&&f.push(this)})),e=c.attr("class"),e&&(e=""+e,a(e.split(" ")).each2(function(){0!==this.indexOf("select2-")&&(g=d(this),g&&f.push(this))})),b.attr("class",f.join(" "))}function E(a,b,c,d){var e=n(a.toUpperCase()).indexOf(n(b.toUpperCase())),f=b.length;return 0>e?(c.push(d(a)),void 0):(c.push(d(a.substring(0,e))),c.push(""),c.push(d(a.substring(e,e+f))),c.push(""),c.push(d(a.substring(e+f,a.length))),void 0)}function F(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})}function G(c){var d,e=null,f=c.quietMillis||100,g=c.url,h=this;return function(i){window.clearTimeout(d),d=window.setTimeout(function(){var d=c.data,f=g,j=c.transport||a.fn.select2.ajaxDefaults.transport,k={type:c.type||"GET",cache:c.cache||!1,jsonpCallback:c.jsonpCallback||b,dataType:c.dataType||"json"},l=a.extend({},a.fn.select2.ajaxDefaults.params,k);d=d?d.call(h,i.term,i.page,i.context):null,f="function"==typeof f?f.call(h,i.term,i.page,i.context):f,e&&e.abort(),c.params&&(a.isFunction(c.params)?a.extend(l,c.params.call(h)):a.extend(l,c.params)),a.extend(l,{url:f,dataType:c.dataType,data:d,success:function(a){var b=c.results(a,i.page);i.callback(b)}}),e=j.call(h,l)},f)}}function H(b){var d,e,c=b,f=function(a){return""+a.text};a.isArray(c)&&(e=c,c={results:e}),a.isFunction(c)===!1&&(e=c,c=function(){return e});var g=c();return g.text&&(f=g.text,a.isFunction(f)||(d=g.text,f=function(a){return a[d]})),function(b){var g,d=b.term,e={results:[]};return""===d?(b.callback(c()),void 0):(g=function(c,e){var h,i;if(c=c[0],c.children){h={};for(i in c)c.hasOwnProperty(i)&&(h[i]=c[i]);h.children=[],a(c.children).each2(function(a,b){g(b,h.children)}),(h.children.length||b.matcher(d,f(h),c))&&e.push(h)}else b.matcher(d,f(c),c)&&e.push(c)},a(c().results).each2(function(a,b){g(b,e.results)}),b.callback(e),void 0)}}function I(c){var d=a.isFunction(c);return function(e){var f=e.term,g={results:[]};a(d?c():c).each(function(){var a=this.text!==b,c=a?this.text:this;(""===f||e.matcher(f,c))&&g.results.push(a?this:{id:this,text:this})}),e.callback(g)}}function J(b,c){if(a.isFunction(b))return!0;if(!b)return!1;throw new Error(c+" must be a function or a falsy value")}function K(b){return a.isFunction(b)?b():b}function L(b){var c=0;return a.each(b,function(a,b){b.children?c+=L(b.children):c++}),c}function M(a,c,d,e){var h,i,j,k,l,f=a,g=!1;if(!e.createSearchChoice||!e.tokenSeparators||e.tokenSeparators.length<1)return b;for(;;){for(i=-1,j=0,k=e.tokenSeparators.length;k>j&&(l=e.tokenSeparators[j],i=a.indexOf(l),!(i>=0));j++);if(0>i)break;if(h=a.substring(0,i),a=a.substring(i+l.length),h.length>0&&(h=e.createSearchChoice.call(this,h,c),h!==b&&null!==h&&e.id(h)!==b&&null!==e.id(h))){for(g=!1,j=0,k=c.length;k>j;j++)if(q(e.id(h),e.id(c[j]))){g=!0;break}g||d(h)}}return f!==a?a:void 0}function N(b,c){var d=function(){};return d.prototype=new b,d.prototype.constructor=d,d.prototype.parent=b.prototype,d.prototype=a.extend(d.prototype,c),d}if(window.Select2===b){var c,d,e,f,g,h,j,k,i={x:0,y:0},c={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,isArrow:function(a){switch(a=a.which?a.which:a){case c.LEFT:case c.RIGHT:case c.UP:case c.DOWN:return!0}return!1},isControl:function(a){var b=a.which;switch(b){case c.SHIFT:case c.CTRL:case c.ALT:return!0}return a.metaKey?!0:!1},isFunctionKey:function(a){return a=a.which?a.which:a,a>=112&&123>=a}},l="
      ",m={"\u24b6":"A","\uff21":"A","\xc0":"A","\xc1":"A","\xc2":"A","\u1ea6":"A","\u1ea4":"A","\u1eaa":"A","\u1ea8":"A","\xc3":"A","\u0100":"A","\u0102":"A","\u1eb0":"A","\u1eae":"A","\u1eb4":"A","\u1eb2":"A","\u0226":"A","\u01e0":"A","\xc4":"A","\u01de":"A","\u1ea2":"A","\xc5":"A","\u01fa":"A","\u01cd":"A","\u0200":"A","\u0202":"A","\u1ea0":"A","\u1eac":"A","\u1eb6":"A","\u1e00":"A","\u0104":"A","\u023a":"A","\u2c6f":"A","\ua732":"AA","\xc6":"AE","\u01fc":"AE","\u01e2":"AE","\ua734":"AO","\ua736":"AU","\ua738":"AV","\ua73a":"AV","\ua73c":"AY","\u24b7":"B","\uff22":"B","\u1e02":"B","\u1e04":"B","\u1e06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24b8":"C","\uff23":"C","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\xc7":"C","\u1e08":"C","\u0187":"C","\u023b":"C","\ua73e":"C","\u24b9":"D","\uff24":"D","\u1e0a":"D","\u010e":"D","\u1e0c":"D","\u1e10":"D","\u1e12":"D","\u1e0e":"D","\u0110":"D","\u018b":"D","\u018a":"D","\u0189":"D","\ua779":"D","\u01f1":"DZ","\u01c4":"DZ","\u01f2":"Dz","\u01c5":"Dz","\u24ba":"E","\uff25":"E","\xc8":"E","\xc9":"E","\xca":"E","\u1ec0":"E","\u1ebe":"E","\u1ec4":"E","\u1ec2":"E","\u1ebc":"E","\u0112":"E","\u1e14":"E","\u1e16":"E","\u0114":"E","\u0116":"E","\xcb":"E","\u1eba":"E","\u011a":"E","\u0204":"E","\u0206":"E","\u1eb8":"E","\u1ec6":"E","\u0228":"E","\u1e1c":"E","\u0118":"E","\u1e18":"E","\u1e1a":"E","\u0190":"E","\u018e":"E","\u24bb":"F","\uff26":"F","\u1e1e":"F","\u0191":"F","\ua77b":"F","\u24bc":"G","\uff27":"G","\u01f4":"G","\u011c":"G","\u1e20":"G","\u011e":"G","\u0120":"G","\u01e6":"G","\u0122":"G","\u01e4":"G","\u0193":"G","\ua7a0":"G","\ua77d":"G","\ua77e":"G","\u24bd":"H","\uff28":"H","\u0124":"H","\u1e22":"H","\u1e26":"H","\u021e":"H","\u1e24":"H","\u1e28":"H","\u1e2a":"H","\u0126":"H","\u2c67":"H","\u2c75":"H","\ua78d":"H","\u24be":"I","\uff29":"I","\xcc":"I","\xcd":"I","\xce":"I","\u0128":"I","\u012a":"I","\u012c":"I","\u0130":"I","\xcf":"I","\u1e2e":"I","\u1ec8":"I","\u01cf":"I","\u0208":"I","\u020a":"I","\u1eca":"I","\u012e":"I","\u1e2c":"I","\u0197":"I","\u24bf":"J","\uff2a":"J","\u0134":"J","\u0248":"J","\u24c0":"K","\uff2b":"K","\u1e30":"K","\u01e8":"K","\u1e32":"K","\u0136":"K","\u1e34":"K","\u0198":"K","\u2c69":"K","\ua740":"K","\ua742":"K","\ua744":"K","\ua7a2":"K","\u24c1":"L","\uff2c":"L","\u013f":"L","\u0139":"L","\u013d":"L","\u1e36":"L","\u1e38":"L","\u013b":"L","\u1e3c":"L","\u1e3a":"L","\u0141":"L","\u023d":"L","\u2c62":"L","\u2c60":"L","\ua748":"L","\ua746":"L","\ua780":"L","\u01c7":"LJ","\u01c8":"Lj","\u24c2":"M","\uff2d":"M","\u1e3e":"M","\u1e40":"M","\u1e42":"M","\u2c6e":"M","\u019c":"M","\u24c3":"N","\uff2e":"N","\u01f8":"N","\u0143":"N","\xd1":"N","\u1e44":"N","\u0147":"N","\u1e46":"N","\u0145":"N","\u1e4a":"N","\u1e48":"N","\u0220":"N","\u019d":"N","\ua790":"N","\ua7a4":"N","\u01ca":"NJ","\u01cb":"Nj","\u24c4":"O","\uff2f":"O","\xd2":"O","\xd3":"O","\xd4":"O","\u1ed2":"O","\u1ed0":"O","\u1ed6":"O","\u1ed4":"O","\xd5":"O","\u1e4c":"O","\u022c":"O","\u1e4e":"O","\u014c":"O","\u1e50":"O","\u1e52":"O","\u014e":"O","\u022e":"O","\u0230":"O","\xd6":"O","\u022a":"O","\u1ece":"O","\u0150":"O","\u01d1":"O","\u020c":"O","\u020e":"O","\u01a0":"O","\u1edc":"O","\u1eda":"O","\u1ee0":"O","\u1ede":"O","\u1ee2":"O","\u1ecc":"O","\u1ed8":"O","\u01ea":"O","\u01ec":"O","\xd8":"O","\u01fe":"O","\u0186":"O","\u019f":"O","\ua74a":"O","\ua74c":"O","\u01a2":"OI","\ua74e":"OO","\u0222":"OU","\u24c5":"P","\uff30":"P","\u1e54":"P","\u1e56":"P","\u01a4":"P","\u2c63":"P","\ua750":"P","\ua752":"P","\ua754":"P","\u24c6":"Q","\uff31":"Q","\ua756":"Q","\ua758":"Q","\u024a":"Q","\u24c7":"R","\uff32":"R","\u0154":"R","\u1e58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1e5a":"R","\u1e5c":"R","\u0156":"R","\u1e5e":"R","\u024c":"R","\u2c64":"R","\ua75a":"R","\ua7a6":"R","\ua782":"R","\u24c8":"S","\uff33":"S","\u1e9e":"S","\u015a":"S","\u1e64":"S","\u015c":"S","\u1e60":"S","\u0160":"S","\u1e66":"S","\u1e62":"S","\u1e68":"S","\u0218":"S","\u015e":"S","\u2c7e":"S","\ua7a8":"S","\ua784":"S","\u24c9":"T","\uff34":"T","\u1e6a":"T","\u0164":"T","\u1e6c":"T","\u021a":"T","\u0162":"T","\u1e70":"T","\u1e6e":"T","\u0166":"T","\u01ac":"T","\u01ae":"T","\u023e":"T","\ua786":"T","\ua728":"TZ","\u24ca":"U","\uff35":"U","\xd9":"U","\xda":"U","\xdb":"U","\u0168":"U","\u1e78":"U","\u016a":"U","\u1e7a":"U","\u016c":"U","\xdc":"U","\u01db":"U","\u01d7":"U","\u01d5":"U","\u01d9":"U","\u1ee6":"U","\u016e":"U","\u0170":"U","\u01d3":"U","\u0214":"U","\u0216":"U","\u01af":"U","\u1eea":"U","\u1ee8":"U","\u1eee":"U","\u1eec":"U","\u1ef0":"U","\u1ee4":"U","\u1e72":"U","\u0172":"U","\u1e76":"U","\u1e74":"U","\u0244":"U","\u24cb":"V","\uff36":"V","\u1e7c":"V","\u1e7e":"V","\u01b2":"V","\ua75e":"V","\u0245":"V","\ua760":"VY","\u24cc":"W","\uff37":"W","\u1e80":"W","\u1e82":"W","\u0174":"W","\u1e86":"W","\u1e84":"W","\u1e88":"W","\u2c72":"W","\u24cd":"X","\uff38":"X","\u1e8a":"X","\u1e8c":"X","\u24ce":"Y","\uff39":"Y","\u1ef2":"Y","\xdd":"Y","\u0176":"Y","\u1ef8":"Y","\u0232":"Y","\u1e8e":"Y","\u0178":"Y","\u1ef6":"Y","\u1ef4":"Y","\u01b3":"Y","\u024e":"Y","\u1efe":"Y","\u24cf":"Z","\uff3a":"Z","\u0179":"Z","\u1e90":"Z","\u017b":"Z","\u017d":"Z","\u1e92":"Z","\u1e94":"Z","\u01b5":"Z","\u0224":"Z","\u2c7f":"Z","\u2c6b":"Z","\ua762":"Z","\u24d0":"a","\uff41":"a","\u1e9a":"a","\xe0":"a","\xe1":"a","\xe2":"a","\u1ea7":"a","\u1ea5":"a","\u1eab":"a","\u1ea9":"a","\xe3":"a","\u0101":"a","\u0103":"a","\u1eb1":"a","\u1eaf":"a","\u1eb5":"a","\u1eb3":"a","\u0227":"a","\u01e1":"a","\xe4":"a","\u01df":"a","\u1ea3":"a","\xe5":"a","\u01fb":"a","\u01ce":"a","\u0201":"a","\u0203":"a","\u1ea1":"a","\u1ead":"a","\u1eb7":"a","\u1e01":"a","\u0105":"a","\u2c65":"a","\u0250":"a","\ua733":"aa","\xe6":"ae","\u01fd":"ae","\u01e3":"ae","\ua735":"ao","\ua737":"au","\ua739":"av","\ua73b":"av","\ua73d":"ay","\u24d1":"b","\uff42":"b","\u1e03":"b","\u1e05":"b","\u1e07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24d2":"c","\uff43":"c","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\xe7":"c","\u1e09":"c","\u0188":"c","\u023c":"c","\ua73f":"c","\u2184":"c","\u24d3":"d","\uff44":"d","\u1e0b":"d","\u010f":"d","\u1e0d":"d","\u1e11":"d","\u1e13":"d","\u1e0f":"d","\u0111":"d","\u018c":"d","\u0256":"d","\u0257":"d","\ua77a":"d","\u01f3":"dz","\u01c6":"dz","\u24d4":"e","\uff45":"e","\xe8":"e","\xe9":"e","\xea":"e","\u1ec1":"e","\u1ebf":"e","\u1ec5":"e","\u1ec3":"e","\u1ebd":"e","\u0113":"e","\u1e15":"e","\u1e17":"e","\u0115":"e","\u0117":"e","\xeb":"e","\u1ebb":"e","\u011b":"e","\u0205":"e","\u0207":"e","\u1eb9":"e","\u1ec7":"e","\u0229":"e","\u1e1d":"e","\u0119":"e","\u1e19":"e","\u1e1b":"e","\u0247":"e","\u025b":"e","\u01dd":"e","\u24d5":"f","\uff46":"f","\u1e1f":"f","\u0192":"f","\ua77c":"f","\u24d6":"g","\uff47":"g","\u01f5":"g","\u011d":"g","\u1e21":"g","\u011f":"g","\u0121":"g","\u01e7":"g","\u0123":"g","\u01e5":"g","\u0260":"g","\ua7a1":"g","\u1d79":"g","\ua77f":"g","\u24d7":"h","\uff48":"h","\u0125":"h","\u1e23":"h","\u1e27":"h","\u021f":"h","\u1e25":"h","\u1e29":"h","\u1e2b":"h","\u1e96":"h","\u0127":"h","\u2c68":"h","\u2c76":"h","\u0265":"h","\u0195":"hv","\u24d8":"i","\uff49":"i","\xec":"i","\xed":"i","\xee":"i","\u0129":"i","\u012b":"i","\u012d":"i","\xef":"i","\u1e2f":"i","\u1ec9":"i","\u01d0":"i","\u0209":"i","\u020b":"i","\u1ecb":"i","\u012f":"i","\u1e2d":"i","\u0268":"i","\u0131":"i","\u24d9":"j","\uff4a":"j","\u0135":"j","\u01f0":"j","\u0249":"j","\u24da":"k","\uff4b":"k","\u1e31":"k","\u01e9":"k","\u1e33":"k","\u0137":"k","\u1e35":"k","\u0199":"k","\u2c6a":"k","\ua741":"k","\ua743":"k","\ua745":"k","\ua7a3":"k","\u24db":"l","\uff4c":"l","\u0140":"l","\u013a":"l","\u013e":"l","\u1e37":"l","\u1e39":"l","\u013c":"l","\u1e3d":"l","\u1e3b":"l","\u017f":"l","\u0142":"l","\u019a":"l","\u026b":"l","\u2c61":"l","\ua749":"l","\ua781":"l","\ua747":"l","\u01c9":"lj","\u24dc":"m","\uff4d":"m","\u1e3f":"m","\u1e41":"m","\u1e43":"m","\u0271":"m","\u026f":"m","\u24dd":"n","\uff4e":"n","\u01f9":"n","\u0144":"n","\xf1":"n","\u1e45":"n","\u0148":"n","\u1e47":"n","\u0146":"n","\u1e4b":"n","\u1e49":"n","\u019e":"n","\u0272":"n","\u0149":"n","\ua791":"n","\ua7a5":"n","\u01cc":"nj","\u24de":"o","\uff4f":"o","\xf2":"o","\xf3":"o","\xf4":"o","\u1ed3":"o","\u1ed1":"o","\u1ed7":"o","\u1ed5":"o","\xf5":"o","\u1e4d":"o","\u022d":"o","\u1e4f":"o","\u014d":"o","\u1e51":"o","\u1e53":"o","\u014f":"o","\u022f":"o","\u0231":"o","\xf6":"o","\u022b":"o","\u1ecf":"o","\u0151":"o","\u01d2":"o","\u020d":"o","\u020f":"o","\u01a1":"o","\u1edd":"o","\u1edb":"o","\u1ee1":"o","\u1edf":"o","\u1ee3":"o","\u1ecd":"o","\u1ed9":"o","\u01eb":"o","\u01ed":"o","\xf8":"o","\u01ff":"o","\u0254":"o","\ua74b":"o","\ua74d":"o","\u0275":"o","\u01a3":"oi","\u0223":"ou","\ua74f":"oo","\u24df":"p","\uff50":"p","\u1e55":"p","\u1e57":"p","\u01a5":"p","\u1d7d":"p","\ua751":"p","\ua753":"p","\ua755":"p","\u24e0":"q","\uff51":"q","\u024b":"q","\ua757":"q","\ua759":"q","\u24e1":"r","\uff52":"r","\u0155":"r","\u1e59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1e5b":"r","\u1e5d":"r","\u0157":"r","\u1e5f":"r","\u024d":"r","\u027d":"r","\ua75b":"r","\ua7a7":"r","\ua783":"r","\u24e2":"s","\uff53":"s","\xdf":"s","\u015b":"s","\u1e65":"s","\u015d":"s","\u1e61":"s","\u0161":"s","\u1e67":"s","\u1e63":"s","\u1e69":"s","\u0219":"s","\u015f":"s","\u023f":"s","\ua7a9":"s","\ua785":"s","\u1e9b":"s","\u24e3":"t","\uff54":"t","\u1e6b":"t","\u1e97":"t","\u0165":"t","\u1e6d":"t","\u021b":"t","\u0163":"t","\u1e71":"t","\u1e6f":"t","\u0167":"t","\u01ad":"t","\u0288":"t","\u2c66":"t","\ua787":"t","\ua729":"tz","\u24e4":"u","\uff55":"u","\xf9":"u","\xfa":"u","\xfb":"u","\u0169":"u","\u1e79":"u","\u016b":"u","\u1e7b":"u","\u016d":"u","\xfc":"u","\u01dc":"u","\u01d8":"u","\u01d6":"u","\u01da":"u","\u1ee7":"u","\u016f":"u","\u0171":"u","\u01d4":"u","\u0215":"u","\u0217":"u","\u01b0":"u","\u1eeb":"u","\u1ee9":"u","\u1eef":"u","\u1eed":"u","\u1ef1":"u","\u1ee5":"u","\u1e73":"u","\u0173":"u","\u1e77":"u","\u1e75":"u","\u0289":"u","\u24e5":"v","\uff56":"v","\u1e7d":"v","\u1e7f":"v","\u028b":"v","\ua75f":"v","\u028c":"v","\ua761":"vy","\u24e6":"w","\uff57":"w","\u1e81":"w","\u1e83":"w","\u0175":"w","\u1e87":"w","\u1e85":"w","\u1e98":"w","\u1e89":"w","\u2c73":"w","\u24e7":"x","\uff58":"x","\u1e8b":"x","\u1e8d":"x","\u24e8":"y","\uff59":"y","\u1ef3":"y","\xfd":"y","\u0177":"y","\u1ef9":"y","\u0233":"y","\u1e8f":"y","\xff":"y","\u1ef7":"y","\u1e99":"y","\u1ef5":"y","\u01b4":"y","\u024f":"y","\u1eff":"y","\u24e9":"z","\uff5a":"z","\u017a":"z","\u1e91":"z","\u017c":"z","\u017e":"z","\u1e93":"z","\u1e95":"z","\u01b6":"z","\u0225":"z","\u0240":"z","\u2c6c":"z","\ua763":"z"};j=a(document),g=function(){var a=1;return function(){return a++}}(),j.on("mousemove",function(a){i.x=a.pageX,i.y=a.pageY}),d=N(Object,{bind:function(a){var b=this;return function(){a.apply(b,arguments)}},init:function(c){var d,e,h,i,f=".select2-results";this.opts=c=this.prepareOpts(c),this.id=c.id,c.element.data("select2")!==b&&null!==c.element.data("select2")&&c.element.data("select2").destroy(),this.container=this.createContainer(),this.containerId="s2id_"+(c.element.attr("id")||"autogen"+g()),this.containerSelector="#"+this.containerId.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"),this.container.attr("id",this.containerId),this.body=w(function(){return c.element.closest("body")}),D(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.attr("style",c.element.attr("style")),this.container.css(K(c.containerCss)),this.container.addClass(K(c.containerCssClass)),this.elementTabIndex=this.opts.element.attr("tabindex"),this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container).on("click.select2",A),this.container.data("select2",this),this.dropdown=this.container.find(".select2-drop"),D(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(K(c.dropdownCssClass)),this.dropdown.data("select2",this),this.dropdown.on("click",A),this.results=d=this.container.find(f),this.search=e=this.container.find("input.select2-input"),this.queryCount=0,this.resultsPage=0,this.context=null,this.initContainer(),this.container.on("click",A),u(this.results),this.dropdown.on("mousemove-filtered touchstart touchmove touchend",f,this.bind(this.highlightUnderEvent)),x(80,this.results),this.dropdown.on("scroll-debounced",f,this.bind(this.loadMoreIfNeeded)),a(this.container).on("change",".select2-input",function(a){a.stopPropagation()}),a(this.dropdown).on("change",".select2-input",function(a){a.stopPropagation()}),a.fn.mousewheel&&d.mousewheel(function(a,b,c,e){var f=d.scrollTop();e>0&&0>=f-e?(d.scrollTop(0),A(a)):0>e&&d.get(0).scrollHeight-d.scrollTop()+e<=d.height()&&(d.scrollTop(d.get(0).scrollHeight-d.height()),A(a))}),t(e),e.on("keyup-change input paste",this.bind(this.updateResults)),e.on("focus",function(){e.addClass("select2-focused")}),e.on("blur",function(){e.removeClass("select2-focused")}),this.dropdown.on("mouseup",f,this.bind(function(b){a(b.target).closest(".select2-result-selectable").length>0&&(this.highlightUnderEvent(b),this.selectHighlighted(b))})),this.dropdown.on("click mouseup mousedown",function(a){a.stopPropagation()}),a.isFunction(this.opts.initSelection)&&(this.initSelection(),this.monitorSource()),null!==c.maximumInputLength&&this.search.attr("maxlength",c.maximumInputLength);var h=c.element.prop("disabled");h===b&&(h=!1),this.enable(!h);var i=c.element.prop("readonly");i===b&&(i=!1),this.readonly(i),k=k||p(),this.autofocus=c.element.prop("autofocus"),c.element.prop("autofocus",!1),this.autofocus&&this.focus(),this.nextSearchTerm=b},destroy:function(){var a=this.opts.element,c=a.data("select2");this.close(),this.propertyObserver&&(delete this.propertyObserver,this.propertyObserver=null),c!==b&&(c.container.remove(),c.dropdown.remove(),a.removeClass("select2-offscreen").removeData("select2").off(".select2").prop("autofocus",this.autofocus||!1),this.elementTabIndex?a.attr({tabindex:this.elementTabIndex}):a.removeAttr("tabindex"),a.show())},optionToData:function(a){return a.is("option")?{id:a.prop("value"),text:a.text(),element:a.get(),css:a.attr("class"),disabled:a.prop("disabled"),locked:q(a.attr("locked"),"locked")||q(a.data("locked"),!0)}:a.is("optgroup")?{text:a.attr("label"),children:[],element:a.get(),css:a.attr("class")}:void 0},prepareOpts:function(c){var d,e,f,g,h=this;if(d=c.element,"select"===d.get(0).tagName.toLowerCase()&&(this.select=e=c.element),e&&a.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],function(){if(this in c)throw new Error("Option '"+this+"' is not allowed for Select2 when attached to a ","
      "," ","
        ","
      ","
      "].join(""));return b},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var c,d,e;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0),this.parent.opening.apply(this,arguments),this.showSearchInput!==!1&&this.search.val(this.focusser.val()),this.search.focus(),c=this.search.get(0),c.createTextRange?(d=c.createTextRange(),d.collapse(!1),d.select()):c.setSelectionRange&&(e=this.search.val().length,c.setSelectionRange(e,e)),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.focusser.prop("disabled",!0).val(""),this.updateResults(!0),this.opts.element.trigger(a.Event("select2-open"))},close:function(a){this.opened()&&(this.parent.close.apply(this,arguments),a=a||{focus:!0},this.focusser.removeAttr("disabled"),a.focus&&this.focusser.focus())},focus:function(){this.opened()?this.close():(this.focusser.removeAttr("disabled"),this.focusser.focus())},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments),this.focusser.removeAttr("disabled"),this.focusser.focus()},destroy:function(){a("label[for='"+this.focusser.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments)},initContainer:function(){var b,d=this.container,e=this.dropdown;this.opts.minimumResultsForSearch<0?this.showSearch(!1):this.showSearch(!0),this.selection=b=d.find(".select2-choice"),this.focusser=d.find(".select2-focusser"),this.focusser.attr("id","s2id_autogen"+g()),a("label[for='"+this.opts.element.attr("id")+"']").attr("for",this.focusser.attr("id")),this.focusser.attr("tabindex",this.elementTabIndex),this.search.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()){if(a.which===c.PAGE_UP||a.which===c.PAGE_DOWN)return A(a),void 0;switch(a.which){case c.UP:case c.DOWN:return this.moveHighlight(a.which===c.UP?-1:1),A(a),void 0;case c.ENTER:return this.selectHighlighted(),A(a),void 0;case c.TAB:return this.selectHighlighted({noFocus:!0}),void 0;case c.ESC:return this.cancel(a),A(a),void 0}}})),this.search.on("blur",this.bind(function(){document.activeElement===this.body().get(0)&&window.setTimeout(this.bind(function(){this.search.focus()}),0)})),this.focusser.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()&&a.which!==c.TAB&&!c.isControl(a)&&!c.isFunctionKey(a)&&a.which!==c.ESC){if(this.opts.openOnEnter===!1&&a.which===c.ENTER)return A(a),void 0;if(a.which==c.DOWN||a.which==c.UP||a.which==c.ENTER&&this.opts.openOnEnter){if(a.altKey||a.ctrlKey||a.shiftKey||a.metaKey)return;return this.open(),A(a),void 0}return a.which==c.DELETE||a.which==c.BACKSPACE?(this.opts.allowClear&&this.clear(),A(a),void 0):void 0}})),t(this.focusser),this.focusser.on("keyup-change input",this.bind(function(a){if(this.opts.minimumResultsForSearch>=0){if(a.stopPropagation(),this.opened())return;this.open()}})),b.on("mousedown","abbr",this.bind(function(a){this.isInterfaceEnabled()&&(this.clear(),B(a),this.close(),this.selection.focus())})),b.on("mousedown",this.bind(function(b){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.opened()?this.close():this.isInterfaceEnabled()&&this.open(),A(b)})),e.on("mousedown",this.bind(function(){this.search.focus()})),b.on("focus",this.bind(function(a){A(a)})),this.focusser.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})).on("blur",this.bind(function(){this.opened()||(this.container.removeClass("select2-container-active"),this.opts.element.trigger(a.Event("select2-blur")))})),this.search.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.setPlaceholder()},clear:function(b){var c=this.selection.data("select2-data");if(c){var d=a.Event("select2-clearing");if(this.opts.element.trigger(d),d.isDefaultPrevented())return;var e=this.getPlaceholderOption();this.opts.element.val(e?e.val():""),this.selection.find(".select2-chosen").empty(),this.selection.removeData("select2-data"),this.setPlaceholder(),b!==!1&&(this.opts.element.trigger({type:"select2-removed",val:this.id(c),choice:c}),this.triggerChange({removed:c}))}},initSelection:function(){if(this.isPlaceholderOptionSelected())this.updateSelection(null),this.close(),this.setPlaceholder();else{var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.setPlaceholder())})}},isPlaceholderOptionSelected:function(){var a;return this.getPlaceholder()?(a=this.getPlaceholderOption())!==b&&a.is(":selected")||""===this.opts.element.val()||this.opts.element.val()===b||null===this.opts.element.val():!1},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=a.find(":selected");b(c.optionToData(d))}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=c.val(),f=null;b.query({matcher:function(a,c,d){var g=q(e,b.id(d));return g&&(f=d),g},callback:a.isFunction(d)?function(){d(f)}:a.noop})}),b},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===b?b:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var a=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&a!==b){if(this.select&&this.getPlaceholderOption()===b)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(a)),this.selection.addClass("select2-default"),this.container.removeClass("select2-allowclear")}},postprocessResults:function(a,b,c){var d=0,e=this;if(this.findHighlightableChoices().each2(function(a,b){return q(e.id(b.data("select2-data")),e.opts.element.val())?(d=a,!1):void 0}),c!==!1&&(b===!0&&d>=0?this.highlight(d):this.highlight(0)),b===!0){var g=this.opts.minimumResultsForSearch;g>=0&&this.showSearch(L(a.results)>=g)}},showSearch:function(b){this.showSearchInput!==b&&(this.showSearchInput=b,this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!b),this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!b),a(this.dropdown,this.container).toggleClass("select2-with-searchbox",b))},onSelect:function(a,b){if(this.triggerSelect(a)){var c=this.opts.element.val(),d=this.data();this.opts.element.val(this.id(a)),this.updateSelection(a),this.opts.element.trigger({type:"select2-selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.close(),b&&b.noFocus||this.focusser.focus(),q(c,this.id(a))||this.triggerChange({added:a,removed:d})}},updateSelection:function(a){var d,e,c=this.selection.find(".select2-chosen");this.selection.data("select2-data",a),c.empty(),null!==a&&(d=this.opts.formatSelection(a,c,this.opts.escapeMarkup)),d!==b&&c.append(d),e=this.opts.formatSelectionCssClass(a,c),e!==b&&c.addClass(e),this.selection.removeClass("select2-default"),this.opts.allowClear&&this.getPlaceholder()!==b&&this.container.addClass("select2-allowclear")},val:function(){var a,c=!1,d=null,e=this,f=this.data();if(0===arguments.length)return this.opts.element.val();if(a=arguments[0],arguments.length>1&&(c=arguments[1]),this.select)this.select.val(a).find(":selected").each2(function(a,b){return d=e.optionToData(b),!1}),this.updateSelection(d),this.setPlaceholder(),c&&this.triggerChange({added:d,removed:f});else{if(!a&&0!==a)return this.clear(c),void 0;if(this.opts.initSelection===b)throw new Error("cannot call val() if initSelection() is not defined");this.opts.element.val(a),this.opts.initSelection(this.opts.element,function(a){e.opts.element.val(a?e.id(a):""),e.updateSelection(a),e.setPlaceholder(),c&&e.triggerChange({added:a,removed:f})})}},clearSearch:function(){this.search.val(""),this.focusser.val("")},data:function(a){var c,d=!1;return 0===arguments.length?(c=this.selection.data("select2-data"),c==b&&(c=null),c):(arguments.length>1&&(d=arguments[1]),a?(c=this.data(),this.opts.element.val(a?this.id(a):""),this.updateSelection(a),d&&this.triggerChange({added:a,removed:c})):this.clear(d),void 0)}}),f=N(d,{createContainer:function(){var b=a(document.createElement("div")).attr({"class":"select2-container select2-container-multi"}).html(["
        ","
      • "," ","
      • ","
      ","
      ","
        ","
      ","
      "].join(""));return b},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=[];a.find(":selected").each2(function(a,b){d.push(c.optionToData(b))}),b(d)}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=r(c.val(),b.separator),f=[];b.query({matcher:function(c,d,g){var h=a.grep(e,function(a){return q(a,b.id(g))}).length;return h&&f.push(g),h},callback:a.isFunction(d)?function(){for(var a=[],c=0;c0||(this.selectChoice(null),this.clearPlaceholder(),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.open(),this.focusSearch(),b.preventDefault()))})),this.container.on("focus",b,this.bind(function(){this.isInterfaceEnabled()&&(this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"),this.clearPlaceholder())})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){if(""===this.opts.element.val()&&""===this.opts.element.text()&&(this.updateSelection([]),this.close(),this.clearSearch()),this.select||""!==this.opts.element.val()){var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.clearSearch())})}},clearSearch:function(){var a=this.getPlaceholder(),c=this.getMaxSearchWidth();a!==b&&0===this.getVal().length&&this.search.hasClass("select2-focused")===!1?(this.search.val(a).addClass("select2-default"),this.search.width(c>0?c:this.container.css("width"))):this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder(),this.resizeSearch(),this.parent.opening.apply(this,arguments),this.focusSearch(),this.updateResults(!0),this.search.focus(),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&this.parent.close.apply(this,arguments)},focus:function(){this.close(),this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(b){var c=[],d=[],e=this;a(b).each(function(){o(e.id(this),c)<0&&(c.push(e.id(this)),d.push(this))}),b=d,this.selection.find(".select2-search-choice").remove(),a(b).each(function(){e.addSelectedChoice(this)}),e.postprocessResults()},tokenize:function(){var a=this.search.val();a=this.opts.tokenizer.call(this,a,this.data(),this.bind(this.onSelect),this.opts),null!=a&&a!=b&&(this.search.val(a),a.length>0&&this.open())},onSelect:function(a,b){this.triggerSelect(a)&&(this.addSelectedChoice(a),this.opts.element.trigger({type:"selected",val:this.id(a),choice:a}),(this.select||!this.opts.closeOnSelect)&&this.postprocessResults(a,!1,this.opts.closeOnSelect===!0),this.opts.closeOnSelect?(this.close(),this.search.width(10)):this.countSelectableResults()>0?(this.search.width(10),this.resizeSearch(),this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()&&this.updateResults(!0),this.positionDropdown()):(this.close(),this.search.width(10)),this.triggerChange({added:a}),b&&b.noFocus||this.focusSearch())},cancel:function(){this.close(),this.focusSearch()},addSelectedChoice:function(c){var j,k,d=!c.locked,e=a("
    • "),f=a("
    • "),g=d?e:f,h=this.id(c),i=this.getVal();j=this.opts.formatSelection(c,g.find("div"),this.opts.escapeMarkup),j!=b&&g.find("div").replaceWith("
      "+j+"
      "),k=this.opts.formatSelectionCssClass(c,g.find("div")),k!=b&&g.addClass(k),d&&g.find(".select2-search-choice-close").on("mousedown",A).on("click dblclick",this.bind(function(b){this.isInterfaceEnabled()&&(a(b.target).closest(".select2-search-choice").fadeOut("fast",this.bind(function(){this.unselect(a(b.target)),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"),this.close(),this.focusSearch()})).dequeue(),A(b))})).on("focus",this.bind(function(){this.isInterfaceEnabled()&&(this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"))})),g.data("select2-data",c),g.insertBefore(this.searchContainer),i.push(h),this.setVal(i)},unselect:function(a){var c,d,b=this.getVal();if(a=a.closest(".select2-search-choice"),0===a.length)throw"Invalid argument: "+a+". Must be .select2-search-choice";if(c=a.data("select2-data")){for(;(d=o(this.id(c),b))>=0;)b.splice(d,1),this.setVal(b),this.select&&this.postprocessResults();a.remove(),this.opts.element.trigger({type:"removed",val:this.id(c),choice:c}),this.triggerChange({removed:c})}},postprocessResults:function(a,b,c){var d=this.getVal(),e=this.results.find(".select2-result"),f=this.results.find(".select2-result-with-children"),g=this;e.each2(function(a,b){var c=g.id(b.data("select2-data"));o(c,d)>=0&&(b.addClass("select2-selected"),b.find(".select2-result-selectable").addClass("select2-selected"))}),f.each2(function(a,b){b.is(".select2-result-selectable")||0!==b.find(".select2-result-selectable:not(.select2-selected)").length||b.addClass("select2-selected")}),-1==this.highlight()&&c!==!1&&g.highlight(0),!this.opts.createSearchChoice&&!e.filter(".select2-result:not(.select2-selected)").length>0&&(!a||a&&!a.more&&0===this.results.find(".select2-no-results").length)&&J(g.opts.formatNoMatches,"formatNoMatches")&&this.results.append("
    • "+g.opts.formatNoMatches(g.search.val())+"
    • ")},getMaxSearchWidth:function(){return this.selection.width()-s(this.search)},resizeSearch:function(){var a,b,c,d,e,f=s(this.search);a=C(this.search)+10,b=this.search.offset().left,c=this.selection.width(),d=this.selection.offset().left,e=c-(b-d)-f,a>e&&(e=c-f),40>e&&(e=c-f),0>=e&&(e=a),this.search.width(Math.floor(e))},getVal:function(){var a;return this.select?(a=this.select.val(),null===a?[]:a):(a=this.opts.element.val(),r(a,this.opts.separator))},setVal:function(b){var c;this.select?this.select.val(b):(c=[],a(b).each(function(){o(this,c)<0&&c.push(this)}),this.opts.element.val(0===c.length?"":c.join(this.opts.separator)))},buildChangeDetails:function(a,b){for(var b=b.slice(0),a=a.slice(0),c=0;c. Attach to instead.");this.search.width(0),this.searchContainer.hide()},onSortEnd:function(){var b=[],c=this;this.searchContainer.show(),this.searchContainer.appendTo(this.searchContainer.parent()),this.resizeSearch(),this.selection.find(".select2-search-choice").each(function(){b.push(c.opts.id(a(this).data("select2-data")))}),this.setVal(b),this.triggerChange()},data:function(b,c){var e,f,d=this;return 0===arguments.length?this.selection.find(".select2-search-choice").map(function(){return a(this).data("select2-data")}).get():(f=this.data(),b||(b=[]),e=a.map(b,function(a){return d.opts.id(a)}),this.setVal(e),this.updateSelection(b),this.clearSearch(),c&&this.triggerChange(this.buildChangeDetails(f,this.data())),void 0)}}),a.fn.select2=function(){var d,g,h,i,j,c=Array.prototype.slice.call(arguments,0),k=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","disable","readonly","positionDropdown","data","search"],l=["opened","isFocused","container","dropdown"],m=["val","data"],n={search:"externalSearch"};return this.each(function(){if(0===c.length||"object"==typeof c[0])d=0===c.length?{}:a.extend({},c[0]),d.element=a(this),"select"===d.element.get(0).tagName.toLowerCase()?j=d.element.prop("multiple"):(j=d.multiple||!1,"tags"in d&&(d.multiple=j=!0)),g=j?new f:new e,g.init(d);else{if("string"!=typeof c[0])throw"Invalid arguments to select2 plugin: "+c;if(o(c[0],k)<0)throw"Unknown method: "+c[0];if(i=b,g=a(this).data("select2"),g===b)return;if(h=c[0],"container"===h?i=g.container:"dropdown"===h?i=g.dropdown:(n[h]&&(h=n[h]),i=g[h].apply(g,c.slice(1))),o(c[0],l)>=0||o(c[0],m)&&1==c.length)return!1}}),i===b?this:i},a.fn.select2.defaults={width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(a,b,c,d){var e=[];return E(a.text,c.term,e,d),e.join("")},formatSelection:function(a,c,d){return a?d(a.text):b},sortResults:function(a){return a},formatResultCssClass:function(){return b},formatSelectionCssClass:function(){return b},formatNoMatches:function(){return"No matches found"},formatInputTooShort:function(a,b){var c=b-a.length;return"Please enter "+c+" more character"+(1==c?"":"s")},formatInputTooLong:function(a,b){var c=a.length-b;return"Please delete "+c+" character"+(1==c?"":"s")},formatSelectionTooBig:function(a){return"You can only select "+a+" item"+(1==a?"":"s")},formatLoadMore:function(){return"Loading more results..."},formatSearching:function(){return"Searching..."},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(a){return a.id},matcher:function(a,b){return n(""+b).toUpperCase().indexOf(n(""+a).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:M,escapeMarkup:F,blurOnChange:!1,selectOnBlur:!1,adaptContainerCssClass:function(a){return a},adaptDropdownCssClass:function(){return null},nextSearchTerm:function(){return b}},a.fn.select2.ajaxDefaults={transport:a.ajax,params:{type:"GET",cache:!1,dataType:"json"}},window.Select2={query:{ajax:G,local:H,tags:I},util:{debounce:v,markMatch:E,escapeMarkup:F,stripDiacritics:n},"class":{"abstract":d,single:e,multi:f}}}}(jQuery); \ No newline at end of file diff --git a/app/assets/javascripts/admin/libs/bootstrap-select2/select2.png b/app/assets/javascripts/admin/libs/bootstrap-select2/select2.png deleted file mode 100644 index 1d804ffb99699b9e030f1010314de0970b5a000d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmV-r0-F7aP)#WY!I$JQV$)A5aAS1BM||2XVJl=+L1^1S1H% zM-&lx?NZpUrHhn>fk<>POqf2sh40}xxGZfc+t+#Eb(qHy9_3*1(U%t9t)QDnI#YAL(|ACV(>)>6WD-t!8tutHkdb^#3`HzoJG3A2@T`% zA|K@o*b!`R#(7)PWrMFn2))Ca3MR4(zaT`Zr61*kZK5NPnZwQszxh$fyv3?&4c>$q z2m=+yc0dRXRAsPDxF6sD;@rK4JGdR_``1S~o6Xi@2&aR6hcSrEp9HVRzEqVDqBn<1%hR=D4e1f^ra^A|34Cjc=Gny{F(o#MrvPYgZuTJOz(n)-F<| zj()qR;C={)N<0RRvDZ^@6ND+W*}gh-Lip(MDt!(zMSO)!j2j+*hxgzC-e3$@(O2p* zu;+gddm(cZwXTCLx*Ky4THOa*^b^F`woveIeCK^0aR|TJ00000NkvXXu0mjfA#WC6 diff --git a/app/assets/javascripts/admin/libs/bootstrap-typeahead/bootstrap3-typeahead.min.js b/app/assets/javascripts/admin/libs/bootstrap-typeahead/bootstrap3-typeahead.min.js deleted file mode 100644 index 9d3cb53cc..000000000 --- a/app/assets/javascripts/admin/libs/bootstrap-typeahead/bootstrap3-typeahead.min.js +++ /dev/null @@ -1 +0,0 @@ -!function($){"use strict";var Typeahead=function(element,options){this.$element=$(element),this.options=$.extend({},$.fn.typeahead.defaults,options),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.select=this.options.select||this.select,this.autoSelect="boolean"==typeof this.options.autoSelect?this.options.autoSelect:!0,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=$(this.options.menu),this.shown=!1,this.listen(),this.showHintOnFocus="boolean"==typeof this.options.showHintOnFocus?this.options.showHintOnFocus:!1};Typeahead.prototype={constructor:Typeahead,select:function(){var val=this.$menu.find(".active").data("value");return(this.autoSelect||val)&&this.$element.val(this.updater(val)).change(),this.hide()},updater:function(item){return item},setSource:function(source){this.source=source},show:function(){var scrollHeight,pos=$.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return scrollHeight="function"==typeof this.options.scrollHeight?this.options.scrollHeight.call():this.options.scrollHeight,this.$menu.insertAfter(this.$element).css({top:pos.top+pos.height+scrollHeight,left:pos.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(query){var items;return this.query="undefined"!=typeof query&&null!==query?query:this.$element.val()||"",this.query.length"+match+""})},render:function(items){var that=this;return items=$(items).map(function(i,item){return i=$(that.options.item).data("value",item),i.find("a").html(that.highlighter(item)),i[0]}),this.autoSelect&&items.first().addClass("active"),this.$menu.html(items),this},next:function(){var active=this.$menu.find(".active").removeClass("active"),next=active.next();next.length||(next=$(this.$menu.find("li")[0])),next.addClass("active")},prev:function(){var active=this.$menu.find(".active").removeClass("active"),prev=active.prev();prev.length||(prev=this.$menu.find("li").last()),prev.addClass("active")},listen:function(){this.$element.on("focus",$.proxy(this.focus,this)).on("blur",$.proxy(this.blur,this)).on("keypress",$.proxy(this.keypress,this)).on("keyup",$.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",$.proxy(this.keydown,this)),this.$menu.on("click",$.proxy(this.click,this)).on("mouseenter","li",$.proxy(this.mouseenter,this)).on("mouseleave","li",$.proxy(this.mouseleave,this))},destroy:function(){this.$element.data("typeahead",null),this.$element.off("focus").off("blur").off("keypress").off("keyup"),this.eventSupported("keydown")&&this.$element.off("keydown"),this.$menu.remove()},eventSupported:function(eventName){var isSupported=eventName in this.$element;return isSupported||(this.$element.setAttribute(eventName,"return;"),isSupported="function"==typeof this.$element[eventName]),isSupported},move:function(e){if(this.shown){switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()}},keydown:function(e){this.suppressKeyPressRepeat=~$.inArray(e.keyCode,[40,38,9,13,27]),this.shown||40!=e.keyCode?this.move(e):this.lookup("")},keypress:function(e){this.suppressKeyPressRepeat||this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},focus:function(){this.focused||(this.focused=!0,(0===this.options.minLength&&!this.$element.val()||this.options.showHintOnFocus)&&this.lookup())},blur:function(){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(e){e.stopPropagation(),e.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(e){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),$(e.currentTarget).addClass("active")},mouseleave:function(){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var old=$.fn.typeahead;$.fn.typeahead=function(option){var arg=arguments;return this.each(function(){var $this=$(this),data=$this.data("typeahead"),options="object"==typeof option&&option;data||$this.data("typeahead",data=new Typeahead(this,options)),"string"==typeof option&&(arg.length>1?data[option].apply(data,Array.prototype.slice.call(arg,1)):data[option]())})},$.fn.typeahead.defaults={source:[],items:8,menu:'',item:'
    • ',minLength:1,scrollHeight:0,autoSelect:!0},$.fn.typeahead.Constructor=Typeahead,$.fn.typeahead.noConflict=function(){return $.fn.typeahead=old,this},$(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(){var $this=$(this);$this.data("typeahead")||$this.typeahead($this.data())})}(window.jQuery); \ No newline at end of file diff --git a/app/assets/javascripts/admin/libs/bootstrap-validator/css/bootstrapValidator.min.css b/app/assets/javascripts/admin/libs/bootstrap-validator/css/bootstrapValidator.min.css deleted file mode 100644 index 030cbdf75..000000000 --- a/app/assets/javascripts/admin/libs/bootstrap-validator/css/bootstrapValidator.min.css +++ /dev/null @@ -1,13 +0,0 @@ -/** - * BootstrapValidator (http://bootstrapvalidator.com) - * - * The best jQuery plugin to validate form fields. Designed to use with Bootstrap 3 - * - * @version v0.4.5 - * @author https://twitter.com/nghuuphuoc - * @copyright (c) 2013 - 2014 Nguyen Huu Phuoc - * @license MIT - */ - - -.bv-form .help-block{margin-bottom:0}.nav-tabs li.bv-tab-success>a{color:#3c763d}.nav-tabs li.bv-tab-error>a{color:#a94442} \ No newline at end of file diff --git a/app/assets/javascripts/admin/libs/bootstrap-validator/js/bootstrapValidator.min.js b/app/assets/javascripts/admin/libs/bootstrap-validator/js/bootstrapValidator.min.js deleted file mode 100644 index c10d0d567..000000000 --- a/app/assets/javascripts/admin/libs/bootstrap-validator/js/bootstrapValidator.min.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * BootstrapValidator (http://bootstrapvalidator.com) - * - * The best jQuery plugin to validate form fields. Designed to use with Bootstrap 3 - * - * @version v0.4.5 - * @author https://twitter.com/nghuuphuoc - * @copyright (c) 2013 - 2014 Nguyen Huu Phuoc - * @license MIT - */ - -!function(a){var b=function(c,d){this.$form=a(c),this.options=a.extend({},b.DEFAULT_OPTIONS,d),this.$invalidField=null,this.$submitButton=null,this.STATUS_NOT_VALIDATED="NOT_VALIDATED",this.STATUS_VALIDATING="VALIDATING",this.STATUS_INVALID="INVALID",this.STATUS_VALID="VALID";var e=function(){for(var a=3,b=document.createElement("div"),c=b.all||[];b.innerHTML="",c[0];);return a>4?a:!a}(),f=document.createElement("div");this._changeEvent=9!==e&&"oninput"in f?"input":"keyup",this._submitIfValid=null,this._init()};b.DEFAULT_OPTIONS={elementClass:"bv-form",message:"This value is not valid",threshold:null,excluded:[":disabled",":hidden",":not(:visible)"],feedbackIcons:{valid:null,invalid:null,validating:null},submitButtons:'[type="submit"]',submitHandler:null,live:"enabled",fields:null},b.prototype={constructor:b,_init:function(){var b,c,d,e,f,g,h,i=this,j={excluded:this.$form.attr("data-bv-excluded"),trigger:this.$form.attr("data-bv-trigger"),message:this.$form.attr("data-bv-message"),submitButtons:this.$form.attr("data-bv-submitbuttons"),threshold:this.$form.attr("data-bv-threshold"),live:this.$form.attr("data-bv-live"),fields:{},feedbackIcons:{valid:this.$form.attr("data-bv-feedbackicons-valid"),invalid:this.$form.attr("data-bv-feedbackicons-invalid"),validating:this.$form.attr("data-bv-feedbackicons-validating")}};this.$form.attr("novalidate","novalidate").addClass(this.options.elementClass).on("submit.bv",function(a){a.preventDefault(),i.validate()}).on("click",this.options.submitButtons,function(){i.$submitButton=a(this),i._submitIfValid=!0}).find("[name], [data-bv-field]").each(function(){var k=a(this);if(!i._isExcluded(k)){var l=k.attr("name")||k.attr("data-bv-field"),m={};for(c in a.fn.bootstrapValidator.validators)if(b=a.fn.bootstrapValidator.validators[c],d=k.attr("data-bv-"+c.toLowerCase())+"",h="function"==typeof b.enableByHtml5?b.enableByHtml5(a(this)):null,h&&"false"!=d||h!==!0&&(""==d||"true"==d)){b.html5Attributes=b.html5Attributes||{message:"message"},m[c]=a.extend({},1==h?{}:h,m[c]);for(g in b.html5Attributes)e=b.html5Attributes[g],f=k.attr("data-bv-"+c.toLowerCase()+"-"+g),f&&("true"==f?f=!0:"false"==f&&(f=!1),m[c][e]=f)}var n={trigger:k.attr("data-bv-trigger"),message:k.attr("data-bv-message"),container:k.attr("data-bv-container"),selector:k.attr("data-bv-selector"),threshold:k.attr("data-bv-threshold"),validators:m};a.isEmptyObject(n.validators)||a.isEmptyObject(n)||(k.attr("data-bv-field",l),j.fields[l]=a.extend({},n,j.fields[l]))}}).end().find(this.options.submitButtons).each(function(){a("").attr("type","hidden").attr("name",a(this).attr("name")).val(a(this).val()).appendTo(i.$form)}),this.options=a.extend(!0,this.options,j);for(var k in this.options.fields)this._initField(k);this.setLiveMode(this.options.live)},_initField:function(b){if(null!=this.options.fields[b]&&null!=this.options.fields[b].validators){var c=this.getFieldElements(b);if(null==c)return void delete this.options.fields[b];for(var d in this.options.fields[b].validators)a.fn.bootstrapValidator.validators[d]||delete this.options.fields[b].validators[d];for(var e=this,f=c.attr("type"),g="radio"==f||"checkbox"==f||"file"==f||"SELECT"==c[0].tagName?"change":e._changeEvent,h=c.length,i=1==h||"radio"==f||"checkbox"==f,j=0;h>j;j++){var k=a(c[j]),l=k.parents(".form-group"),m=this.options.fields[b].container?l.find(this.options.fields[b].container):this._getMessageContainer(k);k.attr("data-bv-field")||k.attr("data-bv-field",b),k.on(g+".update.bv",function(){e._submitIfValid=!1,i?e.updateStatus(b,e.STATUS_NOT_VALIDATED,null):e.updateElementStatus(a(this),e.STATUS_NOT_VALIDATED,null)}),k.data("bv.messages",m);for(d in this.options.fields[b].validators)k.data("bv.result."+d,this.STATUS_NOT_VALIDATED),i&&j!=h-1||a("").css("display","none").attr("data-bv-validator",d).attr("data-bv-validator-for",b).html(this.options.fields[b].validators[d].message||this.options.fields[b].message||this.options.message).addClass("help-block").appendTo(m);if(this.options.feedbackIcons&&this.options.feedbackIcons.validating&&this.options.feedbackIcons.invalid&&this.options.feedbackIcons.valid&&(!i||j==h-1)){l.addClass("has-feedback");var n=a("").css("display","none").addClass("form-control-feedback").attr("data-bv-icon-for",b).insertAfter(k);0==l.find("label").length&&n.css("top",0)}}null==this.options.fields[b].enabled&&(this.options.fields[b].enabled=!0)}},_getMessageContainer:function(a){var b=a.parent();if(b.hasClass("form-group"))return b;var c=b.attr("class");if(!c)return this._getMessageContainer(b);c=c.split(" ");for(var d=c.length,e=0;d>e;e++)if(/^col-(xs|sm|md|lg)-\d+$/.test(c[e])||/^col-(xs|sm|md|lg)-offset-\d+$/.test(c[e]))return b;return this._getMessageContainer(b)},_submit:function(){if(this.isValid())this.options.submitHandler&&"function"==typeof this.options.submitHandler?this.options.submitHandler.call(this,this,this.$form,this.$submitButton):this.disableSubmitButtons(!0).defaultSubmit();else if("submitted"==this.options.live&&this.setLiveMode("enabled"),this.$invalidField){var b,c=this.$invalidField.parents(".tab-pane");c&&(b=c.attr("id"))&&a('a[href="#'+b+'"][data-toggle="tab"]').trigger("click.bs.tab.data-api"),this.$invalidField.focus()}},_isExcluded:function(b){if(this.options.excluded){"string"==typeof this.options.excluded&&(this.options.excluded=a.map(this.options.excluded.split(","),function(b){return a.trim(b)}));for(var c=this.options.excluded.length,d=0;c>d;d++)if("string"==typeof this.options.excluded[d]&&b.is(this.options.excluded[d])||"function"==typeof this.options.excluded[d]&&1==this.options.excluded[d].call(this,b,this))return!0}return!1},_exceedThreshold:function(a){var b=a.attr("data-bv-field"),c=this.options.fields[b].threshold||this.options.threshold;if(!c)return!0;var d=a.attr("type"),e=-1!=["button","checkbox","file","hidden","image","radio","reset","submit"].indexOf(d);return e||a.val().length>=c},getFieldElements:function(b){var c=this.options.fields[b].selector?a(this.options.fields[b].selector):this.$form.find('[name="'+b+'"]');return 0==c.length?null:c},setLiveMode:function(b){if(this.options.live=b,"submitted"==b)return this;var c=this;for(var d in this.options.fields)!function(e){var f=c.getFieldElements(e);if(f)for(var g=f.attr("type"),h=f.length,i=1==h||"radio"==g||"checkbox"==g,j=c.options.fields[d].trigger||c.options.trigger||("radio"==g||"checkbox"==g||"file"==g||"SELECT"==f[0].tagName?"change":c._changeEvent),k=a.map(j.split(" "),function(a){return a+".live.bv"}).join(" "),l=0;h>l;l++)"enabled"==b?a(f[l]).on(k,function(){c._exceedThreshold(a(this))&&(i?c.validateField(e):c.validateFieldElement(a(this),!1))}):a(f[l]).off(k)}(d);return this},disableSubmitButtons:function(a){return a?"disabled"!=this.options.live&&this.$form.find(this.options.submitButtons).attr("disabled","disabled"):this.$form.find(this.options.submitButtons).removeAttr("disabled"),this},validate:function(){if(!this.options.fields)return this;this.disableSubmitButtons(!0);for(var a in this.options.fields)this.validateField(a);return this.$submitButton&&this._submit(),this},validateField:function(b){for(var c=this.getFieldElements(b),d=c.attr("type"),e="radio"==d||"checkbox"==d?1:c.length,f=0;e>f;f++)this.validateFieldElement(a(c[f]),1==e);return this},validateFieldElement:function(b,c){var d,e,f=this,g=b.attr("data-bv-field"),h=this.options.fields[g].validators;if(!this.options.fields[g].enabled||this._isExcluded(b))return this;for(d in h){b.data("bv.dfs."+d)&&b.data("bv.dfs."+d).reject();var i=b.data("bv.result."+d);i!=this.STATUS_VALID&&i!=this.STATUS_INVALID&&(b.data("bv.result."+d,this.STATUS_VALIDATING),e=a.fn.bootstrapValidator.validators[d].validate(this,b,h[d]),"object"==typeof e?(c?this.updateStatus(g,this.STATUS_VALIDATING,d):this.updateElementStatus(b,this.STATUS_VALIDATING,d),b.data("bv.dfs."+d,e),e.done(function(a,b,d){a.removeData("bv.dfs."+b),c?f.updateStatus(a.attr("data-bv-field"),d?f.STATUS_VALID:f.STATUS_INVALID,b):f.updateElementStatus(a,d?f.STATUS_VALID:f.STATUS_INVALID,b),d&&1==f._submitIfValid&&f._submit()})):"boolean"==typeof e&&(c?this.updateStatus(g,e?this.STATUS_VALID:this.STATUS_INVALID,d):this.updateElementStatus(b,e?this.STATUS_VALID:this.STATUS_INVALID,d)))}return this},updateStatus:function(b,c,d){for(var e=this.getFieldElements(b),f=e.attr("type"),g="radio"==f||"checkbox"==f?1:e.length,h=0;g>h;h++)this.updateElementStatus(a(e[h]),c,d);return this},updateElementStatus:function(b,c,d){var e=this,f=b.attr("data-bv-field"),g=b.parents(".form-group"),h=b.data("bv.messages"),i=h.find(".help-block[data-bv-validator]"),j=g.find('.form-control-feedback[data-bv-icon-for="'+f+'"]');if(d)b.data("bv.result."+d,c);else for(var k in this.options.fields[f].validators)b.data("bv.result."+k,c);var l,m,n=b.parents(".tab-pane");switch(n&&(l=n.attr("id"))&&(m=a('a[href="#'+l+'"][data-toggle="tab"]').parent()),c){case this.STATUS_VALIDATING:this.disableSubmitButtons(!0),g.removeClass("has-success").removeClass("has-error"),d?i.filter('.help-block[data-bv-validator="'+d+'"]').hide():i.hide(),j&&j.removeClass(this.options.feedbackIcons.valid).removeClass(this.options.feedbackIcons.invalid).addClass(this.options.feedbackIcons.validating).show(),m&&m.removeClass("bv-tab-success").removeClass("bv-tab-error");break;case this.STATUS_INVALID:this.disableSubmitButtons(!0),g.removeClass("has-success").addClass("has-error"),d?i.filter('[data-bv-validator="'+d+'"]').show():i.show(),j&&j.removeClass(this.options.feedbackIcons.valid).removeClass(this.options.feedbackIcons.validating).addClass(this.options.feedbackIcons.invalid).show(),m&&m.removeClass("bv-tab-success").addClass("bv-tab-error");break;case this.STATUS_VALID:d?i.filter('[data-bv-validator="'+d+'"]').hide():i.hide();var o=0==i.filter(function(){var c=a(this).css("display"),d=a(this).attr("data-bv-validator");return"block"==c||b.data("bv.result."+d)!=e.STATUS_VALID}).length;this.disableSubmitButtons(!o),j&&j.removeClass(this.options.feedbackIcons.invalid).removeClass(this.options.feedbackIcons.validating).removeClass(this.options.feedbackIcons.valid).addClass(o?this.options.feedbackIcons.valid:this.options.feedbackIcons.invalid).show();var p=function(c){return 0==c.find(".help-block[data-bv-validator]").filter(function(){var c=a(this).css("display"),d=a(this).attr("data-bv-validator");return"block"==c||b.data("bv.result."+d)&&b.data("bv.result."+d)!=e.STATUS_VALID}).length};g.removeClass("has-error has-success").addClass(p(g)?"has-success":"has-error"),m&&m.removeClass("bv-tab-success").removeClass("bv-tab-error").addClass(p(n)?"bv-tab-success":"bv-tab-error");break;case this.STATUS_NOT_VALIDATED:default:this.disableSubmitButtons(!1),g.removeClass("has-success").removeClass("has-error"),d?i.filter('.help-block[data-bv-validator="'+d+'"]').hide():i.hide(),j&&j.removeClass(this.options.feedbackIcons.valid).removeClass(this.options.feedbackIcons.invalid).removeClass(this.options.feedbackIcons.validating).hide(),m&&m.removeClass("bv-tab-success").removeClass("bv-tab-error")}return this},isValid:function(){var b,c,d,e,f,g,h,i;for(c in this.options.fields)if(null!=this.options.fields[c]&&this.options.fields[c].enabled)for(b=this.getFieldElements(c),e=b.attr("type"),h="radio"==e||"checkbox"==e?1:b.length,i=0;h>i;i++)if(d=a(b[i]),!this._isExcluded(d))for(g in this.options.fields[c].validators){if(f=d.data("bv.result."+g),f==this.STATUS_NOT_VALIDATED||f==this.STATUS_VALIDATING)return!1;if(f==this.STATUS_INVALID)return this.$invalidField=d,!1}return!0},defaultSubmit:function(){this.$form.off("submit.bv").submit()},resetForm:function(b){var c,d,e,f,g;for(c in this.options.fields){d=this.getFieldElements(c),e=d.length;for(var h=0;e>h;h++)for(g in this.options.fields[c].validators)a(d[h]).removeData("bv.dfs."+g);this.updateStatus(c,this.STATUS_NOT_VALIDATED,null),b&&(f=d.attr("type"),"radio"==f||"checkbox"==f?d.removeAttr("checked").removeAttr("selected"):d.val(""))}return this.$invalidField=null,this.$submitButton=null,this.disableSubmitButtons(!1),this},enableFieldValidators:function(a,b){return this.options.fields[a].enabled=b,this.updateStatus(a,this.STATUS_NOT_VALIDATED,null),this}},a.fn.bootstrapValidator=function(c){var d=arguments;return this.each(function(){var e=a(this),f=e.data("bootstrapValidator"),g="object"==typeof c&&c;f||(f=new b(this,g),e.data("bootstrapValidator",f)),"string"==typeof c&&f[c].apply(f,Array.prototype.slice.call(d,1))})},a.fn.bootstrapValidator.validators={},a.fn.bootstrapValidator.Constructor=b,a.fn.bootstrapValidator.helpers={date:function(a,b,c,d){if(1e3>a||a>9999||0==b||b>12)return!1;var e=[31,28,31,30,31,30,31,31,30,31,30,31];if((a%400==0||a%100!=0&&a%4==0)&&(e[1]=29),0>c||c>e[b-1])return!1;if(d===!0){var f=new Date,g=f.getFullYear(),h=f.getMonth(),i=f.getDate();return g>a||a==g&&h>b-1||a==g&&b-1==h&&i>c}return!0},luhn:function(a){for(var b=a.length,c=0,d=[[0,1,2,3,4,5,6,7,8,9],[0,2,4,6,8,1,3,5,7,9]],e=0;b--;)e+=d[c][parseInt(a.charAt(b),10)],c^=1;return e%10===0&&e>0},mod_11_10:function(a){for(var b=5,c=a.length,d=0;c>d;d++)b=(2*(b||10)%11+parseInt(a.charAt(d),10))%10;return 1==b},mod_37_36:function(a,b){b=b||"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";for(var c=b.length,d=a.length,e=Math.floor(c/2),f=0;d>f;f++)e=(2*(e||c)%(c+1)+b.indexOf(a.charAt(f)))%c;return 1==e}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.base64={validate:function(a,b){var c=b.val();return""==c?!0:/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$/.test(c)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.between={html5Attributes:{message:"message",min:"min",max:"max",inclusive:"inclusive"},enableByHtml5:function(a){return"range"==a.attr("type")?{min:a.attr("min"),max:a.attr("max")}:!1},validate:function(a,b,c){var d=b.val();return""==d?!0:(d=parseFloat(d),c.inclusive===!0?d>c.min&&d=c.min&&d<=c.max)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.callback={validate:function(b,c,d){var e=c.val();if(d.callback&&"function"==typeof d.callback){var f=new a.Deferred;return f.resolve(c,"callback",d.callback.call(this,e,b)),f}return!0}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.choice={html5Attributes:{message:"message",min:"min",max:"max"},validate:function(a,b,c){var d=b.is("select")?a.getFieldElements(b.attr("data-bv-field")).find("option").filter(":selected").length:a.getFieldElements(b.attr("data-bv-field")).filter(":checked").length;return c.min&&dc.max?!1:!0}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.creditCard={validate:function(b,c){var d=c.val();if(""==d)return!0;if(/[^0-9-\s]+/.test(d))return!1;if(d=d.replace(/\D/g,""),!a.fn.bootstrapValidator.helpers.luhn(d))return!1;var e,f,g={AMERICAN_EXPRESS:{length:[15],prefix:["34","37"]},DINERS_CLUB:{length:[14],prefix:["300","301","302","303","304","305","36"]},DINERS_CLUB_US:{length:[16],prefix:["54","55"]},DISCOVER:{length:[16],prefix:["6011","622126","622127","622128","622129","62213","62214","62215","62216","62217","62218","62219","6222","6223","6224","6225","6226","6227","6228","62290","62291","622920","622921","622922","622923","622924","622925","644","645","646","647","648","649","65"]},JCB:{length:[16],prefix:["3528","3529","353","354","355","356","357","358"]},LASER:{length:[16,17,18,19],prefix:["6304","6706","6771","6709"]},MAESTRO:{length:[12,13,14,15,16,17,18,19],prefix:["5018","5020","5038","6304","6759","6761","6762","6763","6764","6765","6766"]},MASTERCARD:{length:[16],prefix:["51","52","53","54","55"]},SOLO:{length:[16,18,19],prefix:["6334","6767"]},UNIONPAY:{length:[16,17,18,19],prefix:["622126","622127","622128","622129","62213","62214","62215","62216","62217","62218","62219","6222","6223","6224","6225","6226","6227","6228","62290","62291","622920","622921","622922","622923","622924","622925"]},VISA:{length:[16],prefix:["4"]}};for(e in g)for(f in g[e].prefix)if(d.substr(0,g[e].prefix[f].length)==g[e].prefix[f]&&-1!=g[e].length.indexOf(d.length))return!0;return!1}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.cusip={validate:function(b,c){var d=c.val();if(""==d)return!0;if(d=d.toUpperCase(),!/^[0-9A-Z]{9}$/.test(d))return!1;for(var e=a.map(d.split(""),function(a){var b=a.charCodeAt(0);return b>="A".charCodeAt(0)&&b<="Z".charCodeAt(0)?b-"A".charCodeAt(0)+10:a}),f=e.length,g=0,h=0;f-1>h;h++){var i=parseInt(e[h]);h%2!=0&&(i*=2),i>9&&(i-=9),g+=i}return g=(10-g%10)%10,g==e[f-1]}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.cvv={html5Attributes:{message:"message",ccfield:"creditCardField"},validate:function(a,b,c){var d=b.val();if(""==d)return!0;if(!/^[0-9]{3,4}$/.test(d))return!1;if(!c.creditCardField)return!0;var e=a.getFieldElements(c.creditCardField).val();if(""==e)return!0;e=e.replace(/\D/g,"");var f,g,h={AMERICAN_EXPRESS:{length:[15],prefix:["34","37"]},DINERS_CLUB:{length:[14],prefix:["300","301","302","303","304","305","36"]},DINERS_CLUB_US:{length:[16],prefix:["54","55"]},DISCOVER:{length:[16],prefix:["6011","622126","622127","622128","622129","62213","62214","62215","62216","62217","62218","62219","6222","6223","6224","6225","6226","6227","6228","62290","62291","622920","622921","622922","622923","622924","622925","644","645","646","647","648","649","65"]},JCB:{length:[16],prefix:["3528","3529","353","354","355","356","357","358"]},LASER:{length:[16,17,18,19],prefix:["6304","6706","6771","6709"]},MAESTRO:{length:[12,13,14,15,16,17,18,19],prefix:["5018","5020","5038","6304","6759","6761","6762","6763","6764","6765","6766"]},MASTERCARD:{length:[16],prefix:["51","52","53","54","55"]},SOLO:{length:[16,18,19],prefix:["6334","6767"]},UNIONPAY:{length:[16,17,18,19],prefix:["622126","622127","622128","622129","62213","62214","62215","62216","62217","62218","62219","6222","6223","6224","6225","6226","6227","6228","62290","62291","622920","622921","622922","622923","622924","622925"]},VISA:{length:[16],prefix:["4"]}},i=null;for(f in h)for(g in h[f].prefix)if(e.substr(0,h[f].prefix[g].length)==h[f].prefix[g]&&-1!=h[f].length.indexOf(e.length)){i=f;break}return null==i?!1:"AMERICAN_EXPRESS"==i?4==d.length:3==d.length}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.date={html5Attributes:{message:"message",format:"format"},validate:function(b,c,d){var e=c.val();if(""==e)return!0;d.format=d.format||"MM/DD/YYYY";var f=d.format.split(" "),g=f[0],h=f.length>1?f[1]:null,i=f.length>2?f[2]:null,j=e.split(" "),k=j[0],l=j.length>1?j[1]:null;if(f.length!=j.length)return!1;var m=-1!=k.indexOf("/")?"/":-1!=k.indexOf("-")?"-":null;if(null==m)return!1;k=k.split(m),g=g.split(m);var n=k[g.indexOf("YYYY")],o=k[g.indexOf("MM")],p=k[g.indexOf("DD")],q=null,r=null,s=null;if(h){if(h=h.split(":"),l=l.split(":"),h.length!=l.length)return!1;if(r=l.length>0?l[0]:null,q=l.length>1?l[1]:null,s=l.length>2?l[2]:null,s&&(s=parseInt(s,10),0>s||s>60))return!1;if(r&&(r=parseInt(r,10),0>r||r>=24||i&&r>12))return!1;if(q&&(q=parseInt(q,10),0>q||q>59))return!1}return p=parseInt(p,10),o=parseInt(o,10),n=parseInt(n,10),a.fn.bootstrapValidator.helpers.date(n,o,p)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.different={html5Attributes:{message:"message",field:"field"},validate:function(a,b,c){var d=b.val();if(""==d)return!0;var e=a.getFieldElements(c.field);return null==e?!0:d!=e.val()?(a.updateStatus(c.field,a.STATUS_VALID,"different"),!0):!1}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.digits={validate:function(a,b){var c=b.val();return""==c?!0:/^\d+$/.test(c)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.ean={validate:function(a,b){var c=b.val();if(""==c)return!0;if(!/^(\d{8}|\d{12}|\d{13})$/.test(c))return!1;for(var d=c.length,e=0,f=8==d?[3,1]:[1,3],g=0;d-1>g;g++)e+=parseInt(c.charAt(g))*f[g%2];return e=10-e%10,e==c.charAt(d-1)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.emailAddress={enableByHtml5:function(a){return"email"==a.attr("type")},validate:function(a,b){var c=b.val();if(""==c)return!0;var d=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return d.test(c)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.file={html5Attributes:{extension:"extension",maxsize:"maxSize",message:"message",type:"type"},validate:function(a,b,c){var d=b.val();if(""==d)return!0;var e,f=c.extension?c.extension.split(","):null,g=c.type?c.type.split(","):null,h=window.File&&window.FileList&&window.FileReader;if(h)for(var i=b.get(0).files,j=i.length,k=0;j>k;k++){if(c.maxSize&&i[k].size>parseInt(c.maxSize))return!1;if(e=i[k].name.substr(i[k].name.lastIndexOf(".")+1),f&&-1==f.indexOf(e))return!1;if(g&&-1==g.indexOf(i[k].type))return!1}else if(e=d.substr(d.lastIndexOf(".")+1),f&&-1==f.indexOf(e))return!1;return!0}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.greaterThan={html5Attributes:{message:"message",value:"value",inclusive:"inclusive"},enableByHtml5:function(a){var b=a.attr("min");return b?{value:b}:!1},validate:function(a,b,c){var d=b.val();return""==d?!0:(d=parseFloat(d),c.inclusive===!0?d>c.value:d>=c.value)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.grid={validate:function(b,c){var d=c.val();return""==d?!0:(d=d.toUpperCase(),/^[GRID:]*([0-9A-Z]{2})[-\s]*([0-9A-Z]{5})[-\s]*([0-9A-Z]{10})[-\s]*([0-9A-Z]{1})$/g.test(d)?(d=d.replace(/\s/g,"").replace(/-/g,""),"GRID:"==d.substr(0,5)&&(d=d.substr(5)),a.fn.bootstrapValidator.helpers.mod_37_36(d)):!1)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.hex={validate:function(a,b){var c=b.val();return""==c?!0:/^[0-9a-fA-F]+$/.test(c)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.hexColor={enableByHtml5:function(a){return"color"==a.attr("type")},validate:function(a,b){var c=b.val();return""==c?!0:/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(c)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.iban={html5Attributes:{message:"message",country:"country"},validate:function(b,c,d){var e=c.val();if(""==e)return!0;var f={AD:"AD[0-9]{2}[0-9]{4}[0-9]{4}[A-Z0-9]{12}",AE:"AE[0-9]{2}[0-9]{3}[0-9]{16}",AL:"AL[0-9]{2}[0-9]{8}[A-Z0-9]{16}",AO:"AO[0-9]{2}[0-9]{21}",AT:"AT[0-9]{2}[0-9]{5}[0-9]{11}",AZ:"AZ[0-9]{2}[A-Z]{4}[A-Z0-9]{20}",BA:"BA[0-9]{2}[0-9]{3}[0-9]{3}[0-9]{8}[0-9]{2}",BE:"BE[0-9]{2}[0-9]{3}[0-9]{7}[0-9]{2}",BF:"BF[0-9]{2}[0-9]{23}",BG:"BG[0-9]{2}[A-Z]{4}[0-9]{4}[0-9]{2}[A-Z0-9]{8}",BH:"BH[0-9]{2}[A-Z]{4}[A-Z0-9]{14}",BI:"BI[0-9]{2}[0-9]{12}",BJ:"BJ[0-9]{2}[A-Z]{1}[0-9]{23}",BR:"BR[0-9]{2}[0-9]{8}[0-9]{5}[0-9]{10}[A-Z][A-Z0-9]",CH:"CH[0-9]{2}[0-9]{5}[A-Z0-9]{12}",CI:"CI[0-9]{2}[A-Z]{1}[0-9]{23}",CM:"CM[0-9]{2}[0-9]{23}",CR:"CR[0-9]{2}[0-9]{3}[0-9]{14}",CV:"CV[0-9]{2}[0-9]{21}",CY:"CY[0-9]{2}[0-9]{3}[0-9]{5}[A-Z0-9]{16}",CZ:"CZ[0-9]{2}[0-9]{20}",DE:"DE[0-9]{2}[0-9]{8}[0-9]{10}",DK:"DK[0-9]{2}[0-9]{14}",DO:"DO[0-9]{2}[A-Z0-9]{4}[0-9]{20}",DZ:"DZ[0-9]{2}[0-9]{20}",EE:"EE[0-9]{2}[0-9]{2}[0-9]{2}[0-9]{11}[0-9]{1}",ES:"ES[0-9]{2}[0-9]{4}[0-9]{4}[0-9]{1}[0-9]{1}[0-9]{10}",FI:"FI[0-9]{2}[0-9]{6}[0-9]{7}[0-9]{1}",FO:"FO[0-9]{2}[0-9]{4}[0-9]{9}[0-9]{1}",FR:"FR[0-9]{2}[0-9]{5}[0-9]{5}[A-Z0-9]{11}[0-9]{2}",GB:"GB[0-9]{2}[A-Z]{4}[0-9]{6}[0-9]{8}",GE:"GE[0-9]{2}[A-Z]{2}[0-9]{16}",GI:"GI[0-9]{2}[A-Z]{4}[A-Z0-9]{15}",GL:"GL[0-9]{2}[0-9]{4}[0-9]{9}[0-9]{1}",GR:"GR[0-9]{2}[0-9]{3}[0-9]{4}[A-Z0-9]{16}",GT:"GT[0-9]{2}[A-Z0-9]{4}[A-Z0-9]{20}",HR:"HR[0-9]{2}[0-9]{7}[0-9]{10}",HU:"HU[0-9]{2}[0-9]{3}[0-9]{4}[0-9]{1}[0-9]{15}[0-9]{1}",IE:"IE[0-9]{2}[A-Z]{4}[0-9]{6}[0-9]{8}",IL:"IL[0-9]{2}[0-9]{3}[0-9]{3}[0-9]{13}",IR:"IR[0-9]{2}[0-9]{22}",IS:"IS[0-9]{2}[0-9]{4}[0-9]{2}[0-9]{6}[0-9]{10}",IT:"IT[0-9]{2}[A-Z]{1}[0-9]{5}[0-9]{5}[A-Z0-9]{12}",JO:"JO[0-9]{2}[A-Z]{4}[0-9]{4}[0]{8}[A-Z0-9]{10}",KW:"KW[0-9]{2}[A-Z]{4}[0-9]{22}",KZ:"KZ[0-9]{2}[0-9]{3}[A-Z0-9]{13}",LB:"LB[0-9]{2}[0-9]{4}[A-Z0-9]{20}",LI:"LI[0-9]{2}[0-9]{5}[A-Z0-9]{12}",LT:"LT[0-9]{2}[0-9]{5}[0-9]{11}",LU:"LU[0-9]{2}[0-9]{3}[A-Z0-9]{13}",LV:"LV[0-9]{2}[A-Z]{4}[A-Z0-9]{13}",MC:"MC[0-9]{2}[0-9]{5}[0-9]{5}[A-Z0-9]{11}[0-9]{2}",MD:"MD[0-9]{2}[A-Z0-9]{20}",ME:"ME[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",MG:"MG[0-9]{2}[0-9]{23}",MK:"MK[0-9]{2}[0-9]{3}[A-Z0-9]{10}[0-9]{2}",ML:"ML[0-9]{2}[A-Z]{1}[0-9]{23}",MR:"MR13[0-9]{5}[0-9]{5}[0-9]{11}[0-9]{2}",MT:"MT[0-9]{2}[A-Z]{4}[0-9]{5}[A-Z0-9]{18}",MU:"MU[0-9]{2}[A-Z]{4}[0-9]{2}[0-9]{2}[0-9]{12}[0-9]{3}[A-Z]{3}",MZ:"MZ[0-9]{2}[0-9]{21}",NL:"NL[0-9]{2}[A-Z]{4}[0-9]{10}",NO:"NO[0-9]{2}[0-9]{4}[0-9]{6}[0-9]{1}",PK:"PK[0-9]{2}[A-Z]{4}[A-Z0-9]{16}",PL:"PL[0-9]{2}[0-9]{8}[0-9]{16}",PS:"PS[0-9]{2}[A-Z]{4}[A-Z0-9]{21}",PT:"PT[0-9]{2}[0-9]{4}[0-9]{4}[0-9]{11}[0-9]{2}",QA:"QA[0-9]{2}[A-Z]{4}[A-Z0-9]{21}",RO:"RO[0-9]{2}[A-Z]{4}[A-Z0-9]{16}",RS:"RS[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",SA:"SA[0-9]{2}[0-9]{2}[A-Z0-9]{18}",SE:"SE[0-9]{2}[0-9]{3}[0-9]{16}[0-9]{1}",SI:"SI[0-9]{2}[0-9]{5}[0-9]{8}[0-9]{2}",SK:"SK[0-9]{2}[0-9]{4}[0-9]{6}[0-9]{10}",SM:"SM[0-9]{2}[A-Z]{1}[0-9]{5}[0-9]{5}[A-Z0-9]{12}",SN:"SN[0-9]{2}[A-Z]{1}[0-9]{23}",TN:"TN59[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}",TR:"TR[0-9]{2}[0-9]{5}[A-Z0-9]{1}[A-Z0-9]{16}",VG:"VG[0-9]{2}[A-Z]{4}[0-9]{16}"};e=e.replace(/[^a-zA-Z0-9]/g,"").toUpperCase();var g=d.country||e.substr(0,2);if(!f[g])return!1;if(!new RegExp("^"+f[g]+"$").test(e))return!1;e=e.substr(4)+e.substr(0,4),e=a.map(e.split(""),function(a){var b=a.charCodeAt(0);return b>="A".charCodeAt(0)&&b<="Z".charCodeAt(0)?b-"A".charCodeAt(0)+10:a}),e=e.join("");for(var h=parseInt(e.substr(0,1),10),i=e.length,j=1;i>j;++j)h=(10*h+parseInt(e.substr(j,1),10))%97;return 1==h}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.id={html5Attributes:{message:"message",country:"country"},validate:function(a,b,c){var d=b.val();if(""==d)return!0;var e=c.country||d.substr(0,2),f=["_",e.toLowerCase()].join("");return this[f]&&"function"==typeof this[f]?this[f](d):!0},_validateJMBG:function(a,b){if(!/^\d{13}$/.test(a))return!1;var c=parseInt(a.substr(0,2),10),d=parseInt(a.substr(2,2),10),e=(parseInt(a.substr(4,3),10),parseInt(a.substr(7,2),10)),f=parseInt(a.substr(12,1),10);if(c>31||d>12)return!1;for(var g=0,h=0;6>h;h++)g+=(7-h)*(parseInt(a.charAt(h))+parseInt(a.charAt(h+6)));if(g=11-g%11,(10==g||11==g)&&(g=0),g!=f)return!1;switch(b.toUpperCase()){case"BA":return e>=10&&19>=e;case"MK":return e>=41&&49>=e;case"ME":return e>=20&&29>=e;case"RS":return e>=70&&99>=e;case"SI":return e>=50&&59>=e;default:return!0}},_ba:function(a){return this._validateJMBG(a,"BA")},_mk:function(a){return this._validateJMBG(a,"MK")},_me:function(a){return this._validateJMBG(a,"ME")},_rs:function(a){return this._validateJMBG(a,"RS")},_si:function(a){return this._validateJMBG(a,"SI")},_bg:function(b){if(!/^\d{10}$/.test(b)&&!/^\d{6}\s\d{3}\s\d{1}$/.test(b))return!1;b=b.replace(/\s/g,"");var c=parseInt(b.substr(0,2),10)+1900,d=parseInt(b.substr(2,2),10),e=parseInt(b.substr(4,2),10);if(d>40?(c+=100,d-=40):d>20&&(c-=100,d-=20),!a.fn.bootstrapValidator.helpers.date(c,d,e))return!1;for(var f=0,g=[2,4,8,5,10,9,7,3,6],h=0;9>h;h++)f+=parseInt(b.charAt(h))*g[h];return f=f%11%10,f==b.substr(9,1)},_br:function(a){if(/^1{11}|2{11}|3{11}|4{11}|5{11}|6{11}|7{11}|8{11}|9{11}|0{11}$/.test(a))return!1;if(!/^\d{11}$/.test(a)&&!/^\d{3}\.\d{3}\.\d{3}-\d{2}$/.test(a))return!1;a=a.replace(/\./g,"").replace(/-/g,"");for(var b=0,c=0;9>c;c++)b+=(10-c)*parseInt(a.charAt(c));if(b=11-b%11,(10==b||11==b)&&(b=0),b!=a.charAt(9))return!1;var d=0;for(c=0;10>c;c++)d+=(11-c)*parseInt(a.charAt(c));return d=11-d%11,(10==d||11==d)&&(d=0),d==a.charAt(10)},_ch:function(a){if(!/^756[\.]{0,1}[0-9]{4}[\.]{0,1}[0-9]{4}[\.]{0,1}[0-9]{2}$/.test(a))return!1;a=a.replace(/\D/g,"").substr(3);for(var b=a.length,c=0,d=8==b?[3,1]:[1,3],e=0;b-1>e;e++)c+=parseInt(a.charAt(e))*d[e%2];return c=10-c%10,c==a.charAt(b-1)},_cl:function(a){if(!/^\d{7,8}[-]{0,1}[0-9K]$/.test(a))return!1;for(a=a.replace(/\D/g,"");a.length<9;)a="0"+a;for(var b=0,c=[3,2,7,6,5,4,3,2],d=0;8>d;d++)b+=parseInt(a.charAt(d))*c[d];return b=11-b%11,11==b?b=0:10==b&&(b="K"),b==a.charAt(8)},_cz:function(b){if(!/^\d{9,10}$/.test(b))return!1;var c=1900+parseInt(b.substr(0,2)),d=parseInt(b.substr(2,2))%50%20,e=parseInt(b.substr(4,2));if(9==b.length){if(c>=1980&&(c-=100),c>1953)return!1}else 1954>c&&(c+=100);if(!a.fn.bootstrapValidator.helpers.date(c,d,e))return!1;if(10==b.length){var f=parseInt(b.substr(0,9),10)%11;return 1985>c&&(f%=10),f==b.substr(9,1)}return!0},_dk:function(b){if(!/^[0-9]{6}[-]{0,1}[0-9]{4}$/.test(b))return!1;b=b.replace(/-/g,"");var c=parseInt(b.substr(0,2),10),d=parseInt(b.substr(2,2),10),e=parseInt(b.substr(4,2),10);switch(!0){case-1!="5678".indexOf(b.charAt(6))&&e>=58:e+=1800;break;case-1!="0123".indexOf(b.charAt(6)):case-1!="49".indexOf(b.charAt(6))&&e>=37:e+=1900;break;default:e+=2e3}return a.fn.bootstrapValidator.helpers.date(e,d,c)},_ee:function(a){return this._lt(a)},_es:function(a){if(!/^[0-9A-Z]{8}[-]{0,1}[0-9A-Z]$/.test(a)&&!/^[XYZ][-]{0,1}[0-9]{7}[-]{0,1}[0-9A-Z]$/.test(a))return!1;a=a.replace(/-/g,"");var b="XYZ".indexOf(a.charAt(0));-1!=b&&(a=b+a.substr(1)+"");var c=parseInt(a.substr(0,8),10);return c="TRWAGMYFPDXBNJZSQVHLCKE"[c%23],c==a.substr(8,1)},_fi:function(b){if(!/^[0-9]{6}[-+A][0-9]{3}[0-9ABCDEFHJKLMNPRSTUVWXY]$/.test(b))return!1;var c=parseInt(b.substr(0,2),10),d=parseInt(b.substr(2,2),10),e=parseInt(b.substr(4,2),10),f={"+":1800,"-":1900,A:2e3};if(e=f[b.charAt(6)]+e,!a.fn.bootstrapValidator.helpers.date(e,d,c))return!1;var g=parseInt(b.substr(7,3));if(2>g)return!1;var h=b.substr(0,6)+b.substr(7,3)+"";return h=parseInt(h),"0123456789ABCDEFHJKLMNPRSTUVWXY".charAt(h%31)==b.charAt(10)},_hr:function(b){return/^[0-9]{11}$/.test(b)?a.fn.bootstrapValidator.helpers.mod_11_10(b):!1},_ie:function(a){if(!/^\d{7}[A-W][AHWTX]?$/.test(a))return!1;var b=function(a){for(;a.length<7;)a="0"+a;for(var b="WABCDEFGHIJKLMNOPQRSTUV",c=0,d=0;7>d;d++)c+=parseInt(a.charAt(d))*(8-d);return c+=9*b.indexOf(a.substr(7)),b[c%23]};return 9!=a.length||"A"!=a.charAt(8)&&"H"!=a.charAt(8)?a.charAt(7)==b(a.substr(0,7)):a.charAt(7)==b(a.substr(0,7)+a.substr(8)+"")},_is:function(b){if(!/^[0-9]{6}[-]{0,1}[0-9]{4}$/.test(b))return!1;b=b.replace(/-/g,"");var c=parseInt(b.substr(0,2),10),d=parseInt(b.substr(2,2),10),e=parseInt(b.substr(4,2),10),f=parseInt(b.charAt(9));if(e=9==f?1900+e:100*(20+f)+e,!a.fn.bootstrapValidator.helpers.date(e,d,c,!0))return!1;for(var g=0,h=[3,2,7,6,5,4,3,2],i=0;8>i;i++)g+=parseInt(b.charAt(i))*h[i];return g=11-g%11,g==b.charAt(8)},_lt:function(b){if(!/^[0-9]{11}$/.test(b))return!1;var c=parseInt(b.charAt(0)),d=parseInt(b.substr(1,2),10),e=parseInt(b.substr(3,2),10),f=parseInt(b.substr(5,2),10),g=c%2==0?17+c/2:17+(c+1)/2;if(d=100*g+d,!a.fn.bootstrapValidator.helpers.date(d,e,f,!0))return!1;for(var h=0,i=[1,2,3,4,5,6,7,8,9,1],j=0;10>j;j++)h+=parseInt(b.charAt(j))*i[j];if(h%=11,10!=h)return h==b.charAt(10);for(h=0,i=[3,4,5,6,7,8,9,1,2,3],j=0;10>j;j++)h+=parseInt(b.charAt(j))*i[j];return h%=11,10==h&&(h=0),h==b.charAt(10)},_lv:function(b){if(!/^[0-9]{6}[-]{0,1}[0-9]{5}$/.test(b))return!1;b=b.replace(/\D/g,"");var c=parseInt(b.substr(0,2)),d=parseInt(b.substr(2,2)),e=parseInt(b.substr(4,2));if(e=e+1800+100*parseInt(b.charAt(6)),!a.fn.bootstrapValidator.helpers.date(e,d,c,!0))return!1;for(var f=0,g=[10,5,8,4,2,1,6,3,7,9],h=0;10>h;h++)f+=parseInt(b.charAt(h))*g[h];return f=(f+1)%11%10,f==b.charAt(10)},_nl:function(a){for(;a.length<9;)a="0"+a;if(!/^[0-9]{4}[.]{0,1}[0-9]{2}[.]{0,1}[0-9]{3}$/.test(a))return!1;if(a=a.replace(/\./g,""),0==parseInt(a,10))return!1;for(var b=0,c=a.length,d=0;c-1>d;d++)b+=(9-d)*parseInt(a.charAt(d));return b%=11,10==b&&(b=0),b==a.charAt(c-1)},_ro:function(b){if(!/^[0-9]{13}$/.test(b))return!1;var c=parseInt(b.charAt(0));if(0==c||7==c||8==c)return!1;var d=parseInt(b.substr(1,2),10),e=parseInt(b.substr(3,2),10),f=parseInt(b.substr(5,2),10),g={1:1900,2:1900,3:1800,4:1800,5:2e3,6:2e3};if(f>31&&e>12)return!1;if(9!=c&&(d=g[c+""]+d,!a.fn.bootstrapValidator.helpers.date(d,e,f)))return!1;for(var h=0,i=[2,7,9,1,4,6,3,5,8,2,7,9],j=b.length,k=0;j-1>k;k++)h+=parseInt(b.charAt(k))*i[k]; -return h%=11,10==h&&(h=1),h==b.charAt(j-1)},_se:function(b){if(!/^[0-9]{10}$/.test(b)&&!/^[0-9]{6}[-|+][0-9]{4}$/.test(b))return!1;b=b.replace(/[^0-9]/g,"");var c=parseInt(b.substr(0,2))+1900,d=parseInt(b.substr(2,2)),e=parseInt(b.substr(4,2));return a.fn.bootstrapValidator.helpers.date(c,d,e)?a.fn.bootstrapValidator.helpers.luhn(b):!1},_sk:function(a){return this._cz(a)},_sm:function(a){return/^\d{5}$/.test(a)},_za:function(b){if(!/^[0-9]{10}[0|1][8|9][0-9]$/.test(b))return!1;var c=parseInt(b.substr(0,2)),d=(new Date).getFullYear()%100,e=parseInt(b.substr(2,2)),f=parseInt(b.substr(4,2));return c=c>=d?c+1900:c+2e3,a.fn.bootstrapValidator.helpers.date(c,e,f)?a.fn.bootstrapValidator.helpers.luhn(b):!1}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.identical={html5Attributes:{message:"message",field:"field"},validate:function(a,b,c){var d=b.val();if(""==d)return!0;var e=a.getFieldElements(c.field);return null==e?!0:d==e.val()?(a.updateStatus(c.field,a.STATUS_VALID,"identical"),!0):!1}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.imei={validate:function(b,c){var d=c.val();if(""==d)return!0;switch(!0){case/^\d{15}$/.test(d):case/^\d{2}-\d{6}-\d{6}-\d{1}$/.test(d):case/^\d{2}\s\d{6}\s\d{6}\s\d{1}$/.test(d):return d=d.replace(/[^0-9]/g,""),a.fn.bootstrapValidator.helpers.luhn(d);case/^\d{14}$/.test(d):case/^\d{16}$/.test(d):case/^\d{2}-\d{6}-\d{6}(|-\d{2})$/.test(d):case/^\d{2}\s\d{6}\s\d{6}(|\s\d{2})$/.test(d):return!0;default:return!1}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.integer={enableByHtml5:function(a){return"number"==a.attr("type")},validate:function(a,b){var c=b.val();return""==c?!0:/^(?:-?(?:0|[1-9][0-9]*))$/.test(c)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.ip={html5Attributes:{message:"message",ipv4:"ipv4",ipv6:"ipv6"},validate:function(b,c,d){var e=c.val();return""==e?!0:(d=a.extend({},{ipv4:!0,ipv6:!0},d),d.ipv4?/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(e):d.ipv6?/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/.test(str):!1)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.isbn={validate:function(a,b){var c=b.val();if(""==c)return!0;var d;switch(!0){case/^\d{9}[\dX]$/.test(c):case 13==c.length&&/^(\d+)-(\d+)-(\d+)-([\dX])$/.test(c):case 13==c.length&&/^(\d+)\s(\d+)\s(\d+)\s([\dX])$/.test(c):d="ISBN10";break;case/^(978|979)\d{9}[\dX]$/.test(c):case 17==c.length&&/^(978|979)-(\d+)-(\d+)-(\d+)-([\dX])$/.test(c):case 17==c.length&&/^(978|979)\s(\d+)\s(\d+)\s(\d+)\s([\dX])$/.test(c):d="ISBN13";break;default:return!1}c=c.replace(/[^0-9X]/gi,"");var e,f=c.split(""),g=f.length,h=0;switch(d){case"ISBN10":h=0;for(var i=0;g-1>i;i++)h+=(10-i)*parseInt(f[i]);return e=11-h%11,11==e?e=0:10==e&&(e="X"),e+""==f[g-1];case"ISBN13":h=0;for(var i=0;g-1>i;i++)h+=i%2==0?parseInt(f[i]):3*parseInt(f[i]);return e=10-h%10,10==e&&(e="0"),e+""==f[g-1];default:return!1}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.isin={COUNTRY_CODES:"AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW",validate:function(a,b){var c=b.val();if(""==c)return!0;c=c.toUpperCase();var d=new RegExp("^("+this.COUNTRY_CODES+")[0-9A-Z]{10}$");if(!d.test(c))return!1;for(var e="",f=c.length,g=0;f-1>g;g++){var h=c.charCodeAt(g);e+=h>57?(h-55).toString():c.charAt(g)}var i="",j=e.length,k=j%2!=0?0:1;for(g=0;j>g;g++)i+=parseInt(e[g])*(g%2==k?2:1)+"";var l=0;for(g=0;gh;h++)f+=parseInt(c.charAt(h))*g[h%2];return f=10-f%10,f==c.charAt(e-1)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.issn={validate:function(a,b){var c=b.val();if(""==c)return!0;if(!/^\d{4}\-\d{3}[\dX]$/.test(c))return!1;c=c.replace(/[^0-9X]/gi,"");var d=c.split(""),e=d.length,f=0;"X"==d[7]&&(d[7]=10);for(var g=0;e>g;g++)f+=(8-g)*parseInt(d[g]);return f%11==0}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.lessThan={html5Attributes:{message:"message",value:"value",inclusive:"inclusive"},enableByHtml5:function(a){var b=a.attr("max");return b?{value:b}:!1},validate:function(a,b,c){var d=b.val();return""==d?!0:(d=parseFloat(d),c.inclusive===!1?d<=c.value:d0:""!=a.trim(c.val())}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.numeric={html5Attributes:{message:"message",separator:"separator"},validate:function(a,b,c){var d=b.val();if(""==d)return!0;var e=c.separator||".";return"."!=e&&(d=d.replace(e,".")),!isNaN(parseFloat(d))&&isFinite(d)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.phone={html5Attributes:{message:"message",country:"country"},validate:function(a,b,c){var d=b.val();if(""==d)return!0;var e=(c.country||"US").toUpperCase();switch(e){case"US":default:return d=d.replace(/\D/g,""),/^(?:(1\-?)|(\+1 ?))?\(?(\d{3})[\)\-\.]?(\d{3})[\-\.]?(\d{4})$/.test(d)&&10==d.length}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.regexp={html5Attributes:{message:"message",regexp:"regexp"},enableByHtml5:function(a){var b=a.attr("pattern");return b?{regexp:b}:!1},validate:function(a,b,c){var d=b.val();if(""==d)return!0;var e="string"==typeof c.regexp?new RegExp(c.regexp):c.regexp;return e.test(d)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.remote={html5Attributes:{message:"message",url:"url",name:"name"},validate:function(b,c,d){var e=c.val();if(""==e)return!0;var f=c.attr("data-bv-field"),g=d.data;null==g&&(g={}),"function"==typeof g&&(g=g.call(this,b)),g[d.name||f]=e;var h=new a.Deferred,i=a.ajax({type:"POST",url:d.url,dataType:"json",data:g});return i.then(function(a){h.resolve(c,"remote",a.valid===!0||"true"===a.valid)}),h.fail(function(){i.abort()}),h}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.rtn={validate:function(a,b){var c=b.val();if(""==c)return!0;if(!/^\d{9}$/.test(c))return!1;for(var d=0,e=0;eg;g++)d+=e[g]*parseInt(c.charAt(g),36);return d=(10-d%10)%10,d==c.charAt(f-1)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.siren={validate:function(b,c){var d=c.val();return""==d?!0:/^\d{9}$/.test(d)?a.fn.bootstrapValidator.helpers.luhn(d):!1}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.siret={validate:function(a,b){var c=b.val();if(""==c)return!0;for(var d,e=0,f=c.length,g=0;f>g;g++)d=parseInt(c.charAt(g),10),g%2==0&&(d=2*d,d>9&&(d-=9)),e+=d;return e%10==0}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.step={html5Attributes:{message:"message",base:"baseValue",step:"step"},validate:function(b,c,d){var e=c.val();if(""==e)return!0;if(d=a.extend({},{baseValue:0,step:1},d),e=parseFloat(e),isNaN(e)||!isFinite(e))return!1;var f=function(a,b){var c=Math.pow(10,b);a*=c;var d=a>0|-(0>a),e=a%1===.5*d;return e?(Math.floor(a)+(d>0))/c:Math.round(a)/c},g=function(a,b){if(0==b)return 1;var c=(a+"").split("."),d=(b+"").split("."),e=(1==c.length?0:c[1].length)+(1==d.length?0:d[1].length);return f(a-b*Math.floor(a/b),e)},h=g(e-d.baseValue,d.step);return 0==h||h==d.step}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.stringCase={html5Attributes:{message:"message","case":"case"},validate:function(a,b,c){var d=b.val();if(""==d)return!0;var e=(c["case"]||"lower").toLowerCase();switch(e){case"upper":return d===d.toUpperCase();case"lower":default:return d===d.toLowerCase()}}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.stringLength={html5Attributes:{message:"message",min:"min",max:"max"},enableByHtml5:function(a){var b=a.attr("maxlength");return b?{max:parseInt(b,10)}:!1},validate:function(b,c,d){var e=c.val();if(""==e)return!0;var f=a.trim(e).length;return d.min&&fd.max?!1:!0}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.uri={enableByHtml5:function(a){return"url"==a.attr("type")},validate:function(a,b){var c=b.val();if(""==c)return!0;var d=new RegExp("^(?:(?:https?|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!192\\.168(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:/[^\\s]*)?$","i");return d.test(c)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.uuid={html5Attributes:{message:"message",version:"version"},validate:function(a,b,c){var d=b.val();if(""==d)return!0;var e={3:/^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,4:/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,5:/^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,all:/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i},f=c.version?c.version+"":"all";return null==e[f]?!0:e[f].test(d)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.vat={html5Attributes:{message:"message",country:"country"},validate:function(a,b,c){var d=b.val();if(""==d)return!0;var e=c.country||d.substr(0,2),f=["_",e.toLowerCase()].join("");return this[f]&&"function"==typeof this[f]?this[f](d):!0},_at:function(a){if(!/^ATU[0-9]{8}$/.test(a))return!1;a=a.substr(3);for(var b=0,c=[1,2,1,2,1,2,1],d=0,e=0;7>e;e++)d=parseInt(a.charAt(e))*c[e],d>9&&(d=Math.floor(d/10)+d%10),b+=d;return b=10-(b+4)%10,10==b&&(b=0),b==a.substr(7,1)},_be:function(a){if(!/^BE[0]{0,1}[0-9]{9}$/.test(a))return!1;if(a=a.substr(2),9==a.length&&(a="0"+a),0==a.substr(1,1))return!1;var b=parseInt(a.substr(0,8),10)+parseInt(a.substr(8,2),10);return b%97==0},_bg:function(b){if(!/^BG[0-9]{9,10}$/.test(b))return!1;b=b.substr(2);var c=0,d=0;if(9==b.length){for(d=0;8>d;d++)c+=parseInt(b.charAt(d))*(d+1);if(c%=11,10==c)for(c=0,d=0;8>d;d++)c+=parseInt(b.charAt(d))*(d+3);return c%=10,c==b.substr(8)}if(10==b.length){var e=function(b){var c=parseInt(b.substr(0,2),10)+1900,d=parseInt(b.substr(2,2),10),e=parseInt(b.substr(4,2),10);if(d>40?(c+=100,d-=40):d>20&&(c-=100,d-=20),!a.fn.bootstrapValidator.helpers.date(c,d,e))return!1;for(var f=0,g=[2,4,8,5,10,9,7,3,6],h=0;9>h;h++)f+=parseInt(b.charAt(h))*g[h];return f=f%11%10,f==b.substr(9,1)},f=function(a){for(var b=0,c=[21,19,17,13,11,9,7,3,1],d=0;9>d;d++)b+=parseInt(a.charAt(d))*c[d];return b%=10,b==a.substr(9,1)},g=function(a){for(var b=0,c=[4,3,2,7,6,5,4,3,2],d=0;9>d;d++)b+=parseInt(a.charAt(d))*c[d];return b=11-b%11,10==b?!1:(11==b&&(b=0),b==a.substr(9,1))};return e(b)||f(b)||g(b)}return!1},_ch:function(a){if(!/^CHE[0-9]{9}(MWST)?$/.test(a))return!1;a=a.substr(3);for(var b=0,c=[5,4,3,2,7,6,5,4],d=0;8>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b=11-b%11,10==b?!1:(11==b&&(b=0),b==a.substr(8,1))},_cy:function(a){if(!/^CY[0-5|9]{1}[0-9]{7}[A-Z]{1}$/.test(a))return!1;if(a=a.substr(2),"12"==a.substr(0,2))return!1;for(var b=0,c={0:1,1:0,2:5,3:7,4:9,5:13,6:15,7:17,8:19,9:21},d=0;8>d;d++){var e=parseInt(a.charAt(d),10);d%2==0&&(e=c[e+""]),b+=e}return b="ABCDEFGHIJKLMNOPQRSTUVWXYZ"[b%26],b==a.substr(8,1)},_cz:function(b){if(!/^CZ[0-9]{8,10}$/.test(b))return!1;b=b.substr(2);var c=0,d=0;if(8==b.length){if(b.charAt(0)+""=="9")return!1;for(c=0,d=0;7>d;d++)c+=parseInt(b.charAt(d),10)*(8-d);return c=11-c%11,10==c&&(c=0),11==c&&(c=1),c==b.substr(7,1)}if(9==b.length&&b.charAt(0)+""=="6"){for(c=0,d=0;7>d;d++)c+=parseInt(b.charAt(d+1),10)*(8-d);return c=11-c%11,10==c&&(c=0),11==c&&(c=1),c=[8,7,6,5,4,3,2,1,0,9,10][c-1],c==b.substr(8,1)}if(9==b.length||10==b.length){var e=1900+parseInt(b.substr(0,2)),f=parseInt(b.substr(2,2))%50%20,g=parseInt(b.substr(4,2));if(9==b.length){if(e>=1980&&(e-=100),e>1953)return!1}else 1954>e&&(e+=100);if(!a.fn.bootstrapValidator.helpers.date(e,f,g))return!1;if(10==b.length){var h=parseInt(b.substr(0,9),10)%11;return 1985>e&&(h%=10),h==b.substr(9,1)}return!0}return!1},_de:function(b){return/^DE[0-9]{9}$/.test(b)?(b=b.substr(2),a.fn.bootstrapValidator.helpers.mod_11_10(b)):!1},_dk:function(a){if(!/^DK[0-9]{8}$/.test(a))return!1;a=a.substr(2);for(var b=0,c=[2,7,6,5,4,3,2,1],d=0;8>d;d++)b+=parseInt(a.charAt(d),10)*c[d];return b%11==0},_ee:function(a){if(!/^EE[0-9]{9}$/.test(a))return!1;a=a.substr(2);for(var b=0,c=[3,7,1,3,7,1,3,7,1],d=0;9>d;d++)b+=parseInt(a.charAt(d))*c[d];return b%10==0},_es:function(a){if(!/^ES[0-9A-Z][0-9]{7}[0-9A-Z]$/.test(a))return!1;a=a.substr(2);var b=function(a){var b=parseInt(a.substr(0,8),10);return b="TRWAGMYFPDXBNJZSQVHLCKE"[b%23],b==a.substr(8,1)},c=function(a){var b=["XYZ".indexOf(a.charAt(0)),a.substr(1)].join("");return b=parseInt(b,10),b="TRWAGMYFPDXBNJZSQVHLCKE"[b%23],b==a.substr(8,1)},d=function(a){var b,c=a.charAt(0);if(-1!="KLM".indexOf(c))return b=parseInt(a.substr(1,8),10),b="TRWAGMYFPDXBNJZSQVHLCKE"[b%23],b==a.substr(8,1);if(-1!="ABCDEFGHJNPQRSUVW".indexOf(c)){for(var d=0,e=[2,1,2,1,2,1,2],f=0,g=0;7>g;g++)f=parseInt(a.charAt(g+1))*e[g],f>9&&(f=Math.floor(f/10)+f%10),d+=f;return d=10-d%10,d==a.substr(8,1)||"JABCDEFGHI"[d]==a.substr(8,1)}return!1},e=a.charAt(0);return/^[0-9]$/.test(e)?b(a):/^[XYZ]$/.test(e)?c(a):d(a)},_fi:function(a){if(!/^FI[0-9]{8}$/.test(a))return!1;a=a.substr(2);for(var b=0,c=[7,9,10,5,8,4,2,1],d=0;8>d;d++)b+=parseInt(a.charAt(d))*c[d];return b%11==0},_fr:function(b){if(!/^FR[0-9A-Z]{2}[0-9]{9}$/.test(b))return!1;if(b=b.substr(2),!a.fn.bootstrapValidator.helpers.luhn(b.substr(2)))return!1;if(/^[0-9]{2}$/.test(b.substr(0,2)))return b.substr(0,2)==parseInt(b.substr(2)+"12",10)%97;var c,d="0123456789ABCDEFGHJKLMNPQRSTUVWXYZ";return c=/^[0-9]{1}$/.test(b.charAt(0))?24*d.indexOf(b.charAt(0))+d.indexOf(b.charAt(1))-10:34*d.indexOf(b.charAt(0))+d.indexOf(b.charAt(1))-100,(parseInt(b.substr(2),10)+1+Math.floor(c/11))%11==c%11},_gb:function(a){if(!(/^GB[0-9]{9}$/.test(a)||/^GB[0-9]{12}$/.test(a)||/^GBGD[0-9]{3}$/.test(a)||/^GBHA[0-9]{3}$/.test(a)||/^GB(GD|HA)8888[0-9]{5}$/.test(a)))return!1;a=a.substr(2);var b=a.length;if(5==b){var c=a.substr(0,2),d=parseInt(a.substr(2));return"GD"==c&&500>d||"HA"==c&&d>=500}if(11==b&&("GD8888"==a.substr(0,6)||"HA8888"==a.substr(0,6)))return"GD"==a.substr(0,2)&&parseInt(a.substr(6,3))>=500||"HA"==a.substr(0,2)&&parseInt(a.substr(6,3))<500?!1:parseInt(a.substr(6,3))%97==parseInt(a.substr(9,2));if(9==b||12==b){for(var e=0,f=[8,7,6,5,4,3,2,10,1],g=0;9>g;g++)e+=parseInt(a.charAt(g))*f[g];return e%=97,parseInt(a.substr(0,3))>=100?0==e||42==e||55==e:0==e}return!0},_gr:function(a){if(!/^GR[0-9]{9}$/.test(a))return!1;a=a.substr(2),8==a.length&&(a="0"+a);for(var b=0,c=[256,128,64,32,16,8,4,2],d=0;8>d;d++)b+=parseInt(a.charAt(d))*c[d];return b=b%11%10,b==a.substr(8,1)},_el:function(a){return/^EL[0-9]{9}$/.test(a)?(a="GR"+a.substr(2),this._gr(a)):!1},_hu:function(a){if(!/^HU[0-9]{8}$/.test(a))return!1;a=a.substr(2);for(var b=0,c=[9,7,3,1,9,7,3,1],d=0;8>d;d++)b+=parseInt(a.charAt(d))*c[d];return b%10==0},_hr:function(b){return/^HR[0-9]{11}$/.test(b)?(b=b.substr(2),a.fn.bootstrapValidator.helpers.mod_11_10(b)):!1},_ie:function(a){if(!/^IE[0-9]{1}[0-9A-Z\*\+]{1}[0-9]{5}[A-Z]{1,2}$/.test(a))return!1;a=a.substr(2);var b=function(a){for(;a.length<7;)a="0"+a;for(var b="WABCDEFGHIJKLMNOPQRSTUV",c=0,d=0;7>d;d++)c+=parseInt(a.charAt(d))*(8-d);return c+=9*b.indexOf(a.substr(7)),b[c%23]};return/^[0-9]+$/.test(a.substr(0,7))?a.charAt(7)==b(a.substr(0,7)+a.substr(8)+""):-1!="ABCDEFGHIJKLMNOPQRSTUVWXYZ+*".indexOf(a.charAt(1))?a.charAt(7)==b(a.substr(2,5)+a.substr(0,1)+""):!0},_it:function(b){if(!/^IT[0-9]{11}$/.test(b))return!1;if(b=b.substr(2),0==parseInt(b.substr(0,7)))return!1;var c=parseInt(b.substr(7,3));return 1>c||c>201&&999!=c&&888!=c?!1:a.fn.bootstrapValidator.helpers.luhn(b)},_lt:function(a){if(!/^LT([0-9]{7}1[0-9]{1}|[0-9]{10}1[0-9]{1})$/.test(a))return!1;a=a.substr(2);for(var b=a.length,c=0,d=0;b-1>d;d++)c+=parseInt(a.charAt(d))*(1+d%9);var e=c%11;if(10==e){c=0;for(var d=0;b-1>d;d++)c+=parseInt(a.charAt(d))*(1+(d+2)%9)}return e=e%11%10,e==a.charAt(b-1)},_lu:function(a){return/^LU[0-9]{8}$/.test(a)?(a=a.substr(2),a.substr(0,6)%89==a.substr(6,2)):!1},_lv:function(b){if(!/^LV[0-9]{11}$/.test(b))return!1;b=b.substr(2);var c=parseInt(b.charAt(0)),d=0,e=[],f=0,g=b.length;if(c>3){for(d=0,e=[9,1,4,8,3,10,2,5,7,6,1],f=0;g>f;f++)d+=parseInt(b.charAt(f))*e[f];return d%=11,3==d}var h=parseInt(b.substr(0,2)),i=parseInt(b.substr(2,2)),j=parseInt(b.substr(4,2));if(j=j+1800+100*parseInt(b.charAt(6)),!a.fn.bootstrapValidator.helpers.date(j,i,h))return!1;for(d=0,e=[10,5,8,4,2,1,6,3,7,9],f=0;g-1>f;f++)d+=parseInt(b.charAt(f))*e[f];return d=(d+1)%11%10,d==b.charAt(g-1)},_mt:function(a){if(!/^MT[0-9]{8}$/.test(a))return!1;a=a.substr(2);for(var b=0,c=[3,4,6,7,8,9,10,1],d=0;8>d;d++)b+=parseInt(a.charAt(d))*c[d];return b%37==0},_nl:function(a){if(!/^NL[0-9]{9}B[0-9]{2}$/.test(a))return!1;a=a.substr(2);for(var b=0,c=[9,8,7,6,5,4,3,2],d=0;8>d;d++)b+=parseInt(a.charAt(d))*c[d];return b%=11,b>9&&(b=0),b==a.substr(8,1)},_no:function(a){if(!/^NO[0-9]{9}$/.test(a))return!1;a=a.substr(2);for(var b=0,c=[3,2,7,6,5,4,3,2],d=0;8>d;d++)b+=parseInt(a.charAt(d))*c[d];return b=11-b%11,11==b&&(b=0),b==a.substr(8,1)},_pl:function(a){if(!/^PL[0-9]{10}$/.test(a))return!1;a=a.substr(2);for(var b=0,c=[6,5,7,2,3,4,5,6,7,-1],d=0;10>d;d++)b+=parseInt(a.charAt(d))*c[d];return b%11==0},_pt:function(a){if(!/^PT[0-9]{9}$/.test(a))return!1;a=a.substr(2);for(var b=0,c=[9,8,7,6,5,4,3,2],d=0;8>d;d++)b+=parseInt(a.charAt(d))*c[d];return b=11-b%11,b>9&&(b=0),b==a.substr(8,1)},_ro:function(a){if(!/^RO[1-9][0-9]{1,9}$/.test(a))return!1;a=a.substr(2);for(var b=a.length,c=[7,5,3,2,1,7,5,3,2].slice(10-b),d=0,e=0;b-1>e;e++)d+=parseInt(a.charAt(e))*c[e];return d=10*d%11%10,d==a.substr(b-1,1)},_ru:function(a){if(!/^RU([0-9]{9}|[0-9]{12})$/.test(a))return!1;if(a=a.substr(2),10==a.length){for(var b=0,c=[2,4,10,3,5,9,4,6,8,0],d=0;10>d;d++)b+=parseInt(a.charAt(d))*c[d];return b%=11,b>9&&(b%=10),b==a.substr(9,1)}if(12==a.length){for(var e=0,f=[7,2,4,10,3,5,9,4,6,8,0],g=0,h=[3,7,2,4,10,3,5,9,4,6,8,0],d=0;11>d;d++)e+=parseInt(a.charAt(d))*f[d],g+=parseInt(a.charAt(d))*h[d];return e%=11,e>9&&(e%=10),g%=11,g>9&&(g%=10),e==a.substr(10,1)&&g==a.substr(11,1)}return!1},_rs:function(a){if(!/^RS[0-9]{9}$/.test(a))return!1;a=a.substr(2);for(var b=10,c=0,d=0;8>d;d++)c=(parseInt(a.charAt(d))+b)%10,0==c&&(c=10),b=2*c%11;return(b+parseInt(a.substr(8,1)))%10==1},_se:function(b){return/^SE[0-9]{10}01$/.test(b)?(b=b.substr(2,10),a.fn.bootstrapValidator.helpers.luhn(b)):!1},_si:function(a){if(!/^SI[0-9]{8}$/.test(a))return!1;a=a.substr(2);for(var b=0,c=[8,7,6,5,4,3,2],d=0;7>d;d++)b+=parseInt(a.charAt(d))*c[d];return b=11-b%11,10==b&&(b=0),b==a.substr(7,1)},_sk:function(a){return/^SK[1-9][0-9][(2-4)|(6-9)][0-9]{7}$/.test(a)?(a=a.substr(2),a%11==0):!1}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.vin={validate:function(a,b){var c=b.val();if(""==c)return!0;if(!/^[a-hj-npr-z0-9]{8}[0-9xX][a-hj-npr-z0-9]{8}$/i.test(c))return!1;c=c.toUpperCase();for(var d={A:1,B:2,C:3,D:4,E:5,F:6,G:7,H:8,J:1,K:2,L:3,M:4,N:5,P:7,R:9,S:2,T:3,U:4,V:5,W:6,X:7,Y:8,Z:9,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,0:0},e=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2],f=0,g=c.length,h=0;g>h;h++)f+=d[c.charAt(h)+""]*e[h];var i=f%11;return 10==i&&(i="X"),i==c.charAt(8)}}}(window.jQuery),function(a){a.fn.bootstrapValidator.validators.zipCode={html5Attributes:{message:"message",country:"country"},validate:function(a,b,c){var d=b.val();if(""==d||!c.country)return!0;var e=(c.country||"US").toUpperCase();switch(e){case"CA":return/(?:A|B|C|E|G|J|K|L|M|N|P|R|S|T|V|X|Y){1}[0-9]{1}(?:A|B|C|E|G|J|K|L|M|N|P|R|S|T|V|X|Y){1}\s?[0-9]{1}(?:A|B|C|E|G|J|K|L|M|N|P|R|S|T|V|X|Y){1}[0-9]{1}/i.test(d);case"DK":return/^(DK(-|\s)?)?\d{4}$/i.test(d);case"GB":return this._gb(d);case"IT":return/^(I-|IT-)?\d{5}$/i.test(d);case"NL":return/^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{2}$/i.test(d);case"SE":return/^(S-)?\d{3}\s?\d{2}$/i.test(d);case"US":default:return/^\d{4,5}([\-]\d{4})?$/.test(d)}},_gb:function(a){for(var b="[ABCDEFGHIJKLMNOPRSTUWYZ]",c="[ABCDEFGHKLMNOPQRSTUVWXY]",d="[ABCDEFGHJKPMNRSTUVWXY]",e="[ABEHMNPRVWXY]",f="[ABDEFGHJLNPQRSTUWXYZ]",g=[new RegExp("^("+b+"{1}"+c+"?[0-9]{1,2})(\\s*)([0-9]{1}"+f+"{2})$","i"),new RegExp("^("+b+"{1}[0-9]{1}"+d+"{1})(\\s*)([0-9]{1}"+f+"{2})$","i"),new RegExp("^("+b+"{1}"+c+"{1}?[0-9]{1}"+e+"{1})(\\s*)([0-9]{1}"+f+"{2})$","i"),new RegExp("^(BF1)(\\s*)([0-6]{1}[ABDEFGHJLNPQRST]{1}[ABDEFGHJLNPQRSTUWZYZ]{1})$","i"),/^(GIR)(\s*)(0AA)$/i,/^(BFPO)(\s*)([0-9]{1,4})$/i,/^(BFPO)(\s*)(c\/o\s*[0-9]{1,3})$/i,/^([A-Z]{4})(\s*)(1ZZ)$/i,/^(AI-2640)$/i],h=0;h div { - display: none; -} -.datepicker.days div.datepicker-days { - display: block; -} -.datepicker.months div.datepicker-months { - display: block; -} -.datepicker.years div.datepicker-years { - display: block; -} -.datepicker table { - margin: 0; -} -.datepicker td, -.datepicker th { - text-align: center; - width: 20px; - height: 20px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - border: none; -} -.table-striped .datepicker table tr td, -.table-striped .datepicker table tr th { - background-color: transparent; -} -.datepicker table tr td.day:hover { - background: #eeeeee; - cursor: pointer; -} -.datepicker table tr td.old, -.datepicker table tr td.new { - color: #999999; -} -.datepicker table tr td.disabled, -.datepicker table tr td.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datepicker table tr td.today, -.datepicker table tr td.today:hover, -.datepicker table tr td.today.disabled, -.datepicker table tr td.today.disabled:hover { - background-color: #fde19a; - background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a)); - background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a); - background-image: -o-linear-gradient(top, #fdd49a, #fdf59a); - background-image: linear-gradient(top, #fdd49a, #fdf59a); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0); - border-color: #fdf59a #fdf59a #fbed50; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - color: #000; -} -.datepicker table tr td.today:hover, -.datepicker table tr td.today:hover:hover, -.datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today.disabled:hover:hover, -.datepicker table tr td.today:active, -.datepicker table tr td.today:hover:active, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.active, -.datepicker table tr td.today:hover.active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today.disabled:hover.active, -.datepicker table tr td.today.disabled, -.datepicker table tr td.today:hover.disabled, -.datepicker table tr td.today.disabled.disabled, -.datepicker table tr td.today.disabled:hover.disabled, -.datepicker table tr td.today[disabled], -.datepicker table tr td.today:hover[disabled], -.datepicker table tr td.today.disabled[disabled], -.datepicker table tr td.today.disabled:hover[disabled] { - background-color: #fdf59a; -} -.datepicker table tr td.today:active, -.datepicker table tr td.today:hover:active, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.active, -.datepicker table tr td.today:hover.active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today.disabled:hover.active { - background-color: #fbf069 \9; -} -.datepicker table tr td.today:hover:hover { - color: #000; -} -.datepicker table tr td.today.active:hover { - color: #fff; -} -.datepicker table tr td.range, -.datepicker table tr td.range:hover, -.datepicker table tr td.range.disabled, -.datepicker table tr td.range.disabled:hover { - background: #eeeeee; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.datepicker table tr td.range.today, -.datepicker table tr td.range.today:hover, -.datepicker table tr td.range.today.disabled, -.datepicker table tr td.range.today.disabled:hover { - background-color: #f3d17a; - background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a); - background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a)); - background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a); - background-image: -o-linear-gradient(top, #f3c17a, #f3e97a); - background-image: linear-gradient(top, #f3c17a, #f3e97a); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0); - border-color: #f3e97a #f3e97a #edde34; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.datepicker table tr td.range.today:hover, -.datepicker table tr td.range.today:hover:hover, -.datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today.disabled:hover:hover, -.datepicker table tr td.range.today:active, -.datepicker table tr td.range.today:hover:active, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.active, -.datepicker table tr td.range.today:hover.active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today.disabled:hover.active, -.datepicker table tr td.range.today.disabled, -.datepicker table tr td.range.today:hover.disabled, -.datepicker table tr td.range.today.disabled.disabled, -.datepicker table tr td.range.today.disabled:hover.disabled, -.datepicker table tr td.range.today[disabled], -.datepicker table tr td.range.today:hover[disabled], -.datepicker table tr td.range.today.disabled[disabled], -.datepicker table tr td.range.today.disabled:hover[disabled] { - background-color: #f3e97a; -} -.datepicker table tr td.range.today:active, -.datepicker table tr td.range.today:hover:active, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.active, -.datepicker table tr td.range.today:hover.active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today.disabled:hover.active { - background-color: #efe24b \9; -} -.datepicker table tr td.selected, -.datepicker table tr td.selected:hover, -.datepicker table tr td.selected.disabled, -.datepicker table tr td.selected.disabled:hover { - background-color: #9e9e9e; - background-image: -moz-linear-gradient(top, #b3b3b3, #808080); - background-image: -ms-linear-gradient(top, #b3b3b3, #808080); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080)); - background-image: -webkit-linear-gradient(top, #b3b3b3, #808080); - background-image: -o-linear-gradient(top, #b3b3b3, #808080); - background-image: linear-gradient(top, #b3b3b3, #808080); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0); - border-color: #808080 #808080 #595959; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td.selected:hover, -.datepicker table tr td.selected:hover:hover, -.datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected.disabled:hover:hover, -.datepicker table tr td.selected:active, -.datepicker table tr td.selected:hover:active, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.active, -.datepicker table tr td.selected:hover.active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected.disabled:hover.active, -.datepicker table tr td.selected.disabled, -.datepicker table tr td.selected:hover.disabled, -.datepicker table tr td.selected.disabled.disabled, -.datepicker table tr td.selected.disabled:hover.disabled, -.datepicker table tr td.selected[disabled], -.datepicker table tr td.selected:hover[disabled], -.datepicker table tr td.selected.disabled[disabled], -.datepicker table tr td.selected.disabled:hover[disabled] { - background-color: #808080; -} -.datepicker table tr td.selected:active, -.datepicker table tr td.selected:hover:active, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.active, -.datepicker table tr td.selected:hover.active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected.disabled:hover.active { - background-color: #666666 \9; -} -.datepicker table tr td.active, -.datepicker table tr td.active:hover, -.datepicker table tr td.active.disabled, -.datepicker table tr td.active.disabled:hover { - background-color: #006dcc; - background-image: -moz-linear-gradient(top, #0088cc, #0044cc); - background-image: -ms-linear-gradient(top, #0088cc, #0044cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); - background-image: -o-linear-gradient(top, #0088cc, #0044cc); - background-image: linear-gradient(top, #0088cc, #0044cc); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); - border-color: #0044cc #0044cc #002a80; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td.active:hover, -.datepicker table tr td.active:hover:hover, -.datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active.disabled:hover:hover, -.datepicker table tr td.active:active, -.datepicker table tr td.active:hover:active, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.active, -.datepicker table tr td.active:hover.active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active.disabled:hover.active, -.datepicker table tr td.active.disabled, -.datepicker table tr td.active:hover.disabled, -.datepicker table tr td.active.disabled.disabled, -.datepicker table tr td.active.disabled:hover.disabled, -.datepicker table tr td.active[disabled], -.datepicker table tr td.active:hover[disabled], -.datepicker table tr td.active.disabled[disabled], -.datepicker table tr td.active.disabled:hover[disabled] { - background-color: #0044cc; -} -.datepicker table tr td.active:active, -.datepicker table tr td.active:hover:active, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.active, -.datepicker table tr td.active:hover.active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active.disabled:hover.active { - background-color: #003399 \9; -} -.datepicker table tr td span { - display: block; - width: 23%; - height: 54px; - line-height: 54px; - float: left; - margin: 1%; - cursor: pointer; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.datepicker table tr td span:hover { - background: #eeeeee; -} -.datepicker table tr td span.disabled, -.datepicker table tr td span.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datepicker table tr td span.active, -.datepicker table tr td span.active:hover, -.datepicker table tr td span.active.disabled, -.datepicker table tr td span.active.disabled:hover { - background-color: #006dcc; - background-image: -moz-linear-gradient(top, #0088cc, #0044cc); - background-image: -ms-linear-gradient(top, #0088cc, #0044cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); - background-image: -o-linear-gradient(top, #0088cc, #0044cc); - background-image: linear-gradient(top, #0088cc, #0044cc); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); - border-color: #0044cc #0044cc #002a80; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); - color: #fff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td span.active:hover, -.datepicker table tr td span.active:hover:hover, -.datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active.disabled:hover:hover, -.datepicker table tr td span.active:active, -.datepicker table tr td span.active:hover:active, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.active, -.datepicker table tr td span.active:hover.active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active.disabled:hover.active, -.datepicker table tr td span.active.disabled, -.datepicker table tr td span.active:hover.disabled, -.datepicker table tr td span.active.disabled.disabled, -.datepicker table tr td span.active.disabled:hover.disabled, -.datepicker table tr td span.active[disabled], -.datepicker table tr td span.active:hover[disabled], -.datepicker table tr td span.active.disabled[disabled], -.datepicker table tr td span.active.disabled:hover[disabled] { - background-color: #0044cc; -} -.datepicker table tr td span.active:active, -.datepicker table tr td span.active:hover:active, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.active, -.datepicker table tr td span.active:hover.active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active.disabled:hover.active { - background-color: #003399 \9; -} -.datepicker table tr td span.old, -.datepicker table tr td span.new { - color: #999999; -} -.datepicker th.datepicker-switch { - width: 145px; -} -.datepicker thead tr:first-child th, -.datepicker tfoot tr th { - cursor: pointer; -} -.datepicker thead tr:first-child th:hover, -.datepicker tfoot tr th:hover { - background: #eeeeee; -} -.datepicker .cw { - font-size: 10px; - width: 12px; - padding: 0 2px 0 5px; - vertical-align: middle; -} -.datepicker thead tr:first-child th.cw { - cursor: default; - background-color: transparent; -} -.input-append.date .add-on i, -.input-prepend.date .add-on i { - display: block; - cursor: pointer; - width: 16px; - height: 16px; -} -.input-daterange input { - text-align: center; -} -.input-daterange input:first-child { - -webkit-border-radius: 3px 0 0 3px; - -moz-border-radius: 3px 0 0 3px; - border-radius: 3px 0 0 3px; -} -.input-daterange input:last-child { - -webkit-border-radius: 0 3px 3px 0; - -moz-border-radius: 0 3px 3px 0; - border-radius: 0 3px 3px 0; -} -.input-daterange .add-on { - display: inline-block; - width: auto; - min-width: 16px; - height: 18px; - padding: 4px 5px; - font-weight: normal; - line-height: 18px; - text-align: center; - text-shadow: 0 1px 0 #ffffff; - vertical-align: middle; - background-color: #eeeeee; - border: 1px solid #ccc; - margin-left: -5px; - margin-right: -5px; -} diff --git a/app/assets/javascripts/admin/libs/bootstrap-xeditable/demo/demo-mock.js b/app/assets/javascripts/admin/libs/bootstrap-xeditable/demo/demo-mock.js deleted file mode 100644 index 2680a43e3..000000000 --- a/app/assets/javascripts/admin/libs/bootstrap-xeditable/demo/demo-mock.js +++ /dev/null @@ -1,76 +0,0 @@ -$(function(){ - //ajax mocks - $.mockjaxSettings.responseTime = 500; - - $.mockjax({ - url: '/post', - response: function(settings) { - log(settings, this); - } - }); - - $.mockjax({ - url: '/error', - status: 400, - statusText: 'Bad Request', - response: function(settings) { - this.responseText = 'Please input correct value'; - log(settings, this); - } - }); - - $.mockjax({ - url: '/status', - status: 500, - response: function(settings) { - this.responseText = 'Internal Server Error'; - log(settings, this); - } - }); - - $.mockjax({ - url: '/groups', - response: function(settings) { - this.responseText = [ - {value: 0, text: 'Guest'}, - {value: 1, text: 'Service'}, - {value: 2, text: 'Customer'}, - {value: 3, text: 'Operator'}, - {value: 4, text: 'Support'}, - {value: 5, text: 'Admin'} - ]; - log(settings, this); - } - }); - - function log(settings, response) { - var s = [], str; - s.push(settings.type.toUpperCase() + ' url = "' + settings.url + '"'); - for(var a in settings.data) { - if(settings.data[a] && typeof settings.data[a] === 'object') { - str = []; - for(var j in settings.data[a]) {str.push(j+': "'+settings.data[a][j]+'"');} - str = '{ '+str.join(', ')+' }'; - } else { - str = '"'+settings.data[a]+'"'; - } - s.push(a + ' = ' + str); - } - s.push('RESPONSE: status = ' + response.status); - - if(response.responseText) { - if($.isArray(response.responseText)) { - s.push('['); - $.each(response.responseText, function(i, v){ - s.push('{value: ' + v.value+', text: "'+v.text+'"}'); - }); - s.push(']'); - } else { - s.push($.trim(response.responseText)); - } - } - s.push('--------------------------------------\n'); - $('#console').val(s.join('\n') + $('#console').val()); - } - -}); \ No newline at end of file diff --git a/app/assets/javascripts/admin/libs/bootstrap-xeditable/demo/jquery.mockjax.js b/app/assets/javascripts/admin/libs/bootstrap-xeditable/demo/jquery.mockjax.js deleted file mode 100644 index 549b6e037..000000000 --- a/app/assets/javascripts/admin/libs/bootstrap-xeditable/demo/jquery.mockjax.js +++ /dev/null @@ -1,521 +0,0 @@ -/*! - * MockJax - jQuery Plugin to Mock Ajax requests - * - * Version: 1.5.0pre - * Released: - * Home: http://github.com/appendto/jquery-mockjax - * Author: Jonathan Sharp (http://jdsharp.com) - * License: MIT,GPL - * - * Copyright (c) 2011 appendTo LLC. - * Dual licensed under the MIT or GPL licenses. - * http://appendto.com/open-source-licenses - */ -(function($) { - var _ajax = $.ajax, - mockHandlers = [], - CALLBACK_REGEX = /=\?(&|$)/, - jsc = (new Date()).getTime(); - - - // Parse the given XML string. - function parseXML(xml) { - if ( window['DOMParser'] == undefined && window.ActiveXObject ) { - DOMParser = function() { }; - DOMParser.prototype.parseFromString = function( xmlString ) { - var doc = new ActiveXObject('Microsoft.XMLDOM'); - doc.async = 'false'; - doc.loadXML( xmlString ); - return doc; - }; - } - - try { - var xmlDoc = ( new DOMParser() ).parseFromString( xml, 'text/xml' ); - if ( $.isXMLDoc( xmlDoc ) ) { - var err = $('parsererror', xmlDoc); - if ( err.length == 1 ) { - throw('Error: ' + $(xmlDoc).text() ); - } - } else { - throw('Unable to parse XML'); - } - } catch( e ) { - var msg = ( e.name == undefined ? e : e.name + ': ' + e.message ); - $(document).trigger('xmlParseError', [ msg ]); - return undefined; - } - return xmlDoc; - } - - // Trigger a jQuery event - function trigger(s, type, args) { - (s.context ? jQuery(s.context) : jQuery.event).trigger(type, args); - } - - // Check if the data field on the mock handler and the request match. This - // can be used to restrict a mock handler to being used only when a certain - // set of data is passed to it. - function isMockDataEqual( mock, live ) { - var identical = false; - // Test for situations where the data is a querystring (not an object) - if (typeof live === 'string') { - // Querystring may be a regex - return $.isFunction( mock.test ) ? mock.test(live) : mock == live; - } - $.each(mock, function(k, v) { - if ( live[k] === undefined ) { - identical = false; - return identical; - } else { - identical = true; - if ( typeof live[k] == 'object' ) { - return isMockDataEqual(mock[k], live[k]); - } else { - if ( $.isFunction( mock[k].test ) ) { - identical = mock[k].test(live[k]); - } else { - identical = ( mock[k] == live[k] ); - } - return identical; - } - } - }); - - return identical; - } - - // Check the given handler should mock the given request - function getMockForRequest( handler, requestSettings ) { - // If the mock was registered with a function, let the function decide if we - // want to mock this request - if ( $.isFunction(handler) ) { - return handler( requestSettings ); - } - - // Inspect the URL of the request and check if the mock handler's url - // matches the url for this ajax request - if ( $.isFunction(handler.url.test) ) { - // The user provided a regex for the url, test it - if ( !handler.url.test( requestSettings.url ) ) { - return null; - } - } else { - // Look for a simple wildcard '*' or a direct URL match - var star = handler.url.indexOf('*'); - if (handler.url !== requestSettings.url && star === -1 || - !new RegExp(handler.url.replace(/[-[\]{}()+?.,\\^$|#\s]/g, "\\$&").replace('*', '.+')).test(requestSettings.url)) { - return null; - } - } - - // Inspect the data submitted in the request (either POST body or GET query string) - if ( handler.data && requestSettings.data ) { - if ( !isMockDataEqual(handler.data, requestSettings.data) ) { - // They're not identical, do not mock this request - return null; - } - } - // Inspect the request type - if ( handler && handler.type && - handler.type.toLowerCase() != requestSettings.type.toLowerCase() ) { - // The request type doesn't match (GET vs. POST) - return null; - } - - return handler; - } - - // If logging is enabled, log the mock to the console - function logMock( mockHandler, requestSettings ) { - var c = $.extend({}, $.mockjaxSettings, mockHandler); - if ( c.log && $.isFunction(c.log) ) { - c.log('MOCK ' + requestSettings.type.toUpperCase() + ': ' + requestSettings.url, $.extend({}, requestSettings)); - } - } - - // Process the xhr objects send operation - function _xhrSend(mockHandler, requestSettings, origSettings) { - - // This is a substitute for < 1.4 which lacks $.proxy - var process = (function(that) { - return function() { - return (function() { - // The request has returned - this.status = mockHandler.status; - this.statusText = mockHandler.statusText; - this.readyState = 4; - - // We have an executable function, call it to give - // the mock handler a chance to update it's data - if ( $.isFunction(mockHandler.response) ) { - mockHandler.response(origSettings); - } - // Copy over our mock to our xhr object before passing control back to - // jQuery's onreadystatechange callback - if ( requestSettings.dataType == 'json' && ( typeof mockHandler.responseText == 'object' ) ) { - this.responseText = JSON.stringify(mockHandler.responseText); - } else if ( requestSettings.dataType == 'xml' ) { - if ( typeof mockHandler.responseXML == 'string' ) { - this.responseXML = parseXML(mockHandler.responseXML); - } else { - this.responseXML = mockHandler.responseXML; - } - } else { - this.responseText = mockHandler.responseText; - } - if( typeof mockHandler.status == 'number' || typeof mockHandler.status == 'string' ) { - this.status = mockHandler.status; - } - if( typeof mockHandler.statusText === "string") { - this.statusText = mockHandler.statusText; - } - // jQuery < 1.4 doesn't have onreadystate change for xhr - if ( $.isFunction(this.onreadystatechange) ) { - if( mockHandler.isTimeout) { - this.status = -1; - } - this.onreadystatechange( mockHandler.isTimeout ? 'timeout' : undefined ); - } else if ( mockHandler.isTimeout ) { - // Fix for 1.3.2 timeout to keep success from firing. - this.status = -1; - } - }).apply(that); - }; - })(this); - - if ( mockHandler.proxy ) { - // We're proxying this request and loading in an external file instead - _ajax({ - global: false, - url: mockHandler.proxy, - type: mockHandler.proxyType, - data: mockHandler.data, - dataType: requestSettings.dataType === "script" ? "text/plain" : requestSettings.dataType, - complete: function(xhr, txt) { - mockHandler.responseXML = xhr.responseXML; - mockHandler.responseText = xhr.responseText; - mockHandler.status = xhr.status; - mockHandler.statusText = xhr.statusText; - this.responseTimer = setTimeout(process, mockHandler.responseTime || 0); - } - }); - } else { - // type == 'POST' || 'GET' || 'DELETE' - if ( requestSettings.async === false ) { - // TODO: Blocking delay - process(); - } else { - this.responseTimer = setTimeout(process, mockHandler.responseTime || 50); - } - } - } - - // Construct a mocked XHR Object - function xhr(mockHandler, requestSettings, origSettings, origHandler) { - // Extend with our default mockjax settings - mockHandler = $.extend({}, $.mockjaxSettings, mockHandler); - - if (typeof mockHandler.headers === 'undefined') { - mockHandler.headers = {}; - } - if ( mockHandler.contentType ) { - mockHandler.headers['content-type'] = mockHandler.contentType; - } - - return { - status: mockHandler.status, - statusText: mockHandler.statusText, - readyState: 1, - open: function() { }, - send: function() { - origHandler.fired = true; - _xhrSend.call(this, mockHandler, requestSettings, origSettings); - }, - abort: function() { - clearTimeout(this.responseTimer); - }, - setRequestHeader: function(header, value) { - mockHandler.headers[header] = value; - }, - getResponseHeader: function(header) { - // 'Last-modified', 'Etag', 'content-type' are all checked by jQuery - if ( mockHandler.headers && mockHandler.headers[header] ) { - // Return arbitrary headers - return mockHandler.headers[header]; - } else if ( header.toLowerCase() == 'last-modified' ) { - return mockHandler.lastModified || (new Date()).toString(); - } else if ( header.toLowerCase() == 'etag' ) { - return mockHandler.etag || ''; - } else if ( header.toLowerCase() == 'content-type' ) { - return mockHandler.contentType || 'text/plain'; - } - }, - getAllResponseHeaders: function() { - var headers = ''; - $.each(mockHandler.headers, function(k, v) { - headers += k + ': ' + v + "\n"; - }); - return headers; - } - }; - } - - // Process a JSONP mock request. - function processJsonpMock( requestSettings, mockHandler, origSettings ) { - // Handle JSONP Parameter Callbacks, we need to replicate some of the jQuery core here - // because there isn't an easy hook for the cross domain script tag of jsonp - - processJsonpUrl( requestSettings ); - - requestSettings.dataType = "json"; - if(requestSettings.data && CALLBACK_REGEX.test(requestSettings.data) || CALLBACK_REGEX.test(requestSettings.url)) { - createJsonpCallback(requestSettings, mockHandler); - - // We need to make sure - // that a JSONP style response is executed properly - - var rurl = /^(\w+:)?\/\/([^\/?#]+)/, - parts = rurl.exec( requestSettings.url ), - remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host); - - requestSettings.dataType = "script"; - if(requestSettings.type.toUpperCase() === "GET" && remote ) { - var newMockReturn = processJsonpRequest( requestSettings, mockHandler, origSettings ); - - // Check if we are supposed to return a Deferred back to the mock call, or just - // signal success - if(newMockReturn) { - return newMockReturn; - } else { - return true; - } - } - } - return null; - } - - // Append the required callback parameter to the end of the request URL, for a JSONP request - function processJsonpUrl( requestSettings ) { - if ( requestSettings.type.toUpperCase() === "GET" ) { - if ( !CALLBACK_REGEX.test( requestSettings.url ) ) { - requestSettings.url += (/\?/.test( requestSettings.url ) ? "&" : "?") + - (requestSettings.jsonp || "callback") + "=?"; - } - } else if ( !requestSettings.data || !CALLBACK_REGEX.test(requestSettings.data) ) { - requestSettings.data = (requestSettings.data ? requestSettings.data + "&" : "") + (requestSettings.jsonp || "callback") + "=?"; - } - } - - // Process a JSONP request by evaluating the mocked response text - function processJsonpRequest( requestSettings, mockHandler, origSettings ) { - // Synthesize the mock request for adding a script tag - var callbackContext = origSettings && origSettings.context || requestSettings, - newMock = null; - - - // If the response handler on the moock is a function, call it - if ( mockHandler.response && $.isFunction(mockHandler.response) ) { - mockHandler.response(origSettings); - } else { - - // Evaluate the responseText javascript in a global context - if( typeof mockHandler.responseText === 'object' ) { - $.globalEval( '(' + JSON.stringify( mockHandler.responseText ) + ')'); - } else { - $.globalEval( '(' + mockHandler.responseText + ')'); - } - } - - // Successful response - jsonpSuccess( requestSettings, mockHandler ); - jsonpComplete( requestSettings, mockHandler ); - - // If we are running under jQuery 1.5+, return a deferred object - if(jQuery.Deferred){ - newMock = new jQuery.Deferred(); - if(typeof mockHandler.responseText == "object"){ - newMock.resolve( mockHandler.responseText ); - } - else{ - newMock.resolve( jQuery.parseJSON( mockHandler.responseText ) ); - } - } - return newMock; - } - - - // Create the required JSONP callback function for the request - function createJsonpCallback( requestSettings, mockHandler ) { - jsonp = requestSettings.jsonpCallback || ("jsonp" + jsc++); - - // Replace the =? sequence both in the query string and the data - if ( requestSettings.data ) { - requestSettings.data = (requestSettings.data + "").replace(CALLBACK_REGEX, "=" + jsonp + "$1"); - } - - requestSettings.url = requestSettings.url.replace(CALLBACK_REGEX, "=" + jsonp + "$1"); - - - // Handle JSONP-style loading - window[ jsonp ] = window[ jsonp ] || function( tmp ) { - data = tmp; - jsonpSuccess( requestSettings, mockHandler ); - jsonpComplete( requestSettings, mockHandler ); - // Garbage collect - window[ jsonp ] = undefined; - - try { - delete window[ jsonp ]; - } catch(e) {} - - if ( head ) { - head.removeChild( script ); - } - }; - } - - // The JSONP request was successful - function jsonpSuccess(requestSettings, mockHandler) { - // If a local callback was specified, fire it and pass it the data - if ( requestSettings.success ) { - requestSettings.success.call( callbackContext, ( mockHandler.response ? mockHandler.response.toString() : mockHandler.responseText || ''), status, {} ); - } - - // Fire the global callback - if ( requestSettings.global ) { - trigger(requestSettings, "ajaxSuccess", [{}, requestSettings] ); - } - } - - // The JSONP request was completed - function jsonpComplete(requestSettings, mockHandler) { - // Process result - if ( requestSettings.complete ) { - requestSettings.complete.call( callbackContext, {} , status ); - } - - // The request was completed - if ( requestSettings.global ) { - trigger( "ajaxComplete", [{}, requestSettings] ); - } - - // Handle the global AJAX counter - if ( requestSettings.global && ! --jQuery.active ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - - - // The core $.ajax replacement. - function handleAjax( url, origSettings ) { - var mockRequest, requestSettings, mockHandler; - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - origSettings = url; - url = undefined; - } else { - // work around to support 1.5 signature - origSettings.url = url; - } - - // Extend the original settings for the request - requestSettings = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings); - - // Iterate over our mock handlers (in registration order) until we find - // one that is willing to intercept the request - for(var k = 0; k < mockHandlers.length; k++) { - if ( !mockHandlers[k] ) { - continue; - } - - mockHandler = getMockForRequest( mockHandlers[k], requestSettings ); - if(!mockHandler) { - // No valid mock found for this request - continue; - } - - // Handle console logging - logMock( mockHandler, requestSettings ); - - - if ( requestSettings.dataType === "jsonp" ) { - if ((mockRequest = processJsonpMock( requestSettings, mockHandler, origSettings ))) { - // This mock will handle the JSONP request - return mockRequest; - } - } - - - // Removed to fix #54 - keep the mocking data object intact - //mockHandler.data = requestSettings.data; - - mockHandler.cache = requestSettings.cache; - mockHandler.timeout = requestSettings.timeout; - mockHandler.global = requestSettings.global; - - (function(mockHandler, requestSettings, origSettings, origHandler) { - mockRequest = _ajax.call($, $.extend(true, {}, origSettings, { - // Mock the XHR object - xhr: function() { return xhr( mockHandler, requestSettings, origSettings, origHandler ) } - })); - })(mockHandler, requestSettings, origSettings, mockHandlers[k]); - - return mockRequest; - } - - // We don't have a mock request, trigger a normal request - return _ajax.apply($, [origSettings]); - } - - - // Public - - $.extend({ - ajax: handleAjax - }); - - $.mockjaxSettings = { - //url: null, - //type: 'GET', - log: function(msg) { - window['console'] && window.console.log && window.console.log(msg); - }, - status: 200, - statusText: "OK", - responseTime: 500, - isTimeout: false, - contentType: 'text/plain', - response: '', - responseText: '', - responseXML: '', - proxy: '', - proxyType: 'GET', - - lastModified: null, - etag: '', - headers: { - etag: 'IJF@H#@923uf8023hFO@I#H#', - 'content-type' : 'text/plain' - } - }; - - $.mockjax = function(settings) { - var i = mockHandlers.length; - mockHandlers[i] = settings; - return i; - }; - $.mockjaxClear = function(i) { - if ( arguments.length == 1 ) { - mockHandlers[i] = null; - } else { - mockHandlers = []; - } - }; - $.mockjax.handler = function(i) { - if ( arguments.length == 1 ) { - return mockHandlers[i]; - } - }; -})(jQuery); diff --git a/app/assets/javascripts/admin/libs/bootstrap-xeditable/img/clear.png b/app/assets/javascripts/admin/libs/bootstrap-xeditable/img/clear.png deleted file mode 100644 index 580b52a5be8a644f826def0c7ed6a13f90c0915c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4u6ByT*@`3|I*lDyqr82-2SpV<%OaTa()76WMy zFm^kcZ3hx8D{xE)(qO#|GLJ6IVqjoo^>lFzk+^JnVSiR|B17B9``_m-NuMxfR?C!* zh07MrSo)3sr09zP_wDzlhX=fPF>UDu=?vANf(w(JrZ%)>D41|8J9+Zugm01epVrPx zINBDzitE|2b$6T`9`!DJFmdU=eKrTz=_*cb3=s8r9VQ%8yxBf7d%v=5Nxh^7ZP6=ia-yr`GWA z@1JRG_RM@X%BIyHqImbIN_g6wl?zIFvhME$`)4a}gbAnqdolZft=%U7gPsvQH z#I2z#?2;8wgCxj?;QX|b^2DN42FH~Aq*MjZ+{Ezopr E0Crl)MgRZ+ diff --git a/app/assets/javascripts/admin/libs/bootstrap-xeditable/img/loading.gif b/app/assets/javascripts/admin/libs/bootstrap-xeditable/img/loading.gif deleted file mode 100644 index 5b33f7e54f4e55b6b8774d86d96895db9af044b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1849 zcma*odr(tX9tZI2z31lM+(&YVk%mZ}5P~KlG2s=WSbGzm0!x7^P##Mnh7t-jP!X0Q zk_SQ}Po-L1tlDK;6l?(>v)e5ZBQx4|Y-Q?nr@Px3?9h(3ZWr3^tj=`TP57gKr87N$ zp2wWee1GRRCwo_xahnw)5cxNPJbCg2L6DV|6`#+yw6v6!mDS$f9-JvFD^n;GQ&UrZ zzh5jCkByB101O60U0q#p_1BM>Cv-vP?&s4@g_((4_1L=L$(a91)0=J91Gas#R{McE znYG^9*0A5YZ>#;~+Wkn(W5B0^yELIYLP!K}mB~<)AM@1&nqekynuaEGqPrzoH|KodRXJy)%+w_fu3nE5>@Bd_b zqC$EQ;{c`T&?EsNO|igL9gC7Ygxv?aQUEXMq?~>wg{EyW;VcJ37CUF#HjrT=KQO_* zS>M9yydXk18D(+QDJ1>r);Lav_uYKp$T?4vr{Q$lTo&pKv^?(>L-)G2*lwH!Ah7k? z7oH<8h-(KTKt5V6$8gF)C7Io&P5=SjTh)=zV=E2EUhQZP##L8S{d%UK>>+y82>+FV+#^BzW7u3F)Bb>=lYQ%%j`F>ASe zo*cw@V#u6T`A2He;70mR(V&iV&-7{qP~=SRf&jm9-T{*ZeZ}$rd0#6c&fLG^xJcf5 z+p<`wJYgW+_s*V{uI$nMB;%8`S_3>PfGOj3Rq}@Cx^+j?rk92fANSFDBYnOqQ>Vdj z)(|$AhP4t&Lb=Gvo2#3Gl%9<=Gv`Mz?Po@P4iLF!x}GUWJICDlFk-hS^Whyh7x~VH z@0vD1>HYD4&e+~yzS*-sFR{9`{QEEZO1zg7>R&7cHts-6j!xHVdA8eI+ZlVzd%`es zJT@$#GX(gvCJ1oJN%yLBK}{V=V;seo;!w|Yte!W1%5qLNFWqvZW>h&IiH+oPT=b@E zPhGzv5=(Un*X>v`>%8h_nj^NdYcE6NHS_ifkCV$*D)Tqrbu`s;<=t<4 zAHNqNV?6(g<1PY-w@#I-WYFViz?9TrkMr)u0g`O`u|>T;k|2sV*YF^punvT;$SuTy{j3Gv)yqD!R_CF>yR)MzmmYS5v+~R zXAdD%ng9?df;wd8GxR#%3O+gz};Vo;)sK%Bj-q>Oq%R7JU-KD?vYu>#2UjaDo z&8$>5xW~?KPD_#XFToU1hIb*VOMidUr6iYiO0N|i-7s`T8!cFT`rN!^1Pt78J93i6 z5HI1wIM$94m{3SLDvISDe6$ZG1;eq_D9RTaaC>=cO{@Bs>$IlPCPJJ$h$)-3vzNUQ6OsN#_zWxey!_9%hxwH2_dEJi=yY|1c7nDm2_Lm!Cof8-R_+9UkS zcBE(o47yE)oMR(Q=dp1a2wTX5KvvGyLqlWTa7V&!A*|w|)ax~1_~aJ0=_Lilg*0iQk7#ZD EAHN$8j{pDw diff --git a/app/assets/javascripts/admin/libs/bootstrap-xeditable/js/bootstrap-editable.min.js b/app/assets/javascripts/admin/libs/bootstrap-xeditable/js/bootstrap-editable.min.js deleted file mode 100644 index e2703aee8..000000000 --- a/app/assets/javascripts/admin/libs/bootstrap-xeditable/js/bootstrap-editable.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! X-editable - v1.5.1 -* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery -* http://github.com/vitalets/x-editable -* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */ -!function(a){"use strict";var b=function(b,c){this.options=a.extend({},a.fn.editableform.defaults,c),this.$div=a(b),this.options.scope||(this.options.scope=this)};b.prototype={constructor:b,initInput:function(){this.input=this.options.input,this.value=this.input.str2value(this.options.value),this.input.prerender()},initTemplate:function(){this.$form=a(a.fn.editableform.template)},initButtons:function(){var b=this.$form.find(".editable-buttons");b.append(a.fn.editableform.buttons),"bottom"===this.options.showbuttons&&b.addClass("editable-buttons-bottom")},render:function(){this.$loading=a(a.fn.editableform.loading),this.$div.empty().append(this.$loading),this.initTemplate(),this.options.showbuttons?this.initButtons():this.$form.find(".editable-buttons").remove(),this.showLoading(),this.isSaving=!1,this.$div.triggerHandler("rendering"),this.initInput(),this.$form.find("div.editable-input").append(this.input.$tpl),this.$div.append(this.$form),a.when(this.input.render()).then(a.proxy(function(){if(this.options.showbuttons||this.input.autosubmit(),this.$form.find(".editable-cancel").click(a.proxy(this.cancel,this)),this.input.error)this.error(this.input.error),this.$form.find(".editable-submit").attr("disabled",!0),this.input.$input.attr("disabled",!0),this.$form.submit(function(a){a.preventDefault()});else{this.error(!1),this.input.$input.removeAttr("disabled"),this.$form.find(".editable-submit").removeAttr("disabled");var b=null===this.value||void 0===this.value||""===this.value?this.options.defaultValue:this.value;this.input.value2input(b),this.$form.submit(a.proxy(this.submit,this))}this.$div.triggerHandler("rendered"),this.showForm(),this.input.postrender&&this.input.postrender()},this))},cancel:function(){this.$div.triggerHandler("cancel")},showLoading:function(){var a,b;this.$form?(a=this.$form.outerWidth(),b=this.$form.outerHeight(),a&&this.$loading.width(a),b&&this.$loading.height(b),this.$form.hide()):(a=this.$loading.parent().width(),a&&this.$loading.width(a)),this.$loading.show()},showForm:function(a){this.$loading.hide(),this.$form.show(),a!==!1&&this.input.activate(),this.$div.triggerHandler("show")},error:function(b){var c,d=this.$form.find(".control-group"),e=this.$form.find(".editable-error-block");if(b===!1)d.removeClass(a.fn.editableform.errorGroupClass),e.removeClass(a.fn.editableform.errorBlockClass).empty().hide();else{if(b){c=(""+b).split("\n");for(var f=0;f").text(c[f]).html();b=c.join("
      ")}d.addClass(a.fn.editableform.errorGroupClass),e.addClass(a.fn.editableform.errorBlockClass).html(b).show()}},submit:function(b){b.stopPropagation(),b.preventDefault();var c=this.input.input2value(),d=this.validate(c);if("object"===a.type(d)&&void 0!==d.newValue){if(c=d.newValue,this.input.value2input(c),"string"==typeof d.msg)return this.error(d.msg),this.showForm(),void 0}else if(d)return this.error(d),this.showForm(),void 0;if(!this.options.savenochange&&this.input.value2str(c)==this.input.value2str(this.value))return this.$div.triggerHandler("nochange"),void 0;var e=this.input.value2submit(c);this.isSaving=!0,a.when(this.save(e)).done(a.proxy(function(a){this.isSaving=!1;var b="function"==typeof this.options.success?this.options.success.call(this.options.scope,a,c):null;return b===!1?(this.error(!1),this.showForm(!1),void 0):"string"==typeof b?(this.error(b),this.showForm(),void 0):(b&&"object"==typeof b&&b.hasOwnProperty("newValue")&&(c=b.newValue),this.error(!1),this.value=c,this.$div.triggerHandler("save",{newValue:c,submitValue:e,response:a}),void 0)},this)).fail(a.proxy(function(a){this.isSaving=!1;var b;b="function"==typeof this.options.error?this.options.error.call(this.options.scope,a,c):"string"==typeof a?a:a.responseText||a.statusText||"Unknown error!",this.error(b),this.showForm()},this))},save:function(b){this.options.pk=a.fn.editableutils.tryParseJson(this.options.pk,!0);var c,d="function"==typeof this.options.pk?this.options.pk.call(this.options.scope):this.options.pk,e=!!("function"==typeof this.options.url||this.options.url&&("always"===this.options.send||"auto"===this.options.send&&null!==d&&void 0!==d));return e?(this.showLoading(),c={name:this.options.name||"",value:b,pk:d},"function"==typeof this.options.params?c=this.options.params.call(this.options.scope,c):(this.options.params=a.fn.editableutils.tryParseJson(this.options.params,!0),a.extend(c,this.options.params)),"function"==typeof this.options.url?this.options.url.call(this.options.scope,c):a.ajax(a.extend({url:this.options.url,data:c,type:"POST"},this.options.ajaxOptions))):void 0},validate:function(a){return void 0===a&&(a=this.value),"function"==typeof this.options.validate?this.options.validate.call(this.options.scope,a):void 0},option:function(a,b){a in this.options&&(this.options[a]=b),"value"===a&&this.setValue(b)},setValue:function(a,b){this.value=b?this.input.str2value(a):a,this.$form&&this.$form.is(":visible")&&this.input.value2input(this.value)}},a.fn.editableform=function(c){var d=arguments;return this.each(function(){var e=a(this),f=e.data("editableform"),g="object"==typeof c&&c;f||e.data("editableform",f=new b(this,g)),"string"==typeof c&&f[c].apply(f,Array.prototype.slice.call(d,1))})},a.fn.editableform.Constructor=b,a.fn.editableform.defaults={type:"text",url:null,params:null,name:null,pk:null,value:null,defaultValue:null,send:"auto",validate:null,success:null,error:null,ajaxOptions:null,showbuttons:!0,scope:null,savenochange:!1},a.fn.editableform.template='
      ',a.fn.editableform.loading='
      ',a.fn.editableform.buttons='',a.fn.editableform.errorGroupClass=null,a.fn.editableform.errorBlockClass="editable-error",a.fn.editableform.engine="jquery"}(window.jQuery),function(a){"use strict";a.fn.editableutils={inherit:function(a,b){var c=function(){};c.prototype=b.prototype,a.prototype=new c,a.prototype.constructor=a,a.superclass=b.prototype},setCursorPosition:function(a,b){if(a.setSelectionRange)a.setSelectionRange(b,b);else if(a.createTextRange){var c=a.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",b),c.select()}},tryParseJson:function(a,b){if("string"==typeof a&&a.length&&a.match(/^[\{\[].*[\}\]]$/))if(b)try{a=new Function("return "+a)()}catch(c){}finally{return a}else a=new Function("return "+a)();return a},sliceObj:function(b,c,d){var e,f,g={};if(!a.isArray(c)||!c.length)return g;for(var h=0;h").text(b).html()},itemsByValue:function(b,c,d){if(!c||null===b)return[];if("function"!=typeof d){var e=d||"value";d=function(a){return a[e]}}var f=a.isArray(b),g=[],h=this;return a.each(c,function(c,e){if(e.children)g=g.concat(h.itemsByValue(b,e.children,d));else if(f)a.grep(b,function(a){return a==(e&&"object"==typeof e?d(e):e)}).length&&g.push(e);else{var i=e&&"object"==typeof e?d(e):e;b==i&&g.push(e)}}),g},createInput:function(b){var c,d,e,f=b.type;return"date"===f&&("inline"===b.mode?a.fn.editabletypes.datefield?f="datefield":a.fn.editabletypes.dateuifield&&(f="dateuifield"):a.fn.editabletypes.date?f="date":a.fn.editabletypes.dateui&&(f="dateui"),"date"!==f||a.fn.editabletypes.date||(f="combodate")),"datetime"===f&&"inline"===b.mode&&(f="datetimefield"),"wysihtml5"!==f||a.fn.editabletypes[f]||(f="textarea"),"function"==typeof a.fn.editabletypes[f]?(c=a.fn.editabletypes[f],d=this.sliceObj(b,this.objectKeys(c.defaults)),e=new c(d)):(a.error("Unknown type: "+f),!1)},supportsTransitions:function(){var a=document.body||document.documentElement,b=a.style,c="transition",d=["Moz","Webkit","Khtml","O","ms"];if("string"==typeof b[c])return!0;c=c.charAt(0).toUpperCase()+c.substr(1);for(var e=0;e"),this.tip().is(this.innerCss)?this.tip().append(this.$form):this.tip().find(this.innerCss).append(this.$form),this.renderForm()},hide:function(a){if(this.tip()&&this.tip().is(":visible")&&this.$element.hasClass("editable-open")){if(this.$form.data("editableform").isSaving)return this.delayedHide={reason:a},void 0;this.delayedHide=!1,this.$element.removeClass("editable-open"),this.innerHide(),this.$element.triggerHandler("hidden",a||"manual")}},innerShow:function(){},innerHide:function(){},toggle:function(a){this.container()&&this.tip()&&this.tip().is(":visible")?this.hide():this.show(a)},setPosition:function(){},save:function(a,b){this.$element.triggerHandler("save",b),this.hide("save")},option:function(a,b){this.options[a]=b,a in this.containerOptions?(this.containerOptions[a]=b,this.setContainerOption(a,b)):(this.formOptions[a]=b,this.$form&&this.$form.editableform("option",a,b))},setContainerOption:function(a,b){this.call("option",a,b)},destroy:function(){this.hide(),this.innerDestroy(),this.$element.off("destroyed"),this.$element.removeData("editableContainer")},innerDestroy:function(){},closeOthers:function(b){a(".editable-open").each(function(c,d){if(d!==b&&!a(d).find(b).length){var e=a(d),f=e.data("editableContainer");f&&("cancel"===f.options.onblur?e.data("editableContainer").hide("onblur"):"submit"===f.options.onblur&&e.data("editableContainer").tip().find("form").submit())}})},activate:function(){this.tip&&this.tip().is(":visible")&&this.$form&&this.$form.data("editableform").input.activate()}},a.fn.editableContainer=function(d){var e=arguments;return this.each(function(){var f=a(this),g="editableContainer",h=f.data(g),i="object"==typeof d&&d,j="inline"===i.mode?c:b;h||f.data(g,h=new j(this,i)),"string"==typeof d&&h[d].apply(h,Array.prototype.slice.call(e,1))})},a.fn.editableContainer.Popup=b,a.fn.editableContainer.Inline=c,a.fn.editableContainer.defaults={value:null,placement:"top",autohide:!0,onblur:"cancel",anim:!1,mode:"popup"},jQuery.event.special.destroyed={remove:function(a){a.handler&&a.handler()}}}(window.jQuery),function(a){"use strict";a.extend(a.fn.editableContainer.Inline.prototype,a.fn.editableContainer.Popup.prototype,{containerName:"editableform",innerCss:".editable-inline",containerClass:"editable-container editable-inline",initContainer:function(){this.$tip=a(""),this.options.anim||(this.options.anim=0)},splitOptions:function(){this.containerOptions={},this.formOptions=this.options},tip:function(){return this.$tip},innerShow:function(){this.$element.hide(),this.tip().insertAfter(this.$element).show()},innerHide:function(){this.$tip.hide(this.options.anim,a.proxy(function(){this.$element.show(),this.innerDestroy()},this))},innerDestroy:function(){this.tip()&&this.tip().empty().remove()}})}(window.jQuery),function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.editable.defaults,c,a.fn.editableutils.getConfigData(this.$element)),this.options.selector?this.initLive():this.init(),this.options.highlight&&!a.fn.editableutils.supportsTransitions()&&(this.options.highlight=!1)};b.prototype={constructor:b,init:function(){var b,c=!1;if(this.options.name=this.options.name||this.$element.attr("id"),this.options.scope=this.$element[0],this.input=a.fn.editableutils.createInput(this.options),this.input){switch(void 0===this.options.value||null===this.options.value?(this.value=this.input.html2value(a.trim(this.$element.html())),c=!0):(this.options.value=a.fn.editableutils.tryParseJson(this.options.value,!0),this.value="string"==typeof this.options.value?this.input.str2value(this.options.value):this.options.value),this.$element.addClass("editable"),"textarea"===this.input.type&&this.$element.addClass("editable-pre-wrapped"),"manual"!==this.options.toggle?(this.$element.addClass("editable-click"),this.$element.on(this.options.toggle+".editable",a.proxy(function(a){if(this.options.disabled||a.preventDefault(),"mouseenter"===this.options.toggle)this.show();else{var b="click"!==this.options.toggle;this.toggle(b)}},this))):this.$element.attr("tabindex",-1),"function"==typeof this.options.display&&(this.options.autotext="always"),this.options.autotext){case"always":b=!0;break;case"auto":b=!a.trim(this.$element.text()).length&&null!==this.value&&void 0!==this.value&&!c;break;default:b=!1}a.when(b?this.render():!0).then(a.proxy(function(){this.options.disabled?this.disable():this.enable(),this.$element.triggerHandler("init",this)},this))}},initLive:function(){var b=this.options.selector;this.options.selector=!1,this.options.autotext="never",this.$element.on(this.options.toggle+".editable",b,a.proxy(function(b){var c=a(b.target);c.data("editable")||(c.hasClass(this.options.emptyclass)&&c.empty(),c.editable(this.options).trigger(b))},this))},render:function(a){return this.options.display!==!1?this.input.value2htmlFinal?this.input.value2html(this.value,this.$element[0],this.options.display,a):"function"==typeof this.options.display?this.options.display.call(this.$element[0],this.value,a):this.input.value2html(this.value,this.$element[0]):void 0},enable:function(){this.options.disabled=!1,this.$element.removeClass("editable-disabled"),this.handleEmpty(this.isEmpty),"manual"!==this.options.toggle&&"-1"===this.$element.attr("tabindex")&&this.$element.removeAttr("tabindex")},disable:function(){this.options.disabled=!0,this.hide(),this.$element.addClass("editable-disabled"),this.handleEmpty(this.isEmpty),this.$element.attr("tabindex",-1)},toggleDisabled:function(){this.options.disabled?this.enable():this.disable()},option:function(b,c){return b&&"object"==typeof b?(a.each(b,a.proxy(function(b,c){this.option(a.trim(b),c)},this)),void 0):(this.options[b]=c,"disabled"===b?c?this.disable():this.enable():("value"===b&&this.setValue(c),this.container&&this.container.option(b,c),this.input.option&&this.input.option(b,c),void 0))},handleEmpty:function(b){this.options.display!==!1&&(this.isEmpty=void 0!==b?b:"function"==typeof this.input.isEmpty?this.input.isEmpty(this.$element):""===a.trim(this.$element.html()),this.options.disabled?this.isEmpty&&(this.$element.empty(),this.options.emptyclass&&this.$element.removeClass(this.options.emptyclass)):this.isEmpty?(this.$element.html(this.options.emptytext),this.options.emptyclass&&this.$element.addClass(this.options.emptyclass)):this.options.emptyclass&&this.$element.removeClass(this.options.emptyclass))},show:function(b){if(!this.options.disabled){if(this.container){if(this.container.tip().is(":visible"))return}else{var c=a.extend({},this.options,{value:this.value,input:this.input});this.$element.editableContainer(c),this.$element.on("save.internal",a.proxy(this.save,this)),this.container=this.$element.data("editableContainer")}this.container.show(b)}},hide:function(){this.container&&this.container.hide()},toggle:function(a){this.container&&this.container.tip().is(":visible")?this.hide():this.show(a)},save:function(a,b){if(this.options.unsavedclass){var c=!1;c=c||"function"==typeof this.options.url,c=c||this.options.display===!1,c=c||void 0!==b.response,c=c||this.options.savenochange&&this.input.value2str(this.value)!==this.input.value2str(b.newValue),c?this.$element.removeClass(this.options.unsavedclass):this.$element.addClass(this.options.unsavedclass)}if(this.options.highlight){var d=this.$element,e=d.css("background-color");d.css("background-color",this.options.highlight),setTimeout(function(){"transparent"===e&&(e=""),d.css("background-color",e),d.addClass("editable-bg-transition"),setTimeout(function(){d.removeClass("editable-bg-transition")},1700)},10)}this.setValue(b.newValue,!1,b.response)},validate:function(){return"function"==typeof this.options.validate?this.options.validate.call(this,this.value):void 0},setValue:function(b,c,d){this.value=c?this.input.str2value(b):b,this.container&&this.container.option("value",this.value),a.when(this.render(d)).then(a.proxy(function(){this.handleEmpty()},this))},activate:function(){this.container&&this.container.activate()},destroy:function(){this.disable(),this.container&&this.container.destroy(),this.input.destroy(),"manual"!==this.options.toggle&&(this.$element.removeClass("editable-click"),this.$element.off(this.options.toggle+".editable")),this.$element.off("save.internal"),this.$element.removeClass("editable editable-open editable-disabled"),this.$element.removeData("editable")}},a.fn.editable=function(c){var d={},e=arguments,f="editable";switch(c){case"validate":return this.each(function(){var b,c=a(this),e=c.data(f);e&&(b=e.validate())&&(d[e.options.name]=b)}),d;case"getValue":return 2===arguments.length&&arguments[1]===!0?d=this.eq(0).data(f).value:this.each(function(){var b=a(this),c=b.data(f);c&&void 0!==c.value&&null!==c.value&&(d[c.options.name]=c.input.value2submit(c.value))}),d;case"submit":var g=arguments[1]||{},h=this,i=this.editable("validate");if(a.isEmptyObject(i)){var j={};if(1===h.length){var k=h.data("editable"),l={name:k.options.name||"",value:k.input.value2submit(k.value),pk:"function"==typeof k.options.pk?k.options.pk.call(k.options.scope):k.options.pk};"function"==typeof k.options.params?l=k.options.params.call(k.options.scope,l):(k.options.params=a.fn.editableutils.tryParseJson(k.options.params,!0),a.extend(l,k.options.params)),j={url:k.options.url,data:l,type:"POST"},g.success=g.success||k.options.success,g.error=g.error||k.options.error}else{var m=this.editable("getValue");j={url:g.url,data:m,type:"POST"}}j.success="function"==typeof g.success?function(a){g.success.call(h,a,g)}:a.noop,j.error="function"==typeof g.error?function(){g.error.apply(h,arguments)}:a.noop,g.ajaxOptions&&a.extend(j,g.ajaxOptions),g.data&&a.extend(j.data,g.data),a.ajax(j)}else"function"==typeof g.error&&g.error.call(h,i);return this}return this.each(function(){var d=a(this),g=d.data(f),h="object"==typeof c&&c;return h&&h.selector?(g=new b(this,h),void 0):(g||d.data(f,g=new b(this,h)),"string"==typeof c&&g[c].apply(g,Array.prototype.slice.call(e,1)),void 0)})},a.fn.editable.defaults={type:"text",disabled:!1,toggle:"click",emptytext:"Empty",autotext:"auto",value:null,display:null,emptyclass:"editable-empty",unsavedclass:"editable-unsaved",selector:null,highlight:"#FFFF80"}}(window.jQuery),function(a){"use strict";a.fn.editabletypes={};var b=function(){};b.prototype={init:function(b,c,d){this.type=b,this.options=a.extend({},d,c)},prerender:function(){this.$tpl=a(this.options.tpl),this.$input=this.$tpl,this.$clear=null,this.error=null},render:function(){},value2html:function(b,c){a(c)[this.options.escape?"text":"html"](a.trim(b))},html2value:function(b){return a("
      ").html(b).text()},value2str:function(a){return a},str2value:function(a){return a},value2submit:function(a){return a},value2input:function(a){this.$input.val(a)},input2value:function(){return this.$input.val()},activate:function(){this.$input.is(":visible")&&this.$input.focus()},clear:function(){this.$input.val(null)},escape:function(b){return a("
      ").text(b).html()},autosubmit:function(){},destroy:function(){},setClass:function(){this.options.inputclass&&this.$input.addClass(this.options.inputclass)},setAttr:function(a){void 0!==this.options[a]&&null!==this.options[a]&&this.$input.attr(a,this.options[a])},option:function(a,b){this.options[a]=b}},b.defaults={tpl:"",inputclass:null,escape:!0,scope:null,showbuttons:!0},a.extend(a.fn.editabletypes,{abstractinput:b})}(window.jQuery),function(a){"use strict";var b=function(){};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){var b=a.Deferred();return this.error=null,this.onSourceReady(function(){this.renderList(),b.resolve()},function(){this.error=this.options.sourceError,b.resolve()}),b.promise()},html2value:function(){return null},value2html:function(b,c,d,e){var f=a.Deferred(),g=function(){"function"==typeof d?d.call(c,b,this.sourceData,e):this.value2htmlFinal(b,c),f.resolve()};return null===b?g.call(this):this.onSourceReady(g,function(){f.resolve()}),f.promise()},onSourceReady:function(b,c){var d;if(a.isFunction(this.options.source)?(d=this.options.source.call(this.options.scope),this.sourceData=null):d=this.options.source,this.options.sourceCache&&a.isArray(this.sourceData))return b.call(this),void 0;try{d=a.fn.editableutils.tryParseJson(d,!1)}catch(e){return c.call(this),void 0}if("string"==typeof d){if(this.options.sourceCache){var f,g=d;if(a(document).data(g)||a(document).data(g,{}),f=a(document).data(g),f.loading===!1&&f.sourceData)return this.sourceData=f.sourceData,this.doPrepend(),b.call(this),void 0;if(f.loading===!0)return f.callbacks.push(a.proxy(function(){this.sourceData=f.sourceData,this.doPrepend(),b.call(this)},this)),f.err_callbacks.push(a.proxy(c,this)),void 0;f.loading=!0,f.callbacks=[],f.err_callbacks=[]}var h=a.extend({url:d,type:"get",cache:!1,dataType:"json",success:a.proxy(function(d){f&&(f.loading=!1),this.sourceData=this.makeArray(d),a.isArray(this.sourceData)?(f&&(f.sourceData=this.sourceData,a.each(f.callbacks,function(){this.call()})),this.doPrepend(),b.call(this)):(c.call(this),f&&a.each(f.err_callbacks,function(){this.call()}))},this),error:a.proxy(function(){c.call(this),f&&(f.loading=!1,a.each(f.err_callbacks,function(){this.call()}))},this)},this.options.sourceOptions);a.ajax(h)}else this.sourceData=this.makeArray(d),a.isArray(this.sourceData)?(this.doPrepend(),b.call(this)):c.call(this)},doPrepend:function(){null!==this.options.prepend&&void 0!==this.options.prepend&&(a.isArray(this.prependData)||(a.isFunction(this.options.prepend)&&(this.options.prepend=this.options.prepend.call(this.options.scope)),this.options.prepend=a.fn.editableutils.tryParseJson(this.options.prepend,!0),"string"==typeof this.options.prepend&&(this.options.prepend={"":this.options.prepend}),this.prependData=this.makeArray(this.options.prepend)),a.isArray(this.prependData)&&a.isArray(this.sourceData)&&(this.sourceData=this.prependData.concat(this.sourceData)))},renderList:function(){},value2htmlFinal:function(){},makeArray:function(b){var c,d,e,f,g=[];if(!b||"string"==typeof b)return null;if(a.isArray(b)){f=function(a,b){return d={value:a,text:b},c++>=2?!1:void 0};for(var h=0;h1&&(e.children&&(e.children=this.makeArray(e.children)),g.push(e))):g.push({value:e,text:e})}else a.each(b,function(a,b){g.push({value:a,text:b})});return g},option:function(a,b){this.options[a]=b,"source"===a&&(this.sourceData=null),"prepend"===a&&(this.prependData=null)}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{source:null,prepend:!1,sourceError:"Error when loading list",sourceCache:!0,sourceOptions:null}),a.fn.editabletypes.list=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("text",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.renderClear(),this.setClass(),this.setAttr("placeholder")},activate:function(){this.$input.is(":visible")&&(this.$input.focus(),a.fn.editableutils.setCursorPosition(this.$input.get(0),this.$input.val().length),this.toggleClear&&this.toggleClear())},renderClear:function(){this.options.clear&&(this.$clear=a(''),this.$input.after(this.$clear).css("padding-right",24).keyup(a.proxy(function(b){if(!~a.inArray(b.keyCode,[40,38,9,13,27])){clearTimeout(this.t);var c=this;this.t=setTimeout(function(){c.toggleClear(b)},100)}},this)).parent().css("position","relative"),this.$clear.click(a.proxy(this.clear,this)))},postrender:function(){},toggleClear:function(){if(this.$clear){var a=this.$input.val().length,b=this.$clear.is(":visible");a&&!b&&this.$clear.show(),!a&&b&&this.$clear.hide()}},clear:function(){this.$clear.hide(),this.$input.val("").focus()}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:'',placeholder:null,clear:!0}),a.fn.editabletypes.text=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("textarea",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.abstractinput),a.extend(b.prototype,{render:function(){this.setClass(),this.setAttr("placeholder"),this.setAttr("rows"),this.$input.keydown(function(b){b.ctrlKey&&13===b.which&&a(this).closest("form").submit()})},activate:function(){a.fn.editabletypes.text.prototype.activate.call(this)}}),b.defaults=a.extend({},a.fn.editabletypes.abstractinput.defaults,{tpl:"",inputclass:"input-large",placeholder:null,rows:7}),a.fn.editabletypes.textarea=b}(window.jQuery),function(a){"use strict";var b=function(a){this.init("select",a,b.defaults)};a.fn.editableutils.inherit(b,a.fn.editabletypes.list),a.extend(b.prototype,{renderList:function(){this.$input.empty();var b=function(c,d){var e;if(a.isArray(d))for(var f=0;f",e),d[f].children))):(e.value=d[f].value,d[f].disabled&&(e.disabled=!0),c.append(a("