diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css new file mode 100644 index 000000000..fad1eb25d --- /dev/null +++ b/app/assets/stylesheets/application.css @@ -0,0 +1,16 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's + * vendor/assets/stylesheets directory can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS + * files in this directory. Styles in this file should be added after the last require_* statement. + * It is generally better to create a new file per style scope. + * + *= require_tree . + *= require_self + + */ diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 2524c53d8..e62dcf6ed 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -38,7 +38,7 @@ class AccountsController < ApplicationController return normal_status(-2, "验证码已失效") if !verifi_code&.effective? end - code = generate_identifier User, 8 + code = generate_identifier User, 8, pre login = pre + code @user = User.new(admin: false, login: login, mail: email, phone: phone, type: "User") @user.password = params[:password] diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index f251b91d0..bea9e6173 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -396,10 +396,10 @@ class ApplicationController < ActionController::Base end # 随机生成字符 - def generate_identifier(container, num) + def generate_identifier(container, num, pre='') code = DCODES.sample(num).join if container == User - while container.exists?(login: code) do + while container.exists?(login: pre+code) do code = DCODES.sample(num).join end else @@ -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, diff --git a/app/controllers/concerns/git_helper.rb b/app/controllers/concerns/git_helper.rb index d77e1c3f6..6a3765401 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}") @@ -33,7 +34,8 @@ module GitHelper rescue Exception => e Rails.logger.error(e.message) - raise Educoder::TipException.new("文档内容获取异常") + Rails.logger.error("#####__________文档内容获取异常") + # raise Educoder::TipException.new("文档内容获取异常") end end diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 8a532a9ad..983432335 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] @@ -26,18 +26,22 @@ 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, :online_learning, + :update_task_position, :tasks_list] + before_action :set_course, only: [:join_excellent_course] 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] 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] if RUBY_PLATFORM =~ /linux/ require 'simple_xlsx_reader' @@ -58,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 @@ -100,12 +107,18 @@ 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 # Edit Page def settings + @course_modules = @course.course_modules.where.not(module_type: 'activity') end # POST /courses @@ -152,7 +165,7 @@ class CoursesController < ApplicationController end rescue => e uid_logger_error(e.message) - tip_exception("课堂创建失败!") + tip_exception(e.message) raise ActiveRecord::Rollback end end @@ -685,12 +698,12 @@ class CoursesController < ApplicationController if order == 1 # REDO:Extension - @students = @students.includes(user: :user_extension).order("user_extensions.student_id") + @students = @students.includes(user: :user_extension).order("user_extensions.student_id, course_members.id") elsif order == 2 - @students = @students.includes(:course_group).order("course_groups.position") + @students = @students.includes(:course_group).order("course_groups.position, course_members.id") else # REDO:Extension - @students = @students.includes(user: :user_extension).order("user_extensions.student_id") + @students = @students.includes(user: :user_extension).order("user_extensions.student_id, course_members.id") end if course_group_id.present? @@ -918,10 +931,10 @@ class CoursesController < ApplicationController return normal_status(-1, "课堂已结束,无法加入") if course.is_end # 实名认证和职业认证的身份判断 - return normal_status(-1, "该课堂要求成员完成实名和职业认证") if course.authentication && - course.professional_certification && (!current_user.authentication || !current_user.professional_certification) - return normal_status(-1, "该课堂要求成员完成实名认证") if course.authentication && !current_user.authentication - return normal_status(-1, "该课堂要求成员完成职业认证") if course.professional_certification && !current_user.professional_certification + return normal_status(-2, "该课堂要求成员完成实名和职业认证") if course.authentication && + course.professional_certification && (!current_user.authentication && !current_user.professional_certification) + return normal_status(-2, "该课堂要求成员完成实名认证") if course.authentication && !current_user.authentication + return normal_status(-2, "该课堂要求成员完成职业认证") if course.professional_certification && !current_user.professional_certification # 身份验证 if params[:professor].blank? && params[:assistant_professor].blank? && params[:student].blank? @@ -1117,6 +1130,47 @@ class CoursesController < ApplicationController render_ok(count: count, courses: courses.select(:id, :name).as_json) 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 + 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 + end + end + private # Use callbacks to share common setup or constraints between actions. @@ -1152,8 +1206,8 @@ class CoursesController < ApplicationController def validate_start_end_date prev_course = @subject.courses.where("id < #{@course.id}").last next_course = @subject.courses.where("id > #{@course.id}").first - tip_exception("开始时间和结束时间不能与其他期开课时间重叠") if prev_course && params[:start_date] <= strf_date(prev_course.end_date) - tip_exception("开始时间和结束时间不能与其他期开课时间重叠") if next_course && params[:end_date] >= strf_date(next_course.start_date) + tip_exception("开始时间不能与往期开课时间重叠") if prev_course && params[:start_date] <= strf_date(prev_course.end_date) + tip_exception("结束时间不能与后期开课时间重叠") if next_course && params[:end_date] >= strf_date(next_course.start_date) end # 超级管理员和课堂管理员的权限判断 @@ -1177,6 +1231,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/controllers/exercise_answers_controller.rb b/app/controllers/exercise_answers_controller.rb index babdd50f7..3fc27c8f2 100644 --- a/app/controllers/exercise_answers_controller.rb +++ b/app/controllers/exercise_answers_controller.rb @@ -8,7 +8,7 @@ class ExerciseAnswersController < ApplicationController begin q_type = @exercise_question.question_type #试卷的类型 choice_id = params[:exercise_choice_id].present? ? params[:exercise_choice_id] : "" - answer_text = params[:answer_text].present? ? params[:answer_text] : "" #为字符串 + answer_text = params[:answer_text].present? ? params[:answer_text].strip : "" #为字符串 if q_type < Exercise::SUBJECTIVE && (q_type != Exercise::MULTIPLE) && choice_id.blank? normal_status(-1,"请选择序号") else diff --git a/app/controllers/exercise_questions_controller.rb b/app/controllers/exercise_questions_controller.rb index 52915a8ba..4ce18b59d 100644 --- a/app/controllers/exercise_questions_controller.rb +++ b/app/controllers/exercise_questions_controller.rb @@ -178,6 +178,7 @@ class ExerciseQuestionsController < ApplicationController def update ActiveRecord::Base.transaction do begin + standard_answer_change = false # 更新试卷题目的内容 question_options = { :question_title => params[:question_title], @@ -227,96 +228,103 @@ class ExerciseQuestionsController < ApplicationController if standard_answer.present? if @exercise_question.question_type <= Exercise::JUDGMENT #选择题/判断题,标准答案为一个或多个 exercise_standard_choices = @exercise_answers_array.pluck(:exercise_choice_id) #问题以前的全部标准答案选项位置 - common_standard_choices = standard_answer & exercise_standard_choices # 传入的标准答案的选项位置和以前的并集,即表示不用做更改的 - old_left_standard_choices = exercise_standard_choices - common_standard_choices # 以前的差集共同的,剩余的表示需要删掉 - new_left_standard_choices = standard_answer - common_standard_choices # 传入的标准答案差集共同的,剩余的表示需要新建 - if old_left_standard_choices.count > 0 - @exercise_answers_array.standard_by_ids(old_left_standard_choices).destroy_all - end - if new_left_standard_choices.count > 0 #新建标准答案 - new_left_standard_choices.each do |s| - standard_option = { - :exercise_question_id => @exercise_question.id, - :exercise_choice_id => s.to_i #即为选择的位置参数 - } - question_standard_answer = ExerciseStandardAnswer.new(standard_option) - question_standard_answer.save + if exercise_standard_choices.sort != standard_answer.sort #表示答案有更改的 + standard_answer_change = true + common_standard_choices = standard_answer & exercise_standard_choices # 传入的标准答案的选项位置和以前的并集,即表示不用做更改的 + old_left_standard_choices = exercise_standard_choices - common_standard_choices # 以前的差集共同的,剩余的表示需要删掉 + new_left_standard_choices = standard_answer - common_standard_choices # 传入的标准答案差集共同的,剩余的表示需要新建 + if old_left_standard_choices.count > 0 + @exercise_answers_array.standard_by_ids(old_left_standard_choices).destroy_all end + if new_left_standard_choices.count > 0 #新建标准答案 + new_left_standard_choices.each do |s| + standard_option = { + :exercise_question_id => @exercise_question.id, + :exercise_choice_id => s.to_i #即为选择的位置参数 + } + question_standard_answer = ExerciseStandardAnswer.new(standard_option) + question_standard_answer.save + end - end - if standard_answer.count > 1 && @exercise_question.question_type == Exercise::SINGLE #当标准答案数大于1,且不为多选时,修改为多选 - @exercise_question.update_attribute("question_type",Exercise::MULTIPLE) - elsif standard_answer.count == 1 && @exercise_question.question_type == Exercise::MULTIPLE - @exercise_question.update_attribute("question_type",Exercise::SINGLE) + end + if standard_answer.count > 1 && @exercise_question.question_type == Exercise::SINGLE #当标准答案数大于1,且不为多选时,修改为多选 + @exercise_question.update_attribute("question_type",Exercise::MULTIPLE) + elsif standard_answer.count == 1 && @exercise_question.question_type == Exercise::MULTIPLE + @exercise_question.update_attribute("question_type",Exercise::SINGLE) + end end elsif @exercise_question.question_type == Exercise::COMPLETION #填空题 old_ex_answer = @exercise_question.exercise_standard_answers #当前问题的全部标准答案 - old_ex_answer_choice_ids = old_ex_answer.pluck(:exercise_choice_id).uniq #全部的答案数组序号 - new_ex_answer_choice_ids = standard_answer.map {|a| a[:choice_id]}.uniq #新传入的答案数组序号 - - #删除多余的选项 - if old_ex_answer_choice_ids.count > new_ex_answer_choice_ids.count #有减少的填空 - delete_ex_answer_choice_ids = old_ex_answer_choice_ids - new_ex_answer_choice_ids - old_ex_answer.standard_by_ids(delete_ex_answer_choice_ids).destroy_all - end - standard_answer.each do |aa| - null_choice_id = aa[:choice_id] - null_choice_text = aa[:answer_text] - null_choice_text_count = null_choice_text.count #当前传入的答案数量 - null_choice_text_count_array = (1..null_choice_text_count).to_a + old_ex_answer_choice_texts = old_ex_answer.pluck(:answer_text).uniq.sort + new_ex_answer_choice_texts = standard_answer.pluck(:answer_text).sum.uniq.sort + if old_ex_answer_choice_texts != new_ex_answer_choice_texts #填空题标准答案有更改时,才会更新标准答案 + new_ex_answer_choice_ids = standard_answer.map {|a| a[:choice_id]}.uniq #新传入的答案数组序号 + old_ex_answer_choice_ids = old_ex_answer.pluck(:exercise_choice_id).uniq #全部的答案数组序号 + standard_answer_change = true + #删除多余的选项 + if old_ex_answer_choice_ids.count > new_ex_answer_choice_ids.count #有减少的填空 + delete_ex_answer_choice_ids = old_ex_answer_choice_ids - new_ex_answer_choice_ids + old_ex_answer.standard_by_ids(delete_ex_answer_choice_ids).destroy_all + end + standard_answer.each do |aa| + null_choice_id = aa[:choice_id] + null_choice_text = aa[:answer_text] + null_choice_text_count = null_choice_text.count #当前传入的答案数量 + null_choice_text_count_array = (1..null_choice_text_count).to_a - ex_answer_pre = old_ex_answer.standard_by_ids(null_choice_id) #当前问题的全部答案 - ex_answer_pre_count = ex_answer_pre.count - ex_answer_pre_count_array = (1..ex_answer_pre_count).to_a + ex_answer_pre = old_ex_answer.standard_by_ids(null_choice_id) #当前问题的全部答案 + ex_answer_pre_count = ex_answer_pre.count + ex_answer_pre_count_array = (1..ex_answer_pre_count).to_a - if old_ex_answer_choice_ids.include?(null_choice_id) #以前的填空题答案包含有现在的填空序号 - if null_choice_text_count >= ex_answer_pre_count - new_add_choice = null_choice_text_count_array - ex_answer_pre_count_array - ex_answer_pre_count_array.each do |n| - standard_option = { - :exercise_question_id => @exercise_question.id, - :exercise_choice_id => null_choice_id, - :answer_text => null_choice_text[n-1] - } - ex_answer_pre[n-1].update(standard_option) - end - if new_add_choice.count > 0 #表示有新增的 - new_add_choice.each do |i| + if old_ex_answer_choice_ids.include?(null_choice_id) #以前的填空题答案包含有现在的填空序号 + if null_choice_text_count >= ex_answer_pre_count + new_add_choice = null_choice_text_count_array - ex_answer_pre_count_array + ex_answer_pre_count_array.each do |n| standard_option = { :exercise_question_id => @exercise_question.id, :exercise_choice_id => null_choice_id, - :answer_text => null_choice_text[i-1] + :answer_text => null_choice_text[n-1] } - question_standard_answer = ExerciseStandardAnswer.new(standard_option) - question_standard_answer.save + ex_answer_pre[n-1].update(standard_option) + end + if new_add_choice.count > 0 #表示有新增的 + new_add_choice.each do |i| + standard_option = { + :exercise_question_id => @exercise_question.id, + :exercise_choice_id => null_choice_id, + :answer_text => null_choice_text[i-1] + } + question_standard_answer = ExerciseStandardAnswer.new(standard_option) + question_standard_answer.save + end + end + else + new_delete_choice = ex_answer_pre_count_array - null_choice_text_count_array + null_choice_text.each_with_index do |n,index| + standard_option = { + :exercise_question_id => @exercise_question.id, + :exercise_choice_id => null_choice_id, + :answer_text => n + } + ex_answer_pre[index].update(standard_option) + end + if new_delete_choice.count > 0 #表示填空题的答案有删减的 + new_delete_choice.each do |d| + ex_answer_pre[d-1].destroy + end end end else - new_delete_choice = ex_answer_pre_count_array - null_choice_text_count_array - null_choice_text.each_with_index do |n,index| + null_choice_text.each do |n| standard_option = { :exercise_question_id => @exercise_question.id, :exercise_choice_id => null_choice_id, :answer_text => n } - ex_answer_pre[index].update(standard_option) - end - if new_delete_choice.count > 0 #表示填空题的答案有删减的 - new_delete_choice.each do |d| - ex_answer_pre[d-1].destroy - end + question_standard_answer = ExerciseStandardAnswer.new(standard_option) + question_standard_answer.save end end - else - null_choice_text.each do |n| - standard_option = { - :exercise_question_id => @exercise_question.id, - :exercise_choice_id => null_choice_id, - :answer_text => n - } - question_standard_answer = ExerciseStandardAnswer.new(standard_option) - question_standard_answer.save - end end end end @@ -348,20 +356,25 @@ class ExerciseQuestionsController < ApplicationController #当试卷已发布时(试卷的总状态),当标准答案修改时,如有已提交的学生,需重新计算分数. - if @exercise.exercise_status == Exercise::PUBLISHED + if standard_answer_change && @exercise.exercise_status >= Exercise::PUBLISHED ex_users_committed = @exercise.exercise_users.exercise_user_committed if ex_users_committed.size > 0 ex_users_committed.each do |ex_user| - user = ex_user.user - objective_score = calculate_student_score(@exercise,user)[:total_score] - subjective_score = ex_user.subjective_score - total_score_subjective_score = subjective_score < 0.0 ? 0.0 : subjective_score - total_score = objective_score + total_score_subjective_score - ex_user.update_attributes(objective_score:objective_score,score:total_score) + update_objective_score = update_single_score(@exercise_question,ex_user.user_id,standard_answer) + if update_objective_score != 0 + objective_score = ex_user.objective_score + new_objective_score = objective_score + update_objective_score + total_score = ex_user.score + update_objective_score + total_score = total_score < 0.0 ? 0.0 : total_score + ex_user.update_attributes(objective_score:new_objective_score,score:total_score) + end end end + normal_status(0,"试卷更新成功,因标准答案修改,需重新计算学生成绩!") + else + normal_status(0,"试卷更新成功!") end - normal_status(0,"试卷更新成功!") + rescue Exception => e uid_logger_error(e.message) tip_exception("页面调用失败!") 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/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index c9b56bb98..bfd386e1c 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -563,15 +563,15 @@ class ShixunsController < ApplicationController 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.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! + 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 156b34f25..6c5481787 100644 --- a/app/controllers/subjects_controller.rb +++ b/app/controllers/subjects_controller.rb @@ -1,447 +1,447 @@ -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 :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, - :up_member_position, :down_member_position] - - include ApplicationHelper - include SubjectsHelper - - def index - @tech_system = Repertoire.where(nil).order("updated_at desc") - select = params[:select] # 路径导航类型 - reorder = params[:order] || "publish_time" - search = params[:search] - - ## 分页参数 - page = params[:page] || 1 - limit = params[:limit] || 16 - offset = (page.to_i-1) * limit - - # 最热排序 - if reorder == "myshixun_count" - if select - @subjects = Subject.find_by_sql("SELECT subjects.id, subjects.user_id, subjects.name, subjects.stages_count, subjects.repertoire_id, subjects.status, - subjects.shixuns_count, subjects.excellent, sum(shixuns.myshixuns_count) AS myshixun_member_count FROM subjects join stage_shixuns - on stage_shixuns.subject_id = subjects.id join shixuns on shixuns.id = stage_shixuns.shixun_id where - subjects.hidden = 0 AND subjects.status = 2 AND subjects.name like '%#{search}%' - AND subjects.repertoire_id = #{select} GROUP BY subjects.id ORDER BY myshixun_member_count DESC") - else - @subjects = Subject.find_by_sql("SELECT subjects.id, subjects.user_id, subjects.name, subjects.stages_count, subjects.repertoire_id, subjects.status, - subjects.shixuns_count, subjects.excellent, sum(shixuns.myshixuns_count) AS myshixun_member_count FROM subjects join stage_shixuns - on stage_shixuns.subject_id = subjects.id join shixuns on shixuns.id = stage_shixuns.shixun_id where - subjects.hidden = 0 AND subjects.status = 2 AND subjects.name like '%#{search}%' - GROUP BY subjects.id ORDER BY myshixun_member_count DESC") - end - else - # 我的路径 - if reorder == "mine" - tip_exception(401, "..") unless current_user.logged? - - mine_subject_id = StageShixun.find_by_sql("select DISTINCT(subject_id) from stage_shixuns where shixun_id in - (select distinct(shixun_id) from myshixuns where user_id=#{current_user.id})").map(&:subject_id) - manage_subject_id = SubjectMember.where(user_id: current_user.id).pluck(:subject_id) - total_subject_id = (mine_subject_id + manage_subject_id).uniq - @subjects = Subject.where(id: total_subject_id) - elsif reorder == "publish_time" - @subjects = Subject.unhidden - else - @subjects = Subject.visible.unhidden - end - - # 类型 - if select - @subjects = @subjects.where(repertoire_id: select) - end - - if search.present? - @subjects = @subjects.where("name like ?", "%#{search}%") - end - - # 排序 - order_str = reorder == "publish_time" ? "status = 2 desc, publish_time asc" : "updated_at desc" - @subjects = @subjects.reorder(order_str) - end - - @total_count = @subjects.size - - if reorder != "myshixun_count" - @subjects = @subjects.page(page).per(limit).includes(:shixuns, :repertoire) - else - @subjects = @subjects[offset, limit] - subject_ids = @subjects.pluck(:id) - order_ids = subject_ids.size > 0 ? subject_ids.join(',') : -1 - @subjects = Subject.where(id: subject_ids).order("field(id,#{order_ids})").includes(:shixuns, :repertoire) - end - end - - def show - @user = current_user - @is_creator = current_user.creator_of_subject?(@subject) - @is_manager = @user.manager_of_subject?(@subject) - # 合作团队 - @shixuns = @subject.shixuns.published.pluck(:id) - @courses = @subject.courses if @subject.excellent - @members = @subject.subject_members.includes(:user) - - shixuns = @subject.shixuns.published.pluck(:id) - challenge_ids = Challenge.where(shixun_id: shixuns).pluck(:id) - # 实训路径中的所有实训标签 - @tags = ChallengeTag.where(challenge_id: challenge_ids).pluck(:name).uniq - # 用户获取的实训标签 - # @user_tags = @subject.shixuns.map(&:user_tags_name).flatten.uniq - @user_tags = user_shixun_tags challenge_ids, @user.id - @my_subject_progress = @subject.my_subject_progress - # 访问数变更 - @subject.increment!(:visits) - end - - def right_banner - @user = current_user - # 合作团队 - @members = @subject.subject_members.includes(:user) - shixuns = @subject.shixuns.published.pluck(:id) - challenge_ids = Challenge.where(shixun_id: shixuns).pluck(:id) - # 实训路径中的所有实训标签 - @tags = ChallengeTag.where(challenge_id: challenge_ids).pluck(:name).uniq - # 用户获取的实训标签 - # @user_tags = @subject.shixuns.map(&:user_tags_name).flatten.uniq - @user_tags = user_shixun_tags challenge_ids, @user.id - @my_subject_progress = @subject.my_subject_progress - end - - def new - normal_status("") - end - - def create - ActiveRecord::Base.transaction do - begin - @subject = Subject.new(subject_params) - @subject.user_id = current_user.id - @subject.save! - @subject.subject_members.create!(role: 1, user_id: current_user.id) - rescue Exception => e - uid_logger_error(e.message) - tip_exception("实训路径创建失败") - raise ActiveRecord::Rollback - end - end - end - - def edit - end - - def update - begin - @subject.update_attributes(subject_params) - rescue Exception => e - uid_logger_error(e.message) - tip_exception("实训路径更新失败") - raise ActiveRecord::Rollback - end - end - - def destroy - ActiveRecord::Base.transaction do - begin - ApplyAction.where(container_type: "ApplySubject", container_id: @subject.id).destroy_all - @subject.destroy - rescue Exception => e - uid_logger_error(e.message) - tip_exception("实训路径删除失败") - raise ActiveRecord::Rollback - end - end - end - - def choose_subject_shixun - @search = params[:search].strip if params[:search] - @type = params[:type] - # 超级管理员用户显示所有未隐藏的实训、非管理员显示合作团队用户的实训(对本单位公开且未隐藏) - if current_user.admin? - @shixuns = Shixun.select([:id, :name, :status, :myshixuns_count, :identifier, :averge_star]).where(hidden: 0) - else - none_shixun_ids = ShixunSchool.where("school_id != #{current_user.user_extension.try(:school_id).to_i}").pluck(:shixun_id) - @shixuns = Shixun.select([:id, :name, :status, :myshixuns_count, :identifier, :averge_star]).where.not(id: none_shixun_ids).where(hidden: 0) - end - - # 实训课程的所有标签 - tag_ids = @shixuns.joins(:shixun_tag_repertoires).pluck(:tag_repertoire_id).uniq - @tags = TagRepertoire.select([:id, :name]).where(id: tag_ids) - - unless params[:search].blank? - @shixuns = @shixuns.joins(:user).where("shixuns.name like ? or concat(users.lastname, users.firstname) like ?", - "%#{@search}%", "%#{@search}%").distinct - end - - unless @type.nil? || @type == "" || @type == "all" - shixun_ids = ShixunTagRepertoire.where(tag_repertoire_id: @type).pluck(:shixun_id).uniq - @shixuns = @shixuns.where(id: shixun_ids) - end - - @shixuns = @shixuns.reorder("created_at desc") - @shixuns_count = @shixuns.size - - ## 分页参数 - page = params[:page] || 1 - @shixuns = @shixuns.page(page).per(10) - - @shixuns = @shixuns.includes(:myshixuns) - end - - def append_to_stage - @shixuns = Shixun.where(id: params[:shixun_id]).order("id desc") - end - - def choose_course - course_ids = Course.find_by_sql("SELECT c.id FROM courses c, course_members m - WHERE m.course_id = c.id AND m.role in (1,2,3) - AND m.user_id=#{current_user.id} AND c.is_delete = 0 AND c.is_end = 0").map(&:id) - @courses = Course.where(id: course_ids) - @none_shixun_ids = ShixunSchool.where("school_id != #{current_user.user_extension.try(:school_id).to_i}").pluck(:shixun_id) - end - - def send_to_course - @course = Course.find_by!(id: params[:course_id]) - stages = @subject.stages.where(id: @subject.stage_shixuns.where(shixun_id: params[:shixun_ids]).pluck(:stage_id)) - - course_module = @course.course_modules.where(module_type: "shixun_homework").first - - ActiveRecord::Base.transaction do - begin - # 将实训课程下的所有已发布实训按顺序发送到课堂,同时创建与章节同名的实训作业目录 - stages.each do |stage| - category = CourseSecondCategory.where(name: stage.name, course_id: @course.id, category_type: "shixun_homework").first || - CourseSecondCategory.create!(name: stage.name, course_id: @course.id, category_type: "shixun_homework", - course_module_id: course_module.id, position: course_module.course_second_categories.count + 1) - - stage.shixuns.where(id: params[:shixun_ids], status: 2).each do |shixun| - homework = HomeworksService.new.create_homework shixun, @course, category, current_user - end - end - rescue Exception => e - uid_logger(e.message) - tip_exception(e.message) - raise ActiveRecord::Rollback - end - end - end - - def publish - apply = ApplyAction.where(container_type: "ApplySubject", container_id: @subject.id).order("created_at desc").first - if apply && apply.status == 0 - @status = 0 - else - @subject.update_attributes(status: 1) - ApplyAction.create(container_type: "ApplySubject", container_id: @subject.id, user_id: current_user.id, status: 0) - begin - status = Educoder::Sms.send(mobile: '18711011226', send_type:'publish_subject' , name: '管理员') - rescue => e - uid_logger_error("发送验证码出错: #{e}") - end - @status = 1 - end - end - - def cancel_publish - begin - apply = ApplyAction.where(container_type: "ApplySubject", container_id: @subject.id).order("created_at desc").first - if apply && apply.status == 0 - apply.update_attributes(status: 3) - apply.tidings.destroy_all - end - @subject.update_attributes(status: 0) - rescue => e - uid_logger_error(e.message) - tip_exception("撤销申请失败") - raise ActiveRecord::Rollback - end - end - - def cancel_has_publish - begin - @subject.update_attributes(:status => 0) - rescue => e - uid_logger_error(e.message) - tip_exception("撤销发布失败") - raise ActiveRecord::Rollback - end - end - - def search_members - tip_exception("搜索内容不能为空") unless params[:search] - page = params[:page] || 1 - member_ids = @subject.subject_members.map(&:user_id).join(',') - condition = "%#{params[:search].strip}%".gsub(" ","") - @users = User.where("id not in (?) and status = 1 and LOWER(concat(lastname, firstname, login, mail)) LIKE ?", member_ids, "#{condition}") - - @users = @users.page(page).per(10) - @users = @users.includes(:user_extension) - end - - def add_subject_members - # tip_exception(403, "没权限操作") if !current_user.admin? - tip_exception("user_ids 不能为空!") if params[:user_ids].blank? - memberships = params[:user_ids] - memberships.each do |member| - if SubjectMember.where(user_id: member, subject_id: @subject.id).count == 0 - user = User.find_by!(id: member) - SubjectMember.create!(user_id: member, subject_id: @subject.id, role: 2, position: @subject.subject_members.size + 1) if user.present? - end - end - end - - # 删除实训 - # DELETE: /api/subejcts/:id/delete_member - def delete_member - tip_exception(403, "没权限操作") unless current_user.manager_of_subject?(@subject) - tip_exception('用户id不能为空') if params[:user_id].blank? - user = @subject.subject_members.where(:user_id => params[:user_id], :role => 2).first - tip_exception("管理员用户不允许删除,或用户不存在") if user.blank? - ActiveRecord::Base.transaction do - begin - @subject.subject_members.where("position > #{user.position}").update_all("position = position - 1") - user.destroy - rescue Exception => e - uid_logger_error(e.message) - tip_exception(e.message) - raise ActiveRecord::Rollback - end - end - end - - # 合作者上移 - def up_member_position - tip_exception('用户id不能为空') if params[:user_id].blank? - ActiveRecord::Base.transaction do - begin - member = @subject.subject_members.where(user_id: params[:user_id]).first - # position为1时不能再往上移 - tip_exception('不能再上移了') if member.position == 1 - - up_member = @subject.subject_members.where(position: member.position - 1).first - up_member.update_attribute(:position, member.position) - member.update_attribute(:position, member.position - 1) - rescue Exception => e - uid_logger_error(e.message) - tip_exception(e.message) - raise ActiveRecord::Rollback - end - end - end - - # 合作者下移 - def down_member_position - tip_exception('用户id不能为空') if params[:user_id].blank? - ActiveRecord::Base.transaction do - begin - member = @subject.subject_members.where(user_id: params[:user_id]).first - - # position已经是最大值时不能再往下移 - tip_exception('不能再下移了') if member.position == @subject.subject_members.size - - down_member = @subject.subject_members.where(:position => member.position + 1).first - down_member.update_attribute(:position, member.position) - member.update_attribute(:position, member.position + 1) - rescue Exception => e - uid_logger_error(e.message) - tip_exception(e.message) - raise ActiveRecord::Rollback - end - end - end - - def statistics - @learn_count = @subject.member_count - shixun_ids = @subject.stage_shixuns.pluck(:shixun_id) - # 受用课堂(已经发布的实训(在此路径中的实训)作业的个数) - homework_common_id = HomeworkCommonsShixun.where(shixun_id: shixun_ids).pluck(:homework_common_id).uniq - homework_common_id = homework_common_id.blank? ? -1 : homework_common_id.join(",") - - courses = Course.find_by_sql("select c.id, c.school_id from courses c right join homework_commons hc on c.id = hc.course_id where c.is_delete = 0 - and c.school_id is not null and hc.publish_time < '#{Time.now}' and hc.id in (#{(homework_common_id)})") - course_ids = courses.pluck(:id).uniq - @course_count = course_ids.length - # 受用院校 - school_ids = courses.pluck(:school_id).uniq - @schools_count = school_ids.length - - # 采用课堂情况 - @schools = School.select([:id, :name]).where(id: school_ids) - @schools = - @schools.map do |s| - school_courses = Course.where(id: course_ids, school_id: s.id) - course_count = school_courses.count - student_count = StudentsForCourse.where(course_id: school_courses.pluck(:id)).count - homework_count = HomeworkCommon.find_by_sql("select count(*) cnt from homework_commons hc join courses c on hc.course_id = c.id - where c.school_id = #{s.id} and hc.id in(#{homework_common_id})").first.try(:cnt) - s.attributes.dup.merge({name: s.name, course_count: course_count, student_count: student_count,homework_count: homework_count}) - end - @schools = @schools.sort{|x,y| y['homework_count'] <=> x['homework_count']} - @school_total_count = @schools.size - - page = params[:page] || 1 - @schools = @schools[(page.to_i-1)*10, 10] - - # TODO: 这个可以异步加载,让页面刷新完成后再加载图形数据 - # 章节使用情况 - @stage_user_info = [] - @sum = 0 #总数 - @subject.stages.includes(:stage_shixuns).each do |stage| - shixun_ids = stage.stage_shixuns.pluck(:shixun_id) - if shixun_ids.present? - homework_common_id = HomeworkCommonsShixun.where(shixun_id: shixun_ids).pluck(:homework_common_id).uniq - if homework_common_id.present? - publish_homework = HomeworkDetailManual.where("homework_common_id in(?) and comment_status > 0", homework_common_id.join(",")).pluck(:homework_common_id) - use_count = publish_homework.present? ? HomeworkCommon.find_by_sql("select count(*) cnt from homework_commons hc join courses c on hc.course_id = c.id - where hc.id in(#{publish_homework.join(",")}) and c.school_id is not null").first.try(:cnt) : 0 - @sum += use_count - else - @sum += 0 - use_count = 0 - end - @stage_user_info << use_count - else - @sum += 0 - @stage_user_info << 0 - end - end - end - - def shixun_report - - end - - def school_report - @schools = School.find_by_sql("select count(ms.id) ue_count, s.id, s.name school_name from user_extensions ue, - myshixuns ms, schools s where ue.user_id = ms.user_id and ms.shixun_id in (select shixun_id from - stage_shixuns where subject_id = '#{@subject.id}') and s.id = ue.school_id group by ue.school_id - order by ue_count desc limit 10") - end - - private - def subject_params - tip_exception("实训路径名称不能为空") if params[:name].blank? - tip_exception("实训路径简介不能为空") if params[:description].blank? - tip_exception("实训路径学习须知不能为空") if params[:learning_notes].blank? - params.require(:subject).permit(:name, :description, :learning_notes) - end - - def find_subject - @subject = Subject.find_by!(id: params[:id]) - - unless @subject.status == 2 || current_user.manager_of_subject?(@subject) - tip_exception("403", "") - end - end - - def allowed - unless current_user.manager_of_subject?(@subject) - tip_exception("403", "") - end - end -end +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, :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, + :up_member_position, :down_member_position] + + include ApplicationHelper + include SubjectsHelper + + def index + @tech_system = Repertoire.where(nil).order("updated_at desc") + select = params[:select] # 路径导航类型 + reorder = params[:order] || "publish_time" + search = params[:search] + + ## 分页参数 + page = params[:page] || 1 + limit = params[:limit] || 16 + offset = (page.to_i-1) * limit + + # 最热排序 + if reorder == "myshixun_count" + if select + @subjects = Subject.find_by_sql("SELECT subjects.id, subjects.user_id, subjects.name, subjects.stages_count, subjects.repertoire_id, subjects.status, + subjects.shixuns_count, subjects.excellent, sum(shixuns.myshixuns_count) AS myshixun_member_count FROM subjects join stage_shixuns + on stage_shixuns.subject_id = subjects.id join shixuns on shixuns.id = stage_shixuns.shixun_id where + subjects.hidden = 0 AND subjects.status = 2 AND subjects.name like '%#{search}%' + AND subjects.repertoire_id = #{select} GROUP BY subjects.id ORDER BY myshixun_member_count DESC") + else + @subjects = Subject.find_by_sql("SELECT subjects.id, subjects.user_id, subjects.name, subjects.stages_count, subjects.repertoire_id, subjects.status, + subjects.shixuns_count, subjects.excellent, sum(shixuns.myshixuns_count) AS myshixun_member_count FROM subjects join stage_shixuns + on stage_shixuns.subject_id = subjects.id join shixuns on shixuns.id = stage_shixuns.shixun_id where + subjects.hidden = 0 AND subjects.status = 2 AND subjects.name like '%#{search}%' + GROUP BY subjects.id ORDER BY myshixun_member_count DESC") + end + else + # 我的路径 + if reorder == "mine" + tip_exception(401, "..") unless current_user.logged? + + mine_subject_id = StageShixun.find_by_sql("select DISTINCT(subject_id) from stage_shixuns where shixun_id in + (select distinct(shixun_id) from myshixuns where user_id=#{current_user.id})").map(&:subject_id) + manage_subject_id = SubjectMember.where(user_id: current_user.id).pluck(:subject_id) + total_subject_id = (mine_subject_id + manage_subject_id).uniq + @subjects = Subject.where(id: total_subject_id) + elsif reorder == "publish_time" + @subjects = Subject.unhidden + else + @subjects = Subject.visible.unhidden + end + + # 类型 + if select + @subjects = @subjects.where(repertoire_id: select) + end + + if search.present? + @subjects = @subjects.where("name like ?", "%#{search}%") + end + + # 排序 + order_str = reorder == "publish_time" ? "status = 2 desc, publish_time asc" : "updated_at desc" + @subjects = @subjects.reorder(order_str) + end + + @total_count = @subjects.size + + if reorder != "myshixun_count" + @subjects = @subjects.page(page).per(limit).includes(:shixuns, :repertoire) + else + @subjects = @subjects[offset, limit] + subject_ids = @subjects.pluck(:id) + order_ids = subject_ids.size > 0 ? subject_ids.join(',') : -1 + @subjects = Subject.where(id: subject_ids).order("field(id,#{order_ids})").includes(:shixuns, :repertoire) + end + end + + def show + @user = current_user + @is_creator = current_user.creator_of_subject?(@subject) + @is_manager = @user.manager_of_subject?(@subject) + # 合作团队 + @shixuns = @subject.shixuns.published.pluck(:id) + @courses = @subject.courses if @subject.excellent + @members = @subject.subject_members.includes(:user) + + shixuns = @subject.shixuns.published.pluck(:id) + challenge_ids = Challenge.where(shixun_id: shixuns).pluck(:id) + # 实训路径中的所有实训标签 + @tags = ChallengeTag.where(challenge_id: challenge_ids).pluck(:name).uniq + # 用户获取的实训标签 + # @user_tags = @subject.shixuns.map(&:user_tags_name).flatten.uniq + @user_tags = user_shixun_tags challenge_ids, @user.id + @my_subject_progress = @subject.my_subject_progress + # 访问数变更 + @subject.increment!(:visits) + end + + def right_banner + @user = current_user + # 合作团队 + @members = @subject.subject_members.includes(:user) + shixuns = @subject.shixuns.published.pluck(:id) + challenge_ids = Challenge.where(shixun_id: shixuns).pluck(:id) + # 实训路径中的所有实训标签 + @tags = ChallengeTag.where(challenge_id: challenge_ids).pluck(:name).uniq + # 用户获取的实训标签 + # @user_tags = @subject.shixuns.map(&:user_tags_name).flatten.uniq + @user_tags = user_shixun_tags challenge_ids, @user.id + @my_subject_progress = @subject.my_subject_progress + end + + def new + normal_status("") + end + + def create + ActiveRecord::Base.transaction do + begin + @subject = Subject.new(subject_params) + @subject.user_id = current_user.id + @subject.save! + @subject.subject_members.create!(role: 1, user_id: current_user.id) + rescue Exception => e + uid_logger_error(e.message) + tip_exception("实训路径创建失败") + raise ActiveRecord::Rollback + end + end + end + + def edit + end + + def update + begin + @subject.update_attributes(subject_params) + rescue Exception => e + uid_logger_error(e.message) + tip_exception("实训路径更新失败") + raise ActiveRecord::Rollback + end + end + + def destroy + ActiveRecord::Base.transaction do + begin + ApplyAction.where(container_type: "ApplySubject", container_id: @subject.id).destroy_all + @subject.destroy + rescue Exception => e + uid_logger_error(e.message) + tip_exception("实训路径删除失败") + raise ActiveRecord::Rollback + end + end + end + + def choose_subject_shixun + @search = params[:search].strip if params[:search] + @type = params[:type] + # 超级管理员用户显示所有未隐藏的实训、非管理员显示合作团队用户的实训(对本单位公开且未隐藏) + if current_user.admin? + @shixuns = Shixun.select([:id, :name, :status, :myshixuns_count, :identifier, :averge_star]).where(hidden: 0) + else + none_shixun_ids = ShixunSchool.where("school_id != #{current_user.user_extension.try(:school_id).to_i}").pluck(:shixun_id) + @shixuns = Shixun.select([:id, :name, :status, :myshixuns_count, :identifier, :averge_star]).where.not(id: none_shixun_ids).where(hidden: 0) + end + + # 实训课程的所有标签 + tag_ids = @shixuns.joins(:shixun_tag_repertoires).pluck(:tag_repertoire_id).uniq + @tags = TagRepertoire.select([:id, :name]).where(id: tag_ids) + + unless params[:search].blank? + @shixuns = @shixuns.joins(:user).where("shixuns.name like ? or concat(users.lastname, users.firstname) like ?", + "%#{@search}%", "%#{@search}%").distinct + end + + unless @type.nil? || @type == "" || @type == "all" + shixun_ids = ShixunTagRepertoire.where(tag_repertoire_id: @type).pluck(:shixun_id).uniq + @shixuns = @shixuns.where(id: shixun_ids) + end + + @shixuns = @shixuns.reorder("created_at desc") + @shixuns_count = @shixuns.size + + ## 分页参数 + page = params[:page] || 1 + @shixuns = @shixuns.page(page).per(10) + + @shixuns = @shixuns.includes(:myshixuns) + end + + def append_to_stage + @shixuns = Shixun.where(id: params[:shixun_id]).order("id desc") + end + + def choose_course + course_ids = Course.find_by_sql("SELECT c.id FROM courses c, course_members m + WHERE m.course_id = c.id AND m.role in (1,2,3) + AND m.user_id=#{current_user.id} AND c.is_delete = 0 AND c.is_end = 0").map(&:id) + @courses = Course.where(id: course_ids) + @none_shixun_ids = ShixunSchool.where("school_id != #{current_user.user_extension.try(:school_id).to_i}").pluck(:shixun_id) + end + + def send_to_course + @course = Course.find_by!(id: params[:course_id]) + stages = @subject.stages.where(id: @subject.stage_shixuns.where(shixun_id: params[:shixun_ids]).pluck(:stage_id)) + + course_module = @course.course_modules.where(module_type: "shixun_homework").first + + ActiveRecord::Base.transaction do + begin + # 将实训课程下的所有已发布实训按顺序发送到课堂,同时创建与章节同名的实训作业目录 + stages.each do |stage| + category = CourseSecondCategory.where(name: stage.name, course_id: @course.id, category_type: "shixun_homework").first || + CourseSecondCategory.create!(name: stage.name, course_id: @course.id, category_type: "shixun_homework", + course_module_id: course_module.id, position: course_module.course_second_categories.count + 1) + + stage.shixuns.where(id: params[:shixun_ids], status: 2).each do |shixun| + homework = HomeworksService.new.create_homework shixun, @course, category, current_user + end + end + rescue Exception => e + uid_logger(e.message) + tip_exception(e.message) + raise ActiveRecord::Rollback + end + end + end + + def publish + apply = ApplyAction.where(container_type: "ApplySubject", container_id: @subject.id).order("created_at desc").first + if apply && apply.status == 0 + @status = 0 + else + @subject.update_attributes(status: 1) + ApplyAction.create(container_type: "ApplySubject", container_id: @subject.id, user_id: current_user.id, status: 0) + begin + status = Educoder::Sms.send(mobile: '18711011226', send_type:'publish_subject' , name: '管理员') + rescue => e + uid_logger_error("发送验证码出错: #{e}") + end + @status = 1 + end + end + + def cancel_publish + begin + apply = ApplyAction.where(container_type: "ApplySubject", container_id: @subject.id).order("created_at desc").first + if apply && apply.status == 0 + apply.update_attributes(status: 3) + apply.tidings.destroy_all + end + @subject.update_attributes(status: 0) + rescue => e + uid_logger_error(e.message) + tip_exception("撤销申请失败") + raise ActiveRecord::Rollback + end + end + + def cancel_has_publish + begin + @subject.update_attributes(:status => 0) + rescue => e + uid_logger_error(e.message) + tip_exception("撤销发布失败") + raise ActiveRecord::Rollback + end + end + + def search_members + tip_exception("搜索内容不能为空") unless params[:search] + page = params[:page] || 1 + member_ids = @subject.subject_members.map(&:user_id).join(',') + condition = "%#{params[:search].strip}%".gsub(" ","") + @users = User.where("id not in (?) and status = 1 and LOWER(concat(lastname, firstname, login, mail)) LIKE ?", member_ids, "#{condition}") + + @users = @users.page(page).per(10) + @users = @users.includes(:user_extension) + end + + def add_subject_members + # tip_exception(403, "没权限操作") if !current_user.admin? + tip_exception("user_ids 不能为空!") if params[:user_ids].blank? + memberships = params[:user_ids] + memberships.each do |member| + if SubjectMember.where(user_id: member, subject_id: @subject.id).count == 0 + user = User.find_by!(id: member) + SubjectMember.create!(user_id: member, subject_id: @subject.id, role: 2, position: @subject.subject_members.size + 1) if user.present? + end + end + end + + # 删除实训 + # DELETE: /api/subejcts/:id/delete_member + def delete_member + tip_exception(403, "没权限操作") unless current_user.manager_of_subject?(@subject) + tip_exception('用户id不能为空') if params[:user_id].blank? + user = @subject.subject_members.where(:user_id => params[:user_id], :role => 2).first + tip_exception("管理员用户不允许删除,或用户不存在") if user.blank? + ActiveRecord::Base.transaction do + begin + @subject.subject_members.where("position > #{user.position}").update_all("position = position - 1") + user.destroy + rescue Exception => e + uid_logger_error(e.message) + tip_exception(e.message) + raise ActiveRecord::Rollback + end + end + end + + # 合作者上移 + def up_member_position + tip_exception('用户id不能为空') if params[:user_id].blank? + ActiveRecord::Base.transaction do + begin + member = @subject.subject_members.where(user_id: params[:user_id]).first + # position为1时不能再往上移 + tip_exception('不能再上移了') if member.position == 1 + + up_member = @subject.subject_members.where(position: member.position - 1).first + up_member.update_attribute(:position, member.position) + member.update_attribute(:position, member.position - 1) + rescue Exception => e + uid_logger_error(e.message) + tip_exception(e.message) + raise ActiveRecord::Rollback + end + end + end + + # 合作者下移 + def down_member_position + tip_exception('用户id不能为空') if params[:user_id].blank? + ActiveRecord::Base.transaction do + begin + member = @subject.subject_members.where(user_id: params[:user_id]).first + + # position已经是最大值时不能再往下移 + tip_exception('不能再下移了') if member.position == @subject.subject_members.size + + down_member = @subject.subject_members.where(:position => member.position + 1).first + down_member.update_attribute(:position, member.position) + member.update_attribute(:position, member.position + 1) + rescue Exception => e + uid_logger_error(e.message) + tip_exception(e.message) + raise ActiveRecord::Rollback + end + end + end + + def statistics + @learn_count = @subject.member_count + shixun_ids = @subject.stage_shixuns.pluck(:shixun_id) + # 受用课堂(已经发布的实训(在此路径中的实训)作业的个数) + homework_common_id = HomeworkCommonsShixun.where(shixun_id: shixun_ids).pluck(:homework_common_id).uniq + homework_common_id = homework_common_id.blank? ? -1 : homework_common_id.join(",") + + courses = Course.find_by_sql("select c.id, c.school_id from courses c right join homework_commons hc on c.id = hc.course_id where c.is_delete = 0 + and c.school_id is not null and hc.publish_time < '#{Time.now}' and hc.id in (#{(homework_common_id)})") + course_ids = courses.pluck(:id).uniq + @course_count = course_ids.length + # 受用院校 + school_ids = courses.pluck(:school_id).uniq + @schools_count = school_ids.length + + # 采用课堂情况 + @schools = School.select([:id, :name]).where(id: school_ids) + @schools = + @schools.map do |s| + school_courses = Course.where(id: course_ids, school_id: s.id) + course_count = school_courses.count + student_count = StudentsForCourse.where(course_id: school_courses.pluck(:id)).count + homework_count = HomeworkCommon.find_by_sql("select count(*) cnt from homework_commons hc join courses c on hc.course_id = c.id + where c.school_id = #{s.id} and hc.id in(#{homework_common_id})").first.try(:cnt) + s.attributes.dup.merge({name: s.name, course_count: course_count, student_count: student_count,homework_count: homework_count}) + end + @schools = @schools.sort{|x,y| y['homework_count'] <=> x['homework_count']} + @school_total_count = @schools.size + + page = params[:page] || 1 + @schools = @schools[(page.to_i-1)*10, 10] + + # TODO: 这个可以异步加载,让页面刷新完成后再加载图形数据 + # 章节使用情况 + @stage_user_info = [] + @sum = 0 #总数 + @subject.stages.includes(:stage_shixuns).each do |stage| + shixun_ids = stage.stage_shixuns.pluck(:shixun_id) + if shixun_ids.present? + homework_common_id = HomeworkCommonsShixun.where(shixun_id: shixun_ids).pluck(:homework_common_id).uniq + if homework_common_id.present? + publish_homework = HomeworkDetailManual.where("homework_common_id in(?) and comment_status > 0", homework_common_id.join(",")).pluck(:homework_common_id) + use_count = publish_homework.present? ? HomeworkCommon.find_by_sql("select count(*) cnt from homework_commons hc join courses c on hc.course_id = c.id + where hc.id in(#{publish_homework.join(",")}) and c.school_id is not null").first.try(:cnt) : 0 + @sum += use_count + else + @sum += 0 + use_count = 0 + end + @stage_user_info << use_count + else + @sum += 0 + @stage_user_info << 0 + end + end + end + + def shixun_report + + end + + def school_report + @schools = School.find_by_sql("select count(ms.id) ue_count, s.id, s.name school_name from user_extensions ue, + myshixuns ms, schools s where ue.user_id = ms.user_id and ms.shixun_id in (select shixun_id from + stage_shixuns where subject_id = '#{@subject.id}') and s.id = ue.school_id group by ue.school_id + order by ue_count desc limit 10") + end + + private + def subject_params + tip_exception("实训路径名称不能为空") if params[:name].blank? + tip_exception("实训路径简介不能为空") if params[:description].blank? + tip_exception("实训路径学习须知不能为空") if params[:learning_notes].blank? + params.require(:subject).permit(:name, :description, :learning_notes) + end + + def find_subject + @subject = Subject.find_by!(id: params[:id]) + + unless @subject.status == 2 || current_user.manager_of_subject?(@subject) + tip_exception("403", "") + end + end + + def allowed + unless current_user.manager_of_subject?(@subject) + tip_exception("403", "") + end + end +end diff --git a/app/helpers/exercises_helper.rb b/app/helpers/exercises_helper.rb index ace9e062e..7994e2c6a 100644 --- a/app/helpers/exercises_helper.rb +++ b/app/helpers/exercises_helper.rb @@ -403,6 +403,12 @@ module ExercisesHelper end user_answer_content = answer_choice_array.sort standard_answer = q.exercise_standard_answers.pluck(:exercise_choice_id).sort #该问题的标准答案,可能有多个 + + #TODO: 旧版多选题的标准答案是放在一个里面的,新版又做成了一个题有多个标准答案(exercise_choice_id存放的是标准答案的位置..) + if q.question_type == 1 && standard_answer.size == 1 + standard_answer = standard_answer.first.to_s.split("").map(&:to_i).sort + end + if user_answer_content == standard_answer #答案一致,多选或单选才给分,答案不对不给分 if standard_answer.size > 0 q_score_1 = q.question_score @@ -432,8 +438,8 @@ module ExercisesHelper end if q.is_ordered answers_content.each do |u| - i_standard_answer = standard_answer_array.where(exercise_choice_id:u.exercise_choice_id).pluck(:answer_text).reject(&:blank?).map!(&:downcase) #该选项的全部标准答案 - if i_standard_answer.include?(u.answer_text.downcase) #该空的标准答案包含用户的答案才有分数 + i_standard_answer = standard_answer_array.where(exercise_choice_id:u.exercise_choice_id).pluck(:answer_text).reject(&:blank?).map{|a| a.strip.downcase} #该选项的全部标准答案 + if i_standard_answer.include?(u.answer_text.strip.downcase) #该空的标准答案包含用户的答案才有分数 u.update_column('score',q_score_2) score2 = score2 + q_score_2 else @@ -442,9 +448,9 @@ module ExercisesHelper end end else - st_answer_text = standard_answer_array.pluck(:answer_text).reject(&:blank?).map!(&:downcase) + st_answer_text = standard_answer_array.pluck(:answer_text).reject(&:blank?).map{|a| a.strip.downcase} answers_content.each do |u| - u_answer_text = u.answer_text.downcase + u_answer_text = u.answer_text.strip.downcase if st_answer_text.include?(u_answer_text) #只要标准答案包含用户的答案,就有分数。同时,下一次循环时,就会删除该标准答案。防止用户的相同答案获分 u.update_column("score",q_score_2) score2 = score2 + q_score_2 @@ -503,7 +509,7 @@ module ExercisesHelper end end user_scores = answers_content.blank? ? 0.0 : answers_content.score_reviewed.pluck(:score).sum - if user_scores > 0.0 + if user_scores > 0.0 stand_answer = 1 else stand_answer = 0 @@ -529,6 +535,82 @@ module ExercisesHelper } end + #当单个问题的分数更新时,更新用户的总分 + def update_single_score(q,user_id,standard_answer) + score1 = 0.0 #用户的新得分 + origin_score = 0.0 #用户的原来该问题的得分 + answers_content = q&.exercise_answers&.where(user_id: user_id) #学生的答案 + if answers_content.present? #用户回答了该题,才会改分数 + if q.question_type <= 2 #为选择题或判断题时 + origin_score = answers_content.first.score + answer_choice_array = [] + answers_content.each do |a| + answer_choice_array.push(a.exercise_choice.choice_position) #学生答案的位置 + end + user_answer_content = answer_choice_array.sort + + #TODO: 旧版多选题的标准答案是放在一个里面的,新版又做成了一个题有多个标准答案(exercise_choice_id存放的是标准答案的位置..) + if q.question_type == 1 && standard_answer.size == 1 + standard_answer = standard_answer.first.to_s.split("").map(&:to_i) + end + + if user_answer_content == standard_answer #答案一致,多选或单选才给分,答案不对不给分 + if standard_answer.size > 0 + q_score_1 = q.question_score + else + q_score_1 = 0.0 + end + answers_content.update_all(:score => q_score_1) + score1 = q_score_1 + else + answers_content.update_all(:score => -1.0) + end + elsif q.question_type == 3 #填空题 + origin_score = answers_content.score_reviewed.pluck(:score).sum + + standard_answer_count = standard_answer.count + if standard_answer_count > 0 #存在标准答案时才有分数 + q_score_2 = (q.question_score.to_f / standard_answer_count) #每一空的得分 + else + q_score_2 = 0.0 + end + if q.is_ordered + answers_content.each do |u| + i_standard_answer = [] + standard_answer.each do |a| + if a[:choice_id] == u.exercise_choice_id + i_standard_answer += a[:answer_text] + end + end + i_standard_answer = i_standard_answer.map{|a| a.strip.downcase} + if i_standard_answer.include?(u.answer_text.strip.downcase) #该空的标准答案包含用户的答案才有分数 + u.update_column('score',q_score_2) + score1 = score1 + q_score_2 + else + u.update_column('score',-1.0) + score1 += 0.0 + end + end + else + st_answer_text = standard_answer.pluck(:answer_text).sum.map{|a| a.strip.downcase} + answers_content.each do |u| + u_answer_text = u.answer_text.downcase + if st_answer_text.include?(u_answer_text) #只要标准答案包含用户的答案,就有分数。同时,下一次循环时,就会删除该标准答案。防止用户的相同答案获分 + u.update_column("score",q_score_2) + score1 = score1 + q_score_2 + st_answer_text.delete(u_answer_text) + else + u.update_column('score',-1.0) + score1 += 0.0 + end + end + end + end + end + origin_score = origin_score < 0.0 ? 0.0 : origin_score + score1 - origin_score + end + #获取用户的相关信息 def exercise_use_info(ex_user,user_status,exercise) course = exercise.course diff --git a/app/models/course.rb b/app/models/course.rb index b7bea6ec0..b46464ea6 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 @@ -180,7 +185,7 @@ class Course < ApplicationRecord end def all_course_module_types - %w[activity announcement online_learning shixun_homework common_homework group_homework graduation exercise poll attachment board course_group] + %w[activity announcement online_learning shixun_homework common_homework group_homework exercise attachment course_group graduation poll board] end def get_course_module_by_type(type) diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index f198a7143..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 @@ -48,6 +49,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]).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/app/models/subject.rb b/app/models/subject.rb index 113460375..b8d6eef8b 100644 --- a/app/models/subject.rb +++ b/app/models/subject.rb @@ -19,9 +19,9 @@ class Subject < ApplicationRecord has_many :stages, -> { order("stages.position ASC") }, dependent: :destroy # 开放课堂 - has_many :courses, -> { order("courses.id ASC") } + has_many :courses, -> { where("is_delete = 0").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 } 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/app/views/courses/settings.json.jbuilder b/app/views/courses/settings.json.jbuilder index 97083d5f9..27dc9aac4 100644 --- a/app/views/courses/settings.json.jbuilder +++ b/app/views/courses/settings.json.jbuilder @@ -9,6 +9,11 @@ json.start_date @course.start_date json.end_date @course.end_date json.is_public @course.is_public json.course_module_types @course.course_modules.where(hidden: 0).pluck(:module_type) +json.course_modules @course_modules do |module_type| + json.module_type module_type.module_type + json.hidden module_type.hidden + json.module_name module_type.module_name +end json.authentication @course.authentication json.professional_certification @course.professional_certification json.subject_id @course.subject_id 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 diff --git a/app/views/exercises/_shixun_details.json.jbuilder b/app/views/exercises/_shixun_details.json.jbuilder index 4a73a9bbb..29a39a594 100644 --- a/app/views/exercises/_shixun_details.json.jbuilder +++ b/app/views/exercises/_shixun_details.json.jbuilder @@ -32,6 +32,9 @@ json.shixun_detail do if game.try(:lastest_code).blank? cha_path = challenge_path(shixun_challenge.challenge&.path) latest_code = git_fle_content(game.myshixun.repo_path,cha_path) + if latest_code.to_s == "true" + latest_code = "" + end else latest_code = game.try(:lastest_code) end diff --git a/config/routes.rb b/config/routes.rb index 4a8de5f3b..035b86d5f 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 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..f32ac88b1 --- /dev/null +++ b/db/migrate/20190820021047_migrate_course_task_position.rb @@ -0,0 +1,5 @@ +class MigrateCourseTaskPosition < ActiveRecord::Migration[5.2] + def change + add_column :homework_commons, :position, :integer, :default => 0 + end +end diff --git a/db/migrate/20190820102040_change_exercise_1930_position.rb b/db/migrate/20190820102040_change_exercise_1930_position.rb new file mode 100644 index 000000000..acf99b9e5 --- /dev/null +++ b/db/migrate/20190820102040_change_exercise_1930_position.rb @@ -0,0 +1,29 @@ +class ChangeExercise1930Position < ActiveRecord::Migration[5.2] + def change + 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.present? + ex_questions.each_with_index do |q,index| + puts index + q_num = index + 1 + if q.question_number.to_i != q_num + q.update_attributes(question_number: q_num) + end + end + 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.present? + ex_q_bank.each_with_index do |q,index| + puts index + q_num_1 = index + 1 + if q.question_number.to_i != q_num_1 + q.update_attributes(question_number: q_num_1) + end + end + 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 diff --git a/db/migrate/20190822022306_add_exercise_user_update.rb b/db/migrate/20190822022306_add_exercise_user_update.rb new file mode 100644 index 000000000..f45e6a8ee --- /dev/null +++ b/db/migrate/20190822022306_add_exercise_user_update.rb @@ -0,0 +1,20 @@ +class AddExerciseUserUpdate < ActiveRecord::Migration[5.2] + include ExercisesHelper + def change + #2019,8,22添加 + exs = Exercise.all.is_exercise_published.where("publish_time > ?",(Time.now - 2.months)).includes(:exercise_questions,:exercise_users) + exs.each do |ex| + ex_users = ex.exercise_users.exercise_user_committed.where("end_at is not null and end_at > ?",(Time.now - 2.months)) + if ex_users.present? + ex_users.each do |ex_user| + calculate_score = calculate_student_score(ex,ex_user.user)[:total_score] + subjective_score = ex_user.subjective_score + total_score_subjective_score = subjective_score < 0.0 ? 0.0 : subjective_score + total_score = calculate_score + total_score_subjective_score + ex_user.update_attributes(score:total_score,objective_score:calculate_score) + puts ex_user.id + end + end + end + end +end diff --git a/lib/tasks/excellent_course_exercise.rake b/lib/tasks/excellent_course_exercise.rake index d337fbd73..0d8875806 100644 --- a/lib/tasks/excellent_course_exercise.rake +++ b/lib/tasks/excellent_course_exercise.rake @@ -103,6 +103,13 @@ namespace :excellent_course_exercise do end user_answer_content = answer_choice_array.sort standard_answer = q.exercise_standard_answers.pluck(:exercise_choice_id).sort #该问题的标准答案,可能有多个 + + #TODO: 旧版多选题的标准答案是放在一个里面的,新版又做成了一个题有多个标准答案(exercise_choice_id存放的是标准答案的位置..) + + if q.question_type == 1 && standard_answer.size == 1 + standard_answer = standard_answer.first.to_s.split("").map(&:to_i) + end + if user_answer_content == standard_answer #答案一致,多选或单选才给分,答案不对不给分 if standard_answer.size > 0 q_score_1 = q.question_score 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 diff --git a/public/assets/admin/css/style-responsive.css b/public/assets/admin/css/style-responsive.css deleted file mode 100644 index 01ec72eef..000000000 --- a/public/assets/admin/css/style-responsive.css +++ /dev/null @@ -1,263 +0,0 @@ -/*Large Desktop*/ -@media (min-width: 1200px) { - -} - -/*Desktop*/ -@media (min-width: 992px) and (max-width: 1199px) { - -} - -/*Small desktop or tablet*/ -@media (min-width: 768px) and (max-width: 991px) { - body{overflow-x: hidden;} - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-x: scroll; - overflow-y: hidden; - border: 1px solid #dddddd; - -ms-overflow-style: -ms-autohiding-scrollbar; - -webkit-overflow-scrolling: touch; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } - .button-menu-mobile{display: block;} - .navbar{margin: 0 0 0 40px;} - .mobile-sidebar{left: 0px;} - .mobile-content{left: 225px;right: -225px;} - .box-info .icon-box{ - width: 45px; - font-size: 20px; - margin-top: 5px - } - .box-info .text-box p{font-size: 11px;} - .toolbar-btn-action{text-align: center;} - .gallery-wrap .column .inner .img-wrap{ - height: 60px; - overflow: hidden; - background: #ddd; - } - .gallery-wrap .column-3 .inner .img-wrap{ - height: 140px; - overflow: hidden; - background: #ddd; - } - .gallery-wrap .column-4 .inner .img-wrap{ - height: 100px; - overflow: hidden; - background: #ddd; - } - .user-profile-sidebar{text-align: center;} - -} - -/*Phone*/ -@media (max-width: 767px) { - body{overflow-x: hidden;} - - .mobile-sidebar{left: 0px;} - .mobile-content{left: 250px;right: -250px;} - .box-info table{margin: 0 0 0 0;} - .box-info .table-responsive{border: none;} - .nav.navbar-nav.top-navbar li span.absolute {left: 25px;} - .box-info .additional .list-group{margin-bottom: -10px;} - .toolbar-btn-action{text-align: center;} - .gallery-wrap .column{width: 25%;} - .gallery-wrap .column-4{width: 33.33333333333333%;} - .gallery-wrap .column-3{width: 50%;} - .gallery-wrap .column .inner .img-wrap{ - height: 70px; - overflow: hidden; - background: #ddd; - } - .gallery-wrap .column-3 .inner .img-wrap{ - height: 140px; - overflow: hidden; - background: #ddd; - } - .gallery-wrap .column-4 .inner .img-wrap{ - height: 105px; - overflow: hidden; - background: #ddd; - } - .widget.box-messages{ - margin-top:0px; - } - - footer{text-align: center;} - .navbar-nav{ - float:left; - margin:0px; - } - .navbar{ - border:none; - } - - .navbar-nav .open .dropdown-menu{ - float:left; - position: absolute; - background:#fff; - right:0px; - left:auto; - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); - } - - .navbar-nav.navbar-right:last-child { - margin-right: -15px; - height:50px; - } - - .open > .dropdown-menu { - display: block; - } - - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - - .navbar-nav > li > a{ - padding-top: 15px; - padding-bottom: 15px; - } - - .navbar-right{ - float: right; - } - .navbar-nav > li{ - display: inline-block; - } - .lock-screen{text-align: center;} - - .profile-actions{ - bottom:auto; - top:60px; - } - .widget-tabbed{ - margin-top:40px; - } - .widget-tabbed .nav-tabs a{ - font-size:0px !important; - } - .widget-tabbed .nav-tabs a i{ - font-size:18px !important; - } - .the-timeline ul li.the-year{ - font-size:30px; - } - .ava-lock-screen{text-align: center; margin-bottom: 20px;} - .ava-lock-screen img{ - width: 100px; - margin: 0; - } - .open-right-sidebar .hide-phone{ - display: none; - } - - .la-pricing-table .la-col-4{width: 50%;} - .user-profile-sidebar{text-align: center;} -} - -@media (max-width: 480px){ - .box-info .icon-box{ - width: 100%; - display: block; - } - .box-info .icon-box,.box-info .text-box{text-align: center;} - .gallery-wrap .column,.gallery-wrap .column-3,.gallery-wrap .column-4{width: 33.33333333333333%;} - .gallery-wrap .column .inner .img-wrap,.gallery-wrap .column-3 .inner .img-wrap,.gallery-wrap .column-4 .inner .img-wrap{height: 70px;} - .login-wrap{margin: 20px 0 0 0;} - - .navbar-default { - border: none; - } - .open-right-sidebar .topbar-profile,.open-right-sidebar .hide-phone{ - display: none; - } - .the-timeline ul li.the-year{ - font-size:20px; - margin-left: 37%; - } - #wrapper:not(.enlarged) .topbar-profile,#wrapper:not(.enlarged) .hide-phone{ - display: none; - } - #wrapper .content-page{ - margin-left:0px !important; - padding-left:50px; - width:100%; - display: inline-block; - } - .open-right-sidebar .content-page > .content{ - opacity: 0; - } - .side-menu{ - z-index: 10 !important; - } - #weather h2{ - top:90px; - } - #weather .w-region{ - top:250px; - } - #stock-widget #stock-title{ - display: none; - } - #stock-widget .stock-options{ - margin-left: 15px; - } - .button-menu-mobile{display: block;} -} - -@media (max-width: 420px){ - .hide-phone{ - display: none !important; - } - - -} - -@media (max-width: 360px){ - .gallery-wrap .column,.gallery-wrap .column-3,.gallery-wrap .column-4{width: 50%;} - .gallery-wrap .column .inner .img-wrap,.gallery-wrap .column-3 .inner .img-wrap,.gallery-wrap .column-4 .inner .img-wrap{height: 80px;} - .la-pricing-table .la-col-4{width: 100%;} -} - -@media (max-width: 320px){ - .gallery-wrap .column,.gallery-wrap .column-3,.gallery-wrap .column-4{width: 50%;} - .gallery-wrap .column .inner .img-wrap,.gallery-wrap .column-3 .inner .img-wrap,.gallery-wrap .column-4 .inner .img-wrap{height: 70px;} -} \ No newline at end of file diff --git a/public/assets/admin/css/style.css b/public/assets/admin/css/style.css deleted file mode 100644 index f52dd4771..000000000 --- a/public/assets/admin/css/style.css +++ /dev/null @@ -1,5507 +0,0 @@ -@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700); -.bg-white-1 { - background-color: #ffffff !important; -} -.border-white-1 { - border-color: #ffffff !important; -} -.btn-white-1 { - background-color: #ffffff; - color: #fff; -} -.btn-white-1:hover { - background-color: #f2f2f2 !important; - color: #fff; -} -.text-white-1 { - color: #ffffff !important; -} -.panel-white-1 { - border-color: #f2f2f2 !important; -} -.panel-white-1 .panel-heading { - background-color: #ffffff !important; - border-color: #f2f2f2 !important; - border-radius: 0px; -} -.panel-white-1 .panel-heading a, -.panel-white-1 .panel-title { - color: #333; -} -.widget.white-1 { - background-color: #ffffff; - color: #333; -} -.widget.white-1 .widget-header h2 { - color: #333; -} -.bg-red-1 { - background-color: #eb5055 !important; -} -.border-red-1 { - border-color: #eb5055 !important; -} -.btn-red-1 { - background-color: #eb5055; - color: #fff; -} -.btn-red-1:hover { - background-color: #dd4449 !important; - color: #fff; -} -.text-red-1 { - color: #eb5055 !important; -} -.panel-red-1 { - border-color: #dd4449 !important; -} -.panel-red-1 .panel-heading { - background-color: #eb5055 !important; - border-color: #dd4449 !important; - border-radius: 0px; -} -.panel-red-1 .panel-heading a, -.panel-red-1 .panel-title { - color: #fff; -} -.widget.red-1 { - background-color: #eb5055; - color: #fff; -} -.widget.red-1 .widget-header h2 { - color: #fff; -} -.bg-blue-1 { - background-color: #3c989e !important; -} -.border-blue-1 { - border-color: #3c989e !important; -} -.btn-blue-1 { - background-color: #3c989e; - color: #fff; -} -.btn-blue-1:hover { - background-color: #3f7e82 !important; - color: #fff; -} -.text-blue-1 { - color: #3c989e !important; -} -.panel-blue-1 { - border-color: #3f7e82 !important; -} -.panel-blue-1 .panel-heading { - background-color: #3c989e !important; - border-color: #3f7e82 !important; - border-radius: 0px; -} -.panel-blue-1 .panel-heading a, -.panel-blue-1 .panel-title { - color: #fff; -} -.widget.blue-1 { - background-color: #3c989e; - color: #fff; -} -.widget.blue-1 .widget-header h2 { - color: #fff; -} -.bg-blue-2 { - background-color: #3498db !important; -} -.border-blue-2 { - border-color: #3498db !important; -} -.btn-blue-2 { - background-color: #3498db; - color: #fff; -} -.btn-blue-2:hover { - background-color: #3189c4 !important; - color: #fff; -} -.text-blue-2 { - color: #3498db !important; -} -.panel-blue-2 { - border-color: #3189c4 !important; -} -.panel-blue-2 .panel-heading { - background-color: #3498db !important; - border-color: #3189c4 !important; - border-radius: 0px; -} -.panel-blue-2 .panel-heading a, -.panel-blue-2 .panel-title { - color: #fff; -} -.widget.blue-2 { - background-color: #3498db; - color: #fff; -} -.widget.blue-2 .widget-header h2 { - color: #fff; -} -.bg-blue-3 { - background-color: #2980b9 !important; -} -.border-blue-3 { - border-color: #2980b9 !important; -} -.btn-blue-3 { - background-color: #2980b9; - color: #fff; -} -.btn-blue-3:hover { - background-color: #2e6f9a !important; - color: #fff; -} -.text-blue-3 { - color: #2980b9 !important; -} -.panel-blue-3 { - border-color: #2e6f9a !important; -} -.panel-blue-3 .panel-heading { - background-color: #2980b9 !important; - border-color: #2e6f9a !important; - border-radius: 0px; -} -.panel-blue-3 .panel-heading a, -.panel-blue-3 .panel-title { - color: #fff; -} -.widget.blue-3 { - background-color: #2980b9; - color: #fff; -} -.widget.blue-3 .widget-header h2 { - color: #fff; -} -.bg-darkblue-1 { - background-color: #252932 !important; -} -.border-darkblue-1 { - border-color: #252932 !important; -} -.btn-darkblue-1 { - background-color: #252932; - color: #fff; -} -.btn-darkblue-1:hover { - background-color: #1d1e20 !important; - color: #fff; -} -.text-darkblue-1 { - color: #252932 !important; -} -.panel-darkblue-1 { - border-color: #1d1e20 !important; -} -.panel-darkblue-1 .panel-heading { - background-color: #252932 !important; - border-color: #1d1e20 !important; - border-radius: 0px; -} -.panel-darkblue-1 .panel-heading a, -.panel-darkblue-1 .panel-title { - color: #fff; -} -.widget.darkblue-1 { - background-color: #252932; - color: #fff; -} -.widget.darkblue-1 .widget-header h2 { - color: #fff; -} -.bg-darkblue-2 { - background-color: #4a525f !important; -} -.border-darkblue-2 { - border-color: #4a525f !important; -} -.btn-darkblue-2 { - background-color: #4a525f; - color: #fff; -} -.btn-darkblue-2:hover { - background-color: #464749 !important; - color: #fff; -} -.text-darkblue-2 { - color: #4a525f !important; -} -.panel-darkblue-2 { - border-color: #464749 !important; -} -.panel-darkblue-2 .panel-heading { - background-color: #4a525f !important; - border-color: #464749 !important; - border-radius: 0px; -} -.panel-darkblue-2 .panel-heading a, -.panel-darkblue-2 .panel-title { - color: #fff; -} -.widget.darkblue-2 { - background-color: #4a525f; - color: #fff; -} -.widget.darkblue-2 .widget-header h2 { - color: #fff; -} -.bg-darkblue-3 { - background-color: #38464a !important; -} -.border-darkblue-3 { - border-color: #38464a !important; -} -.btn-darkblue-3 { - background-color: #38464a; - color: #fff; -} -.btn-darkblue-3:hover { - background-color: #323536 !important; - color: #fff; -} -.text-darkblue-3 { - color: #38464a !important; -} -.panel-darkblue-3 { - border-color: #323536 !important; -} -.panel-darkblue-3 .panel-heading { - background-color: #38464a !important; - border-color: #323536 !important; - border-radius: 0px; -} -.panel-darkblue-3 .panel-heading a, -.panel-darkblue-3 .panel-title { - color: #fff; -} -.widget.darkblue-3 { - background-color: #38464a; - color: #fff; -} -.widget.darkblue-3 .widget-header h2 { - color: #fff; -} -.bg-lightblue-1 { - background-color: #abb7b7 !important; -} -.border-lightblue-1 { - border-color: #abb7b7 !important; -} -.btn-lightblue-1 { - background-color: #abb7b7; - color: #fff; -} -.btn-lightblue-1:hover { - background-color: #a4a4a4 !important; - color: #fff; -} -.text-lightblue-1 { - color: #abb7b7 !important; -} -.panel-lightblue-1 { - border-color: #a4a4a4 !important; -} -.panel-lightblue-1 .panel-heading { - background-color: #abb7b7 !important; - border-color: #a4a4a4 !important; - border-radius: 0px; -} -.panel-lightblue-1 .panel-heading a, -.panel-lightblue-1 .panel-title { - color: #fff; -} -.widget.lightblue-1 { - background-color: #abb7b7; - color: #fff; -} -.widget.lightblue-1 .widget-header h2 { - color: #fff; -} -.bg-lightblue-2 { - background-color: #7a868f !important; -} -.border-lightblue-2 { - border-color: #7a868f !important; -} -.btn-lightblue-2 { - background-color: #7a868f; - color: #fff; -} -.btn-lightblue-2:hover { - background-color: #787878 !important; - color: #fff; -} -.text-lightblue-2 { - color: #7a868f !important; -} -.panel-lightblue-2 { - border-color: #787878 !important; -} -.panel-lightblue-2 .panel-heading { - background-color: #7a868f !important; - border-color: #787878 !important; - border-radius: 0px; -} -.panel-lightblue-2 .panel-heading a, -.panel-lightblue-2 .panel-title { - color: #fff; -} -.widget.lightblue-2 { - background-color: #7a868f; - color: #fff; -} -.widget.lightblue-2 .widget-header h2 { - color: #fff; -} -.bg-orange-1 { - background-color: #e84c3d !important; -} -.border-orange-1 { - border-color: #e84c3d !important; -} -.btn-orange-1 { - background-color: #e84c3d; - color: #fff; -} -.btn-orange-1:hover { - background-color: #d94132 !important; - color: #fff; -} -.text-orange-1 { - color: #e84c3d !important; -} -.panel-orange-1 { - border-color: #d94132 !important; -} -.panel-orange-1 .panel-heading { - background-color: #e84c3d !important; - border-color: #d94132 !important; - border-radius: 0px; -} -.panel-orange-1 .panel-heading a, -.panel-orange-1 .panel-title { - color: #fff; -} -.widget.orange-1 { - background-color: #e84c3d; - color: #fff; -} -.widget.orange-1 .widget-header h2 { - color: #fff; -} -.bg-orange-2 { - background-color: #de745e !important; -} -.border-orange-2 { - border-color: #de745e !important; -} -.btn-orange-2 { - background-color: #de745e; - color: #fff; -} -.btn-orange-2:hover { - background-color: #cf6954 !important; - color: #fff; -} -.text-orange-2 { - color: #de745e !important; -} -.panel-orange-2 { - border-color: #cf6954 !important; -} -.panel-orange-2 .panel-heading { - background-color: #de745e !important; - border-color: #cf6954 !important; - border-radius: 0px; -} -.panel-orange-2 .panel-heading a, -.panel-orange-2 .panel-title { - color: #fff; -} -.widget.orange-2 { - background-color: #de745e; - color: #fff; -} -.widget.orange-2 .widget-header h2 { - color: #fff; -} -.bg-orange-3 { - background-color: #e27a3f !important; -} -.border-orange-3 { - border-color: #e27a3f !important; -} -.btn-orange-3 { - background-color: #e27a3f; - color: #fff; -} -.btn-orange-3:hover { - background-color: #d26e35 !important; - color: #fff; -} -.text-orange-3 { - color: #e27a3f !important; -} -.panel-orange-3 { - border-color: #d26e35 !important; -} -.panel-orange-3 .panel-heading { - background-color: #e27a3f !important; - border-color: #d26e35 !important; - border-radius: 0px; -} -.panel-orange-3 .panel-heading a, -.panel-orange-3 .panel-title { - color: #fff; -} -.widget.orange-3 { - background-color: #e27a3f; - color: #fff; -} -.widget.orange-3 .widget-header h2 { - color: #fff; -} -.bg-orange-4 { - background-color: #edce8c !important; -} -.border-orange-4 { - border-color: #edce8c !important; -} -.btn-orange-4 { - background-color: #edce8c; - color: #fff; -} -.btn-orange-4:hover { - background-color: #e2c27e !important; - color: #fff; -} -.text-orange-4 { - color: #edce8c !important; -} -.panel-orange-4 { - border-color: #e2c27e !important; -} -.panel-orange-4 .panel-heading { - background-color: #edce8c !important; - border-color: #e2c27e !important; - border-radius: 0px; -} -.panel-orange-4 .panel-heading a, -.panel-orange-4 .panel-title { - color: #333; -} -.widget.orange-4 { - background-color: #edce8c; - color: #333; -} -.widget.orange-4 .widget-header h2 { - color: #333; -} -.bg-green-1 { - background-color: #68c39f !important; -} -.border-green-1 { - border-color: #68c39f !important; -} -.btn-green-1 { - background-color: #68c39f; - color: #fff; -} -.btn-green-1:hover { - background-color: #62b091 !important; - color: #fff; -} -.text-green-1 { - color: #68c39f !important; -} -.panel-green-1 { - border-color: #62b091 !important; -} -.panel-green-1 .panel-heading { - background-color: #68c39f !important; - border-color: #62b091 !important; - border-radius: 0px; -} -.panel-green-1 .panel-heading a, -.panel-green-1 .panel-title { - color: #fff; -} -.widget.green-1 { - background-color: #68c39f; - color: #fff; -} -.widget.green-1 .widget-header h2 { - color: #fff; -} -.bg-green-2 { - background-color: #9ec789 !important; -} -.border-green-2 { - border-color: #9ec789 !important; -} -.btn-green-2 { - background-color: #9ec789; - color: #fff; -} -.btn-green-2:hover { - background-color: #93b582 !important; - color: #fff; -} -.text-green-2 { - color: #9ec789 !important; -} -.panel-green-2 { - border-color: #93b582 !important; -} -.panel-green-2 .panel-heading { - background-color: #9ec789 !important; - border-color: #93b582 !important; - border-radius: 0px; -} -.panel-green-2 .panel-heading a, -.panel-green-2 .panel-title { - color: #fff; -} -.widget.green-2 { - background-color: #9ec789; - color: #fff; -} -.widget.green-2 .widget-header h2 { - color: #fff; -} -.bg-green-3 { - background-color: #209c83 !important; -} -.border-green-3 { - border-color: #209c83 !important; -} -.btn-green-3 { - background-color: #209c83; - color: #fff; -} -.btn-green-3:hover { - background-color: #247f6c !important; - color: #fff; -} -.text-green-3 { - color: #209c83 !important; -} -.panel-green-3 { - border-color: #247f6c !important; -} -.panel-green-3 .panel-heading { - background-color: #209c83 !important; - border-color: #247f6c !important; - border-radius: 0px; -} -.panel-green-3 .panel-heading a, -.panel-green-3 .panel-title { - color: #fff; -} -.widget.green-3 { - background-color: #209c83; - color: #fff; -} -.widget.green-3 .widget-header h2 { - color: #fff; -} -.bg-pink-1 { - background-color: #f57a82 !important; -} -.border-pink-1 { - border-color: #f57a82 !important; -} -.btn-pink-1 { - background-color: #f57a82; - color: #fff; -} -.btn-pink-1:hover { - background-color: #eb6b73 !important; - color: #fff; -} -.text-pink-1 { - color: #f57a82 !important; -} -.panel-pink-1 { - border-color: #eb6b73 !important; -} -.panel-pink-1 .panel-heading { - background-color: #f57a82 !important; - border-color: #eb6b73 !important; - border-radius: 0px; -} -.panel-pink-1 .panel-heading a, -.panel-pink-1 .panel-title { - color: #333; -} -.widget.pink-1 { - background-color: #f57a82; - color: #333; -} -.widget.pink-1 .widget-header h2 { - color: #333; -} -.bg-pink-2 { - background-color: #f56f6c !important; -} -.border-pink-2 { - border-color: #f56f6c !important; -} -.btn-pink-2 { - background-color: #f56f6c; - color: #fff; -} -.btn-pink-2:hover { - background-color: #ea605d !important; - color: #fff; -} -.text-pink-2 { - color: #f56f6c !important; -} -.panel-pink-2 { - border-color: #ea605d !important; -} -.panel-pink-2 .panel-heading { - background-color: #f56f6c !important; - border-color: #ea605d !important; - border-radius: 0px; -} -.panel-pink-2 .panel-heading a, -.panel-pink-2 .panel-title { - color: #fff; -} -.widget.pink-2 { - background-color: #f56f6c; - color: #fff; -} -.widget.pink-2 .widget-header h2 { - color: #fff; -} -.bg-yellow-1 { - background-color: #f4cda5 !important; -} -.border-yellow-1 { - border-color: #f4cda5 !important; -} -.btn-yellow-1 { - background-color: #f4cda5; - color: #fff; -} -.btn-yellow-1:hover { - background-color: #ebc095 !important; - color: #fff; -} -.text-yellow-1 { - color: #f4cda5 !important; -} -.panel-yellow-1 { - border-color: #ebc095 !important; -} -.panel-yellow-1 .panel-heading { - background-color: #f4cda5 !important; - border-color: #ebc095 !important; - border-radius: 0px; -} -.panel-yellow-1 .panel-heading a, -.panel-yellow-1 .panel-title { - color: #333; -} -.widget.yellow-1 { - background-color: #f4cda5; - color: #333; -} -.widget.yellow-1 .widget-header h2 { - color: #333; -} -.bg-yellow-2 { - background-color: #eae696 !important; -} -.border-yellow-2 { - border-color: #eae696 !important; -} -.btn-yellow-2 { - background-color: #eae696; - color: #fff; -} -.btn-yellow-2:hover { - background-color: #deda88 !important; - color: #fff; -} -.text-yellow-2 { - color: #eae696 !important; -} -.panel-yellow-2 { - border-color: #deda88 !important; -} -.panel-yellow-2 .panel-heading { - background-color: #eae696 !important; - border-color: #deda88 !important; - border-radius: 0px; -} -.panel-yellow-2 .panel-heading a, -.panel-yellow-2 .panel-title { - color: #333; -} -.widget.yellow-2 { - background-color: #eae696; - color: #333; -} -.widget.yellow-2 .widget-header h2 { - color: #333; -} -body { - background: #f3f3f3; - margin: 0; - -webkit-font-smoothing: antialiased; - text-rendering: optimizelegibility; - -webkit-text-size-adjust: 100%; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -} -h1, -h2, -h3, -h4, -h5, -h6 { - margin: 10px 0; -} -h1 { - line-height: 43px; -} -h2 { - line-height: 35px; -} -h3 { - line-height: 30px; -} -h4 { - line-height: 22px; -} -h3 small, -h4 small, -h5 small { - font-family: 'Open Sans'; - font-weight: 300; - color: #444; -} -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: 'Open Sans'; - font-weight: 300; - color: #505458; -} -* { - outline: none !important; -} -a:hover, -a:active, -a:focus { - outline: 0; - text-decoration: none; -} -:focus { - outline: none; -} -::-moz-focus-inner { - border: 0; -} -.label { - padding: 0.3em 0.6em; -} -.container { - width: auto; -} -.navbar { - margin: 0 0 0 -15px; -} -.navbar-collapse { - padding: 0; - margin: 0; -} -.navbar-default { - background-color: transparent; - border: none; -} -.nav.navbar-nav.top-navbar .dropdown-menu > li { - position: relative; -} -.nav.navbar-nav.top-navbar .dropdown-menu > li > a { - cursor: pointer; - color: #4C5264; -} -.nav.navbar-nav.top-navbar > li span.absolute { - position: absolute; - top: 5px; - left: 25px; - font-size: 10px; - line-height: 7px !important; - font-weight: 400 ! important; - border-radius: 15px; - padding: 4px; - z-index: 4; -} -.table-noborder td { - border: 0px !important; -} -.badge { - vertical-align: bottom; -} -.btn-group.spaced .btn { - border-left: 1px solid rgba(0,0,0,0.1); -} -.btn-group.open { - z-index: 2 !important; -} -.bold { - font-weight: 700 !important; -} -.semibold { - font-weight: 600 !important; -} -.input-invis { - background: none !important; - border: none !important; -} -span.new-circle { - border-radius: 10px; - padding: 5px; -} -img.xs-avatar { - width: 50px; - padding: 2px; - background: #fff; - border: 1px solid #ddd; - margin: 0px 4px 0 0; - -webkit-border-radius: 100px !important; - -moz-border-radius: 100px !important; - border-radius: 100px !important; -} -img.ava-dropdown { - float: left; - margin: 0px 10px 0 0; -} -label { - font-family: "Open Sans"; - font-size: 13px; - font-weight: 600; -} -.no-left-padding { - padding-left: 0px; -} -.no-right-padding { - padding-right: 0px; -} -.nomargin { - margin: 0px !important; -} -.no-rounded { - -webkit-border-radius: 0px !important; - border-radius: 0px !important; -} -.full-rounded { - -webkit-border-radius: 20px !important; - -moz-border-radius: 20px !important; - border-radius: 20px !important; -} -.stacked { - margin: 0px; -} -.stacked > [class*="col-"] { - padding-left: 0px; - padding-right: 0px; - margin: 0px !important; -} -textarea, -input[type="text"], -input[type="password"], -input[type="datetime"], -input[type="datetime-local"], -input[type="date"], -input[type="month"], -input[type="time"], -input[type="week"], -input[type="number"], -input[type="email"], -input[type="url"], -input[type="search"], -input[type="tel"], -input[type="color"] { - -webkit-transition: background 0.2s linear; - -moz-transition: background 0.2s linear; - -ms-transition: background 0.2s linear; - -o-transition: background 0.2s linear; - transition: background 0.2s linear; -} -textarea:focus, -select:focus, -input[type="text"]:focus, -input[type="password"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="date"]:focus, -input[type="month"]:focus, -input[type="time"]:focus, -input[type="week"]:focus, -input[type="number"]:focus, -input[type="email"]:focus, -input[type="url"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="color"]:focus, -.m-uneditable-input:focus { - background: #f1f1f1; - border-color: #eee; - -webkit-transition: background 0.2s linear; - -moz-transition: background 0.2s linear; - -ms-transition: background 0.2s linear; - -o-transition: background 0.2s linear; - transition: background 0.2s linear; -} -.icon-added input { - padding-left: 32px !important; -} -.icon-added i:first-child { - color: rgba(0,0,0,0.2); - display: block; - margin: 10px; - z-index: 3; - position: absolute; - text-align: center; -} -.loading { - display: block; - z-index: 2000; - width: 14px; - height: 14px; - border: solid 2px transparent; - border-top-color: #68C39F; - border-left-color: #68C39F; - border-radius: 10px; - -webkit-animation: pace-spinner 400ms linear infinite; - -moz-animation: pace-spinner 400ms linear infinite; - -ms-animation: pace-spinner 400ms linear infinite; - -o-animation: pace-spinner 400ms linear infinite; - animation: pace-spinner 400ms linear infinite; - -moz-border-bottom-colors: none; - -moz-border-left-colors: none; - -moz-border-right-colors: none; - -moz-border-top-colors: none; -} -.dropdown-menu { - -webkit-box-shadow: 0 0 0 0 rgba(0,0,0,0); - box-shadow: 0 0 0 0 rgba(0,0,0,0); - -webkit-border-radius: 2px; - border-radius: 2px; - font-size: 12px; - padding: 5px; - background: #fff; - border: 1px solid rgba(0,0,0,0.1); - border-bottom: 1px solid #d2d2d2; - box-shadow: inset 0px 1px 2px #fff; - top: 100%; -} -.dropdown-menu > li > a { - padding: 5px 7px; - -webkit-border-radius: 2px; - border-radius: 2px; - font-size: 13px; - color: #555; -} -.dropdown-menu > li > a:hover { - background: #aaa; - color: #fff; -} -.nav .dropdown-menu { - z-index: 8; -} -.dropdown-menu.dropdown-message ul { - white-space: inherit; -} -.dropdown-menu.dropdown-message > li > a { - word-wrap: break-word; - white-space: inherit; - width: 300px; - border-bottom: 1px solid #eee; -} -.dropdown-menu.dropdown-message li.dropdown-footer a { - display: block; -} -.dropdown-menu.dropdown-message li p { - font-size: 11px; - margin-bottom: 5px; -} -.dropdown-menu.dropdown-message li i.msg-time { - color: #7A868F; - font-size: 11px; - font-style: normal; -} -.dropdown-menu.dropdown-message li p i { - color: #7A868F; - font-size: 11px; - font-style: normal; -} -.dropdown-menu.dropdown-message .dropdown-message-scroll { - padding: 0px; -} -.dropdown-menu.dropdown-message .dropdown-message-scroll li { - padding: 5px 20px; -} -.dropdown-menu.dropdown-message .dropdown-message-scroll a, -.dropdown-menu.dropdown-message .dropdown-message-scroll strong { - text-decoration: none; - border-bottom: none; -} -.dropdown-menu.dropdown-message .dropdown-message-scroll .unread { - background: #FFFCE0; -} -.dropdown-menu.dropdown-message .dropdown-message-scroll a:hover { - color: #000; -} -.dropdown-header.notif-header { - font-size: 14px; - padding: 6px 8px 5px; -} -.dropdown-header.notif-header .pull-right { - margin-top: -19px; -} -.iradio, -.icheckbox { - margin-bottom: 10px; - margin-top: 10px; - min-height: 20px; - padding-left: 0px; -} -.icheckbox_square-aero { - margin-right: 5px; -} -.input-group-addon { - padding: 5px 12px; -} -i.i-xs { - font-size: 10px; -} -.widget-tabbed .nav-tabs:first-child { - margin-top: -39px; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #fff; - background-color: #545e6c; - border-bottom: none; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - color: #fff; - background-color: #545e6c; -} -.navbar-nav > li > .dropdown-menu:before { - border-bottom: 6px solid #ABB7B7; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - right: 18px; - content: ""; - height: 0; - margin-right: -3px; - pointer-events: none; - position: absolute; - width: 0; - bottom: 100%; -} -.navbar-nav > li > .dropdown-menu { - z-index: 8; - border-radius: 2px; - -webkit-border-radius: 2px; - padding: 0px; - border: 0px; - box-shadow: 0 2px 6px rgba(0,0,0,0.1); -} -.navbar-nav > li > .dropdown-menu > li > a { - -webkit-transition: all 200ms ease-in; - -moz-transition: all 200ms ease-in; - -ms-transition: all 200ms ease-in; - -o-transition: all 200ms ease-in; - transition: all 200ms ease-in; - -webkit-border-radius: 0px; - border-radius: 0px; -} -.navbar-nav > li > .dropdown-menu > li > a:hover, -.navbar-nav > li > .dropdown-menu > li > a:focus { - background: rgba(0,0,0,0.06); -} -.navbar-nav > li > .dropdown-menu .dropdown-header { - background: #ABB7B7; - color: #fff; - -webkit-border-radius: 2px 2px 0 0; - border-radius: 2px 2px 0 0; -} -.navbar-nav > li > .dropdown-menu .dropdown-header a { - display: inline-block; - width: auto; - padding: 0px; - border: none; - margin-right: 7px; -} -.navbar-nav > li > .dropdown-menu .dropdown-footer { - background: #ABB7B7; - color: #fff; - -webkit-border-radius: 0 0 2px 2px; - border-radius: 0 0 2px 2px; -} -.navbar-nav > li.language_bar > .dropdown-menu > li > a:hover, -.navbar-nav > li.language_bar > .dropdown-menu > li > a:focus { - background: rgba(0,0,0,0.3); -} -.navbar-nav > li.language_bar > .dropdown-menu:before, -.navbar-nav > li > .dropdown-menu.grid-dropdown:before { - border-bottom: 6px solid #fff; -} -.navbar-nav > li > .dropdown-menu.grid-dropdown { - width: 300px; - text-align: center; - font-size: 16px; - color: #252932; -} -.navbar-nav > li > .dropdown-menu.grid-dropdown a { - font-size: 13px; - color: #38464A; - width: 100%; - padding: 10px; - line-height: 30px; - display: block; - font-weight: 300; - font-family: "Open Sans"; - vertical-align: middle; - opacity: 0.7; - cursor: default; -} -.navbar-nav > li > .dropdown-menu.grid-dropdown a.clickable:hover { - background: #ABB7B7; - color: #fff; -} -.navbar-nav > li > .dropdown-menu.grid-dropdown a.clickable:hover i { - color: #fff; -} -.navbar-nav > li > .dropdown-menu.grid-dropdown a i { - font-size: 25px; - line-height: 30px; - height: 30px; - display: block; - color: #697a7a; -} -.navbar-nav > li > .dropdown-menu.grid-dropdown a.clickable { - opacity: 1; - cursor: pointer; -} -.navbar-nav > li > .dropdown-menu.grid-dropdown:before { - right: auto; - left: 18px; -} -.navbar-nav > li.topbar-profile > .dropdown-menu { - background: #7A868F; - color: #fff; -} -.navbar-nav > li.topbar-profile > .dropdown-menu > li > a { - color: #eee !important; - padding-left: 10px; - padding-right: 10px; - font-family: "Open Sans"; -} -.navbar-nav > li.topbar-profile > .dropdown-menu > li.divider { - background: rgba(0,0,0,0.1); - height: 2px; - border-bottom: 1px solid rgba(255,255,255,0.2); - margin: 4px 0; -} -.navbar-nav > li.topbar-profile > .dropdown-menu > li:hover > a, -.navbar-nav > li.topbar-profile > .dropdown-menu > li:focus > a { - color: #fff !important; -} -.navbar-nav > li.topbar-profile > .dropdown-menu:before { - border-bottom: 6px solid #7A868F; -} -.navbar-form { - margin: 0px; - padding: 0px; - position: relative; - margin-bottom: 10px; - border: none; - box-shadow: none; - border-bottom: 1px solid rgba(0,0,0,0.03); -} -.navbar-form .search-button { - background: none; - border: none; - position: absolute; - right: 5px; - top: 0px; - color: #ccc; - -webkit-box-shadow: 0px 0px 0px 0px !important; - box-shadow: 0px 0px 0px 0px !important; - -webkit-border-radius: 0px; - border-radius: 0px; - -webkit-transition: all 100ms ease-in; - -moz-transition: all 100ms ease-in; - -ms-transition: all 100ms ease-in; - -o-transition: all 100ms ease-in; - transition: all 100ms ease-in; -} -.navbar-form .search-button:hover { - color: #777 !important; - -webkit-transition: all 300ms ease-in; - -moz-transition: all 300ms ease-in; - -ms-transition: all 300ms ease-in; - -o-transition: all 300ms ease-in; - transition: all 300ms ease-in; -} -.navbar-form .form-control:focus + .search-button { - color: #ccc; -} -.navbar-form .form-group { - display: block; -} -.navbar-form .form-control { - background-color: transparent !important; - border: none; - color: #aaa; - box-shadow: none; - display: block; - width: 100%; - -webkit-border-radius: 0px; - border-radius: 0px; - -webkit-transition: all 300ms ease-in; - -moz-transition: all 300ms ease-in; - -ms-transition: all 300ms ease-in; - -o-transition: all 300ms ease-in; - transition: all 300ms ease-in; -} -.navbar-form .form-control:focus { - background-color: #f2f2f2 !important; - border-color: #888; - color: #888; - -webkit-transition: all 300ms ease-in; - -moz-transition: all 300ms ease-in; - -ms-transition: all 300ms ease-in; - -o-transition: all 300ms ease-in; - transition: all 300ms ease-in; -} -.navbar-form .form-control::-webkit-input-placeholder { - color: #ccc !important; - text-overflow: ellipsis; -} -.navbar-form .form-control:-moz-placeholder { - color: #ccc !important; - text-overflow: ellipsis; -} -.navbar-form .form-control::-moz-placeholder { - color: #ccc !important; - text-overflow: ellipsis; -} -.navbar-form .form-control:-ms-input-placeholder { - color: #ccc !important; - text-overflow: ellipsis; -} -.enlarged .navbar-form .form-control { - color: transparent; -} -.enlarged .navbar-form .form-control:hover, -.enlarged .navbar-form .form-control:focus { - color: #aaa; -} -.enlarged .navbar-form .form-control::-webkit-input-placeholder { - color: transparent !important; - text-overflow: ellipsis; -} -.enlarged .navbar-form .form-control:-moz-placeholder { - color: transparent !important; - text-overflow: ellipsis; -} -.enlarged .navbar-form .form-control::-moz-placeholder { - color: transparent !important; - text-overflow: ellipsis; -} -.enlarged .navbar-form .form-control:-ms-input-placeholder { - color: transparent !important; - text-overflow: ellipsis; -} -.rounded-image { - -webkit-border-radius: 100px; - border-radius: 100px; - overflow: hidden; - display: inline-block; -} -.rounded-image img { - width: 100%; -} -.profile-image { - border: 4px double rgba(0,0,0,0.2); -} -.profile-info .col-xs-4 { - padding: 0px 0px 0px 10px; -} -.profile-text { - color: #4A525F; - font-family: "Open Sans"; - font-size: 18px; -} -.profile-buttons { - margin-top: 5px; -} -.profile-buttons a { - color: #606b7c; - font-size: 13px; - line-height: 22px; - padding: 4px 10px 6px; - vertical-align: middle; - display: inline-block; -} -.profile-buttons a i { - font-size: 16px; - line-height: 25px; -} -.profile-buttons a:hover { - color: #fff; - background: rgba(0,0,0,0.2); - -webkit-border-radius: 3px; - border-radius: 3px; -} -.profile-status i { - color: #444; - font-size: 14px; - float: right; - margin-top: -14px; -} -i.online { - color: #00AC65; -} -hr.divider { - border-color: rgba(255,255,255,0.1); - width: 90%; - margin: 10px 5%; - display: block; - clear: both; -} -.the-timeline { - margin-bottom: 40px; -} -.the-timeline .post-to-timeline { - margin: 15px 0; -} -.the-timeline .post-to-timeline textarea { - height: 50px; - resize: none; - margin-bottom: 10px; -} -.the-timeline ul { - padding: 0; - list-style: none; - margin: 0 15px 0 30px; - border-left: 2px solid #ddd; -} -.the-timeline ul li.the-year { - background: transparent; - height: 100px; - line-height: 90px; - min-height: 100px; - left: -32px; - border-left: 4px solid transparent !important; - text-align: center; - font-size: 50px; - font-family: "Open Sans"; - font-weight: 700; -} -.the-timeline ul li.the-year p { - width: 20%; - margin-left: 41%; -} -.the-timeline ul li.the-year:before { - display: block; - border: 0px; - width: 40%; - top: 50px; - border-top: 2px solid #ddd !important; -} -.the-timeline ul li.the-year:after { - display: block; - border: 0px; - right: -32px; - content: " "; - top: 50px; - position: absolute; - left: auto; - width: 40%; - border-top: 2px solid #ddd; -} -.the-timeline ul li:before { - width: 10px; - height: 10px; - border-style: solid; - content: " "; - position: absolute; - left: -14px; - top: 19px; - border-width: 7.5px 8px 7.5px 0; - border-color: transparent #efefef transparent transparent; - display: block; -} -.the-timeline ul li { - padding: 5px 15px; - display: block; - min-height: 54px; - -webkit-border-radius: 3px; - border-radius: 3px; - margin: 20px 0 20px 40px; - background: #efefef; - position: relative; - border-left: 4px solid transparent; -} -.the-timeline ul li:hover { - border-left-color: #4A525F; -} -.the-timeline ul li:hover:before { - border-color: transparent #4A525F transparent transparent; -} -.the-timeline ul li p { - margin: 0; - padding: 0; -} -.the-timeline ul li .the-date { - position: absolute; - left: -69px; - top: 0; - width: 50px; - height: 50px; - background: #EB5055; - border-radius: 50%; - text-align: center; - line-height: 130%; -} -.the-timeline ul li .the-date span { - color: #fff; - font-size: 18px; - display: block; - margin-top: 8px; -} -.the-timeline ul li .the-date small { - color: #fff; - font-size: 12px; - display: block; -} -.videoWrapper { - position: relative; - padding-bottom: 56.25%; - padding-top: 25px; - height: 0; - margin-bottom: 15px; -} -.videoWrapper iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - border: none; -} -iframe { - width: 100%; - border: none; -} -.breadcrumb { - padding: 0; - background: transparent; - font-size: 12px; - margin: 0; -} -.progress.progress-xs { - height: 5px; - margin-top: 25px; - margin-bottom: 20px; - border-radius: 0px; - -webkit-box-shadow: none; - box-shadow: none; -} -.progress.progress-xs.for-modal { - margin-top: 10px; - margin-bottom: 20px; -} -.progress.progress-xs .progress-bar { - font-size: 11px; - line-height: 16px; - color: #ffffff; - -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,0); - box-shadow: inset 0 -1px 0 rgba(0,0,0,0); -} -.progress.progress-xs.progress-striped .progress-bar { - background-size: 10px 10px; -} -.progress.progress-sm { - height: 10px; - margin-top: 20px; - margin-bottom: 20px; - border-radius: 0px; - -webkit-box-shadow: none; - box-shadow: none; -} -.progress.progress-sm.progress-striped .progress-bar { - background-size: 15px 15px; -} -.table > thead > tr > th { - vertical-align: middle; - border-bottom: 1px solid #dddddd; -} -.form-control { - font-size: 13px; - border-radius: 0; - border-color: #ddd; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0); - box-shadow: inset 0 1px 1px rgba(0,0,0,0); -} -.form-control:focus { - border-color: #dadada; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0), 0 0 8px rgba(102,175,233,0); - box-shadow: inset 0 1px 1px rgba(0,0,0,0), 0 0 8px rgba(102,175,233,0); -} -.form-group .checkbox { - margin-left: 0; - padding-left: 0; -} -.btn { - border-radius: 2px; -} -.list-group-item:first-child { - border-top-right-radius: 0px; - border-top-left-radius: 0px; -} -.list-group-item:last-child { - border-bottom-right-radius: 0px; - border-bottom-left-radius: 0px; -} -.alert { - border-radius: 0px; -} -.btn-facebook { - background: #45619D; - border-color: #4D6CAD; -} -.btn-facebook:hover { - background: #395289; - border-color: #4D6CAD; -} -.btn-twitter { - background: #00ACEE; - border-color: #00B7FC; -} -.btn-twitter:hover { - background: #03A0DE; - border-color: #00B7FC; -} -.btn-gplus { - background: #D54636; - border-color: #B22E21; -} -.btn-gplus:hover { - background: #BF392E; - border-color: #B22E21; -} -.btn-vimeo { - background: #1BB6EC; - border-color: #0AA0D3; -} -.btn-vimeo:hover { - background: #12ADE3; - border-color: #0AA0D3; -} -.btn-pinterest { - background: #CD1F28; - border-color: #B70F17; -} -.btn-pinterest:hover { - background: #C9121A; - border-color: #B70F17; -} -.btn-instagram { - background: #4E3D35; - border-color: #392C24; -} -.btn-instagram:hover { - background: #483931; - border-color: #392C24; -} -.clear { - clear: both; -} -#wrapper { - width: 100%; - height: 100%; - background: #f3f3f3; - position: relative; -} -.page { - left: 0; - right: 0; - top: 0; - bottom: 0; -} -.rows, -.col, -.page { - position: absolute; -} -.rows { - left: 0; - right: 0; -} -.topbar { - left: 0px; - right: 0; - top: 0px; - height: 50px; - z-index: 11; - background: #424a55; - position: fixed; -} -.topbar .topbar-left { - float: left; - height: 50px; - position: relative; - z-index: 1; - width: 240px; - background: #424a55; -} -.logo h1 { - margin: 0px auto; - height: 50px; - text-align: center; -} -.logo h1 img { - height: 50%; -} -.topbar-profile .topbar-profile-image { - width: 35px; - position: relative; - margin-right: 5px; - margin-top: -15px; - margin-bottom: -12px; - border: 1px solid rgba(0,0,0,0.2); -} -.navbar-default .navbar-nav .topbar-profile > a { - font-family: "Open Sans"; -} -.navbar-right .iconify > a > i { - font-size: 18px; - color: #fff; - line-height: 17px; -} -.navbar-right .iconify > a:focus > i { - font-size: 18px; - color: #fff; - line-height: 17px; -} -.navbar-default .navbar-nav > li > a { - color: #fff; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #fff; -} -.right-opener { - border-left: 1px solid rgba(0,0,0,0.1); -} -.right-opener i { - color: rgba(255,255,255,0.8); -} -.right-opener .fa-angle-double-right { - display: none; -} -.open-right-sidebar .right-opener .fa-angle-double-right { - display: inline-block; -} -.open-right-sidebar .right-opener .fa-angle-double-left { - display: none; -} -.col { - top: 0; - bottom: 0; -} -.scroll-x { - overflow-x: auto; - -webkit-overflow-scrolling: touch; -} -.scroll-y { - overflow-y: auto; - -webkit-overflow-scrolling: touch; -} -.fill, -.pane { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - width: 100%; - height: 100%; -} -.pane { - display: none; -} -.side-menu { - width: 240px; - top: 0; - bottom: 0; - z-index: 2; -} -.side-menu.left { - background: #fff; - position: absolute; - top: 50px; - border-right: 1px solid #eee; -} -body.fixed-left .side-menu.left { - margin-top: 0px; - position: fixed; - height: 100%; - bottom: 50px; - margin-bottom: -50px; - padding-bottom: 50px; -} -.side-menu.left .scroll-y { - direction: rtl; - overflow-x: visible; -} -body.mobile .slimscrollleft, -body.mobile .slimscroller { - overflow-y: scroll; -} -.side-menu.left .scroll-y .sidebar-inner { - direction: ltr; -} -.content-page { - margin-left: 240px; - overflow: hidden; - position: relative; -} -.content-page > .content { - margin-top: 50px; - padding: 20px; - position: relative; -} -.side-menu.right { - width: 240px; - right: -240px; - position: fixed; - z-index: 15; - background: #fff; -} -.side-menu.right .tab-inner { - height: 100%; -} -#wrapper.open-right-sidebar { - padding-right: 240px; -} -.open-right-sidebar .topbar { - margin-right: 240px; -} -.open-right-sidebar .right { - right: 0px !important; -} -.header.rows { - height: 50px; -} -.header.rows-content-header { - height: 50px; -} -.header.left.side-menu { - background: #343838; -} -.header.content { - background: #FFFFFF; - border-bottom: 1px solid #E5E9EC; -} -.body.rows { - top: 0px; - bottom: 50px; -} -.body.content.rows { - top: 50px; - bottom: 0px; - background: #f3f3f3; - padding: 20px; - font-size: 13px; -} -body.fixed-left .left-footer { - bottom: 50px; -} -.left-footer { - height: 50px; - bottom: 0px; - display: none; - position: absolute; - width: 100%; - background: rgba(0,0,0,0.3); - color: #E8EAED; - padding: 15px; -} -.left-footer .progress.progress-xs { - margin: 9px 70px 9px 0; - overflow: visible; - position: relative; -} -.left-footer .progress.progress-xs .progress-precentage { - display: block; - position: absolute; - right: -20px; - top: -12px; - padding: 7px 5px; - border-radius: 50%; - background: #555; - color: #f3f3f3; -} -.left-footer .progress.progress-xs { - background: rgba(0,0,0,0.6); -} -.left-footer .progress.progress-xs .btn { - display: block; - position: absolute; - right: -70px; - top: -14px; - background: #555; - color: #f3f3f3; - border: none; -} -.button-menu-mobile { - position: absolute; - right: 0; - float: left; - top: 0px; - z-index: 2; - padding: 10px 18px; - height: 50px; - font-size: 21px; - background: transparent; - color: #fff; - border: none; -} -.button-menu-mobile:hover { - color: #aaa; -} -button.navbar-toggle { - padding: 5px 20px; -} -.breadcrumb { - top: 50px; - line-height: 30px; - padding: 0px 15px; - background: rgba(0,0,0,0.05); - position: relative; - font-family: "Open Sans"; - -webkit-border-radius: 0px !important; - -moz-border-radius: 0px !important; - border-radius: 0px !important; -} -.breadcrumb li a { - font-family: "Open Sans"; - color: #9dabab; -} -.breadcrumb li.active { - color: #7A868F; -} -.breadcrumb > li + li:before { - color: #9dabab; - padding: 0px 10px; - content: ""; - font-family: FontAwesome; -} -.sidebar-inner { - height: 100%; -} -#sidebar-menu, -#sidebar-menu ul, -#sidebar-menu li, -#sidebar-menu a { - margin: 0; - padding: 0; - border: 0; - list-style: none; - font-weight: normal; - text-decoration: none; - line-height: 1; - font-size: 13px; - position: relative; -} -#sidebar-menu a { - line-height: 1.3; -} -#sidebar-menu { - width: 100%; - font-family: "Open Sans"; -} -#sidebar-menu > ul > li { - background: #fff; - display: block; -} -#sidebar-menu > ul > li > a { - font-size: 13px; - display: block; - color: #555; - padding: 10px; - padding-right: 22px; -} -#sidebar-menu > ul > li > a > span { - vertical-align: middle; -} -#sidebar-menu > ul > li > a:hover { - color: #555; - background: #ffffff; - padding-left: 10px; -} -#sidebar-menu > ul > li > a > i { - color: rgba(0,0,0,0.4); - display: inline-block; - font-size: 15px; - line-height: 17px; - margin-left: 3px; - margin-right: 7px; - text-align: center; - vertical-align: middle; - width: 20px; -} -#sidebar-menu > ul > li > a > i.i-right { - margin: 3px 0 0 0; - float: right; -} -#sidebar-menu > ul > li > a:hover { - text-decoration: none; -} -#sidebar-menu > ul > li > a.subdrop { - background: #ffffff; -} -#sidebar-menu > ul > li > a.active, -#sidebar-menu > ul > li > a.active.subdrop { - color: #fff; - background: #7eccad !important; - font-weight: 600; - border-left: 0px solid rgba(0,0,0,0.3); -} -#sidebar-menu > ul > li > a.active i, -#sidebar-menu > ul > li > a.active.subdrop i { - color: #fff; -} -#sidebar-menu > ul > li > a span.label { - float: right; -} -#sidebar-menu > ul > li > a span.label.span-left { - float: none; - margin-left: 5px; -} -#sidebar-menu span.cnt { - position: absolute; - top: 8px; - right: 15px; - padding: 0; - margin: 0; - background: none; -} -#sidebar-menu ul ul { - display: none; - background: #ebebeb; -} -#sidebar-menu ul ul ul { - border-top: 1px solid rgba(0,0,0,0.1); - background: rgba(0,0,0,0.2); -} -#sidebar-menu ul ul li { - border-top: 0; -} -#sidebar-menu ul ul a { - padding: 10px 25px; - display: block; - color: #555; - font-family: "Open Sans"; - font-size: 12px; -} -#sidebar-menu ul ul ul a { - padding-left: 35px; -} -#sidebar-menu ul ul ul ul a { - padding-left: 45px; -} -#sidebar-menu ul ul a:hover { - color: #222; - background: #d9d9d9; -} -#sidebar-menu ul ul li a.active { - color: #222; - background: #dedede; -} -#sidebar-menu ul ul a i { - margin-right: 5px; -} -#wrapper.enlarged #sidebar-menu ul ul { - border: none; -} -#wrapper.enlarged .left.side-menu .widget { - display: none; -} -#wrapper.enlarged .profile-text { - display: none; -} -#wrapper.enlarged .profile-info .col-xs-4 { - width: 100%; - padding: 5px; -} -#wrapper.enlarged .profile-info .col-xs-8 { - width: 100%; - padding: 0 7px; -} -#wrapper.enlarged .left.side-menu { - width: 50px; - z-index: 5; -} -#wrapper.enlarged .content-page { - margin-left: 50px; -} -#wrapper.enlarged .left.side-menu .navbar-form input::-webkit-input-placeholder { - color: transparent !important; -} -#wrapper.enlarged .left.side-menu .navbar-form input:-moz-placeholder { - color: transparent !important; -} -#wrapper.enlarged .left.side-menu .navbar-form input::-moz-placeholder { - color: transparent !important; -} -#wrapper.enlarged .left.side-menu .navbar-form input:-ms-input-placeholder { - color: transparent !important; -} -#wrapper.enlarged .left.side-menu .navbar-form:hover { - width: 240px; - position: relative; - z-index: 5; -} -#wrapper.enlarged .topbar .topbar-left { - width: 50px !important; -} -#wrapper.enlarged .topbar .topbar-left .logo { - opacity: 0; - display: none; -} -#wrapper.enlarged .left.side-menu #sidebar-menu ul > li { - white-space: nowrap; -} -#wrapper.enlarged .left.side-menu #sidebar-menu ul > li > ul { - display: none; -} -#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover > a { - background: #ffffff; -} -#wrapper.enlarged #sidebar-menu ul ul li a.active { - background: #dedede !important; -} -#wrapper.enlarged #sidebar-menu > ul > li:hover > a.open:after, -#wrapper.enlarged #sidebar-menu > ul > li:hover > a.active:after { - display: none; -} -#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover > ul { - position: absolute; - left: 50px; - width: 190px; - display: block; -} -#wrapper.enlarged .left.side-menu #sidebar-menu ul ul li:hover > a { - background: #ababab !important; - color: #fff; -} -#wrapper.enlarged .left.side-menu #sidebar-menu ul ul li:hover > a i { - background: #ababab !important; - color: #fff; -} -#wrapper.enlarged .left.side-menu #sidebar-menu ul ul li:hover > ul { - position: absolute; - left: 190px; - margin-top: -36px; - width: 190px; - display: block; -} -#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover > ul a { - background: #ebebeb; - padding-left: 10px; - border: none; - width: 190px; - box-shadow: none; - z-index: 6; - position: relative; -} -#wrapper.enlarged .left.side-menu #sidebar-menu ul ul li > a span.pull-right { - position: absolute; - right: 10px; - top: 12px; - -ms-transform: rotate(270deg); - -webkit-transform: rotate(270deg); - transform: rotate(270deg); -} -#wrapper.enlarged .left.side-menu #sidebar-menu ul > li > a span { - display: none; - padding-left: 10px; -} -#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover > a span.pull-right { - position: absolute; - right: 10px; - top: 12px; -} -#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover > a { - width: 240px; - position: relative; -} -#wrapper.enlarged .left.side-menu #sidebar-menu ul > li { - position: relative; -} -#wrapper.enlarged .left.side-menu #sidebar-menu ul > li:hover a span { - display: inline; -} -#wrapper.enlarged .left.side-menu .navbar-form .search-button { - right: 7px; -} -.side-menu.right .nav-tabs { - background: rgba(0,0,0,0.4); - border: none; -} -.side-menu.right .nav-tabs li { - text-align: center; -} -.side-menu.right .nav-tabs > li > a { - border-radius: 0px !important; - margin: 0px !important; - padding: 14px 15px 15px; - font-size: 13px; - color: rgba(255,255,255,0.9); - font-family: "Open Sans"; - border-bottom: 1px solid transparent; -} -.side-menu.right .nav > li > a:hover, -.side-menu.right .nav > li > a:focus { - background: rgba(255,255,255,0.1); - color: rgba(255,255,255,0.7); - border-color: rgba(255,255,255,0); -} -.side-menu.right .nav-tabs > li.active > a { - color: #777; -} -.side-menu.right .nav-tabs > li.active > a, -.side-menu.right .nav-tabs > li.active > a:hover, -.side-menu.right .nav-tabs > li.active > a:focus { - background: #fff; - border-color: #fff; - border-radius: 0px; -} -.side-menu.right .right-toolbar { - margin: 5px 15px 15px; -} -.side-menu.right .right-toolbar a { - color: #777; - font-size: 12px; -} -.side-menu.right .panel-group .panel { - border-radius: 0px; - border: none; - color: #f3f3f3; - background: transparent; -} -.side-menu.right .panel-default > .panel-heading { - background: transparent; - border: none; - border-radius: 0px; -} -.side-menu.right .panel-default > .panel-heading + .panel-collapse .panel-body { - border-top: none; -} -.side-menu.right .panel-title > a { - color: #fff; -} -.side-menu.right .panel-title > a .label { - margin-top: 2px; -} -.side-menu.right .tab-content, -.side-menu.right .tab-content > .tab-pane, -.side-menu.right .tab-content > .tab-pane.active { - height: 100%; - padding-bottom: 20px; -} -.accordion-toggle .panel-heading { - padding: 0px; -} -.accordion-toggle .panel-title a { - color: #fff; - font-size: 14px; - font-family: "Open Sans"; - display: block; - line-height: 22px; - padding: 9px 35px 9px 20px; - position: relative; -} -.accordion-toggle .panel-title a:after { - content: "\f106"; - display: block; - font-family: FontAwesome; - font-size: 10px; - line-height: 36px; - position: absolute; - top: 3px; - right: 15px; -} -.accordion-toggle .panel-title a.collapsed:after { - content: "\f107"; -} -.accordion-toggle .panel.panel-default .panel-title a { - color: #555; -} -.panel-group .panel { - border-radius: 3px; -} -.not-logged-avatar { - width: 100px; - margin: 0px auto; - display: block; - margin-bottom: 20px; - text-align: center; - box-shadow: 1px 1px 3px rgba(0,0,0,0.1); -} -.search-right { - padding: 10px 15px; -} -.search-right input { - background: rgba(0,0,0,0.1); - border: none; - color: #eee; -} -#notification-list a { - color: #555; - font-size: 13px; - font-weight: 600; - vertical-align: text-top; -} -#notification-list li { - margin-bottom: 10px; - padding-bottom: 10px; - border-bottom: 1px solid rgba(0,0,0,0.1); - font-family: "Open Sans"; -} -#notification-list a .muted { - display: block; - font-size: 12px; - font-weight: 300; - color: rgba(0,0,0,0.5); -} -#notification-list .icon-wrapper { - border-radius: 150px; - font-size: 20px; - width: 35px; - line-height: 29px; - text-align: center; - height: 35px; - margin-right: 10px; - float: left; - color: #555; - display: inline-block; - border: 2px solid #4EA6A6; -} -#inbox-list li { - margin-bottom: 15px; -} -#inbox-list a { - color: #555; -} -#inbox-list a .datetime { - font-size: 12px; - font-weight: 400; - color: rgba(0,0,0,0.4); - float: right; - font-family: "Open Sans"; -} -#inbox-list a .sender { - font-size: 13px; - display: block; - float: left; - font-weight: 600; - font-family: "Open Sans"; -} -#inbox-list a .title { - clear: both; - display: block; - font-size: 12px; - font-weight: 600; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - height: 15px; - color: rgba(0,0,0,0.6); -} -#inbox-list a .content { - clear: both; - display: block; - font-size: 11px; - font-weight: 300; - overflow: hidden; - color: rgba(0,0,0,0.5); -} -#updates-list li { - margin-bottom: 10px; -} -#updates-list a { - color: #555; - font-family: "Open Sans"; - font-size: 13px; -} -#updates-list .icon-wrapper { - border-radius: 50px; - font-size: 14px; - width: 24px; - line-height: 25px; - text-align: center; - height: 24px; - margin-right: 10px; - float: left; - color: #555; - display: inline-block; -} -#chat-panel .panel-body { - padding: 0px; -} -#chat-list li { - clear: both; - height: 55px; - opacity: 0.9; - padding: 7px 15px 10px; -} -#chat-list li:hover { - background: rgba(0,0,0,0.1); - opacity: 1; -} -#chat-list a { - font-size: 13px; - font-family: "Open Sans"; - color: #555; -} -#chat-list a.online .chat-user-avatar { - box-shadow: 0 0 0 2px #68C39F; -} -#chat-list a.away .chat-user-avatar { - box-shadow: 0 0 0 2px orange; -} -#chat-list a.offline .chat-user-avatar img { - filter: url("data:image/svg+xml;utf8,#grayscale"); - filter: gray; - -webkit-filter: grayscale(100%); -} -#chat-list .chat-user-avatar { - border-radius: 50px; - width: 34px; - height: 34px; - display: inline-block; - float: left; - margin-right: 10px; - margin-top: 3px; - border: 2px solid rgba(0,0,0,0); - box-shadow: 0 0 0 2px #555; - overflow: hidden; -} -#chat-list .chat-user-avatar img { - width: 100%; - height: 100%; -} -#chat-list .chat-user-msg { - font-size: 12px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - color: rgba(0,0,0,0.3); - display: block; -} -#settings .tab-inner { - color: rgba(0,0,0,0.8); -} -#settings .tab-inner h3 { - color: rgba(0,0,0,0.6); - margin-bottom: 20px; -} -#settings .tab-inner h4 { - color: rgba(0,0,0,0.6); - margin-bottom: 15px; -} -#settings .tab-inner .row { - margin-bottom: 10px; - font-size: 12px; -} -.page-heading { - margin: 0px 0 20px; - padding: 5px 0; -} -.page-heading h1 { - margin: 0; - padding: 0; - font-weight: 400; - font-size: 24px; - margin-bottom: 0px; -} -.page-heading h3 { - font-size: 15px; - margin-top: 0px; -} -.widget { - position: relative; - background: #fff; - color: #5b5b5b; - margin-bottom: 20px; -} -.widget-header, -.widget-content { - display: block; - width: 100%; - clear: both; -} -.portlets { - min-height: 50px; -} -.portlets .widget-header { - cursor: move; -} -.widget-footer { - -webkit-border-radius: 0 0 2px 2px; - border-radius: 0 0 2px 2px; - overflow: hidden; -} -.widget-header.transparent { - background: transparent; - border: none; -} -.widget-header.centered { - text-align: center; -} -.widget-header .left-btn { - position: absolute; - left: 10px; - top: 6px; -} -.widget-content { - -webkit-border-radius: 0 0 2px 2px; - border-radius: 0 0 2px 2px; -} -.widget-content.padding { - padding: 15px; -} -.widget-content.padding-sm { - padding: 10px; -} -.widget-content.padding-xs { - padding: 1%; -} -.widget.maximized { - position: fixed; - -webkit-border-radius: 0; - border-radius: 0; - top: 50px; - left: 240px; - right: 0px; - bottom: 0px; - z-index: 10; - margin: 0px; -} -#wrapper.enlarged .widget.maximized { - left: 50px; -} -#wrapper.open-right-sidebar .widget.maximized { - right: 240px; -} -.widget.modal-widget { - position: absolute; - display: block; - z-index: 10; - box-shadow: 0px 0px 2px rgba(0,0,0,0.2), 0px 10px 15px rgba(0,0,0,0.2); -} -.widget.modal-widget.modalize .widget-header { - background: #efefef; -} -.widget:before, -.widget:after { - display: table; - content: " "; -} -.widget:after { - clear: both; -} -.widget .des-thumbnail { - padding: 20px; -} -.widget .img-wrap { - width: 100%; - height: auto; - overflow: hidden; -} -.widget .img-wrap img { - width: 100%; -} -.widget .widget-header { - height: 43px; - display: block; -} -.widget .widget-header h2 { - padding: 4px 13px 4px 13px; - margin: 0px; - font-weight: 400; - font-size: 16px; - display: block; - color: #5b5b5b; -} -.widget .widget-header h2.no-style { - padding: 0px; - margin: 20px 0px 10px 0px; - margin-top: 20px; - margin-bottom: 10px; - font-size: 30px; - border-bottom: none; -} -.widget.box-messages { - margin-top: -50px; -} -.widget.box-messages h2 { - border-bottom: none; -} -.widget .statistic-chart { - padding: 0 0 0px 0; -} -.widget .statistic-chart .toolbar { - padding: 10px; - padding-top: 0px; -} -.widget.full { - padding: 0px; -} -.widget.full .box-footer { - padding: 20px 20px 15px 20px; -} -.widget.full .box-footer a, -.widget.full .box-footer a:hover { - color: #1B1E24; - text-decoration: none; -} -.widget .nav-tabs > li > a { - line-height: 1.428571429; - border: none; - margin-right: 6px; - background: rgba(0,0,0,0.04); - font-family: "Open Sans"; - color: #555; - font-size: 13px; -} -.widget .tab-content { - padding-top: 10px; - font-size: 13px; -} -.widget .tab-boxed { - padding: 10px; - border: 1px solid #ddd; - border-top: 0px; -} -.widget .nav-tabs > li > a i { - color: #555; -} -.widget .media-list { - margin-top: 30px; -} -.widget .media-list a { - color: #1B1E24; -} -.widget .media-list a:hover { - color: #212121; - text-decoration: none; -} -.widget .media-list .media { - padding: 5px 20px; - border-bottom: 1px solid #eaeaea; -} -.widget .media-list li:last-child.media { - border-bottom: none; -} -.widget .media-list .media .media-heading a { - font-size: 14px; - font-weight: 600; - color: #1B1E24; - margin-right: 5px; -} -.widget .media-list .media .media-heading small { - color: #65BD77; - font-size: 11px; -} -.widget .media-list .media p { - color: #909090; -} -.widget .media-list .media .media-object { - width: 50px; -} -.widget .nav-tabs > li.active > a, -.widget .nav-tabs > li.active > a:hover, -.widget .nav-tabs > li.active > a:focus { - cursor: default; - border-top: none; - border-right: none; - border-left: none; - border-bottom: none; - background-color: #7A868F; - color: #fff; -} -.widget .nav-tabs > li.active > a i, -.widget .nav-tabs > li.active > a:hover i, -.widget .nav-tabs > li.active > a:focus i { - color: #fff; -} -.widget .nav-tabs.nav-simple li a { - background: none; -} -.widget .nav-tabs.nav-simple > li.active > a, -.widget .nav-tabs.nav-simple > li.active > a:hover, -.widget .nav-tabs.nav-simple > li.active > a:focus { - border: 1px solid #ddd; - border-bottom: 1px solid #fff; - background: none; - color: #555; -} -.widget .nav-tabs.nav-simple > li.active > a i, -.widget .nav-tabs.nav-simple > li.active > a:hover i, -.widget .nav-tabs.nav-simple > li.active > a:focus i { - color: #555; -} -.widget .additional-box { - position: absolute; - top: 10px; - right: 15px; - z-index: 2; -} -.widget .additional-btn { - position: absolute; - top: 10px; - right: 13px; - z-index: 2; -} -.widget .left-toolbar { - position: absolute; - top: 10px; - left: 13px; - z-index: 2; -} -.widget:hover .additional-btn > a.hidden { - display: inline-block !important; - visibility: visible !important; -} -.widget:hover .additional-btn > a.hidden.nevershow, -.widget:hover .additional-btn > a.nevershow, -.widget .additional-btn > a.nevershow { - display: none !important; -} -.widget .widget-header:hover .additional-btn > a { - color: #909090; - -webkit-transition: All 0.4s ease; - -moz-transition: All 0.4s ease; - -o-transition: All 0.4s ease; -} -.widget.modal-widget.modalize .widget-header .additional-btn > a { - color: #909090; -} -.widget .btn-group { - z-index: 1; -} -.widget table .btn-group { - z-index: 1; -} -.widget .additional-btn .dropdown-menu { - z-index: 2; -} -.widget .widget-close, -.widget .widget-toggle { - font-size: 15px; -} -.widget .widget-close:hover { - color: #EB5055 !important; -} -.widget .additional-btn > a, -.widget .widget-header .additional-btn .btn-group > a { - color: #ccc; - margin-left: 7px; - margin-right: 0px; - cursor: pointer; - -webkit-transition: All 0.4s ease; - -moz-transition: All 0.4s ease; - -o-transition: All 0.4s ease; -} -.widget .additional-btn > a:hover { - text-decoration: none; - -webkit-transition: All 0.4s ease; - -moz-transition: All 0.4s ease; - -o-transition: All 0.4s ease; -} -.ui-sortable-placeholder { - background: #cdcdcd !important; - display: block; - visibility: visible !important; - min-height: 100%; - -webkit-box-shadow: inset 0 0 5px 0 rgba(0,0,0,0.1); - box-shadow: inset 0 0 5px 0 rgba(0,0,0,0.1); -} -.widget.ui-sortable-placeholder * { - visibility: hidden; -} -.transparent { - background: rgba(0,0,0,0); - color: #fff; -} -.white { - background: #ffffff; - color: #555; -} -.widget.success { - background: #65BD77; - color: #fff; -} -.widget.success h2 { - color: #2C7439; - border-bottom-color: #3B934B; -} -.widget.success:hover { - color: #DEFFE5; -} -.widget.success .additional-btn a.additional-icon { - color: #3B934B; -} -.widget.success .additional-btn a:hover.additional-icon { - color: #2C7439; -} -.widget.success .text-box h3 { - color: #215F2E; -} -.widget.success .progress-bar-success { - background-color: #215F2E; -} -.widget.success i.success { - color: #215F2E; -} -.widget.danger { - background: #D9534F; - color: #fff; -} -.widget.danger h2 { - color: #791C1A; - border-bottom-color: #791C1A; -} -.widget.danger:hover { - color: #fff; -} -.widget.danger .additional-btn a.additional-icon { - color: #791C1A; -} -.widget.danger .additional-btn a:hover.additional-icon { - color: #791C1A; -} -.widget.danger .text-box h3 { - color: #791C1A; -} -.widget.danger .progress-bar-danger { - background-color: #791C1A; -} -.widget.danger i.danger { - color: #791C1A; -} -.widget.info { - background: #4393D8; - color: #fff; -} -.widget.info h2 { - color: #15558B; - border-bottom-color: #15558B; -} -.widget.info:hover { - color: #DEFFE5; -} -.widget.info .additional-btn a.additional-icon { - color: #15558B; -} -.widget.info .additional-btn a:hover.additional-icon { - color: #15558B; -} -.widget.info .text-box h3 { - color: #15558B; -} -.widget.info .progress-bar-info { - background-color: #15558B; -} -.widget.info i.info { - color: #15558B; -} -.widget.warning { - background: #F7CB17; - color: #fff; -} -.widget.warning h2 { - color: #9D5D03; - border-bottom-color: #9D5D03; -} -.widget.warning:hover { - color: #DEFFE5; -} -.widget.warning .additional-btn a.additional-icon { - color: #9D5D03; -} -.widget.warning .additional-btn a:hover.additional-icon { - color: #9D5D03; -} -.widget.warning .text-box h3 { - color: #9D5D03; -} -.widget.warning .progress-bar-warning { - background-color: #9D5D03; -} -.widget .progress-bar-semi-transparent { - background-color: rgba(255,255,255,0.4); -} -.widget.warning i.warning { - color: #9D5D03; -} -.widget .additional { - padding: 0 15px; - background: #fff; - color: #909090; - margin: 15px -15px -15px -15px; -} -.widget .additional .list-box-info { - margin: 0 -15px; -} -.widget .additional .list-box-info ul { - list-style: none; - margin: 0; - padding: 0; -} -.widget .additional .list-box-info ul li { - background: #fff; - padding: 15px 20px; - color: #909090; - border-bottom: 1px solid #ddd; -} -.widget .additional .list-box-info ul li span.label { - float: right; - font-size: 13px; -} -.widget .additional .list-box-info ul li:last-child { - border-bottom: 1px solid #fff; -} -.left .widget { - margin: 10px; -} -.left .widget-header h2 { - color: #fff; - padding: 4px; -} -.left .widget .additional-btn { - right: 4px; -} -.widget.full h2 { - padding: 15px; - margin: 5px 0px 20px 0px; -} -.widget table { - margin: 0; -} -.widget table tr th, -.widget table tr td { - padding-left: 15px; - padding-right: 15px; -} -.widget .widget-icon { - font-size: 50px; - position: absolute; - right: 4%; - top: 10px; - color: #ffffff; -} -.widget .text-box h2 { - padding: 0; - margin: 0px 0; - font-weight: 300; - font-size: 32px; - display: block; - color: #fff; -} -.widget .text-box .maindata { - font-size: 11px; - color: #fff; - font-family: "Open Sans"; -} -.widget .text-box .maindata b { - font-size: 12px; -} -.top-summary .widget .progress { - margin: 0px; - background: rgba(0,0,0,0.2); -} -.top-summary .widget .widget-footer { - background: rgba(0,0,0,0.1); - padding: 4px 15px; - font-size: 12px; - color: rgba(255,255,255,0.9); -} -.top-summary .widget .widget-footer .rel-change { - font-size: 14px; - color: #fff; - margin-right: 7px; -} -.flip { - perspective: 600px; - perspective-origin: 50% 50%; - position: relative; -} -.flip:hover .widget-flip, -.flip.hover .widget-flip { - transform: rotateY(180deg); -} -.flip, -.widget-front, -.widget-back { - width: 100%; - height: 110px; -} -.widget-flip { - transition: all 600ms ease 0s, opacity 200ms ease 0s; - transform-style: preserve-3d; - position: relative; -} -.widget-front, -.widget-back { - backface-visibility: hidden; - transform-origin: 50% 50% 0; - position: absolute; - top: 0; - left: 0; -} -.widget-front { - z-index: 2; - background: #ff0000; -} -.widget-back { - background: #333; - transform: rotateY(180deg); -} -.dropdown-toggle.btn-sm { - padding-right: 6px; -} -.dropdown-toggle.btn-xs { - padding-right: 3px; -} -.btn-default { - background-color: #ABB7B7; - border-color: #ABB7B7; - color: #fff; -} -.btn-default:hover, -.btn-default:focus, -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - background-color: #98A3A3; - border-color: #98A3A3; - color: #fff; -} -.btn-primary { - background-color: #4A525F; - border-color: #4A525F; - color: #FFFFFF; -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active, -.btn-primary.active, -.open .dropdown-toggle.btn-primary { - background-color: #3E444F; - border-color: #3E444F; - color: #FFFFFF; -} -.btn-success { - background-color: #68C39F; - border-color: #68C39F; - color: #FFFFFF; -} -.btn-success:hover, -.btn-success:focus, -.btn-success:active, -.btn-success.active, -.open .dropdown-toggle.btn-success { - background-color: #5CAD8D; - border-color: #5CAD8D; - color: #FFFFFF; -} -.btn-info { - background-color: #65BBD6; - border-color: #65BBD6; - color: #FFFFFF; -} -.btn-info:hover, -.btn-info:focus, -.btn-info:active, -.btn-info.active, -.open .dropdown-toggle.btn-info { - background-color: #5BA9C2; - border-color: #5BA9C2; - color: #FFFFFF; -} -.btn-warning { - background-color: #FFC052; - border-color: #FFC052; - color: #FFFFFF; -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active, -.btn-warning.active, -.open .dropdown-toggle.btn-warning { - background-color: #F5B84F; - border-color: #F5B84F; - color: #FFFFFF; -} -.btn-danger { - background-color: #E15554; - border-color: #E15554; - color: #FFFFFF; -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger:active, -.btn-danger.active, -.open .dropdown-toggle.btn-danger { - background-color: #C74B4A; - border-color: #C74B4A; - color: #FFFFFF; -} -i.success { - color: #68C39F; -} -i.warning { - color: #FFC052; -} -i.info { - color: #65BBD6; -} -i.danger { - color: #E15554; -} -.label.label-success { - background: #68C39F; -} -.label.label-warning { - background: #FFC052; -} -.label.label-info { - background: #65BBD6; -} -.label.label-danger { - background: #E15554; -} -p.quick-post { - margin: 10px 5px; -} -p.quick-post i { - color: #909090; - margin: 5px; - cursor: pointer; -} -p.quick-post.message i { - margin: 0 2px; -} -p.quick-post.message { - margin: 3px 0px; - padding: 0; - text-align: right; -} -.chat-widget { - height: 300px; - margin-bottom: 20px; -} -form.input-chat { - margin-top: 20px; -} -.chat-widget .media-list { - margin: 0; -} -.chat-widget .media-list .media { - border-bottom: none; -} -.chat-widget .media-list .media .media-object { - width: 50px; - padding: 4px; - border: 1px solid #eaeaea; -} -.chat-widget .media-list .media .media-body { - background: #f7f7f7; - border-radius: 3px; - padding: 10px; - color: #677179; -} -.chat-widget .media-list .media .media-body p.time { - text-align: right; - color: #909090; - font-size: 11px; - font-style: italic; -} -.chat-widget .media-list .media .media-body.success { - background: #EDFFED; -} -.chat-widget .media-list .media .media-body.warning { - background: #FFFCE0; -} -.chat-widget .media-list .media .media-body.danger { - background: #FFE8E8; -} -.chat-widget .media-list .media .media-body.info { - background: #E5F5FF; -} -.selectpicker { - border-radius: 0; - font-size: 13px; -} -.icon-showcase i { - margin-right: 5px; -} -.bs-glyphicons { - padding-left: 0; - padding-bottom: 1px; - margin-bottom: 20px; - list-style: none; - overflow: hidden; -} -.bs-glyphicons li { - float: left; - width: 25%; - height: 115px; - padding: 10px; - margin: 0 -1px -1px 0; - font-size: 12px; - line-height: 1.4; - text-align: center; - border: 1px solid #ddd; -} -.bs-glyphicons .glyphicon { - margin-top: 5px; - margin-bottom: 10px; - font-size: 24px; -} -.bs-glyphicons .glyphicon-class { - display: block; - text-align: center; - word-wrap: break-word; -} -.bs-glyphicons li:hover { - background-color: rgba(86,61,124,0.1); -} -@media (min-width: 768px) { - .bs-glyphicons li { - width: 12.5%; - } -} -.search-box.has-feedback .form-control-feedback { - right: 5px; -} -.btn-toolbar .rows-check-cont { - margin-top: 6px; - margin-right: 15px; -} -.mail-list { - background: #fff; - color: #777; - box-shadow: 0px 0px 3px rgba(0,0,0,0.1); -} -.mail-reply { - font-size: 13px; - color: #777; -} -.sender-photo { - height: 30px; - margin-top: 5px; - float: left; - margin-right: 10px; -} -.menu-message { - margin: 20px 0; -} -.menu-message .list-group-item { - border: 0px; - border-left: 4px solid transparent; - background: rgba(255,255,255,0.8); - margin-bottom: 0px; - color: #666; -} -.menu-message .list-group-item.active { - background: rgba(255,255,255,0.4); - border-left: 4px solid #68C39F; - color: #666; -} -.menu-message .list-group-item.active .badge { - color: #fff; - background: #7A868F; -} -.menu-folders { - margin: 20px 0; -} -.menu-folders .list-group-item { - border: 0px; - background: rgba(255,255,255,0.8); - margin-bottom: 0px; - color: #666; - font-size: 13px; -} -.menu-folders .list-group-item i { - font-size: 14px; - margin-right: 5px; -} -.table-message tr.unread { - font-weight: 500; -} -.table-message tr.unread a { - font-weight: 500; -} -.table-message > tbody > tr > td { - border-bottom: 1px solid #f3f3f3 !important; -} -.table-message > tbody > tr > td > a { - display: block; - font-weight: 300; - color: #5b5b5b; -} -.table-message > tbody > tr > td > a:hover { - text-decoration: none; -} -.data-table-toolbar span.paging-status { - font-weight: bold; - margin: 10px 10px 0 0; -} -.input-message { - margin-top: -1px; -} -.new-message-btns { - width: 100%; -} -hr.dashed { - height: 1px; - background: transparent; - border-top: none; - border-bottom: 1px dashed #ddd; -} -.data-table-toolbar { - margin: 0px; - padding: 15px; - background: rgba(0,0,0,0.03); -} -.data-table-toolbar-footer { - margin-top: 15px; - padding: 0px; -} -.toolbar-btn-action { - text-align: right; -} -.gallery-wrap { - margin: 10px -10px; -} -.gallery-wrap:before, -.gallery-wrap:after { - display: table; - content: " "; -} -.gallery-wrap:after { - clear: both; -} -.gallery-wrap .column { - float: left; - width: 20%; - margin: 0; - padding: 0; -} -.gallery-wrap .column-4 { - float: left; - width: 25%; - margin: 0; - padding: 0; -} -.gallery-wrap .column-3 { - float: left; - width: 33.33333333333333%; - margin: 0; - padding: 0; -} -.gallery-wrap .column .inner, -.gallery-wrap .column-4 .inner, -.gallery-wrap .column-3 .inner { - margin: 10px; - position: relative; - overflow: hidden; - -webkit-transition: All 0.4s ease; - -moz-transition: All 0.4s ease; - -o-transition: All 0.4s ease; -} -.gallery-wrap .column .inner:hover, -.gallery-wrap .column-4 .inner:hover, -.gallery-wrap .column-3 .inner:hover { - -webkit-box-shadow: 0px 2px 3px 0px rgba(0,0,0,0.25); - -moz-box-shadow: 0px 2px 3px 0px rgba(0,0,0,0.25); - box-shadow: 0px 2px 3px 0px rgba(0,0,0,0.25); -} -.gallery-wrap .column .inner a .img-wrap, -.gallery-wrap .column-3 .inner a .img-wrap, -.gallery-wrap .column-4 .inner a .img-wrap { - cursor: pointer; - cursor: -webkit-zoom-in; - cursor: -moz-zoom-in; - cursor: zoom-in; -} -.gallery-wrap .column .inner .img-wrap { - height: 140px; - overflow: hidden; - background: #ddd; -} -.gallery-wrap .column-3 .inner .img-wrap { - height: 200px; - overflow: hidden; - background: #ddd; -} -.gallery-wrap .column-4 .inner .img-wrap { - height: 180px; - overflow: hidden; - background: #ddd; -} -.gallery-wrap .column .inner .img-frame, -.gallery-wrap .column-3 .inner .img-frame, -.gallery-wrap .column-4 .inner .img-frame { - padding: 5px; - background: #fff; - display: block; - position: relative; - -webkit-transition: All 0.4s ease; - -moz-transition: All 0.4s ease; - -o-transition: All 0.4s ease; -} -.gallery-wrap .column .inner:hover .img-frame, -.gallery-wrap .column-3 .inner:hover .img-frame, -.gallery-wrap .column-4 .inner:hover .img-frame { - background: #fff; -} -.gallery-wrap .column .inner:hover .img-frame.success, -.gallery-wrap .column-3 .inner:hover .img-frame.success, -.gallery-wrap .column-4 .inner:hover .img-frame.success { - background: #65BD77; -} -.gallery-wrap .column .inner:hover .img-frame.warning, -.gallery-wrap .column-3 .inner:hover .img-frame.warning, -.gallery-wrap .column-4 .inner:hover .img-frame.warning { - background: #FFCE00; -} -.gallery-wrap .column .inner:hover .img-frame.danger, -.gallery-wrap .column-3 .inner:hover .img-frame.danger, -.gallery-wrap .column-4 .inner:hover .img-frame.danger { - background: #D73D3D; -} -.gallery-wrap .column .inner:hover .img-frame.info, -.gallery-wrap .column-3 .inner:hover .img-frame.info, -.gallery-wrap .column-4 .inner:hover .img-frame.info { - background: #428BCA; -} -.gallery-wrap .column .inner .img-wrap img, -.gallery-wrap .column-4 .inner .img-wrap img, -.gallery-wrap .column-3 .inner .img-wrap img { - width: 100%; -} -.gallery-wrap .column .inner .caption-hover, -.gallery-wrap .column-4 .inner .caption-hover, -.gallery-wrap .column-3 .inner .caption-hover { - position: absolute; - bottom: -100px; - left: 0; - right: 0; - text-align: center; - color: #909090; - padding: 10px; - background: #fff; - -webkit-transition: All 0.4s ease; - -moz-transition: All 0.4s ease; - -o-transition: All 0.4s ease; -} -.gallery-wrap .column .inner .caption-hover.success, -.gallery-wrap .column-4 .inner .caption-hover.success, -.gallery-wrap .column-3 .inner .caption-hover.success { - color: #2C7439; - background: #65BD77; -} -.gallery-wrap .column .inner .caption-hover.danger, -.gallery-wrap .column-4 .inner .caption-hover.danger, -.gallery-wrap .column-3 .inner .caption-hover.danger { - color: #790D0D; - background: #D73D3D; -} -.gallery-wrap .column .inner .caption-hover.warning, -.gallery-wrap .column-4 .inner .caption-hover.warning, -.gallery-wrap .column-3 .inner .caption-hover.warning { - color: #B27C05; - background: #FFCE00; -} -.gallery-wrap .column .inner .caption-hover.info, -.gallery-wrap .column-4 .inner .caption-hover.info, -.gallery-wrap .column-3 .inner .caption-hover.info { - color: #0A487C; - background: #428BCA; -} -.gallery-wrap .column .inner:hover .caption-hover, -.gallery-wrap .column-4 .inner:hover .caption-hover, -.gallery-wrap .column-3 .inner:hover .caption-hover { - bottom: 0px; -} -.gallery-wrap .column .inner .caption-static, -.gallery-wrap .column-4 .inner .caption-static, -.gallery-wrap .column-3 .inner .caption-static { - position: absolute; - text-align: left; - font-weight: 300; - font-size: 12px; - color: #fff; - padding: 10px; - left: 0px; - bottom: 0px; - width: 100%; - background: -moz-linear-gradient(top,rgba(0,0,0,0) 0%,rgba(0,0,0,0.34) 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,rgba(0,0,0,0)),color-stop(100%,rgba(0,0,0,0.34))); - background: -webkit-linear-gradient(top,rgba(0,0,0,0) 0%,rgba(0,0,0,0.34) 100%); - background: -o-linear-gradient(top,rgba(0,0,0,0) 0%,rgba(0,0,0,0.34) 100%); - background: -ms-linear-gradient(top,rgba(0,0,0,0) 0%,rgba(0,0,0,0.34) 100%); - background: linear-gradient(to bottom,rgba(0,0,0,0) 0%,rgba(0,0,0,0.34) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#57000000',GradientType=0); - cursor: -webkit-zoom-in; - cursor: -moz-zoom-in; - cursor: zoom-in; - margin: 0; -} -.gallery-wrap .column .inner a:hover, -.gallery-wrap .column-4 .inner a:hover, -.gallery-wrap .column-3 .inner a:hover { - text-decoration: none; -} -.gallery-wrap .column .inner .caption-static.success, -.gallery-wrap .column-4 .inner .caption-static.success, -.gallery-wrap .column-3 .inner .caption-static.success { - color: #2C7439; - background: #65BD77; -} -.gallery-wrap .column .inner .caption-static.danger, -.gallery-wrap .column-4 .inner .caption-static.danger, -.gallery-wrap .column-3 .inner .caption-static.danger { - color: #790D0D; - background: #D73D3D; -} -.gallery-wrap .column .inner .caption-static.warning, -.gallery-wrap .column-4 .inner .caption-static.warning, -.gallery-wrap .column-3 .inner .caption-static.warning { - color: #B27C05; - background: #FFCE00; -} -.gallery-wrap .column .inner .caption-static.info, -.gallery-wrap .column-4 .inner .caption-static.info, -.gallery-wrap .column-3 .inner .caption-static.info { - color: #0A487C; - background: #428BCA; -} -.btn-facebook { - background: #45619D; - border-color: #4D6CAD; -} -.btn-facebook:hover { - background: #395289; - border-color: #4D6CAD; -} -.btn-twitter { - background: #00ACEE; - border-color: #00B7FC; -} -.btn-twitter:hover { - background: #03A0DE; - border-color: #00B7FC; -} -.btn-gplus { - background: #D54636; - border-color: #B22E21; -} -.btn-gplus:hover { - background: #BF392E; - border-color: #B22E21; -} -.btn-vimeo { - background: #1BB6EC; - border-color: #0AA0D3; -} -.btn-vimeo:hover { - background: #12ADE3; - border-color: #0AA0D3; -} -.btn-pinterest { - background: #CD1F28; - border-color: #B70F17; -} -.btn-pinterest:hover { - background: #C9121A; - border-color: #B70F17; -} -.btn-instagram { - background: #4E3D35; - border-color: #392C24; -} -.btn-instagram:hover { - background: #483931; - border-color: #392C24; -} -i.success { - color: #65BD77; -} -i.warning { - color: #F39C12; -} -i.info { - color: #3498DB; -} -i.danger { - color: #E85344; -} -.btn-facebook { - background-color: #4B66A0; - border-color: #4B66A0; - color: #fff; -} -.btn-facebook:hover, -.btn-facebook:focus, -.btn-facebook:active, -.btn-facebook.active, -.open .dropdown-toggle.btn-facebook { - background-color: #3B5A98; - border-color: #3B5A98; - color: #fff; -} -.btn-facebook:active, -.btn-facebook.active, -.open .dropdown-toggle.btn-facebook { - background-image: none; -} -.btn-facebook.disabled, -.btn-facebook[disabled], -fieldset[disabled] .btn-facebook, -.btn-facebook.disabled:hover, -.btn-facebook[disabled]:hover, -fieldset[disabled] .btn-facebook:hover, -.btn-facebook.disabled:focus, -.btn-facebook[disabled]:focus, -fieldset[disabled] .btn-facebook:focus, -.btn-facebook.disabled:active, -.btn-facebook[disabled]:active, -fieldset[disabled] .btn-facebook:active, -.btn-facebook.disabled.active, -.btn-facebook[disabled].active, -fieldset[disabled] .btn-facebook.active { - background-color: #6C89C1; - border-color: #6C89C1; - color: #fff; -} -.btn-facebook .badge { - color: #3B5A98; -} -.btn-twitter { - background-color: #55ACEE; - border-color: #55ACEE; - color: #fff; -} -.btn-twitter:hover, -.btn-twitter:focus, -.btn-twitter:active, -.btn-twitter.active, -.open .dropdown-toggle.btn-twitter { - background-color: #3490D3; - border-color: #3490D3; - color: #fff; -} -.btn-twitter:active, -.btn-twitter.active, -.open .dropdown-toggle.btn-twitter { - background-image: none; -} -.btn-twitter.disabled, -.btn-twitter[disabled], -fieldset[disabled] .btn-twitter, -.btn-twitter.disabled:hover, -.btn-twitter[disabled]:hover, -fieldset[disabled] .btn-twitter:hover, -.btn-twitter.disabled:focus, -.btn-twitter[disabled]:focus, -fieldset[disabled] .btn-twitter:focus, -.btn-twitter.disabled:active, -.btn-twitter[disabled]:active, -fieldset[disabled] .btn-twitter:active, -.btn-twitter.disabled.active, -.btn-twitter[disabled].active, -fieldset[disabled] .btn-twitter.active { - background-color: #7CC1F5; - border-color: #7CC1F5; - color: #fff; -} -.btn-twitter .badge { - color: #3490D3; -} -.btn-google-plus { - background-color: #D24333; - border-color: #D24333; - color: #fff; -} -.btn-google-plus:hover, -.btn-google-plus:focus, -.btn-google-plus:active, -.btn-google-plus.active, -.open .dropdown-toggle.btn-google-plus { - background-color: #BC2C1F; - border-color: #BC2C1F; - color: #fff; -} -.btn-google-plus:active, -.btn-google-plus.active, -.open .dropdown-toggle.btn-google-plus { - background-image: none; -} -.btn-google-plus.disabled, -.btn-google-plus[disabled], -fieldset[disabled] .btn-google-plus, -.btn-google-plus.disabled:hover, -.btn-google-plus[disabled]:hover, -fieldset[disabled] .btn-google-plus:hover, -.btn-google-plus.disabled:focus, -.btn-google-plus[disabled]:focus, -fieldset[disabled] .btn-google-plus:focus, -.btn-google-plus.disabled:active, -.btn-google-plus[disabled]:active, -fieldset[disabled] .btn-google-plus:active, -.btn-google-plus.disabled.active, -.btn-google-plus[disabled].active, -fieldset[disabled] .btn-google-plus.active { - background-color: #F0675A; - border-color: #F0675A; - color: #fff; -} -.btn-google-plus .badge { - color: #BC2C1F; -} -.btn-dribbble { - background-color: #E04C86; - border-color: #E04C86; - color: #fff; -} -.btn-dribbble:hover, -.btn-dribbble:focus, -.btn-dribbble:active, -.btn-dribbble.active, -.open .dropdown-toggle.btn-dribbble { - background-color: #D33471; - border-color: #D33471; - color: #fff; -} -.btn-dribbble:active, -.btn-dribbble.active, -.open .dropdown-toggle.btn-dribbble { - background-image: none; -} -.btn-dribbble.disabled, -.btn-dribbble[disabled], -fieldset[disabled] .btn-dribbble, -.btn-dribbble.disabled:hover, -.btn-dribbble[disabled]:hover, -fieldset[disabled] .btn-dribbble:hover, -.btn-dribbble.disabled:focus, -.btn-dribbble[disabled]:focus, -fieldset[disabled] .btn-dribbble:focus, -.btn-dribbble.disabled:active, -.btn-dribbble[disabled]:active, -fieldset[disabled] .btn-dribbble:active, -.btn-dribbble.disabled.active, -.btn-dribbble[disabled].active, -fieldset[disabled] .btn-dribbble.active { - background-color: #F571A5; - border-color: #F571A5; - color: #fff; -} -.btn-dribbble .badge { - color: #D33471; -} -.btn-flickr { - background-color: #0162DB; - border-color: #0162DB; - color: #fff; -} -.btn-flickr:hover, -.btn-flickr:focus, -.btn-flickr:active, -.btn-flickr.active, -.open .dropdown-toggle.btn-flickr { - background-color: #0555BF; - border-color: #0555BF; - color: #fff; -} -.btn-flickr:active, -.btn-flickr.active, -.open .dropdown-toggle.btn-flickr { - background-image: none; -} -.btn-flickr.disabled, -.btn-flickr[disabled], -fieldset[disabled] .btn-flickr, -.btn-flickr.disabled:hover, -.btn-flickr[disabled]:hover, -fieldset[disabled] .btn-flickr:hover, -.btn-flickr.disabled:focus, -.btn-flickr[disabled]:focus, -fieldset[disabled] .btn-flickr:focus, -.btn-flickr.disabled:active, -.btn-flickr[disabled]:active, -fieldset[disabled] .btn-flickr:active, -.btn-flickr.disabled.active, -.btn-flickr[disabled].active, -fieldset[disabled] .btn-flickr.active { - background-color: #2983F7; - border-color: #2983F7; - color: #fff; -} -.btn-flickr .badge { - color: #0555BF; -} -.btn-pinterest { - background-color: #CC2127; - border-color: #CC2127; - color: #fff; -} -.btn-pinterest:hover, -.btn-pinterest:focus, -.btn-pinterest:active, -.btn-pinterest.active, -.open .dropdown-toggle.btn-pinterest { - background-color: #B70F12; - border-color: #B70F12; - color: #fff; -} -.btn-pinterest:active, -.btn-pinterest.active, -.open .dropdown-toggle.btn-pinterest { - background-image: none; -} -.btn-pinterest.disabled, -.btn-pinterest[disabled], -fieldset[disabled] .btn-pinterest, -.btn-pinterest.disabled:hover, -.btn-pinterest[disabled]:hover, -fieldset[disabled] .btn-pinterest:hover, -.btn-pinterest.disabled:focus, -.btn-pinterest[disabled]:focus, -fieldset[disabled] .btn-pinterest:focus, -.btn-pinterest.disabled:active, -.btn-pinterest[disabled]:active, -fieldset[disabled] .btn-pinterest:active, -.btn-pinterest.disabled.active, -.btn-pinterest[disabled].active, -fieldset[disabled] .btn-pinterest.active { - background-color: #E53B3E; - border-color: #E53B3E; - color: #fff; -} -.btn-pinterest .badge { - color: #B70F12; -} -.btn-youtube { - background-color: #D92623; - border-color: #D92623; - color: #fff; -} -.btn-youtube:hover, -.btn-youtube:focus, -.btn-youtube:active, -.btn-youtube.active, -.open .dropdown-toggle.btn-youtube { - background-color: #C91212; - border-color: #C91212; - color: #fff; -} -.btn-youtube:active, -.btn-youtube.active, -.open .dropdown-toggle.btn-youtube { - background-image: none; -} -.btn-youtube.disabled, -.btn-youtube[disabled], -fieldset[disabled] .btn-youtube, -.btn-youtube.disabled:hover, -.btn-youtube[disabled]:hover, -fieldset[disabled] .btn-youtube:hover, -.btn-youtube.disabled:focus, -.btn-youtube[disabled]:focus, -fieldset[disabled] .btn-youtube:focus, -.btn-youtube.disabled:active, -.btn-youtube[disabled]:active, -fieldset[disabled] .btn-youtube:active, -.btn-youtube.disabled.active, -.btn-youtube[disabled].active, -fieldset[disabled] .btn-youtube.active { - background-color: #F04343; - border-color: #F04343; - color: #fff; -} -.btn-youtube .badge { - color: #C91212; -} -.btn-dropbox { - background-color: #1473C3; - border-color: #1473C3; - color: #fff; -} -.btn-dropbox:hover, -.btn-dropbox:focus, -.btn-dropbox:active, -.btn-dropbox.active, -.open .dropdown-toggle.btn-dropbox { - background-color: #0864B2; - border-color: #0864B2; - color: #fff; -} -.btn-dropbox:active, -.btn-dropbox.active, -.open .dropdown-toggle.btn-dropbox { - background-image: none; -} -.btn-dropbox.disabled, -.btn-dropbox[disabled], -fieldset[disabled] .btn-dropbox, -.btn-dropbox.disabled:hover, -.btn-dropbox[disabled]:hover, -fieldset[disabled] .btn-dropbox:hover, -.btn-dropbox.disabled:focus, -.btn-dropbox[disabled]:focus, -fieldset[disabled] .btn-dropbox:focus, -.btn-dropbox.disabled:active, -.btn-dropbox[disabled]:active, -fieldset[disabled] .btn-dropbox:active, -.btn-dropbox.disabled.active, -.btn-dropbox[disabled].active, -fieldset[disabled] .btn-dropbox.active { - background-color: #2E90E3; - border-color: #2E90E3; - color: #fff; -} -.btn-dropbox .badge { - color: #0864B2; -} -.btn-foursquare { - background-color: #0086BE; - border-color: #0086BE; - color: #fff; -} -.btn-foursquare:hover, -.btn-foursquare:focus, -.btn-foursquare:active, -.btn-foursquare.active, -.open .dropdown-toggle.btn-foursquare { - background-color: #0571A0; - border-color: #0571A0; - color: #fff; -} -.btn-foursquare:active, -.btn-foursquare.active, -.open .dropdown-toggle.btn-foursquare { - background-image: none; -} -.btn-foursquare.disabled, -.btn-foursquare[disabled], -fieldset[disabled] .btn-foursquare, -.btn-foursquare.disabled:hover, -.btn-foursquare[disabled]:hover, -fieldset[disabled] .btn-foursquare:hover, -.btn-foursquare.disabled:focus, -.btn-foursquare[disabled]:focus, -fieldset[disabled] .btn-foursquare:focus, -.btn-foursquare.disabled:active, -.btn-foursquare[disabled]:active, -fieldset[disabled] .btn-foursquare:active, -.btn-foursquare.disabled.active, -.btn-foursquare[disabled].active, -fieldset[disabled] .btn-foursquare.active { - background-color: #2CA0CE; - border-color: #2CA0CE; - color: #fff; -} -.btn-foursquare .badge { - color: #0571A0; -} -.btn-github { - background-color: #3B3B3B; - border-color: #3B3B3B; - color: #fff; -} -.btn-github:hover, -.btn-github:focus, -.btn-github:active, -.btn-github.active, -.open .dropdown-toggle.btn-github { - background-color: #212121; - border-color: #212121; - color: #fff; -} -.btn-github:active, -.btn-github.active, -.open .dropdown-toggle.btn-github { - background-image: none; -} -.btn-github.disabled, -.btn-github[disabled], -fieldset[disabled] .btn-github, -.btn-github.disabled:hover, -.btn-github[disabled]:hover, -fieldset[disabled] .btn-github:hover, -.btn-github.disabled:focus, -.btn-github[disabled]:focus, -fieldset[disabled] .btn-github:focus, -.btn-github.disabled:active, -.btn-github[disabled]:active, -fieldset[disabled] .btn-github:active, -.btn-github.disabled.active, -.btn-github[disabled].active, -fieldset[disabled] .btn-github.active { - background-color: #5F5F5F; - border-color: #5F5F5F; - color: #fff; -} -.btn-github .badge { - color: #212121; -} -.btn-linkedin { - background-color: #0085AE; - border-color: #0085AE; - color: #fff; -} -.btn-linkedin:hover, -.btn-linkedin:focus, -.btn-linkedin:active, -.btn-linkedin.active, -.open .dropdown-toggle.btn-linkedin { - background-color: #036C8E; - border-color: #036C8E; - color: #fff; -} -.btn-linkedin:active, -.btn-linkedin.active, -.open .dropdown-toggle.btn-linkedin { - background-image: none; -} -.btn-linkedin.disabled, -.btn-linkedin[disabled], -fieldset[disabled] .btn-linkedin, -.btn-linkedin.disabled:hover, -.btn-linkedin[disabled]:hover, -fieldset[disabled] .btn-linkedin:hover, -.btn-linkedin.disabled:focus, -.btn-linkedin[disabled]:focus, -fieldset[disabled] .btn-linkedin:focus, -.btn-linkedin.disabled:active, -.btn-linkedin[disabled]:active, -fieldset[disabled] .btn-linkedin:active, -.btn-linkedin.disabled.active, -.btn-linkedin[disabled].active, -fieldset[disabled] .btn-linkedin.active { - background-color: #24A7D3; - border-color: #24A7D3; - color: #fff; -} -.btn-linkedin .badge { - color: #036C8E; -} -.btn-tumblr { - background-color: #3E5A70; - border-color: #3E5A70; - color: #fff; -} -.btn-tumblr:hover, -.btn-tumblr:focus, -.btn-tumblr:active, -.btn-tumblr.active, -.open .dropdown-toggle.btn-tumblr { - background-color: #2E485D; - border-color: #2E485D; - color: #fff; -} -.btn-tumblr:active, -.btn-tumblr.active, -.open .dropdown-toggle.btn-tumblr { - background-image: none; -} -.btn-tumblr.disabled, -.btn-tumblr[disabled], -fieldset[disabled] .btn-tumblr, -.btn-tumblr.disabled:hover, -.btn-tumblr[disabled]:hover, -fieldset[disabled] .btn-tumblr:hover, -.btn-tumblr.disabled:focus, -.btn-tumblr[disabled]:focus, -fieldset[disabled] .btn-tumblr:focus, -.btn-tumblr.disabled:active, -.btn-tumblr[disabled]:active, -fieldset[disabled] .btn-tumblr:active, -.btn-tumblr.disabled.active, -.btn-tumblr[disabled].active, -fieldset[disabled] .btn-tumblr.active { - background-color: #586F81; - border-color: #586F81; - color: #fff; -} -.btn-tumblr .badge { - color: #2E485D; -} -.btn-vimeo { - background-color: #1BB6EC; - border-color: #1BB6EC; - color: #fff; -} -.btn-vimeo:hover, -.btn-vimeo:focus, -.btn-vimeo:active, -.btn-vimeo.active, -.open .dropdown-toggle.btn-vimeo { - background-color: #0D9DD1; - border-color: #0D9DD1; - color: #fff; -} -.btn-vimeo:active, -.btn-vimeo.active, -.open .dropdown-toggle.btn-vimeo { - background-image: none; -} -.btn-vimeo.disabled, -.btn-vimeo[disabled], -fieldset[disabled] .btn-vimeo, -.btn-vimeo.disabled:hover, -.btn-vimeo[disabled]:hover, -fieldset[disabled] .btn-vimeo:hover, -.btn-vimeo.disabled:focus, -.btn-vimeo[disabled]:focus, -fieldset[disabled] .btn-vimeo:focus, -.btn-vimeo.disabled:active, -.btn-vimeo[disabled]:active, -fieldset[disabled] .btn-vimeo:active, -.btn-vimeo.disabled.active, -.btn-vimeo[disabled].active, -fieldset[disabled] .btn-vimeo.active { - background-color: #4BCBFA; - border-color: #4BCBFA; - color: #fff; -} -.btn-vimeo .badge { - color: #0D9DD1; -} -.icon-facebook { - color: #4B66A0; -} -a .icon-facebook { - color: #4B66A0; -} -a:hover .icon-facebook, -a:focus .icon-facebook { - text-decoration: none; - color: #3B5A98; -} -.icon-twitter { - color: #55ACEE; -} -a .icon-twitter { - color: #55ACEE; -} -a:hover .icon-twitter, -a:focus .icon-twitter { - text-decoration: none; - color: #3490D3; -} -.icon-google-plus { - color: #D24333; -} -a .icon-google-plus { - color: #D24333; -} -a:hover .icon-google-plus, -a:focus .icon-google-plus { - text-decoration: none; - color: #BC2C1F; -} -.icon-dribbble { - color: #E04C86; -} -a .icon-dribbble { - color: #E04C86; -} -a:hover .icon-dribbble, -a:focus .icon-dribbble { - text-decoration: none; - color: #D33471; -} -.icon-flickr { - color: #0162DB; -} -a .icon-flickr { - color: #0162DB; -} -a:hover .icon-flickr, -a:focus .icon-flickr { - text-decoration: none; - color: #0555BF; -} -.icon-pinterest { - color: #CC2127; -} -a .icon-pinterest { - color: #CC2127; -} -a:hover .icon-pinterest, -a:focus .icon-pinterest { - text-decoration: none; - color: #B70F12; -} -.icon-youtube { - color: #D92623; -} -a .icon-youtube { - color: #D92623; -} -a:hover .icon-youtube, -a:focus .icon-youtube { - text-decoration: none; - color: #C91212; -} -.icon-dropbox { - color: #1473C3; -} -a .icon-dropbox { - color: #1473C3; -} -a:hover .icon-dropbox, -a:focus .icon-dropbox { - text-decoration: none; - color: #0864B2; -} -.icon-foursquare { - color: #0086BE; -} -a .icon-foursquare { - color: #0086BE; -} -a:hover .icon-foursquare, -a:focus .icon-foursquare { - text-decoration: none; - color: #0571A0; -} -.icon-github { - color: #3B3B3B; -} -a .icon-github { - color: #3B3B3B; -} -a:hover .icon-github, -a:focus .icon-github { - text-decoration: none; - color: #212121; -} -.icon-linkedin { - color: #0085AE; -} -a .icon-linkedin { - color: #0085AE; -} -a:hover .icon-linkedin, -a:focus .icon-linkedin { - text-decoration: none; - color: #036C8E; -} -.icon-tumblr { - color: #3E5A70; -} -a .icon-tumblr { - color: #3E5A70; -} -a:hover .icon-tumblr, -a:focus .icon-tumblr { - text-decoration: none; - color: #2E485D; -} -.icon-vimeo { - color: #1BB6EC; -} -a .icon-vimeo { - color: #1BB6EC; -} -a:hover .icon-vimeo, -a:focus .icon-vimeo { - text-decoration: none; - color: #0D9DD1; -} -.mfp-fade.mfp-bg { - opacity: 0; - -webkit-transition: all 0.4s ease-out; - -moz-transition: all 0.4s ease-out; - transition: all 0.4s ease-out; -} -.mfp-fade.mfp-bg.mfp-ready { - opacity: 0.8; -} -.mfp-fade.mfp-bg.mfp-removing { - opacity: 0; -} -.mfp-fade.mfp-wrap .mfp-content { - opacity: 0; - -webkit-transition: all 0.4s ease-out; - -moz-transition: all 0.4s ease-out; - transition: all 0.4s ease-out; -} -.mfp-fade.mfp-wrap.mfp-ready .mfp-content { - opacity: 1; -} -.mfp-fade.mfp-wrap.mfp-removing .mfp-content { - opacity: 0; -} -.login-page { - background: #7A868F; -} -.signup-page { - background: #7A868F; -} -.lock-page { - background: #252932; -} -.lock-page .container { - background: #7A868F; -} -.internal-error h1 { - -webkit-transform: rotate(10); - -moz-transform: rotate(10); - -ms-transform: rotate(10); - -o-transform: rotate(10); - transform: rotate(10); - -webkit-transform: rotate(10deg); - -moz-transform: rotate(10deg); - transform: rotate(10deg); - -o-transform: rotate(10deg); -} -.internal-error h2 { - -webkit-transform: rotate(-185); - -moz-transform: rotate(-185); - -ms-transform: rotate(-185); - -o-transform: rotate(-185); - transform: rotate(-185); - -webkit-transform: rotate(-185deg); - -moz-transform: rotate(-185deg); - transform: rotate(-185deg); - -o-transform: rotate(-185deg); -} -.internal-error .backbtn { - -webkit-transform: rotate(-44); - -moz-transform: rotate(-44); - -ms-transform: rotate(-44); - -o-transform: rotate(-44); - transform: rotate(-44); - -webkit-transform: rotate(-44deg); - -moz-transform: rotate(-44deg); - transform: rotate(-44deg); - -o-transform: rotate(-44deg); -} -.internal-error .searchbtn { - -webkit-transform: rotate(-44); - -moz-transform: rotate(-44); - -ms-transform: rotate(-44); - -o-transform: rotate(-44); - transform: rotate(-44); - -webkit-transform: rotate(-44deg); - -moz-transform: rotate(-44deg); - transform: rotate(-44deg); - -o-transform: rotate(-44deg); -} -.full-content-center { - width: 100%; - padding: 5px 0px; - max-width: 500px; - margin: 6% auto; - text-align: center; -} -.full-content { - background: #E5E9EC; -} -.full-content-center h1 { - font-size: 150px; - font-family: "Open Sans"; - line-height: 150px; - font-weight: 700; - color: #252932; -} -.maintenance h1 i { - font-size: 150px; - color: #252932; -} -.maintenance h1 { - font-size: 50px; - line-height: 100px; - color: #fff; - text-shadow: 1px 1px 0px rgba(0,0,0,0.1); -} -.login-wrap { - margin: 20px 10%; - text-align: left; - background: rgba(0,0,0,0.1); - padding: 20px 20px; - color: #fff; -} -.login-wrap a { - color: #fff; -} -.login-wrap i { - margin-right: 5px; -} -.login-wrap .checkbox { - margin-left: 0; - padding-left: 0; -} -.login-wrap .btn-block { - margin: 5px 0; -} -.login-wrap .login-input { - position: relative; -} -.login-wrap .login-input .text-input { - padding-left: 30px; -} -.login-wrap .login-input i.overlay { - position: absolute; - left: 10px; - top: 10px; - color: #aaa; -} -.widget .media-list.search-result .media a { - color: #46C45F; -} -.widget .media-list.search-result .media .media-heading a { - color: #1279D1; -} -.widget .media-list.search-result .media .media-heading span { - font-size: 12px; - font-weight: 400; - padding: 3px 5px; -} -.widget .media-list.search-result .media .media-object { - width: 100px; -} -ul.faq { - list-style: none; - padding-left: 10px; - margin: 20px 0 50px; -} -ul.faq li i { - margin-right: 5px; -} -ul.faq li { - margin: 10px 0; -} -ul.faq li a.faq-question { - cursor: pointer; - display: block; - font-size: 14px; -} -ul.faq li .faq-answer { - margin: 10px 15px; -} -table.pricing-table-style-1 { - text-align: center; - background: #fff; -} -table.pricing-table-style-1 thead tr th { - padding: 15px; - font-size: 18px; - font-weight: 600; - text-align: center; -} -table.pricing-table-style-1 thead tr th.best-choice { - color: #A2A7B7; - background: #0F1215; - border-bottom-color: #000; -} -table.pricing-table-style-1 tbody tr td.best-choice { - background: #1B1E24; - font-weight: 600; - font-size: 15px; - color: #fafafa; - border-top-color: #000; -} -table.pricing-table-style-1 tbody tr td.td-success { - background: #65BD77; - font-weight: 600; - color: #2C7439; - text-align: right; - border-top-color: #55AD67; -} -table.pricing-table-style-1 thead tr th.th-success { - color: #65BD77; - background: #55AD67; - border-bottom-color: #55AD67; -} -.la-pricing-table { - margin: 30px 0; - text-align: center; -} -.la-pricing-table:before, -.la-pricing-table:after { - display: table; - content: " "; -} -.la-pricing-table:after { - clear: both; -} -.la-pricing-table .la-col-4 { - float: left; - margin: 20px 0 20px 0; - padding: 0; - width: 25%; - border: 3px solid transparent; - -webkit-transition: all 0.4s ease-out; - -moz-transition: all 0.4s ease-out; - transition: all 0.4s ease-out; - position: relative; - overflow: hidden; -} -.la-pricing-table .la-col-4:hover { - border-color: #434D58; -} -.la-pricing-table .la-col-4 i.bg-big { - position: absolute; - font-size: 210px; - opacity: .05; - top: 20%; - left: 0; - right: 0; - -webkit-transition: all 0.4s ease-out; - -moz-transition: all 0.4s ease-out; - transition: all 0.4s ease-out; -} -.la-pricing-table .la-col-4:hover i.bg-big { - -webkit-transform: scale(2); - -moz-transform: scale(2); - -o-transform: scale(2); - -ms-transform: scale(2); - transform: scale(2); - opacity: 0; -} -.la-pricing-table .la-col-4 ul { - list-style: none; - padding: 0; - margin: 0; - background: #fff; -} -.la-pricing-table .la-col-4 ul li { - padding: 10px 20px; - display: block; - font-size: 13px; -} -.la-pricing-table .la-col-4 ul li.la-package { - font-size: 24px; - font-weight: 600; - background: #121515; - color: #fff; -} -.la-pricing-table .la-col-4 ul li.la-price { - font-size: 18px; - font-weight: 600; - color: #8E98AD; - background: #434D58; - margin: 0 20px; -} -.la-pricing-table .la-col-4 ul li.la-price i { - font-size: 13px; -} -.la-pricing-table .la-col-4:hover.success { - border-color: #2C7439; -} -.la-pricing-table .la-col-4.success ul { - background: #65BD77; -} -.la-pricing-table .la-col-4.success ul li { - color: #fff; -} -.la-pricing-table .la-col-4.success ul li.la-package { - color: #BCF5C6; - background: #2C7439; -} -.la-pricing-table .la-col-4.success ul li.la-price { - color: #fff; - background: #3E984D; -} -.la-pricing-table .la-col-4:hover.danger { - border-color: #B42424; -} -.la-pricing-table .la-col-4.danger ul { - background: #D73D3D; -} -.la-pricing-table .la-col-4.danger ul li { - color: #fff; -} -.la-pricing-table .la-col-4.danger ul li.la-package { - color: #FFB4B4; - background: #B42424; -} -.la-pricing-table .la-col-4.danger ul li.la-price { - color: #fff; - background: #C42E2E; -} -.la-pricing-table .la-col-4:hover.info { - border-color: #1F6AAA; -} -.la-pricing-table .la-col-4.info ul { - background: #529DDE; -} -.la-pricing-table .la-col-4.info ul li { - color: #fff; -} -.la-pricing-table .la-col-4.info ul li.la-package { - color: #C6E5FF; - background: #1F6AAA; -} -.la-pricing-table .la-col-4.info ul li.la-price { - color: #fff; - background: #2E71AD; -} -.la-pricing-table .la-col-4:hover.warning { - border-color: #F08600; -} -.la-pricing-table .la-col-4.warning ul { - background: #FFCE00; -} -.la-pricing-table .la-col-4.warning ul li { - color: #fff; -} -.la-pricing-table .la-col-4.warning ul li.la-package { - color: #FFF5C9; - background: #F08600; -} -.la-pricing-table .la-col-4.warning ul li.la-price { - color: #fff; - background: #FFAA00; -} -.invoice .widget-content.padding { - padding: 70px 30px; - color: #7A868F; -} -.payment-methods { - font-size: 30px; -} -.company-column { - padding: 15px; - margin-bottom: 20px; -} -.company-column address { - color: #7A868F; -} -.bill-to { - padding: 15px; - margin-bottom: 20px; - margin-top: 20px; - border: 1px dashed #E5E9EC; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default.active[disabled], -fieldset[disabled] .btn-default.active { - background-color: #ABB7B7; - border-color: #ABB7B7; - color: #fff; -} -#calculator { - height: auto; - font: bold 17px "Open Sans", Arial, sans-serif; - padding: 20px; -} -#calculator .col-xs-3, -#calculator .col-xs-9 { - padding: 0px 2%; -} -.calc-top .calc-screen { - height: 47px; - width: 100%; - overflow: hidden; - padding: 0 10px; - background: rgba(0,0,0,0.2); - border-radius: 2px; - box-shadow: inset 0px 4px rgba(0,0,0,0.1); - margin-bottom: 10px; - font-size: 21px; - line-height: 47px; - color: white; - text-shadow: 1px 1px 2px rgba(0,0,0,0.8); - text-align: right; - letter-spacing: 1px; -} -.calc-keys, -.calc-top { - overflow: hidden; -} -.calc-keys span, -.calc-top span.calc-clean { - float: left; - position: relative; - top: 0; - cursor: pointer; - width: 100%; - margin-bottom: 10px; - height: 46px; - background: white; - border-radius: 2px; - color: #666; - line-height: 46px; - text-align: center; - user-select: none; - transition: all 0.2s ease; -} -.calc-keys span.calc-operator { - background: #999; - margin-right: 0; - color: #fff; - font-size: 22px; -} -.calc-keys span.calc-eval { - background: #f1ff92; - color: #888e5f; -} -.calc-top span.calc-clean { - background: #EB5055; - color: white; -} -.calc-keys span:hover { - background: #9c89f6; - color: white; -} -.profile-banner { - width: 100%; - height: 300px; - background-position: center center; - background-size: cover; - position: relative; - background-color: #252932; - border-bottom: 4px solid #fff; - box-shadow: 2px 0px 4px rgba(0,0,0,0.1); -} -.avatar-container { - height: 300px; - text-align: center; -} -.profile-avatar { - width: 200px; - position: relative; - margin: 0px auto; - margin-top: 196px; - border: 4px solid #f3f3f3; -} -.profile-actions { - position: absolute; - bottom: 20px; -} -.user-profile-2 { - margin-top: 50px; -} -.user-profile-sidebar { - margin: 0 0 20px 0; -} -.user-profile-sidebar .user-identity { - margin: 20px 0 0 0; -} -.user-profile-sidebar img { - width: 90px; -} -.account-status-data { - text-align: center; - padding: 10px 0; - border-top: 1px dashed #ddd; - border-bottom: 1px dashed #ddd; - margin: 10px 0 20px 0; -} -.account-status-data h5 { - font-size: 11px; - line-height: 150%; - color: #909090; -} -.user-button { - margin: 15px 0; -} -.user-button .btn { - margin: 5px 0; -} -#social { - padding: 10px; - background: #E5E9EC; - text-align: center; -} -#social a:hover { - text-decoration: none; -} -.fa-circle.facebook { - color: #5471AE; -} -.fa-circle.twitter { - color: #4EC6F6; -} -.fa-circle.gplus { - color: #E24E3E; -} -.fa-circle.tumblr { - color: #4D77A3; -} -.fa-circle.linkedin { - color: #3097CE; -} -.user-profile-content { - margin: 30px 15px; -} -.easyWizardSteps { - list-style: none; - width: 100%; - overflow: hidden; - margin: 0; - padding: 0; - border-bottom: 0px solid rgba(0,0,0,0.1); - margin-bottom: 20px; - background: #7A868F; -} -.easyWizardSteps li { - font-size: 18px; - font-family: "Open Sans"; - display: inline-block; - padding: 10px 20px; - color: #eee; - border-right: 1px solid rgba(0,0,0,0.1); - margin-right: 0px; -} -.easyWizardSteps li:last-child { - border-right: 0px; -} -.easyWizardSteps li span { - font-size: 15px; - padding: 2px 9px; - border-radius: 50%; - margin-top: -5px; - color: #eee; - font-weight: 700; - margin-right: 5px; - border: 2px solid #eee; -} -.easyWizardSteps li.current span { - border: 2px solid #68C39F; - color: #68C39F; -} -.easyWizardSteps li.current { - color: #38464A; - background: #fff; -} -.easyWizardButtons { - overflow: hidden; - padding: 10px; -} -.easyWizardButtons button, -.easyWizardButtons .submit { - cursor: pointer; -} -.easyWizardButtons .prev { - float: left; -} -.easyWizardButtons .next, -.easyWizardButtons .submit { - float: right; -} -.notes { - padding: 15px; - border: 1px dashed #ddd; -} -section.step { - padding: 0 30px; -} -.the-notes { - padding: 15px 15px 15px 30px; - border-left: 4px solid #909090; - margin-bottom: 20px; -} -.the-notes.default { - background: #fff; -} -.the-notes.success { - background: #fff; - border-left-color: #65BD77; -} -.the-notes.warning { - background: #fff; - border-left-color: #F7CB17; -} -.the-notes.danger { - background: #fff; - border-left-color: #D9534F; -} -.the-notes.info { - background: #fff; - border-left-color: #4393D8; -} -.the-notes.success h4 { - color: #65BD77; -} -.the-notes.warning h4 { - color: #F7CB17; -} -.the-notes.danger h4 { - color: #D9534F; -} -.the-notes.inf h4 { - color: #4393D8; -} -.popover { - border-radius: 3px; - box-shadow: none; - opacity: 0.9; - border: none; -} -.popover .arrow { - border-top: none; -} -.popover .popover-title { - background: none repeat scroll 0 0 rgba(0,0,0,0.025); - font-family: "Open Sans"; -} -.popover .popover-content { - padding: 6px 11px; - font-family: Helvetica, Arial; - font-size: 12px; -} -.modal { - direction: rtl; - overflow-y: auto; -} -.modal .modal-dialog { - direction: ltr; -} -.modal-open { - overflow: auto; -} -.mini-stats { - font-size: 12px; - color: #555; -} -#website-statistics1 .widget-footer { - border-top: 1px solid #eee; -} -#website-statistics1 .widget-footer > .col-sm-4 { - padding-top: 25px; - padding-bottom: 20px; - font-size: 13px; -} -.status-data { - font-size: 12px; - font-family: "Open Sans"; - color: rgba(255,255,255,0.5); - padding-left: 30px; -} -.status-data .animate-number { - color: rgba(255,255,255,0.85); - font-size: 14px; - font-weight: 700; -} -.status-data .right-border { - border-right: 1px solid rgba(0,0,0,0.2); -} -#home-chart-2 { - margin-top: 24px; -} -.morris-chart svg { - width: 100% !important; -} -#website-statistic2 h4 { - color: #fff; -} -#website-statistic2 .progress { - background: rgba(0,0,0,0.2); -} -#website-statistic3 { - color: #fff; - padding: 20px; -} -#website-statistic3 h2 { - color: #fff; -} -#website-statistic3 .stock-status { - font-size: 21px; - font-family: "Open Sans"; - line-height: 35px; - display: block; - margin: 10px 0px; -} -.sales-report-data { - padding: 20px; -} -#chat_groups h2 { - color: rgba(0,0,0,0.7); - border-top: 1px solid rgba(0,0,0,0.1); - font-size: 13px; - font-weight: 600; - margin-bottom: 0px; - padding: 0px 15px; -} -#chat_groups li a { - display: block; - padding: 5px 15px; - font-size: 13px; - font-family: "Open Sans"; - color: rgba(0,0,0,0.5); -} -#chat_groups li a i { - margin-right: 5px; - font-size: 12px; -} -#recent_tickets { - display: none; -} -#recent_tickets h2 { - color: rgba(0,0,0,0.7); - border-top: 1px solid rgba(0,0,0,0.1); - font-size: 13px; - font-weight: 400; - margin-bottom: 0px; - padding: 0px 15px; -} -#recent_tickets li a { - display: block; - padding: 5px 15px; - font-size: 13px; - font-family: "Open Sans"; - color: rgba(0,0,0,0.5); -} -#recent_tickets li a i { - margin-right: 5px; -} -#recent_tickets li a span { - display: block; - color: rgba(0,0,0,0.4); - font-size: 12px; -} -#stock-widget .widget-content h4 { - position: absolute; - left: 15px; - top: 40px; -} -#stock-widget #stock-chart svg { - margin-top: -20px; -} -#stock-widget .stock-options { - margin-right: 15px; -} -#notes-app { - background: #fdfdbe; - overflow: hidden; -} -#note-data { - width: 100%; - position: absolute; - left: -100%; - padding-left: 55px; - -webkit-transition: all 300ms ease-in-out; - -moz-transition: all 300ms ease-in-out; - -o-transition: all 300ms ease-in-out; - transition: all 300ms ease-in-out; -} -#notes-app.new-item #notes-list { - left: -100%; - -webkit-transition: all 300ms ease-in-out; - -moz-transition: all 300ms ease-in-out; - -o-transition: all 300ms ease-in-out; - transition: all 300ms ease-in-out; -} -#notes-list { - left: 0%; - padding-left: 60px; - width: 100%; - height: 340px; - overflow: hidden; - padding-top: 7px; - position: absolute; - -webkit-transition: all 300ms ease-in-out; - -moz-transition: all 300ms ease-in-out; - -o-transition: all 300ms ease-in-out; - transition: all 300ms ease-in-out; -} -#notes-list a { - color: #555; -} -#notes-list ul li { - line-height: 31px; -} -#note-text { - min-height: 300px; - height: 100%; - background: none !important; - border: none !important; - line-height: 31px; - resize: none; -} -#notes-app .status-indicator { - position: absolute; - bottom: 15px; - right: 15px; - background: rgba(0,0,0,0.4); - color: #fff; - opacity: 0; - -webkit-transition: all 800ms ease-in-out; - -moz-transition: all 800ms ease-in-out; - -o-transition: all 800ms ease-in-out; - transition: all 800ms ease-in-out; - padding: 1px 6px 2px; -} -#notes-app.saved .status-indicator { - -webkit-transition: all 800ms ease-in-out; - -moz-transition: all 800ms ease-in-out; - -o-transition: all 800ms ease-in-out; - transition: all 800ms ease-in-out; - opacity: 1; -} -#notes-app .widget-content { - background: repeating-linear-gradient(0deg,transparent,transparent 30px,#f3f3f3 30px,#f3f3f3 31px); - height: 342px; - padding-top: 0px; -} -#notes-app .notes-line { - border-left: 3px double rgba(238,150,122,0.55); - position: absolute; - z-index: 0; - display: block; - height: 100%; - left: 50px; -} -#notes-app.new-item #note-data { - left: 0px; - -webkit-transition: all 300ms ease-in-out; - -moz-transition: all 300ms ease-in-out; - -o-transition: all 300ms ease-in-out; - transition: all 300ms ease-in-out; -} -.todo-list { - list-style: none; - padding: 0px; - margin: 0px; -} -.todo-list li { - list-style: none; - padding: 10px; - text-overflow: ellipsis; - width: 100%; - position: relative; - white-space: nowrap; - margin-bottom: 4px; - border-left: 4px solid rgba(0,0,0,0.04); - background: #f8f8f8; -} -.todo-list li.done { - opacity: 0.5; -} -.todo-list li.done .todo-item { - text-decoration: line-through; -} -.todo-list li > span { - line-height: 24px; - height: 25px; - display: inline-block; - text-overflow: ellipsis; - overflow: hidden; - max-width: 70%; - vertical-align: middle; -} -.todo-list .check-icon { - width: 30px; - margin-top: -2px; - display: inline-block; -} -.todo-list .todo-item { - font-size: 12px; - border-bottom: 1px dashed rgba(0,0,0,0) !important; -} -.todo-list .todo-item:hover { - border-bottom: 1px dashed rgba(0,0,0,0.2) !important; -} -.todo-list .todo-options { - font-size: 16px; - display: none; -} -.todo-list .editable-buttons { - display: inline-block; -} -.todo-list .todo-tags { - display: inline; - line-height: auto; - position: absolute; - top: 9px; - right: 9px; - font-family: "Open Sans"; -} -.todo-list .todo-options a { - color: #888; -} -.todo-list li:hover .todo-tags { - display: none; -} -.todo-list li:hover .todo-options { - display: inline; - position: absolute; - top: 9px; - right: 9px; -} -.todo-list li.done .todo-tags { - display: inline !important; -} -.todo-list li.done .todo-options { - display: none !important; -} -.todo-list li .editable-container.editable-inline { - margin-top: -4px; - overflow: visible; -} -.todo-list li.high { - border-left: 4px solid #EB5055; -} -.todo-list li.medium { - border-left: 4px solid #E27A3F; -} -.todo-list li.low { - border-left: 4px solid #FFC052; -} -#contextMenu { - position: absolute; - display: none; - z-index: 1000; -} -#weather-widget { - background: url(../../images/weather/weather-bg.jpg); - background-size: cover; - min-height: 364px; -} -#weather-widget h2 { - color: #fff; -} -#weather h2 { - position: absolute; - top: 60px; - right: 30px; - font-size: 50px; -} -#weather .w-region { - position: absolute; - top: 100px; - left: 20px; - font-size: 30px; - color: rgba(255,255,255,0.9); - font-family: "Open Sans"; -} -#weather .w-currently { - display: block; - font-size: 20px; - color: rgba(255,255,255,0.8); -} -#weather .w-temp2 { - font-size: 24px; - color: rgba(255,255,255,0.8); -} -.bic_calendar { - border: none; - background: none; - font-family: "Open Sans"; -} -.bic_calendar a { - color: #fff; -} -.bic_calendar .table tbody > tr > td { - padding: 2px 0px; - border: none !important; - line-height: 2.429; -} -.bic_calendar td > div { - padding: 4px; -} -.bic_calendar .button-month-next, -.bic_calendar .button-month-previous { - padding: 5px 15px !important; -} -.bic_calendar .days-month td { - background: rgba(0,0,0,0.1); - font-weight: 600; -} -.fc-event { - border: 0px; - padding: 1px 4px; -} -.dataTables_length, -div.dataTables_info { - margin-left: 15px; -} -.dataTables_filter, -.dataTables_paginate { - margin-right: 15px !important; -} -.dataTables_filter input { - margin-left: 6px; -} -.pagination li a, -.pagination li.disabled a { - background-color: #abb7b7; - border-color: #abb7b7; - border-radius: 2px !important; - color: #fff; -} -.pagination li.active a, -.pagination li:hover a, -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - background-color: #98a3a3 !important; - border-color: #98a3a3 !important; - color: #fff; -} -.pagination li.disabled a { - color: #ddd; -} -.pagination li.active a { - box-shadow: 0 3px 5px rgba(0,0,0,0.125) inset; -} -.streetview { - height: 300px; -} -.cluster { - color: #FFF; - text-align: center; - font-family: 'Arial,Helvetica'; - font-size: 11px; - font-weight: bold; -} -.cluster-1 { - background-image: url(../img/gmap/m1.png); - line-height: 53px; - width: 53px; - height: 52px; -} -.cluster-2 { - background-image: url(../img/gmap/m2.png); - line-height: 53px; - width: 56px; - height: 55px; -} -.cluster-3 { - background-image: url(../img/gmap/m3.png); - line-height: 66px; - width: 66px; - height: 65px; -} -.modal-content { - -webkit-border-radius: 2px; - border-radius: 2px; -} -.notification-positions { - border: 2px dashed #ddd; - padding: 2px; -} -.notification-positions div, -.notification-positions a { - height: 50px; - margin-bottom: 20px; - display: block; -} -.notification-positions .row:last-child, -.notification-positions .row:last-child div, -.notification-positions .row:last-child div a { - margin-bottom: 0px !important; -} -.jqstooltip { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-border-radius: 2px; - border-radius: 2px; - border-color: rgba(0,0,0,0.1) !important; - background: rgba(0,0,0,0.5) !important; -} -.rickshaw_graph .detail .x_label { - color: #333; -} -.echart { - position: relative; - display: inline-block; - vertical-align: middle; -} -.echart canvas { - display: block; -} -.percent { - position: absolute; - display: block; - vertical-align: middle; - width: 100%; - line-height: 0px; - text-align: center; - height: 100%; - left: 0px; - top: 50%; - font-weight: bold; - z-index: 2; - font-family: "Open Sans"; -} -.percent:after { - content: '%'; - color: rgba(255,255,255,0.7); - font-weight: normal; - margin-left: 0.1em; - margin-right: -5px; - font-size: 9px; -} -.jvectormap-zoomin, -.jvectormap-zoomout { - width: 18px; - height: 18px; - background: #68C39F; -} -.jvectormap-zoomin:hover, -.jvectormap-zoomout:hover { - background: #5CAD8D; -} -.jvectormap-zoomin { - top: auto; - bottom: 10px; -} -.jvectormap-zoomout { - top: auto; - left: 30px; - bottom: 10px; -} -.grid-example [class*="col-"] { - background: #fff; - border: 1px solid #f3f3f3; - padding-bottom: 10px; - padding-top: 10px; - text-align: center; - transition: all 0.3s ease 0s; -} -span.i-code { - display: none; -} -.icon-showcase p { - font-size: 14px; - vertical-align: middle; - line-height: 30px; -} -.icon-showcase p i { - font-size: 24px; - line-height: 30px; - text-align: center; - vertical-align: middle; - width: 24px; -} -#icons .the-icons i { - font-size: 24px; - line-height: 30px; - position: relative; - top: auto; - right: auto; -} -#icons .the-icons .i-name { - font-size: 14px; - line-height: 30px; -} -.ios-switch-default .on-background { - background: #ABB7B7; -} -.ios-switch-primary .on-background { - background: #2980B9; -} -.ios-switch-success .on-background { - background: #68C39F; -} -.ios-switch-warning .on-background { - background: #E27A3F; -} -.ios-switch-info .on-background { - background: #7A868F; -} -.ios-switch-danger .on-background { - background: #EB5055; -} -.ios-switch-lg { - height: 45px; - width: 75px; -} -.ios-switch-lg .handle { - height: 41px; - width: 41px; -} -.ios-switch-lg.on .handle { - -o-transform: translate3d(30px,0,0); - -ms-transform: translate3d(30px,0,0); - -moz-transform: translate3d(30px,0,0); - -webkit-transform: translate3d(30px,0,0); - transform: translate3d(30px,0,0); -} -.ios-switch-sm { - height: 25px; - width: 45px; -} -.ios-switch-sm .handle { - height: 21px; - width: 21px; -} -.ios-switch-sm.on .handle { - -o-transform: translate3d(20px,0,0); - -ms-transform: translate3d(20px,0,0); - -moz-transform: translate3d(20px,0,0); - -webkit-transform: translate3d(20px,0,0); - transform: translate3d(20px,0,0); -} -footer { - padding: 20px 0; - font-size: 12px; - border-top: 1px solid #B9C1CB; - margin-top: 40px; - color: #7A868F; -} -footer .footer-links a { - color: #7A868F; - padding: 1px 10px; - border-right: 1px solid rgba(0,0,0,0.1); -} -footer .footer-links a:hover { - color: #4A525F; -} -footer .footer-links a:last-child { - border: none; -} diff --git a/public/assets/admin/img/apple-touch-icon-114x114.png b/public/assets/admin/img/apple-touch-icon-114x114.png deleted file mode 100644 index 8730cf3ca..000000000 Binary files a/public/assets/admin/img/apple-touch-icon-114x114.png and /dev/null differ diff --git a/public/assets/admin/img/apple-touch-icon-120x120.png b/public/assets/admin/img/apple-touch-icon-120x120.png deleted file mode 100644 index 842e5d630..000000000 Binary files a/public/assets/admin/img/apple-touch-icon-120x120.png and /dev/null differ diff --git a/public/assets/admin/img/apple-touch-icon-144x144.png b/public/assets/admin/img/apple-touch-icon-144x144.png deleted file mode 100644 index f3bd3a329..000000000 Binary files a/public/assets/admin/img/apple-touch-icon-144x144.png and /dev/null differ diff --git a/public/assets/admin/img/apple-touch-icon-152x152.png b/public/assets/admin/img/apple-touch-icon-152x152.png deleted file mode 100644 index 09345fb2b..000000000 Binary files a/public/assets/admin/img/apple-touch-icon-152x152.png and /dev/null differ diff --git a/public/assets/admin/img/apple-touch-icon-57x57.png b/public/assets/admin/img/apple-touch-icon-57x57.png deleted file mode 100644 index 66b0a45e7..000000000 Binary files a/public/assets/admin/img/apple-touch-icon-57x57.png and /dev/null differ diff --git a/public/assets/admin/img/apple-touch-icon-72x72.png b/public/assets/admin/img/apple-touch-icon-72x72.png deleted file mode 100644 index da5e7b51c..000000000 Binary files a/public/assets/admin/img/apple-touch-icon-72x72.png and /dev/null differ diff --git a/public/assets/admin/img/apple-touch-icon-76x76.png b/public/assets/admin/img/apple-touch-icon-76x76.png deleted file mode 100644 index 7961a8b58..000000000 Binary files a/public/assets/admin/img/apple-touch-icon-76x76.png and /dev/null differ diff --git a/public/assets/admin/img/apple-touch-icon.png b/public/assets/admin/img/apple-touch-icon.png deleted file mode 100644 index 66b0a45e7..000000000 Binary files a/public/assets/admin/img/apple-touch-icon.png and /dev/null differ diff --git a/public/assets/admin/img/favicon.ico b/public/assets/admin/img/favicon.ico deleted file mode 100644 index 182b54de8..000000000 Binary files a/public/assets/admin/img/favicon.ico and /dev/null differ diff --git a/public/assets/admin/img/gmap/m1.png b/public/assets/admin/img/gmap/m1.png deleted file mode 100644 index 329ff524c..000000000 Binary files a/public/assets/admin/img/gmap/m1.png and /dev/null differ diff --git a/public/assets/admin/img/gmap/m2.png b/public/assets/admin/img/gmap/m2.png deleted file mode 100644 index b999cbcf6..000000000 Binary files a/public/assets/admin/img/gmap/m2.png and /dev/null differ diff --git a/public/assets/admin/img/gmap/m3.png b/public/assets/admin/img/gmap/m3.png deleted file mode 100644 index 9f30b3092..000000000 Binary files a/public/assets/admin/img/gmap/m3.png and /dev/null differ diff --git a/public/assets/admin/img/inv-logo.png b/public/assets/admin/img/inv-logo.png deleted file mode 100644 index 8c08d7fdd..000000000 Binary files a/public/assets/admin/img/inv-logo.png and /dev/null differ diff --git a/public/assets/admin/img/login-logo.png b/public/assets/admin/img/login-logo.png deleted file mode 100644 index 700722146..000000000 Binary files a/public/assets/admin/img/login-logo.png and /dev/null differ diff --git a/public/assets/admin/img/logo.png b/public/assets/admin/img/logo.png deleted file mode 100644 index dd8e2667c..000000000 Binary files a/public/assets/admin/img/logo.png and /dev/null differ diff --git a/public/assets/admin/js/apps/calculator.js b/public/assets/admin/js/apps/calculator.js deleted file mode 100644 index 42bd6bba0..000000000 --- a/public/assets/admin/js/apps/calculator.js +++ /dev/null @@ -1,85 +0,0 @@ -// Get all the keys from document -var keys = document.querySelectorAll('#calculator span'); -var operators = ['+', '-', 'x', '÷']; -var decimalAdded = false; - -// Add onclick event to all the keys and perform operations -for(var i = 0; i < keys.length; i++) { - keys[i].onclick = function(e) { - // Get the input and button values - var input = document.querySelector('.calc-screen'); - var inputVal = input.innerHTML; - var btnVal = this.innerHTML; - - // Now, just append the key values (btnValue) to the input string and finally use javascript's eval function to get the result - // If clear key is pressed, erase everything - if(btnVal == 'C') { - input.innerHTML = ''; - decimalAdded = false; - } - - // If eval key is pressed, calculate and display the result - else if(btnVal == '=') { - var equation = inputVal; - var lastChar = equation[equation.length - 1]; - - // Replace all instances of x and ÷ with * and / respectively. This can be done easily using regex and the 'g' tag which will replace all instances of the matched character/substring - equation = equation.replace(/x/g, '*').replace(/÷/g, '/'); - - // Final thing left to do is checking the last character of the equation. If it's an operator or a decimal, remove it - if(operators.indexOf(lastChar) > -1 || lastChar == '.') - equation = equation.replace(/.$/, ''); - - if(equation) - input.innerHTML = eval(equation); - - decimalAdded = false; - } - - // Basic functionality of the calculator is complete. But there are some problems like - // 1. No two operators should be added consecutively. - // 2. The equation shouldn't start from an operator except minus - // 3. not more than 1 decimal should be there in a number - - // We'll fix these issues using some simple checks - - // indexOf works only in IE9+ - else if(operators.indexOf(btnVal) > -1) { - // Operator is clicked - // Get the last character from the equation - var lastChar = inputVal[inputVal.length - 1]; - - // Only add operator if input is not empty and there is no operator at the last - if(inputVal != '' && operators.indexOf(lastChar) == -1) - input.innerHTML += btnVal; - - // Allow minus if the string is empty - else if(inputVal == '' && btnVal == '-') - input.innerHTML += btnVal; - - // Replace the last operator (if exists) with the newly pressed operator - if(operators.indexOf(lastChar) > -1 && inputVal.length > 1) { - // Here, '.' matches any character while $ denotes the end of string, so anything (will be an operator in this case) at the end of string will get replaced by new operator - input.innerHTML = inputVal.replace(/.$/, btnVal); - } - - decimalAdded =false; - } - - // Now only the decimal problem is left. We can solve it easily using a flag 'decimalAdded' which we'll set once the decimal is added and prevent more decimals to be added once it's set. It will be reset when an operator, eval or clear key is pressed. - else if(btnVal == '.') { - if(!decimalAdded) { - input.innerHTML += btnVal; - decimalAdded = true; - } - } - - // if any other key is pressed, just append it - else { - input.innerHTML += btnVal; - } - - // prevent page jumps - e.preventDefault(); - } -} \ No newline at end of file diff --git a/public/assets/admin/js/apps/notes.js b/public/assets/admin/js/apps/notes.js deleted file mode 100644 index 00f289eeb..000000000 --- a/public/assets/admin/js/apps/notes.js +++ /dev/null @@ -1,104 +0,0 @@ -var autosave; -var autosave_time = 5000; // miliseconds - -$(document).ready(function(){ - load_list(); - - $("#notes-list .scroller").slimscroll({ - height: '330px', - size: "5px" - }); - - $(".add-note").click(function(){ - save_note(); - $("#notes-app").addClass("new-item"); - $("#note-text").val(""); - $("#note-text").attr("rel",guidGenerator()); - }); - - $(".back-note-list").click(function(){ - save_note(); - $("#notes-app").removeClass("new-item"); - }); - - $(document).on("click", "#notes-list .note-trunc", function(e){ - e.preventDefault(); - var id = $(this).attr("rel"); - $("#note-text").attr("rel",id); - $("#note-text").val(localStorage.getItem(id)); - $("#notes-app").addClass("new-item"); - }); - - $(document).on("blur change", "#note-text", function(){ - save_note(); - }); - - $(document).on("click", "#notes-list .kill-note", function(e){ - e.preventDefault(); - var id = $(this).attr("rel"); - bootbox.confirm("Are you sure to remove this note?", function(result) { - if(result === true){ - localStorage.removeItem(id); - load_list(); - } - }); - }); - - autosave = window.setInterval(function(){ - if($("#notes-app").hasClass("new-item")){ - save_note(); - } - },autosave_time); -}); - -function save_note(){ - if($("#note-text").val() != ""){ - $("#notes-app").addClass("saved"); - localStorage.setItem($("#note-text").attr("rel"),$("#note-text").val()); - console.log("Note saved!"); - load_list(); - window.setTimeout(function(){ - $("#notes-app").removeClass("saved"); - },1000); - return true; - } - return false; -} - -function load_list(){ - $("#notes-list ul").html(""); - var ids = []; - for (var i = 0; i < localStorage.length; i++) { - var id = localStorage.length-i-1; - if(localStorage.key(id).startsWith("coco-note-")){ - ids.push(id); - } - } - ids = ids.sort(); - for (var x = 0;x < ids.length;x++){ - var note = localStorage.getItem(localStorage.key(ids[x])).truncate(40); - $("#notes-list ul").append("
'+error+'
'); - } - }); -} - -function reload_charts(){ - graph.configure({ - width: $("#home-chart-3").width() - }); - graph.render(); - - graph2.configure({ - width: $("#home-chart-2").width() - }); - graph2.render(); - window.morris1.redraw(); - window.morris2.redraw(); -} - -function load_charts(){ - //MORRIS - - window.morris1 = Morris.Bar({ - element: 'morris-bar-home', - data: [ - { y: 'Indonesia', a: 952}, - { y: 'India', a: 985}, - { y: 'Malaysia', a: 955}, - { y: 'China', a: 785 }, - { y: 'Philipina', a: 700 }, - { y: 'Autralia', a: 601 }, - { y: 'United Kingdom', a: 421 }, - { y: 'United States', a: 725 }, - { y: 'Taiwan', a: 350 }, - { y: 'New Zealand', a: 120 }, - { y: 'Singapore', a: 124} - ], - xkey: 'y', - ykeys: ['a'], - redraw: true, - labels: ['Visitor'], - resize: true, - barColors: ['#45B29D'], - gridTextColor: ['#777'], - gridTextSize: 11, - hideHover: 'auto', - grid :false - }); - - //MORRIS - window.morris2 = Morris.Area({ - element: 'morris-home', - padding: 10, - behaveLikeLine: true, - gridEnabled: false, - gridLineColor: '#dddddd', - axes: true, - resize: true, - smooth:true, - pointSize: 0, - lineWidth: 0, - fillOpacity:0.85, - data: [ - {period: '2010 Q1', iphone: 4666, ipad: 3666, itouch: 2666}, - {period: '2010 Q2', iphone: 4441, ipad: 3441, itouch: 2441}, - {period: '2010 Q3', iphone: 6501, ipad: 4501, itouch: 2501}, - {period: '2010 Q4', iphone: 7689, ipad: 6689, itouch: 5689}, - {period: '2011 Q1', iphone: 4293, ipad: 3293, itouch: 2293}, - {period: '2011 Q2', iphone: 5881, ipad: 3881, itouch: 1881}, - {period: '2011 Q3', iphone: 5588, ipad: 3588, itouch: 1588}, - {period: '2011 Q4', iphone: 15073, ipad: 8967, itouch: 5175}, - {period: '2012 Q1', iphone: 10687, ipad: 4460, itouch: 2028}, - {period: '2012 Q2', iphone: 12432, ipad: 5713, itouch: 3791} - ], - lineColors:['#869d9d','#EFC94C','#45B29D'], - xkey: 'period', - redraw: true, - ykeys: ['iphone', 'ipad', 'itouch'], - labels: ['All Visitors', 'Returning Visitors', 'Unique Visitors'], - hideHover: 'auto' - - }); - /* - Morris.Donut({ - element: 'morris-donut', - data: [ - {label: "Download Sales", value: 12}, - {label: "In-Store Sales", value: 30}, - {label: "Mail-Order Sales", value: 20} - ] - }); - */ - var seriesData = [ [], [], []]; - var random = new Rickshaw.Fixtures.RandomData(50); - - for (var i = 0; i < 40; i++) { - random.addData(seriesData); - } - - graph = new Rickshaw.Graph( { - element: document.querySelector("#home-chart-3"), - height: 150, - renderer: 'line', - interpolation: 'linear', - series: [ - { - data: seriesData[0], - color: 'rgba(0,0,0,0.4)', - name:'S&P' - },{ - data: seriesData[1], - color: 'rgba(0,0,0,0.3)', - name:'Dow jones' - },{ - data: seriesData[2], - color: 'rgba(0,0,0,0.2)', - name:'Nasdaq' - } - ] - } ); - var hoverDetail = new Rickshaw.Graph.HoverDetail({ - graph: graph - }); - - graph.render(); - - setInterval( function() { - random.removeData(seriesData); - random.addData(seriesData); - for (lastitem in seriesData[0]); - var cur = parseInt($("#sp-status").text()); - - if(cur > seriesData[0][lastitem].y.toFixed(2)){ - $("#sp-status").addClass("text-danger").html(" "+seriesData[0][lastitem].y.toFixed(2)); - }else{ - $("#sp-status").removeClass("text-danger").html(" "+seriesData[0][lastitem].y.toFixed(2)); - } - for (lastitem in seriesData[1]); - var cur = parseInt($("#dow-status").text()); - - if(cur > seriesData[1][lastitem].y.toFixed(2)){ - $("#dow-status").addClass("text-danger").html(" "+seriesData[1][lastitem].y.toFixed(2)); - }else{ - $("#dow-status").removeClass("text-danger").html(" "+seriesData[1][lastitem].y.toFixed(2)); - } - for (lastitem in seriesData[2]); - var cur = parseInt($("#nasdaq-status").text()); - - if(cur > seriesData[2][lastitem].y.toFixed(2)){ - $("#nasdaq-status").addClass("text-danger").html(" "+seriesData[2][lastitem].y.toFixed(2)); - }else{ - $("#nasdaq-status").removeClass("text-danger").html(" "+seriesData[2][lastitem].y.toFixed(2)); - } - graph.update(); - - },5000); - - var seriesData2 = [ [], []]; - var random2 = new Rickshaw.Fixtures.RandomData(50); - - for (var i = 0; i < 50; i++) { - random2.addData(seriesData2); - } - graph2 = new Rickshaw.Graph( { - element: document.querySelector("#home-chart-2"), - height: 150, - interpolation: 'linear', - renderer: 'area', - series: [ - { - data: seriesData2[0], - color: 'rgba(255,255,255,0.3)', - name:'Web Server' - },{ - data: seriesData2[1], - color: 'rgba(255,255,255,0.1)', - name:'Database Server' - } - ] - } ); - var hoverDetail = new Rickshaw.Graph.HoverDetail( { - graph: graph2 - }); - - graph2.render(); - clearInterval(timer); - timer = setInterval( function() { - random2.removeData(seriesData2); - random2.addData(seriesData2); - for (lastitem in seriesData2[0]); - $('.ws-load').data('easyPieChart').update(seriesData2[0][lastitem].y); - //for (lastitem in seriesData2[1]); - //$('.ds-load').data('easyPieChart').update(seriesData2[1][lastitem].y); - graph2.update(); - - },2000); - - $('.ws-load').easyPieChart({ - animate: 1000, - trackColor: "rgba(0,0,0,0.1)", - barColor: "#68C39F", - scaleColor: false, - size: 90, - onStep: function(from, to, percent) { - $(this.el).find('.percent').text(Math.round(percent)); - } - }); - /*$('.ds-load').easyPieChart({ - animate: 1000, - scaleColor: false, - trackColor: "rgba(0,0,0,0.1)", - barColor: "#68C39F", - size: 50, - onStep: function(from, to, percent) { - $(this.el).find('.percent').text(Math.round(percent)); - } - });*/ -} -//http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20csv%20where%20url%3D%27http%3A%2F%2Fdownload.finance.yahoo.com%2Fd%2Fquotes.csv%3Fs%3dDOW%2CNASDAQ%2CSP%26f%3Dsl1d1t1c1ohgv%26e%3D.csv%27%20and%20columns%3D%27symbol%2Cprice%2Cdate%2Ctime%2Cchange%2Ccol1%2Chigh%2Clow%2Ccol2%27&format=json&diagnostics=true&callback= \ No newline at end of file diff --git a/public/assets/admin/js/pages/index2.js b/public/assets/admin/js/pages/index2.js deleted file mode 100644 index ab396c6c5..000000000 --- a/public/assets/admin/js/pages/index2.js +++ /dev/null @@ -1,378 +0,0 @@ -var timer; -var graph; -var graph2; - -$(document).ready(function(){ - $(".dial").knob(); - var cityAreaData = [ - 500.70, - 410.16, - 210.69, - 120.17, - 64.31, - 150.35, - 130.22, - 120.71, - 300.32 - ] - $('#vector-map').vectorMap({ - map: 'world_mill_en', - normalizeFunction: 'polynomial', - zoomOnScroll:true, - focusOn:{ - x: 0, - y: 0, - scale: 0.9 - }, - zoomMin:0.9, - hoverColor: false, - regionStyle:{ - initial: { - fill: '#bbbbbb', - "fill-opacity": 1, - stroke: '#a5ded9', - "stroke-width": 0, - "stroke-opacity": 0 - }, - hover: { - "fill-opacity": 0.8 - } - }, - markerStyle: { - initial: { - fill: '#F57A82', - stroke: 'rgba(230,140,110,.8)', - "fill-opacity": 1, - "stroke-width": 9, - "stroke-opacity": 0.5, - r: 3 - }, - hover: { - stroke: 'black', - "stroke-width": 2 - }, - selected: { - fill: 'blue' - }, - selectedHover: { - } - }, - backgroundColor: '#ffffff', - markers :[ - - {latLng: [35.85, -77.88], name: 'Rocky Mt,NC'}, - {latLng: [32.90, -97.03], name: 'Dallas/FW,TX'}, - {latLng: [41.00, 28.96], name: 'Istanbul, TR'}, - {latLng: [39.37, -75.07], name: 'Millville,NJ'} - - ], - series: { - markers: [{ - attribute: 'r', - scale: [3, 7], - values: cityAreaData - }] - } - }); - if ("geolocation" in navigator) { - $('.js-geolocation').show(); - } else { - $('.js-geolocation').hide(); - } - - /* Where in the world are you? */ - $(document).on('click', '.js-geolocation', function() { - navigator.geolocation.getCurrentPosition(function(position) { - loadWeather(position.coords.latitude+','+position.coords.longitude); //load weather using your lat/lng coordinates - }); - }); - - resizefunc.push("reload_charts"); - //$(".content-page").resize(debounce(reload_charts,100)); - - load_charts(); - loadWeather('Seattle',''); - monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; - dayNames = ["S", "M", "T", "W", "T", "F", "S"]; - - var cTime = new Date(), month = cTime.getMonth()+1, year = cTime.getFullYear(); - - var events = [ - { - "date": "4/"+month+"/"+year, - "title": 'Meet a friend', - "link": 'javascript:;', - "color": 'rgba(255,255,255,0.2)', - "content": 'Contents here' - }, - { - "date": "7/"+month+"/"+year, - "title": 'Kick off meeting!', - "link": 'javascript:;', - "color": 'rgba(255,255,255,0.2)', - "content": 'Have a kick off meeting with .inc company' - }, - { - "date": "19/"+month+"/"+year, - "title": 'Link to Google', - "link": 'http://www.google.com', - "color": 'rgba(255,255,255,0.2)', - } - ]; - - $('#calendar-box2').bic_calendar({ - events: events, - dayNames: dayNames, - monthNames: monthNames, - showDays: true, - displayMonthController: true, - displayYearController: false, - popoverOptions:{ - placement: 'top', - trigger: 'hover', - html: true - }, - tooltipOptions:{ - placement: 'top', - html: true - } - }); -}); - -function loadWeather(location, woeid) { - $.simpleWeather({ - location: location, - woeid: woeid, - unit: 'c', - success: function(weather) { - html = ''+error+'
'); - } - }); -} - -function reload_charts(){ - graph.configure({ - width: $("#home-chart-3").width() - }); - graph.render(); - - graph2.configure({ - width: $("#home-chart-2").width() - }); - graph2.render(); - window.morris1.redraw(); - window.morris2.redraw(); -} - -function load_charts(){ - //MORRIS - - window.morris1 = Morris.Bar({ - element: 'morris-bar-home', - data: [ - { y: 'Indonesia', a: 952}, - { y: 'India', a: 985}, - { y: 'Malaysia', a: 955}, - { y: 'China', a: 785 }, - { y: 'Philipina', a: 700 }, - { y: 'Autralia', a: 601 }, - { y: 'United Kingdom', a: 421 }, - { y: 'United States', a: 725 }, - { y: 'Taiwan', a: 350 }, - { y: 'New Zealand', a: 120 }, - { y: 'Singapore', a: 124} - ], - xkey: 'y', - ykeys: ['a'], - redraw: true, - labels: ['Visitor'], - resize: true, - barColors: ['#45B29D'], - gridTextColor: ['#777'], - gridTextSize: 11, - hideHover: 'auto', - grid :false - }); - - //MORRIS - window.morris2 = Morris.Line({ - element: 'morris-home', - padding: 20, - behaveLikeLine: true, - gridEnabled: false, - gridLineColor: '#dddddd', - axes: true, - resize: true, - smooth:false, - pointSize: 3, - lineWidth: 2, - fillOpacity:0.85, - data: [ - {period: '2009 Q1', iphone: 4666, ipad: 3666, itouch: 2666}, - {period: '2009 Q2', iphone: 4441, ipad: 3441, itouch: 2441}, - {period: '2009 Q3', iphone: 16501, ipad: 14501, itouch: 12501}, - {period: '2009 Q4', iphone: 7689, ipad: 6689, itouch: 5689}, - {period: '2010 Q1', iphone: 4666, ipad: 3666, itouch: 2666}, - {period: '2010 Q2', iphone: 4441, ipad: 3441, itouch: 2441}, - {period: '2010 Q3', iphone: 6501, ipad: 4501, itouch: 2501}, - {period: '2010 Q4', iphone: 7689, ipad: 6689, itouch: 5689}, - {period: '2011 Q1', iphone: 2293, ipad: 1293, itouch: 293}, - {period: '2011 Q2', iphone: 5881, ipad: 3881, itouch: 1881}, - {period: '2011 Q3', iphone: 5588, ipad: 3588, itouch: 1588}, - {period: '2011 Q4', iphone: 15073, ipad: 8967, itouch: 5175}, - {period: '2012 Q1', iphone: 10687, ipad: 4460, itouch: 2028}, - {period: '2012 Q2', iphone: 12432, ipad: 5713, itouch: 3791} - ], - lineColors:['#abb7b7','#ABC8E2','#183152'], - xkey: 'period', - redraw: true, - ykeys: ['iphone', 'ipad'], - labels: ['All Visitors', 'Returning Visitors'], - hideHover: 'auto' - - }); - /* - Morris.Donut({ - element: 'morris-donut', - data: [ - {label: "Download Sales", value: 12}, - {label: "In-Store Sales", value: 30}, - {label: "Mail-Order Sales", value: 20} - ] - }); - */ - var seriesData = [ [], [], []]; - var random = new Rickshaw.Fixtures.RandomData(50); - - for (var i = 0; i < 40; i++) { - random.addData(seriesData); - } - - graph = new Rickshaw.Graph( { - element: document.querySelector("#home-chart-3"), - height: 150, - renderer: 'line', - interpolation: 'linear', - series: [ - { - data: seriesData[0], - color: 'rgba(0,0,0,0.4)', - name:'S&P' - },{ - data: seriesData[1], - color: 'rgba(0,0,0,0.3)', - name:'Dow jones' - },{ - data: seriesData[2], - color: 'rgba(0,0,0,0.2)', - name:'Nasdaq' - } - ] - } ); - var hoverDetail = new Rickshaw.Graph.HoverDetail({ - graph: graph - }); - - graph.render(); - - setInterval( function() { - random.removeData(seriesData); - random.addData(seriesData); - for (lastitem in seriesData[0]); - var cur = parseInt($("#sp-status").text()); - - if(cur > seriesData[0][lastitem].y.toFixed(2)){ - $("#sp-status").addClass("text-danger").html(" "+seriesData[0][lastitem].y.toFixed(2)); - }else{ - $("#sp-status").removeClass("text-danger").html(" "+seriesData[0][lastitem].y.toFixed(2)); - } - for (lastitem in seriesData[1]); - var cur = parseInt($("#dow-status").text()); - - if(cur > seriesData[1][lastitem].y.toFixed(2)){ - $("#dow-status").addClass("text-danger").html(" "+seriesData[1][lastitem].y.toFixed(2)); - }else{ - $("#dow-status").removeClass("text-danger").html(" "+seriesData[1][lastitem].y.toFixed(2)); - } - for (lastitem in seriesData[2]); - var cur = parseInt($("#nasdaq-status").text()); - - if(cur > seriesData[2][lastitem].y.toFixed(2)){ - $("#nasdaq-status").addClass("text-danger").html(" "+seriesData[2][lastitem].y.toFixed(2)); - }else{ - $("#nasdaq-status").removeClass("text-danger").html(" "+seriesData[2][lastitem].y.toFixed(2)); - } - graph.update(); - - },5000); - - var seriesData2 = [ [], []]; - var random2 = new Rickshaw.Fixtures.RandomData(50); - - for (var i = 0; i < 50; i++) { - random2.addData(seriesData2); - } - graph2 = new Rickshaw.Graph( { - element: document.querySelector("#home-chart-2"), - height: 254, - interpolation: 'linear', - renderer: 'area', - series: [ - { - data: seriesData2[0], - color: 'rgba(255,255,255,0.3)', - name:'Web Server' - },{ - data: seriesData2[1], - color: 'rgba(255,255,255,0.1)', - name:'Database Server' - } - ] - } ); - var hoverDetail = new Rickshaw.Graph.HoverDetail( { - graph: graph2 - }); - - graph2.render(); - clearInterval(timer); - timer = setInterval( function() { - random2.removeData(seriesData2); - random2.addData(seriesData2); - for (lastitem in seriesData2[0]); - $('.ws-load').data('easyPieChart').update(seriesData2[0][lastitem].y); - //for (lastitem in seriesData2[1]); - //$('.ds-load').data('easyPieChart').update(seriesData2[1][lastitem].y); - graph2.update(); - - },2000); - - $('.ws-load').easyPieChart({ - animate: 1000, - trackColor: "rgba(0,0,0,0.1)", - barColor: "#68C39F", - scaleColor: false, - size: 90, - onStep: function(from, to, percent) { - $(this.el).find('.percent').text(Math.round(percent)); - } - }); - /*$('.ds-load').easyPieChart({ - animate: 1000, - scaleColor: false, - trackColor: "rgba(0,0,0,0.1)", - barColor: "#68C39F", - size: 50, - onStep: function(from, to, percent) { - $(this.el).find('.percent').text(Math.round(percent)); - } - });*/ -} -//http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20csv%20where%20url%3D%27http%3A%2F%2Fdownload.finance.yahoo.com%2Fd%2Fquotes.csv%3Fs%3dDOW%2CNASDAQ%2CSP%26f%3Dsl1d1t1c1ohgv%26e%3D.csv%27%20and%20columns%3D%27symbol%2Cprice%2Cdate%2Ctime%2Cchange%2Ccol1%2Chigh%2Clow%2Ccol2%27&format=json&diagnostics=true&callback= \ No newline at end of file diff --git a/public/assets/admin/js/pages/lockscreen.js b/public/assets/admin/js/pages/lockscreen.js deleted file mode 100644 index 2a314f3db..000000000 --- a/public/assets/admin/js/pages/lockscreen.js +++ /dev/null @@ -1,8 +0,0 @@ -$(function(){ - resizefunc.push("arrangesizeLockscreen"); - $(".lock-page .login-wrap").addClass("animated flipInX"); -}); - -function arrangesizeLockscreen(){ - $(".lock-page").height($(window).height()); -} \ No newline at end of file diff --git a/public/assets/admin/js/pages/morris-charts.js b/public/assets/admin/js/pages/morris-charts.js deleted file mode 100644 index 3d44fbdc6..000000000 --- a/public/assets/admin/js/pages/morris-charts.js +++ /dev/null @@ -1,61 +0,0 @@ -$(function(){ - Morris.Line({ - element: 'line-example', - resize: true, - data: [ - { y: '2006', a: 100, b: 90 }, - { y: '2007', a: 75, b: 65 }, - { y: '2008', a: 50, b: 40 }, - { y: '2009', a: 75, b: 65 }, - { y: '2010', a: 50, b: 40 }, - { y: '2011', a: 75, b: 65 }, - { y: '2012', a: 100, b: 90 } - ], - xkey: 'y', - ykeys: ['a', 'b'], - labels: ['Series A', 'Series B'] - }); - - Morris.Area({ - element: 'area-example', - resize: true, - data: [ - { y: '2006', a: 100, b: 90 }, - { y: '2007', a: 75, b: 65 }, - { y: '2008', a: 50, b: 40 }, - { y: '2009', a: 75, b: 65 }, - { y: '2010', a: 50, b: 40 }, - { y: '2011', a: 75, b: 65 }, - { y: '2012', a: 100, b: 90 } - ], - xkey: 'y', - ykeys: ['a', 'b'], - labels: ['Series A', 'Series B'] - }); - - Morris.Bar({ - element: 'bar-example', - resize: true, - data: [ - { y: '2007', a: 75, b: 65 }, - { y: '2008', a: 50, b: 40 }, - { y: '2009', a: 75, b: 65 }, - { y: '2010', a: 50, b: 40 }, - { y: '2011', a: 75, b: 65 } - ], - xkey: 'y', - ykeys: ['a', 'b'], - labels: ['Series A', 'Series B'] - }); - - Morris.Donut({ - element: 'donut-example', - resize: true, - data: [ - {label: "Download Sales", value: 12}, - {label: "In-Store Sales", value: 30}, - {label: "Mail-Order Sales", value: 20} - ] - }); - -}); \ No newline at end of file diff --git a/public/assets/admin/js/pages/nested-list.js b/public/assets/admin/js/pages/nested-list.js deleted file mode 100644 index e80ff3e37..000000000 --- a/public/assets/admin/js/pages/nested-list.js +++ /dev/null @@ -1,22 +0,0 @@ -var output; -$(document).ready(function(){ - var updateOutput = function(e) - { - var list = e.length ? e : $(e.target), - output = list.data('output'); - if (window.JSON) { - output.val(window.JSON.stringify(list.nestable('serialize')));//, null, 2)); - } else { - output.val('JSON browser support required for this demo.'); - } - }; - - // activate Nestable for list 1 - $('#nestable').nestable({ - group: 1 - }).on('change', updateOutput); - - $('#nestable2').nestable().on('change', updateOutput); - updateOutput($('#nestable').data('output', $('#nestable-output'))); - updateOutput($('#nestable2').data('output', $('#nestable2-output'))); -}) \ No newline at end of file diff --git a/public/assets/admin/js/pages/new-message.js b/public/assets/admin/js/pages/new-message.js deleted file mode 100644 index 70314ffce..000000000 --- a/public/assets/admin/js/pages/new-message.js +++ /dev/null @@ -1,11 +0,0 @@ -$(function(){ - $('.summernote-small').summernote({ - toolbar: [ - ['style', ['bold', 'italic', 'underline', 'clear']], - ['fontsize', ['fontsize']], - ['color', ['color']], - ['para', ['ul', 'ol', 'paragraph']] - ], - height: 200 - }); -}); \ No newline at end of file diff --git a/public/assets/admin/js/pages/notifications.js b/public/assets/admin/js/pages/notifications.js deleted file mode 100644 index 73f69bc66..000000000 --- a/public/assets/admin/js/pages/notifications.js +++ /dev/null @@ -1,101 +0,0 @@ -function notify(style,position) { - if(style == "error"){ - icon = "fa fa-exclamation"; - }else if(style == "warning"){ - icon = "fa fa-warning"; - }else if(style == "success"){ - icon = "fa fa-check"; - }else if(style == "info"){ - icon = "fa fa-question"; - }else{ - icon = "fa fa-circle-o"; - } - $.notify({ - title: 'Sample Notification', - text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas vitae orci ut dolor scelerisque aliquam.', - image: "" - }, { - style: 'metro', - className: style, - globalPosition:position, - showAnimation: "show", - showDuration: 0, - hideDuration: 0, - autoHide: false, - clickToHide: true - }); -} - -function notify2(style,position) { - $(".autohidebut").notify({ - text: ' Hi buddy. I\'m here!' - }, { - style: 'metro', - className: 'nonspaced', - elementPosition:position, - showAnimation: "show", - showDuration: 0, - hideDuration: 0, - autoHide: false, - clickToHide: true - }); -} - -function autohidenotify(style,position) { - if(style == "error"){ - icon = "fa fa-exclamation"; - }else if(style == "warning"){ - icon = "fa fa-warning"; - }else if(style == "success"){ - icon = "fa fa-check"; - }else if(style == "info"){ - icon = "fa fa-question"; - }else{ - icon = "fa fa-circle-o"; - } - $.notify({ - title: 'I will be closed in 3 seconds...', - text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas vitae orci ut dolor scelerisque aliquam.', - image: "" - }, { - style: 'metro', - className: style, - globalPosition:position, - showAnimation: "show", - showDuration: 0, - hideDuration: 0, - autoHideDelay: 3000, - autoHide: true, - clickToHide: true - }); -} - -function nconfirm() { - $.notify({ - title: 'Are you nuts?!', - text: 'Are you sure you want to do nothing?');g.click(function(a){a.preventDefault(),b=(b+1)%12,0==b&&f++,c(b,f)});var h=$(' | ');h.click(function(a){a.preventDefault(),b-=1,-1==b&&(f--,b=11),c(b,f)});var j=$(' | ');j.click(function(a){a.preventDefault(),f++,c(b,f)});var l=$(' | ');l.click(function(a){a.preventDefault(),f--,c(b,f)});var o=$(' |