Merge branch 'dev_aliyun' into dev_admin

dev_admin
jingquan huang 6 years ago
commit 5a2984073e

@ -0,0 +1,2 @@
// Place all the behaviors and hooks related to the matching controller here.
// All this logic will automatically be available in application.js.

@ -0,0 +1,2 @@
// Place all the behaviors and hooks related to the matching controller here.
// All this logic will automatically be available in application.js.

@ -0,0 +1,2 @@
// Place all the behaviors and hooks related to the matching controller here.
// All this logic will automatically be available in application.js.

@ -0,0 +1,3 @@
// Place all the styles related to the blob controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

@ -0,0 +1,3 @@
// Place all the styles related to the projects controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

@ -0,0 +1,3 @@
// Place all the styles related to the users/banks controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

@ -190,7 +190,7 @@ class ApplicationController < ActionController::Base
def check_account
if !current_user.profile_completed?
info_url = '/account/profile'
tip_exception(402, '')
tip_exception(402, info_url)
end
end

@ -0,0 +1,12 @@
class BlobController < ApplicationController
def new
commit unless @repository.empty?
end
def create
create_commit(Files::CreateService, success_path: after_create_path,
failure_view: :new,
failure_path: namespace_project_new_blob_path(@project.namespace, @project, @ref))
end
end

@ -467,13 +467,13 @@ class GamesController < ApplicationController
path = params[:path]
game_code = GameCode.where(:game_id => @game.try(:id), :path => path).first
if game_code.present?
content = game_code.try(:new_code)
@content = game_code.try(:new_code)
# @content = if @myshixun.mirror_name.select{|a| a.include?("MachineLearning") || a.include?("Python")}.present? && content.present?
# content.gsub(/\t/, ' ')
# else
# content
# end
update_file_content(content, @myshixun.repo_path, path, current_user.git_mail, current_user.real_name, "game passed reset")
update_file_content(@content, @myshixun.repo_path, path, current_user.git_mail, current_user.real_name, "game passed reset")
else
tip_exception("代码重置失败,代码为空")
end
@ -494,17 +494,10 @@ class GamesController < ApplicationController
path = path.try(:strip)
uid_logger("--rep_content: path is #{path}")
begin
if @myshixun.repo_name.nil?
g = Gitlab.client
repo_name = g.project(@myshixun.gpid).path_with_namespace
@myshixun.update_column(:repo_name, repo_name)
@content = git_fle_content("#{repo_name}.git", path) || ""
else
@content = git_fle_content(@myshixun.repo_path, path) || ""
end
rescue Exception => e
# 思路: 异常首先应该考虑去恢复
# retry为1表示已经轮训完成后还没有解决问题这个时候需要检测异常
if params[:retry].to_i == 1
begin
# 如果模板没有问题,则通过中间层检测实训仓库是否异常
@ -542,7 +535,7 @@ class GamesController < ApplicationController
end
end
end
# 有异常,版本库获取不到代码,前端轮训30S后调用retry == 1
# 有异常,版本库获取不到代码,前端轮训15S后调用retry == 1
tip_exception(0, e.message)
end
end

@ -2,7 +2,8 @@ class LibrariesController < ApplicationController
include PaginateHelper
before_action :require_login, :check_auth, except: %i[index show]
before_action :check_account, except: %i[index show]
after_action :increment_visit_count, only: [:show, :edit, :update]
helper_method :current_library, :library_manageable?
def index
@ -80,6 +81,10 @@ class LibrariesController < ApplicationController
current_user&.id == library.user_id || admin_or_business?
end
def increment_visit_count
current_library.increment_visited_count! if current_library && current_library.id
end
def save_params
params.permit(:title, :content, :author_name, :author_school_name,
:cover_id, :publish, attachment_ids: [], tag_ids: [])

@ -1,5 +1,6 @@
class MemosController < ApplicationController
before_action :require_login, except: [:show, :index]
before_action :check_account, only: [:new, :create]
before_action :set_memo, only: [:show, :edit, :update, :destroy, :sticky_or_cancel, :hidden, :more_reply]
before_action :validate_memo_params, only: [:create, :update]
before_action :owner_or_admin, only: [:edit, :update, :destroy]

@ -5,7 +5,6 @@ class ShixunsController < ApplicationController
before_action :require_login, :check_auth, except: [:download_file, :index, :menus]
before_action :check_account, only: [:new, :create, :shixun_exec]
before_action :check_auth, except: [:download_file, :index, :menus]
before_action :find_shixun, :shixun_access_allowed, except: [:index, :new, :create, :menus, :get_recommend_shixuns,
:propaedeutics, :departments, :apply_shixun_mirror,
@ -514,6 +513,103 @@ class ShixunsController < ApplicationController
# 以前在开启挑战的时候检测实训是否更新更新则重置觉得应该放在TPI更好
# 中间需要一个过渡动画
# TODO: 第一次开启实训都会去判断是否是纯选择题类型,感觉做成在创建关卡的时候就判断该实训是否是纯选择题更加合适
def shixun_exec
if is_shixun_opening?
tip_show_exception(-3, "#{@shixun.opening_time.strftime('%Y-%m-%d %H:%M:%S')}")
end
current_myshixun = @shixun.current_myshixun(current_user.id)
min_challenges = @shixun.challenges.pluck(:id , :st)
Rails.logger.info("11111111112#{current_myshixun.try(:id)}")
Rails.logger.info("111111111102#{params[:reset] != 1}")
# 因为读写分离有延迟所以如果是重置来的请求可以先跳过重置过来的params[:reset]为1
if current_myshixun && params[:reset] != "1"
games = current_myshixun.games
# 如果TPM和TPI的管卡数不相等或者关卡顺序错了说明实训被极大的改动需要重置,实训发布前打过的实训都需要重置
if is_shixun_reset?(games, min_challenges, current_myshixun)
# 这里页面弹框要收到 当前用户myshixun的identifier.
tip_show_exception("/myshixuns/#{current_myshixun.try(:identifier)}/reset_my_game")
end
# 如果存在实训,则直接进入实训
# 如果实训允许跳关传参params[:challenge_id]跳入具体的关卡
@current_task =
if params[:challenge_id]
game = games.where(challenge_id: params[:challenge_id]).take
if @shixun.task_pass || game.status != 3
game
else
current_myshixun.current_task(games)
end
else
current_myshixun.current_task(games)
end
else
# 如果未创建关卡一定不能开启实训否则TPI没法找到当前的关卡
if @shixun.challenges_count == 0
tip_exception("开启实战前请先创建实训关卡")
end
# 判断实训是否全为选择题
is_choice_type = (min_challenges.size == min_challenges.select{|challenge| challenge.last == 1}.count)
if !is_choice_type
commit = GitService.commits(repo_path: @repo_path).try(:first)
uid_logger("First comit########{commit}")
tip_exception("开启实战前请先在版本库中提交代码") if commit.blank?
commit_id = commit["id"]
end
ActiveRecord::Base.transaction do
begin
cloud_bridge = edu_setting('cloud_bridge')
myshixun_identifier = generate_identifier Myshixun, 10
myshixun = @shixun.myshixuns.create!(user_id: current_user.id, identifier: myshixun_identifier,
modify_time: @shixun.modify_time, reset_time: @shixun.reset_time,
onclick_time: Time.now, commit_id: commit_id, repo_name: (is_choice_type ? "-1" : nil))
uid_logger("myshixun_id is #{myshixun.id}")
# 其它创建关卡等操作
challenges = @shixun.challenges
# 之所以增加user_id是为了方便统计查询性能
game_attrs = %i[challenge_id myshixun_id status user_id open_time identifier modify_time created_at updated_at]
Game.bulk_insert(*game_attrs) do |worker|
base_attr = { myshixun_id: myshixun.id, user_id: myshixun.user_id }
challenges.each_with_index do |challenge, index|
status = (index == 0 ? 0 : 3)
game_identifier = generate_identifier(Game, 12)
worker.add(base_attr.merge(challenge_id: challenge.id, status: status, open_time: Time.now,
identifier: game_identifier, modify_time: challenge.modify_time))
end
end
# 如果实训是纯选择题则不需要去fork仓库以及中间层的相关操作了
unless is_choice_type
# fork仓库
project_fork(myshixun, @repo_path, current_user.login)
rep_url = Base64.urlsafe_encode64(repo_ip_url @repo_path )
uid_logger("start openGameInstance")
uri = "#{cloud_bridge}/bridge/game/openGameInstance"
logger.info("end openGameInstance")
params = {tpiID: "#{myshixun.id}", tpmGitURL:rep_url, tpiRepoName: myshixun.repo_name.split("/").last}
uid_logger("openGameInstance params is #{params}")
interface_post uri, params, 83, "实训云平台繁忙繁忙等级83"
end
@current_task = myshixun.current_task(myshixun.games)
uid_logger("## shixun exec: myshixun id is #{myshixun.id}")
rescue Exception => e
uid_logger_error(e.message)
tip_exception("实训云平台繁忙繁忙等级81")
raise ActiveRecord::Rollback
end
end
end
end
# def shixun_exec
# if is_shixun_opening?
# tip_show_exception(-3, "#{@shixun.opening_time.strftime('%Y-%m-%d %H:%M:%S')}")
@ -521,10 +617,6 @@ class ShixunsController < ApplicationController
# current_myshixun = @shixun.current_myshixun(current_user.id)
#
# min_challenges = @shixun.challenges.pluck(:id , :st)
#
# Rails.logger.info("11111111112#{current_myshixun.try(:id)}")
# Rails.logger.info("111111111102#{params[:reset] != 1}")
#
# # 因为读写分离有延迟所以如果是重置来的请求可以先跳过重置过来的params[:reset]为1
# if current_myshixun && params[:reset] != "1"
# games = current_myshixun.games
@ -541,7 +633,6 @@ class ShixunsController < ApplicationController
# current_myshixun.update_column(:repo_name, repo_name)
# end
#
#
# # 如果存在实训,则直接进入实训
# # 如果实训允许跳关传参params[:challenge_id]跳入具体的关卡
# @current_task =
@ -570,22 +661,20 @@ class ShixunsController < ApplicationController
# commit_id = commit["id"]
# end
#
# begin
# ActiveRecord::Base.transaction do
# begin
# cloud_bridge = edu_setting('cloud_bridge')
# myshixun_identifier = generate_identifier Myshixun, 10
# myshixun = @shixun.myshixuns.create!(user_id: current_user.id, identifier: myshixun_identifier,
# myshixun_params = {user_id: current_user.id, identifier: myshixun_identifier,
# modify_time: @shixun.modify_time, reset_time: @shixun.reset_time,
# onclick_time: Time.now, commit_id: commit_id)
# uid_logger("myshixun_id is #{myshixun.id}")
#
#
# onclick_time: Time.now, commit_id: commit_id}
# @myshixun = @shixun.myshixuns.create!(myshixun_params)
# # 其它创建关卡等操作
# challenges = @shixun.challenges
# # 之所以增加user_id是为了方便统计查询性能
# game_attrs = %i[challenge_id myshixun_id status user_id open_time identifier modify_time created_at updated_at]
# Game.bulk_insert(*game_attrs) do |worker|
# base_attr = { myshixun_id: myshixun.id, user_id: myshixun.user_id }
# base_attr = {myshixun_id: @myshixun.id, user_id: @myshixun.user_id}
# challenges.each_with_index do |challenge, index|
# status = (index == 0 ? 0 : 3)
# game_identifier = generate_identifier(Game, 12)
@ -593,136 +682,38 @@ class ShixunsController < ApplicationController
# identifier: game_identifier, modify_time: challenge.modify_time))
# end
# end
#
# @current_task = @myshixun.current_task(@myshixun.games)
# rescue Exception => e
# logger.error("------ActiveRecord::RecordInvalid: #{e.message}")
# raise("ActiveRecord::RecordInvalid")
# end
# end
# # 如果实训是纯选择题则不需要去fork仓库以及中间层的相关操作了
# ActiveRecord::Base.transaction do
# unless is_choice_type
# # fork仓库
# project_fork(myshixun, @repo_path, current_user.login)
#
# cloud_bridge = edu_setting('cloud_bridge')
# project_fork(@myshixun, @repo_path, current_user.login)
# rep_url = Base64.urlsafe_encode64(repo_ip_url @repo_path)
# uid_logger("start openGameInstance")
# uri = "#{cloud_bridge}/bridge/game/openGameInstance"
# logger.info("end openGameInstance")
# params = {tpiID: "#{myshixun.id}", tpmGitURL:rep_url, tpiRepoName: myshixun.repo_name.split("/").last}
# params = {tpiID: "#{@myshixun.id}", tpmGitURL: rep_url, tpiRepoName: @myshixun.repo_name.split("/").last}
# uid_logger("openGameInstance params is #{params}")
# interface_post uri, params, 83, "实训云平台繁忙繁忙等级83"
# end
#
# @current_task = myshixun.current_task(myshixun.games)
# uid_logger("## shixun exec: myshixun id is #{myshixun.id}")
# end
# rescue Exception => e
# uid_logger_error(e.message)
# tip_exception("实训云平台繁忙繁忙等级81")
# raise ActiveRecord::Rollback
# logger.info("shixun_exec error: #{e.message}")
# if e.message != "ActiveRecord::RecordInvalid"
# logger.error("##########project_fork error #{e.message}")
# @myshixun.destroy!
# end
# raise "实训云平台繁忙繁忙等级81"
# end
# end
# end
def shixun_exec
if is_shixun_opening?
tip_show_exception(-3, "#{@shixun.opening_time.strftime('%Y-%m-%d %H:%M:%S')}")
end
current_myshixun = @shixun.current_myshixun(current_user.id)
min_challenges = @shixun.challenges.pluck(:id , :st)
# 因为读写分离有延迟所以如果是重置来的请求可以先跳过重置过来的params[:reset]为1
if current_myshixun && params[:reset] != "1"
games = current_myshixun.games
# 如果TPM和TPI的管卡数不相等或者关卡顺序错了说明实训被极大的改动需要重置,实训发布前打过的实训都需要重置
if is_shixun_reset?(games, min_challenges, current_myshixun)
# 这里页面弹框要收到 当前用户myshixun的identifier.
tip_show_exception("/myshixuns/#{current_myshixun.try(:identifier)}/reset_my_game")
end
if current_myshixun.repo_name.nil?
g = Gitlab.client
repo_name = g.project(current_myshixun.gpid).try(:path_with_namespace)
current_myshixun.update_column(:repo_name, repo_name)
end
# 如果存在实训,则直接进入实训
# 如果实训允许跳关传参params[:challenge_id]跳入具体的关卡
@current_task =
if params[:challenge_id]
game = games.where(challenge_id: params[:challenge_id]).take
if @shixun.task_pass || game.status != 3
game
else
current_myshixun.current_task(games)
end
else
current_myshixun.current_task(games)
end
else
# 如果未创建关卡一定不能开启实训否则TPI没法找到当前的关卡
if @shixun.challenges_count == 0
tip_exception("开启实战前请先创建实训关卡")
end
# 判断实训是否全为选择题
is_choice_type = (min_challenges.size == min_challenges.select{|challenge| challenge.last == 1}.count)
if !is_choice_type
commit = GitService.commits(repo_path: @repo_path).try(:first)
uid_logger("First comit########{commit}")
tip_exception("开启实战前请先在版本库中提交代码") if commit.blank?
commit_id = commit["id"]
end
begin
ActiveRecord::Base.transaction do
begin
myshixun_identifier = generate_identifier Myshixun, 10
myshixun_params = {user_id: current_user.id, identifier: myshixun_identifier,
modify_time: @shixun.modify_time, reset_time: @shixun.reset_time,
onclick_time: Time.now, commit_id: commit_id}
@myshixun = @shixun.myshixuns.create!(myshixun_params)
# 其它创建关卡等操作
challenges = @shixun.challenges
# 之所以增加user_id是为了方便统计查询性能
game_attrs = %i[challenge_id myshixun_id status user_id open_time identifier modify_time created_at updated_at]
Game.bulk_insert(*game_attrs) do |worker|
base_attr = {myshixun_id: @myshixun.id, user_id: @myshixun.user_id}
challenges.each_with_index do |challenge, index|
status = (index == 0 ? 0 : 3)
game_identifier = generate_identifier(Game, 12)
worker.add(base_attr.merge(challenge_id: challenge.id, status: status, open_time: Time.now,
identifier: game_identifier, modify_time: challenge.modify_time))
end
end
@current_task = @myshixun.current_task(@myshixun.games)
rescue Exception => e
logger.error("------ActiveRecord::RecordInvalid: #{e.message}")
raise("ActiveRecord::RecordInvalid")
end
end
# 如果实训是纯选择题则不需要去fork仓库以及中间层的相关操作了
ActiveRecord::Base.transaction do
unless is_choice_type
# fork仓库
cloud_bridge = edu_setting('cloud_bridge')
project_fork(@myshixun, @repo_path, current_user.login)
rep_url = Base64.urlsafe_encode64(repo_ip_url @repo_path)
uid_logger("start openGameInstance")
uri = "#{cloud_bridge}/bridge/game/openGameInstance"
logger.info("end openGameInstance")
params = {tpiID: "#{@myshixun.id}", tpmGitURL: rep_url, tpiRepoName: @myshixun.repo_name.split("/").last}
uid_logger("openGameInstance params is #{params}")
interface_post uri, params, 83, "实训云平台繁忙繁忙等级83"
end
end
rescue Exception => e
logger.info("shixun_exec error: #{e.message}")
if e.message != "ActiveRecord::RecordInvalid"
logger.error("##########project_fork error #{e.message}")
@myshixun.destroy!
end
raise "实训云平台繁忙繁忙等级81"
end
end
end
# gameID 及实训ID
# status: 0 , 1 申请过, 2实训关卡路径未填 3 实训标签未填, 4 实训未创建关卡
def publish

@ -0,0 +1,40 @@
class Users::BanksController < Users::BaseController
before_action :params_filter
def index
order = params[:order] || "updated_at"
sort = params[:sort] || "desc"
@banks = @object_type.classify.constantize.where(@object_filter)
@course_lists = CourseList.where(id: @banks.pluck(:course_list_id))
@banks = @banks.where(course_list_id: params[:tag_id]) unless params[:tag_id].blank?
@banks = @banks.order("#{order} #{sort}")
@banks_count = @banks.size
end
private
def params_filter
type = ["normal", "group", "poll", "exercise", "gtask", "gtopic"]
tip_exception("object_type类型不正确") unless type.include?(params[:object_type])
# HomeworkBank 普通、分组作业题库ExerciseBank试卷、问卷题库GtaskBank毕设选题题库GtopicBank毕设任务题库
case params[:object_type]
when 'normal'
@object_type = "HomeworkBank"
@object_filter = "homework_type = 1" # 普通作业
when 'group'
@object_type = "HomeworkBank"
@object_filter = "homework_type = 3" # 分组作业
when 'poll'
@object_type = "ExerciseBank"
@object_filter = "container_type = 'Poll'" # 问卷
when 'exercise'
@object_type = "ExerciseBank"
@object_filter = "container_type = 'Exercise'" # 试卷
when 'gtask'
@object_type = "GtaskBank"
@object_filter = nil
when 'gtopic'
@object_type = "GtopicBank"
@object_filter = nil
end
end
end

@ -1,4 +1,5 @@
class Users::PrivateMessageDetailsController < Users::BaseController
before_action :require_login
before_action :private_user_resources!
after_action :update_message_status, only: [:show]

@ -1,4 +1,5 @@
class Users::PrivateMessagesController < Users::BaseController
before_action :require_login
before_action :private_user_resources!
after_action :update_onclick_time!, only: [:index]

@ -0,0 +1,2 @@
module BlobHelper
end

@ -0,0 +1,2 @@
module ProjectsHelper
end

@ -0,0 +1,2 @@
module Users::BanksHelper
end

@ -34,6 +34,10 @@ class Library < ApplicationRecord
end
end
def increment_visited_count!(num = 1)
increment_column!(:visited_count, num)
end
def generate_uuid
uuid = Util::UUID.time_uuid
while Library.exists?(uuid: uuid)
@ -42,4 +46,10 @@ class Library < ApplicationRecord
self.uuid = uuid
end
private
def increment_column!(column, num = 1)
self.class.connection.execute("update #{self.class.table_name} set #{column} = COALESCE(#{column}, 0) + #{num} where id = #{id}")
end
end

@ -1,20 +1,20 @@
json.top do
json.shixun_url "/shixuns"
json.shixun_paths_url "#{@old_domain}/paths"
json.course_url "#{@old_domain}/courses"
json.shixun_paths_url "/paths"
json.course_url "/courses"
json.competitions_url "#{@old_domain}/competitions"
json.topic_url "#{@old_domain}/forums"
json.new_course_url "#{@old_domain}/courses/new"
json.new_shixun_url "#{@old_domain}/shixuns/new"
json.new_shixun_path_url "#{@old_domain}/paths/new"
json.topic_url "/forums"
json.new_course_url "/courses/new"
json.new_shixun_url "/shixuns/new"
json.new_shixun_path_url "/paths/new"
json.new_project_url "#{@old_domain}/projects/new"
json.join_course_url "#{@old_domain}/courses/join_course_multi_role"
json.join_course_url "/courses/join_course_multi_role"
json.join_project_url "#{@old_domain}/applied_project/applied_project_info"
json.message_url "#{@old_domain}#{@user_url}/user_tidings"
json.message_url "#{@user_url}/user_tidings"
json.new_message @new_message
json.moop_cases_url "#{@old_domain}/moop_cases"
json.crowdsourcing_url "#{@old_domain}/crowdsourcing"
json.crowdsourcing_url "/crowdsourcing"
json.career_url do
json.array! @career.to_a do |c|

@ -1,73 +0,0 @@
class ModifyKeContentsForMarkdown < ActiveRecord::Migration[5.2]
include ActionView::Helpers::SanitizeHelper
def change
def ke_transform_to_md content
sanitize(content, tags: %w(img a span), attributes: %w(src href target style))
.gsub(/^(\n)/, "").gsub(/(\n)+/, "<br />").gsub(/$(\n)/, "")
.gsub(/(\n)+/, "<br />").gsub("\t", "&nbsp;&nbsp;&nbsp;&nbsp;")
end
# 课程讨论区
MessageDetail.find_each do |m|
content = ke_transform_to_md m.content
puts("content:#{content}")
m.update_column(:content, content)
end
# 试卷的描述
Exercise.find_each do |e|
exercise_description = ke_transform_to_md e.exercise_description
puts("#exercise_description: #{exercise_description}")
e.update_column(:exercise_description, exercise_description)
end
# 试卷的标题
ExerciseQuestion.find_each do |eq|
question_title = ke_transform_to_md eq.question_title
puts("question_title:#{question_title}")
eq.update_column(:question_title, question_title)
end
# 试卷的答案
ExerciseStandardAnswer.find_each do |esa|
answer_text = ke_transform_to_md esa.answer_text
puts("answer_text: #{answer_text}")
esa.update_column(:answer_text, answer_text)
end
# 试卷题库
ExerciseBankQuestion.find_each do |ebq|
question_title = ke_transform_to_md ebq.question_title
puts("#question_title: #{question_title}")
end
# 问卷的标题
PollQuestion.find_each do |pq|
question_title = ke_transform_to_md pq.question_title
puts("question_title:#{question_title}")
pq.update_column(:question_title, question_title)
end
StudentWork
HomeworkCommon
JournalsForMessage
GraduationTask
GraduationTopic
GraduationWork
GtaskBank
GtopicBank
HomeworkBank
QuestionBank
ExerciseBankStandardAnswer
Memo
end
end

@ -0,0 +1,51 @@
class ModifyKeContentsForMarkdown < ActiveRecord::Migration[5.2]
include ActionView::Helpers::SanitizeHelper
def change
# def ke_transform_to_md content
# return content if content.blank?
# s_contents = sanitize(content, tags: %w(img a table td tr tbody pre), attributes: %w(src href target style))
# s_contents.gsub(">\n<", "><").gsub(/^\n/, "").gsub(" ", "").gsub(/(\n)+/, "<br />")
# .gsub("\t", "").gsub("\n", "").gsub(" ", "&nbsp;&nbsp;&nbsp;&nbsp;").gsub(/(<br\s?\/?>)+/, "<br />")
# s_contents.gsub("\n", "<br />").gsub(/(<br\s?\/?>)+/, "<br />")
# end
#
# # 课程讨论区
# MessageDetail.find_each do |m|
# content = ke_transform_to_md m.content
# m.update_column(:content, content)
# end
#试卷的标题
# ExerciseQuestion.where(:exercise_id => 1892).find_each do |eq|
# puts("#eq.question_title: #{eq.question_title}")
# question_title = ke_transform_to_md eq.question_title
# puts("#question_title: #{question_title}")
# eq.update_column(:question_title, question_title)
# end
# # 试卷的答案
# ExerciseStandardAnswer.find_each do |esa|
# answer_text = ke_transform_to_md esa.answer_text
# esa.update_column(:answer_text, answer_text)
# end
#
# 试卷题库的问题标题
# ExerciseBankQuestion.find_each do |ebq|
# question_title = ke_transform_to_md ebq.question_title
# ebq.update_column(:question_title, question_title)
# end
#
# # 试卷答案
# ExerciseBankStandardAnswer.find_each do |ebsa|
# answer_text = ke_transform_to_md ebsa.answer_text
# ebsa.update_column(:answer_text, answer_text)
# end
# # 问卷的标题
# PollQuestion.find_each do |pq|
# question_title = ke_transform_to_md pq.question_title
# pq.update_column(:question_title, question_title)
# end
end
end

@ -1,7 +1,7 @@
class AddExecTimeToEvaluateRecords < ActiveRecord::Migration[5.2]
def change
remove_columns :evaluate_records, :exec_time if User.first.attributes.include?("exec_time")
add_column :evaluate_records, :exec_time, :integer
# remove_columns :evaluate_records, :exec_time if EvaluateRecord.first.attributes.include?("exec_time")
#
# add_column :evaluate_records, :exec_time, :integer
end
end

@ -0,0 +1,64 @@
class SecondMofidyKeContentsForMd < ActiveRecord::Migration[5.2]
include ActionView::Helpers::SanitizeHelper
def change
def ke_transform_to_md content
return content if content.blank?
s_contents = sanitize(content, tags: %w(img a span table td tr tbody pre), attributes: %w(src href target style))
s_contents.gsub(">\n<", "><").gsub(/^\n/, "").gsub(" ", "&nbsp;").gsub(/(\n)+/, "<br />")
.gsub("\t", "&nbsp;&nbsp;&nbsp;&nbsp;").gsub("\n", "").gsub(" ", "&nbsp;").gsub(/(<br\s?\/?>)+/, "<br />")
end
# 作业
HomeworkCommon.find_each do |hc|
description = ke_transform_to_md hc.description
reference_answer = ke_transform_to_md hc.reference_answer
explanation = ke_transform_to_md hc.explanation
hc.update_attributes(description: description, reference_answer: reference_answer, explanation: explanation)
end
# 作业题库
HomeworkBank.find_each do |hb|
description = ke_transform_to_md hb.description
reference_answer = ke_transform_to_md hb.reference_answer
hb.update_attributes(description: description, reference_answer: reference_answer)
end
# 毕业任务
GraduationTask.find_each do |gt|
description = ke_transform_to_md gt.description
gt.update_column(:description, description)
end
# 毕设选题
GraduationTopic.find_each do |gt|
description = ke_transform_to_md gt.description
gt.update_column(:description, description)
end
# 毕设作品
GraduationWork.find_each do |gw|
description = ke_transform_to_md gw.description
gw.update_column(:description, description)
end
# 毕设任务题库
GtaskBank.find_each do |gb|
description = ke_transform_to_md gb.description
gb.update_column(:description, description)
end
# 毕设选题题库
GtopicBank.find_each do |gb|
description = ke_transform_to_md gb.description
gb.update_column(:description, description)
end
# 交流问答
Memo.find_each do |m|
content = ke_transform_to_md m.content
m.update_column(:content, content)
end
end
end

@ -0,0 +1,17 @@
class ThirdModifyKeForStudentWork < ActiveRecord::Migration[5.2]
include ActionView::Helpers::SanitizeHelper
def change
def ke_transform_to_md content
return content if content.blank?
s_contents = sanitize(content, tags: %w(img a span table td tr tbody pre), attributes: %w(src href target style))
s_contents.gsub(">\n<", "><").gsub(/^\n/, "").gsub(" ", "&nbsp;").gsub(/(\n)+/, "<br />")
.gsub("\t", "&nbsp;&nbsp;&nbsp;&nbsp;").gsub("\n", "").gsub(" ", "&nbsp;").gsub(/(<br\s?\/?>)+/, "<br />")
end
# 学生的作品 过滤掉一些描述的ke图片的作品
StudentWork.where("description is not null and LENGTH(description) < 1000000").find_each do |sw|
description = ke_transform_to_md sw.description
sw.update_column(:description, description)
end
end
end

@ -0,0 +1,27 @@
namespace :myshixun do
task check_reponame: :environment do
# 如果是选择题的则跳过否则reponame 为空的则为异常
myshixuns = Myshixun.where("repo_name is null and created_at > '2019-07-20 00:00:00'")
myshixuns.each do |myshixun|
shixun = myshixun.shixun
challenges = shixun.challenges
# 不是纯选择题的情况
if challenges.select{|challenge| challenge.st.to_i == 0}.size > 0
puts myshixun.games.first.try(:identifier)
end
end
end
task choose_repo: :environment do
myshixuns = Myshixun.where("repo_name is null and created_at > '2019-07-20 00:00:00'")
myshixuns.each do |myshixun|
shixun = myshixun.shixun
challenges = shixun.challenges
# 如果是选择题则把myshixuns表的repo_name改成-1
if challenges.select{|challenge| challenge.st.to_i == 1}.size == challenges.count
myshixun.update_attributes(:repo_name => "-1")
end
end
end
end

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="RUBY_MODULE" version="4">
<component name="ModuleRunConfigurationManager">
<shared />
</component>
<component name="NewModuleRootManager">
<content url="file://$USER_HOME$/eduplus2/public/admin/Coco" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with NO BOM" />
</project>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="ruby-2.3.7-p456" project-jdk-type="RUBY_SDK" />
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/Coco.iml" filepath="$PROJECT_DIR$/.idea/Coco.iml" />
</modules>
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>

@ -0,0 +1,492 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="bbfdfebc-59ed-4b64-8f87-8e0b450714d6" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/404.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/500.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/advanced-forms.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/alerts.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/css/style-responsive.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/css/style.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/apple-touch-icon-114x114.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/apple-touch-icon-120x120.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/apple-touch-icon-144x144.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/apple-touch-icon-152x152.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/apple-touch-icon-57x57.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/apple-touch-icon-72x72.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/apple-touch-icon-76x76.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/apple-touch-icon.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/favicon.ico" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/gmap/m1.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/gmap/m2.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/gmap/m3.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/inv-logo.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/login-logo.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/img/logo.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/apps/calculator.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/apps/notes.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/apps/todo.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/init.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/advanced-forms.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/calendar.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/datatables.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/form-validation.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/form-wizard.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/forms.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/google-maps.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/index.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/index2.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/lockscreen.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/morris-charts.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/nested-list.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/new-message.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/notifications.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/other-charts.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/rickshaw-charts.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/sparkline-charts.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/tabs-accordions.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/js/pages/vector-maps.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/animate-css/animate.min.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-bootbox/bootbox.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-calendar/css/bic_calendar.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-calendar/js/bic_calendar.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-datepicker/css/datepicker.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-datepicker/js/bootstrap-datepicker.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-fileinput/bootstrap.file-input.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-inputmask/inputmask.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-select/bootstrap-select.min.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-select/bootstrap-select.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-select2/select2-spinner.gif" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-select2/select2.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-select2/select2.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-select2/select2.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-typeahead/bootstrap3-typeahead.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-validator/css/bootstrapValidator.min.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-validator/js/bootstrapValidator.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-xeditable/css/bootstrap-editable.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-xeditable/demo/demo-mock.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-xeditable/demo/jquery.mockjax.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-xeditable/img/clear.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-xeditable/img/loading.gif" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap-xeditable/js/bootstrap-editable.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap/css/bootstrap.min.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap/fonts/glyphicons-halflings-regular.eot" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap/fonts/glyphicons-halflings-regular.svg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap/fonts/glyphicons-halflings-regular.ttf" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap/fonts/glyphicons-halflings-regular.woff" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/bootstrap/js/bootstrap.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/ckeditor/adapters/jquery.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/ckeditor/ckeditor.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/d3/d3.v3.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/dropzone/css/dropzone.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/dropzone/dropzone.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/dropzone/images/spritemap.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/dropzone/images/spritemap@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/fastclick/fastclick.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/font-awesome/css/font-awesome.min.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/font-awesome/fonts/FontAwesome.otf" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/font-awesome/fonts/fontawesome-webfont.eot" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/font-awesome/fonts/fontawesome-webfont.svg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/font-awesome/fonts/fontawesome-webfont.ttf" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/font-awesome/fonts/fontawesome-webfont.woff" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/fontello/css/fontello.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/fullcalendar/fullcalendar.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/fullcalendar/fullcalendar.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/ios7-switch/ios7-switch.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/ios7-switch/ios7.switch.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-animate-numbers/jquery.animateNumbers.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-blockui/jquery.blockUI.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-clndr/moment-2.5.1.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-clock/clock.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-clock/clock.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-datatables/css/dataTables.bootstrap.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-datatables/extensions/TableTools/css/dataTables.tableTools.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-datatables/extensions/TableTools/images/background.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-datatables/extensions/TableTools/images/collection.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-datatables/extensions/TableTools/images/collection_hover.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-datatables/extensions/TableTools/js/dataTables.tableTools.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-datatables/images/sort_asc.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-datatables/images/sort_asc_disabled.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-datatables/images/sort_both.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-datatables/images/sort_desc.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-datatables/images/sort_desc_disabled.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-datatables/js/dataTables.bootstrap.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-datatables/js/jquery.dataTables.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-detectmobile/detect.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-easypiechart/jquery.easy-pie-chart.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-easypiechart/jquery.easypiechart.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-gmap3/gmap3.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/icheck.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/all.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/_all.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/aero.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/aero@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/blue.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/blue@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/flat.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/flat@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/green.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/green@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/grey.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/grey@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/orange.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/orange@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/pink.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/pink@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/purple.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/purple@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/red.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/red@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/yellow.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/flat/yellow@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/futurico/futurico.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/futurico/futurico.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/futurico/futurico@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/line/_all.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/line/line.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/line/line@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/_all.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/aero.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/aero@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/blue.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/blue@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/green.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/green@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/grey.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/grey@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/minimal.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/minimal@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/orange.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/orange@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/pink.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/pink@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/purple.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/purple@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/red.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/red@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/yellow.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/minimal/yellow@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/polaris/polaris.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/polaris/polaris.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/polaris/polaris@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/_all.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/aero.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/aero@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/blue.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/blue@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/green.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/green@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/grey.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/grey@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/orange.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/orange@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/pink.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/pink@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/purple.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/purple@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/red.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/red@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/square.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/square@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/yellow.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-icheck/skins/square/yellow@2x.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-jvectormap/css/jquery-jvectormap-1.2.2.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-jvectormap/js/jquery-jvectormap-1.2.2.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-jvectormap/js/jquery-jvectormap-europe-mill-en.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-jvectormap/js/jquery-jvectormap-uk-mill-en.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-jvectormap/js/jquery-jvectormap-us-aea-en.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-jvectormap/js/jquery-jvectormap-us-il-chicago-mill-en.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-jvectormap/js/jquery-jvectormap-world-mill-en.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-knob/jquery.knob.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-knob/jquery.knob.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-nestable/jquery.nestable.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-nestable/jquery.nestable.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-notifyjs/notify.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-notifyjs/styles/metro/notify-metro.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-notifyjs/styles/metro/notify-metro.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-slimscroll/jquery.slimscroll.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-sparkline/jquery-sparkline.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-ui-touch/jquery.ui.touch-punch.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-weather/artill_clean_icons-webfont.eot" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-weather/artill_clean_icons-webfont.svg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-weather/artill_clean_icons-webfont.ttf" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-weather/artill_clean_icons-webfont.woff" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-weather/jquery.simpleWeather-2.6.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-weather/simpleweather.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery-wizard/jquery.easyWizard.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jquery/jquery-1.11.1.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jqueryui/jquery-ui-1.10.4.custom.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jqueryui/ui-lightness/images/animated-overlay.gif" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jqueryui/ui-lightness/images/ui-icons_222222_256x240.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jqueryui/ui-lightness/images/ui-icons_ffffff_256x240.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/jqueryui/ui-lightness/jquery-ui-1.10.4.custom.min.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/magnific-popup/jquery.magnific-popup.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/magnific-popup/magnific-popup.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/morrischart/morris.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/morrischart/morris.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/nifty-modal/css/component.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/nifty-modal/js/classie.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/nifty-modal/js/modalEffects.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/pace/pace.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/pace/pace.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/prettify/github.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/prettify/prettify.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/raphael/raphael-min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/rickshaw/rickshaw.min.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/rickshaw/rickshaw.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/sortable/sortable-theme-bootstrap.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/sortable/sortable.min.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/summernote/summernote.css" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/assets/libs/summernote/summernote.js" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/blank.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/buttons.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/calendar.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/datatables.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/form-uploads.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/form-validation.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/form-wizard.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/forms.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/gallery.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/google-maps.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/grid.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/icons.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/big/img001.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/big/img002.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/big/img003.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/big/img004.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/big/img005.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/big/img006.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/big/img007.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/big/img008.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/big/img009.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/big/img010.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/small/img001_small.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/small/img002_small.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/small/img003_small.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/small/img004_small.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/small/img005_small.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/small/img006_small.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/small/img007_small.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/small/img008_small.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/small/img009_small.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/small/img010_small.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/stock/1epgUO0.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/users/chat/1.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/users/chat/19.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/users/chat/2.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/users/chat/3.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/users/chat/4.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/users/chat/5.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/users/chat/6.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/users/default-user.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/users/user-100.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/users/user-256.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/users/user-35.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/images/weather/weather-bg.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/inbox.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/index.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/index2.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/invoice.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/lockscreen.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/login.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/maintenance.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/modals.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/morris-charts.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/nested-list.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/new-message.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/notifications.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/other-charts.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/portlets.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/profile.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/progress-bars.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/read-message.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/register.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/rickshaw-charts.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/screenshot.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/sparkline-charts.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/tables.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/tabs-accordions.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/typography.html" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/vector-maps.html" beforeDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileEditorManager">
<leaf>
<file pinned="false" current-in-tab="false">
<entry file="file://$USER_HOME$/eduplus2/public/admin/Coco/404.html">
<provider selected="true" editor-type-id="text-editor" />
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$USER_HOME$/eduplus2/public/admin/Coco/login.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="375">
<caret line="20" column="26" selection-start-line="20" selection-start-column="20" selection-end-line="20" selection-end-column="26" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$USER_HOME$/eduplus2/public/admin/Coco/sparkline-charts.html">
<provider selected="true" editor-type-id="text-editor" />
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$USER_HOME$/eduplus2/public/admin/Coco/tables.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-931" />
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$USER_HOME$/eduplus2/public/admin/Coco/other-charts.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1318">
<caret line="29" column="38" selection-start-line="29" selection-start-column="38" selection-end-line="29" selection-end-column="38" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$USER_HOME$/eduplus2/public/admin/Coco/invoice.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1024" />
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$USER_HOME$/eduplus2/public/admin/Coco/lockscreen.html">
<provider selected="true" editor-type-id="text-editor" />
</entry>
</file>
</leaf>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../.." />
</component>
<component name="JsFlowSettings">
<service-enabled>true</service-enabled>
<exe-path />
<other-services-enabled>true</other-services-enabled>
<auto-save>true</auto-save>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="190" />
<option name="y" value="103" />
<option name="width" value="1440" />
<option name="height" value="810" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectView">
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="ProjectPane" />
<pane id="Scope" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
<property name="settings.editor.selected.configurable" value="Settings.JavaScript" />
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="bbfdfebc-59ed-4b64-8f87-8e0b450714d6" name="Default Changelist" comment="" />
<created>1564991764284</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1564991764284</updated>
<workItem from="1564991765742" duration="1047000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="1047000" />
</component>
<component name="ToolWindowManager">
<frame x="0" y="23" width="1440" height="810" extended-state="6" />
<layout>
<window_info id="Favorites" side_tool="true" />
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.14306152" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info anchor="bottom" id="Docker" show_stripe_button="false" />
<window_info anchor="bottom" id="Database Changes" />
<window_info anchor="bottom" id="Version Control" />
<window_info active="true" anchor="bottom" id="Terminal" visible="true" weight="0.3286908" />
<window_info anchor="bottom" id="Event Log" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
<window_info anchor="bottom" id="Run" order="2" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="right" id="Database" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="editorHistoryManager">
<entry file="file://$USER_HOME$/eduplus2/public/admin/Coco/404.html">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$USER_HOME$/eduplus2/public/admin/Coco/invoice.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1024" />
</provider>
</entry>
<entry file="file://$USER_HOME$/eduplus2/public/admin/Coco/lockscreen.html">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$USER_HOME$/eduplus2/public/admin/Coco/login.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="375">
<caret line="20" column="26" selection-start-line="20" selection-start-column="20" selection-end-line="20" selection-end-column="26" />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/eduplus2/public/admin/Coco/sparkline-charts.html">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$USER_HOME$/eduplus2/public/admin/Coco/tables.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-931" />
</provider>
</entry>
<entry file="file://$USER_HOME$/eduplus2/public/admin/Coco/other-charts.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1318">
<caret line="29" column="38" selection-start-line="29" selection-start-column="38" selection-end-line="29" selection-end-column="38" />
</state>
</provider>
</entry>
</component>
</project>

@ -0,0 +1,156 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>404 Not Found | Coco - Responsive Bootstrap Admin Template</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="description" content="">
<meta name="keywords" content="coco bootstrap template, coco admin, bootstrap,admin template, bootstrap admin,">
<meta name="author" content="Huban Creative">
<!-- Base Css Files -->
<link href="assets/libs/jqueryui/ui-lightness/jquery-ui-1.10.4.custom.min.css" rel="stylesheet" />
<link href="assets/libs/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<link href="assets/libs/font-awesome/css/font-awesome.min.css" rel="stylesheet" />
<link href="assets/libs/fontello/css/fontello.css" rel="stylesheet" />
<link href="assets/libs/animate-css/animate.min.css" rel="stylesheet" />
<link href="assets/libs/nifty-modal/css/component.css" rel="stylesheet" />
<link href="assets/libs/magnific-popup/magnific-popup.css" rel="stylesheet" />
<link href="assets/libs/ios7-switch/ios7-switch.css" rel="stylesheet" />
<link href="assets/libs/pace/pace.css" rel="stylesheet" />
<link href="assets/libs/sortable/sortable-theme-bootstrap.css" rel="stylesheet" />
<link href="assets/libs/bootstrap-datepicker/css/datepicker.css" rel="stylesheet" />
<link href="assets/libs/jquery-icheck/skins/all.css" rel="stylesheet" />
<!-- Code Highlighter for Demo -->
<link href="assets/libs/prettify/github.css" rel="stylesheet" />
<!-- Extra CSS Libraries Start -->
<link href="assets/css/style.css" rel="stylesheet" type="text/css" />
<!-- Extra CSS Libraries End -->
<link href="assets/css/style-responsive.css" rel="stylesheet" />
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<link rel="shortcut icon" href="assets/img/favicon.ico">
<link rel="apple-touch-icon" href="assets/img/apple-touch-icon.png" />
<link rel="apple-touch-icon" sizes="57x57" href="assets/img/apple-touch-icon-57x57.png" />
<link rel="apple-touch-icon" sizes="72x72" href="assets/img/apple-touch-icon-72x72.png" />
<link rel="apple-touch-icon" sizes="76x76" href="assets/img/apple-touch-icon-76x76.png" />
<link rel="apple-touch-icon" sizes="114x114" href="assets/img/apple-touch-icon-114x114.png" />
<link rel="apple-touch-icon" sizes="120x120" href="assets/img/apple-touch-icon-120x120.png" />
<link rel="apple-touch-icon" sizes="144x144" href="assets/img/apple-touch-icon-144x144.png" />
<link rel="apple-touch-icon" sizes="152x152" href="assets/img/apple-touch-icon-152x152.png" />
</head>
<body class="fixed-left full-content">
<!-- Modal Start -->
<!-- Modal Task Progress -->
<div class="md-modal md-3d-flip-vertical" id="task-progress">
<div class="md-content">
<h3><strong>Task Progress</strong> Information</h3>
<div>
<p>CLEANING BUGS</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%">
<span class="sr-only">80&#37; Complete</span>
</div>
</div>
<p>POSTING SOME STUFF</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 65%">
<span class="sr-only">65&#37; Complete</span>
</div>
</div>
<p>BACKUP DATA FROM SERVER</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 95%">
<span class="sr-only">95&#37; Complete</span>
</div>
</div>
<p>RE-DESIGNING WEB APPLICATION</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-primary" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
<span class="sr-only">100&#37; Complete</span>
</div>
</div>
<p class="text-center">
<button class="btn btn-danger btn-sm md-close">Close</button>
</p>
</div>
</div>
</div>
<!-- Modal Logout -->
<div class="md-modal md-just-me" id="logout-modal">
<div class="md-content">
<h3><strong>Logout</strong> Confirmation</h3>
<div>
<p class="text-center">Are you sure want to logout from this awesome system?</p>
<p class="text-center">
<button class="btn btn-danger md-close">Nope!</button>
<a href="login.html" class="btn btn-success md-close">Yeah, I'm sure</a>
</p>
</div>
</div>
</div> <!-- Modal End -->
<!-- Begin page -->
<div class="container">
<div class="full-content-center animated flipInX">
<h1>404</h1>
<h2>The page you are looking for is definitely not this!</h2><br>
<p class="text-lightblue-2">You better try our awesome search:</p>
<div class="row">
<div class="icon-added input-group col-sm-8 col-sm-offset-2">
<i class="fa fa-search"></i>
<input type="text" class="form-control">
<span class="input-group-btn">
<button class="btn btn-success" type="button">Search</button>
</span>
</div>
</div><br>
<a class="btn btn-primary btn-sm" href="index.html"><i class="fa fa-angle-left"></i> Back to Dashboard</a>
</div>
</div>
<!-- End of page -->
<!-- the overlay modal element -->
<div class="md-overlay"></div>
<!-- End of eoverlay modal -->
<script>
var resizefunc = [];
</script>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="assets/libs/jquery/jquery-1.11.1.min.js"></script>
<script src="assets/libs/bootstrap/js/bootstrap.min.js"></script>
<script src="assets/libs/jqueryui/jquery-ui-1.10.4.custom.min.js"></script>
<script src="assets/libs/jquery-ui-touch/jquery.ui.touch-punch.min.js"></script>
<script src="assets/libs/jquery-detectmobile/detect.js"></script>
<script src="assets/libs/jquery-animate-numbers/jquery.animateNumbers.js"></script>
<script src="assets/libs/ios7-switch/ios7.switch.js"></script>
<script src="assets/libs/fastclick/fastclick.js"></script>
<script src="assets/libs/jquery-blockui/jquery.blockUI.js"></script>
<script src="assets/libs/bootstrap-bootbox/bootbox.min.js"></script>
<script src="assets/libs/jquery-slimscroll/jquery.slimscroll.js"></script>
<script src="assets/libs/jquery-sparkline/jquery-sparkline.js"></script>
<script src="assets/libs/nifty-modal/js/classie.js"></script>
<script src="assets/libs/nifty-modal/js/modalEffects.js"></script>
<script src="assets/libs/sortable/sortable.min.js"></script>
<script src="assets/libs/bootstrap-fileinput/bootstrap.file-input.js"></script>
<script src="assets/libs/bootstrap-select/bootstrap-select.min.js"></script>
<script src="assets/libs/bootstrap-select2/select2.min.js"></script>
<script src="assets/libs/magnific-popup/jquery.magnific-popup.min.js"></script>
<script src="assets/libs/pace/pace.min.js"></script>
<script src="assets/libs/bootstrap-datepicker/js/bootstrap-datepicker.js"></script>
<script src="assets/libs/jquery-icheck/icheck.min.js"></script>
<!-- Demo Specific JS Libraries -->
<script src="assets/libs/prettify/prettify.js"></script>
<script src="assets/js/init.js"></script>
</body>
</html>

@ -0,0 +1,156 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>500 Internal Server Error | Coco - Responsive Bootstrap Admin Template</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="description" content="">
<meta name="keywords" content="coco bootstrap template, coco admin, bootstrap,admin template, bootstrap admin,">
<meta name="author" content="Huban Creative">
<!-- Base Css Files -->
<link href="assets/libs/jqueryui/ui-lightness/jquery-ui-1.10.4.custom.min.css" rel="stylesheet" />
<link href="assets/libs/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<link href="assets/libs/font-awesome/css/font-awesome.min.css" rel="stylesheet" />
<link href="assets/libs/fontello/css/fontello.css" rel="stylesheet" />
<link href="assets/libs/animate-css/animate.min.css" rel="stylesheet" />
<link href="assets/libs/nifty-modal/css/component.css" rel="stylesheet" />
<link href="assets/libs/magnific-popup/magnific-popup.css" rel="stylesheet" />
<link href="assets/libs/ios7-switch/ios7-switch.css" rel="stylesheet" />
<link href="assets/libs/pace/pace.css" rel="stylesheet" />
<link href="assets/libs/sortable/sortable-theme-bootstrap.css" rel="stylesheet" />
<link href="assets/libs/bootstrap-datepicker/css/datepicker.css" rel="stylesheet" />
<link href="assets/libs/jquery-icheck/skins/all.css" rel="stylesheet" />
<!-- Code Highlighter for Demo -->
<link href="assets/libs/prettify/github.css" rel="stylesheet" />
<!-- Extra CSS Libraries Start -->
<link href="assets/css/style.css" rel="stylesheet" type="text/css" />
<!-- Extra CSS Libraries End -->
<link href="assets/css/style-responsive.css" rel="stylesheet" />
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<link rel="shortcut icon" href="assets/img/favicon.ico">
<link rel="apple-touch-icon" href="assets/img/apple-touch-icon.png" />
<link rel="apple-touch-icon" sizes="57x57" href="assets/img/apple-touch-icon-57x57.png" />
<link rel="apple-touch-icon" sizes="72x72" href="assets/img/apple-touch-icon-72x72.png" />
<link rel="apple-touch-icon" sizes="76x76" href="assets/img/apple-touch-icon-76x76.png" />
<link rel="apple-touch-icon" sizes="114x114" href="assets/img/apple-touch-icon-114x114.png" />
<link rel="apple-touch-icon" sizes="120x120" href="assets/img/apple-touch-icon-120x120.png" />
<link rel="apple-touch-icon" sizes="144x144" href="assets/img/apple-touch-icon-144x144.png" />
<link rel="apple-touch-icon" sizes="152x152" href="assets/img/apple-touch-icon-152x152.png" />
</head>
<body class="fixed-left full-content internal-error">
<!-- Modal Start -->
<!-- Modal Task Progress -->
<div class="md-modal md-3d-flip-vertical" id="task-progress">
<div class="md-content">
<h3><strong>Task Progress</strong> Information</h3>
<div>
<p>CLEANING BUGS</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%">
<span class="sr-only">80&#37; Complete</span>
</div>
</div>
<p>POSTING SOME STUFF</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 65%">
<span class="sr-only">65&#37; Complete</span>
</div>
</div>
<p>BACKUP DATA FROM SERVER</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 95%">
<span class="sr-only">95&#37; Complete</span>
</div>
</div>
<p>RE-DESIGNING WEB APPLICATION</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-primary" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
<span class="sr-only">100&#37; Complete</span>
</div>
</div>
<p class="text-center">
<button class="btn btn-danger btn-sm md-close">Close</button>
</p>
</div>
</div>
</div>
<!-- Modal Logout -->
<div class="md-modal md-just-me" id="logout-modal">
<div class="md-content">
<h3><strong>Logout</strong> Confirmation</h3>
<div>
<p class="text-center">Are you sure want to logout from this awesome system?</p>
<p class="text-center">
<button class="btn btn-danger md-close">Nope!</button>
<a href="login.html" class="btn btn-success md-close">Yeah, I'm sure</a>
</p>
</div>
</div>
</div> <!-- Modal End -->
<!-- Begin page -->
<div class="container">
<div class="full-content-center animated flipInX">
<h1>500</h1>
<h2>We are unable to show this page to you correctly!</h2><br>
<p class="text-lightblue-2">You better try our awesome search:</p>
<div class="row">
<div class="icon-added input-group col-sm-8 col-sm-offset-2">
<i class="fa fa-search"></i>
<input type="text" class="form-control">
<span class="input-group-btn">
<button class="btn btn-success searchbtn" type="button">Search</button>
</span>
</div>
</div><br>
<a class="btn btn-primary btn-sm backbtn" href="index.html"><i class="fa fa-angle-left"></i> Back to Dashboard</a>
</div>
</div>
<!-- End of page -->
<!-- the overlay modal element -->
<div class="md-overlay"></div>
<!-- End of eoverlay modal -->
<script>
var resizefunc = [];
</script>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="assets/libs/jquery/jquery-1.11.1.min.js"></script>
<script src="assets/libs/bootstrap/js/bootstrap.min.js"></script>
<script src="assets/libs/jqueryui/jquery-ui-1.10.4.custom.min.js"></script>
<script src="assets/libs/jquery-ui-touch/jquery.ui.touch-punch.min.js"></script>
<script src="assets/libs/jquery-detectmobile/detect.js"></script>
<script src="assets/libs/jquery-animate-numbers/jquery.animateNumbers.js"></script>
<script src="assets/libs/ios7-switch/ios7.switch.js"></script>
<script src="assets/libs/fastclick/fastclick.js"></script>
<script src="assets/libs/jquery-blockui/jquery.blockUI.js"></script>
<script src="assets/libs/bootstrap-bootbox/bootbox.min.js"></script>
<script src="assets/libs/jquery-slimscroll/jquery.slimscroll.js"></script>
<script src="assets/libs/jquery-sparkline/jquery-sparkline.js"></script>
<script src="assets/libs/nifty-modal/js/classie.js"></script>
<script src="assets/libs/nifty-modal/js/modalEffects.js"></script>
<script src="assets/libs/sortable/sortable.min.js"></script>
<script src="assets/libs/bootstrap-fileinput/bootstrap.file-input.js"></script>
<script src="assets/libs/bootstrap-select/bootstrap-select.min.js"></script>
<script src="assets/libs/bootstrap-select2/select2.min.js"></script>
<script src="assets/libs/magnific-popup/jquery.magnific-popup.min.js"></script>
<script src="assets/libs/pace/pace.min.js"></script>
<script src="assets/libs/bootstrap-datepicker/js/bootstrap-datepicker.js"></script>
<script src="assets/libs/jquery-icheck/icheck.min.js"></script>
<!-- Demo Specific JS Libraries -->
<script src="assets/libs/prettify/prettify.js"></script>
<script src="assets/js/init.js"></script>
</body>
</html>

@ -0,0 +1,864 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Advanced Forms | Coco - Responsive Bootstrap Admin Template</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="description" content="">
<meta name="keywords" content="coco bootstrap template, coco admin, bootstrap,admin template, bootstrap admin,">
<meta name="author" content="Huban Creative">
<!-- Base Css Files -->
<link href="assets/libs/jqueryui/ui-lightness/jquery-ui-1.10.4.custom.min.css" rel="stylesheet" />
<link href="assets/libs/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<link href="assets/libs/font-awesome/css/font-awesome.min.css" rel="stylesheet" />
<link href="assets/libs/fontello/css/fontello.css" rel="stylesheet" />
<link href="assets/libs/animate-css/animate.min.css" rel="stylesheet" />
<link href="assets/libs/nifty-modal/css/component.css" rel="stylesheet" />
<link href="assets/libs/magnific-popup/magnific-popup.css" rel="stylesheet" />
<link href="assets/libs/ios7-switch/ios7-switch.css" rel="stylesheet" />
<link href="assets/libs/pace/pace.css" rel="stylesheet" />
<link href="assets/libs/sortable/sortable-theme-bootstrap.css" rel="stylesheet" />
<link href="assets/libs/bootstrap-datepicker/css/datepicker.css" rel="stylesheet" />
<link href="assets/libs/jquery-icheck/skins/all.css" rel="stylesheet" />
<!-- Code Highlighter for Demo -->
<link href="assets/libs/prettify/github.css" rel="stylesheet" />
<!-- Extra CSS Libraries Start -->
<link href="assets/libs/bootstrap-select/bootstrap-select.min.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/bootstrap-select2/select2.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/bootstrap-xeditable/css/bootstrap-editable.css" rel="stylesheet" type="text/css" />
<link href="assets/libs/bootstrap-select2/select2.css" rel="stylesheet" type="text/css" />
<link href="assets/css/style.css" rel="stylesheet" type="text/css" />
<!-- Extra CSS Libraries End -->
<link href="assets/css/style-responsive.css" rel="stylesheet" />
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<link rel="shortcut icon" href="assets/img/favicon.ico">
<link rel="apple-touch-icon" href="assets/img/apple-touch-icon.png" />
<link rel="apple-touch-icon" sizes="57x57" href="assets/img/apple-touch-icon-57x57.png" />
<link rel="apple-touch-icon" sizes="72x72" href="assets/img/apple-touch-icon-72x72.png" />
<link rel="apple-touch-icon" sizes="76x76" href="assets/img/apple-touch-icon-76x76.png" />
<link rel="apple-touch-icon" sizes="114x114" href="assets/img/apple-touch-icon-114x114.png" />
<link rel="apple-touch-icon" sizes="120x120" href="assets/img/apple-touch-icon-120x120.png" />
<link rel="apple-touch-icon" sizes="144x144" href="assets/img/apple-touch-icon-144x144.png" />
<link rel="apple-touch-icon" sizes="152x152" href="assets/img/apple-touch-icon-152x152.png" />
</head>
<body class="fixed-left">
<!-- Modal Start -->
<!-- Modal Task Progress -->
<div class="md-modal md-3d-flip-vertical" id="task-progress">
<div class="md-content">
<h3><strong>Task Progress</strong> Information</h3>
<div>
<p>CLEANING BUGS</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%">
<span class="sr-only">80&#37; Complete</span>
</div>
</div>
<p>POSTING SOME STUFF</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 65%">
<span class="sr-only">65&#37; Complete</span>
</div>
</div>
<p>BACKUP DATA FROM SERVER</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 95%">
<span class="sr-only">95&#37; Complete</span>
</div>
</div>
<p>RE-DESIGNING WEB APPLICATION</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-primary" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
<span class="sr-only">100&#37; Complete</span>
</div>
</div>
<p class="text-center">
<button class="btn btn-danger btn-sm md-close">Close</button>
</p>
</div>
</div>
</div>
<!-- Modal Logout -->
<div class="md-modal md-just-me" id="logout-modal">
<div class="md-content">
<h3><strong>Logout</strong> Confirmation</h3>
<div>
<p class="text-center">Are you sure want to logout from this awesome system?</p>
<p class="text-center">
<button class="btn btn-danger md-close">Nope!</button>
<a href="login.html" class="btn btn-success md-close">Yeah, I'm sure</a>
</p>
</div>
</div>
</div> <!-- Modal End -->
<!-- Begin page -->
<div id="wrapper">
<!-- Top Bar Start -->
<div class="topbar">
<div class="topbar-left">
<div class="logo">
<h1><a href="#"><img src="assets/img/logo.png" alt="Logo"></a></h1>
</div>
<button class="button-menu-mobile open-left">
<i class="fa fa-bars"></i>
</button>
</div>
<!-- Button mobile view to collapse sidebar menu -->
<div class="navbar navbar-default" role="navigation">
<div class="container">
<div class="navbar-collapse2">
<ul class="nav navbar-nav hidden-xs">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="icon-th"></i></a>
<div class="dropdown-menu grid-dropdown">
<div class="row stacked">
<div class="col-xs-4">
<a href="javascript:;" data-app="notes-app" data-status="active"><i class="icon-edit"></i>Notes</a>
</div>
<div class="col-xs-4">
<a href="javascript:;" data-app="todo-app" data-status="active"><i class="icon-check"></i>Todo List</a>
</div>
<div class="col-xs-4">
<a href="javascript:;" data-app="calc" data-status="inactive"><i class="fa fa-calculator"></i>Calculator</a>
</div>
</div>
<div class="row stacked">
<div class="col-xs-4">
<a href="javascript:;" data-app="weather-widget" data-status="active"><i class="icon-cloud-3"></i>Weather</a>
</div>
<div class="col-xs-4">
<a href="javascript:;" data-app="calendar-widget2" data-status="active"><i class="icon-calendar"></i>Calendar</a>
</div>
<div class="col-xs-4">
<a href="javascript:;" data-app="stock-app" data-status="inactive"><i class="icon-chart-line"></i>Stocks</a>
</div>
</div>
<div class="clearfix"></div>
</div>
</li>
<li class="language_bar dropdown hidden-xs">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">English (US) <i class="fa fa-caret-down"></i></a>
<ul class="dropdown-menu pull-right">
<li><a href="#">German</a></li>
<li><a href="#">French</a></li>
<li><a href="#">Italian</a></li>
<li><a href="#">Spanish</a></li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-right top-navbar">
<li class="dropdown iconify hide-phone">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-globe"></i><span class="label label-danger absolute">4</span></a>
<ul class="dropdown-menu dropdown-message">
<li class="dropdown-header notif-header"><i class="icon-bell-2"></i> New Notifications<a class="pull-right" href="#"><i class="fa fa-cog"></i></a></li>
<li class="unread">
<a href="#">
<p><strong>John Doe</strong> Uploaded a photo <strong>&#34;DSC000254.jpg&#34;</strong>
<br /><i>2 minutes ago</i>
</p>
</a>
</li>
<li class="unread">
<a href="#">
<p><strong>John Doe</strong> Created an photo album <strong>&#34;Fappening&#34;</strong>
<br /><i>8 minutes ago</i>
</p>
</a>
</li>
<li>
<a href="#">
<p><strong>John Malkovich</strong> Added 3 products
<br /><i>3 hours ago</i>
</p>
</a>
</li>
<li>
<a href="#">
<p><strong>Sonata Arctica</strong> Send you a message <strong>&#34;Lorem ipsum dolor...&#34;</strong>
<br /><i>12 hours ago</i>
</p>
</a>
</li>
<li>
<a href="#">
<p><strong>Johnny Depp</strong> Updated his avatar
<br /><i>Yesterday</i>
</p>
</a>
</li>
<li class="dropdown-footer">
<div class="btn-group btn-group-justified">
<div class="btn-group">
<a href="#" class="btn btn-sm btn-primary"><i class="icon-ccw-1"></i> Refresh</a>
</div>
<div class="btn-group">
<a href="#" class="btn btn-sm btn-danger"><i class="icon-trash-3"></i> Clear All</a>
</div>
<div class="btn-group">
<a href="#" class="btn btn-sm btn-success">See All <i class="icon-right-open-2"></i></a>
</div>
</div>
</li>
</ul>
</li>
<li class="dropdown iconify hide-phone">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-envelope"></i><span class="label label-danger absolute">3</span></a>
<ul class="dropdown-menu dropdown-message">
<li class="dropdown-header notif-header"><i class="icon-mail-2"></i> New Messages</li>
<li class="unread">
<a href="#" class="clearfix">
<img src="images/users/chat/2.jpg" class="xs-avatar ava-dropdown" alt="Avatar">
<strong>John Doe</strong><i class="pull-right msg-time">5 minutes ago</i><br />
<p>Duis autem vel eum iriure dolor in hendrerit ...</p>
</a>
</li>
<li class="unread">
<a href="#" class="clearfix">
<img src="images/users/chat/1.jpg" class="xs-avatar ava-dropdown" alt="Avatar">
<strong>Sandra Kraken</strong><i class="pull-right msg-time">22 minutes ago</i><br />
<p>Duis autem vel eum iriure dolor in hendrerit ...</p>
</a>
</li>
<li>
<a href="#" class="clearfix">
<img src="images/users/chat/3.jpg" class="xs-avatar ava-dropdown" alt="Avatar">
<strong>Zoey Lombardo</strong><i class="pull-right msg-time">41 minutes ago</i><br />
<p>Duis autem vel eum iriure dolor in hendrerit ...</p>
</a>
</li>
<li class="dropdown-footer"><div class=""><a href="#" class="btn btn-sm btn-block btn-primary"><i class="fa fa-share"></i> See all messages</a></div></li>
</ul>
</li>
<li class="dropdown iconify hide-phone"><a href="#" onclick="javascript:toggle_fullscreen()"><i class="icon-resize-full-2"></i></a></li>
<li class="dropdown topbar-profile">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="rounded-image topbar-profile-image"><img src="images/users/user-35.jpg"></span> Jane <strong>Doe</strong> <i class="fa fa-caret-down"></i></a>
<ul class="dropdown-menu">
<li><a href="#">My Profile</a></li>
<li><a href="#">Change Password</a></li>
<li><a href="#">Account Setting</a></li>
<li class="divider"></li>
<li><a href="#"><i class="icon-help-2"></i> Help</a></li>
<li><a href="lockscreen.html"><i class="icon-lock-1"></i> Lock me</a></li>
<li><a class="md-trigger" data-modal="logout-modal"><i class="icon-logout-1"></i> Logout</a></li>
</ul>
</li>
<li class="right-opener">
<a href="javascript:;" class="open-right"><i class="fa fa-angle-double-left"></i><i class="fa fa-angle-double-right"></i></a>
</li>
</ul>
</div>
<!--/.nav-collapse -->
</div>
</div>
</div>
<!-- Top Bar End -->
<!-- Left Sidebar Start -->
<div class="left side-menu">
<div class="sidebar-inner slimscrollleft">
<!-- Search form -->
<form role="search" class="navbar-form">
<div class="form-group">
<input type="text" placeholder="Search" class="form-control">
<button type="submit" class="btn search-button"><i class="fa fa-search"></i></button>
</div>
</form>
<div class="clearfix"></div>
<!--- Profile -->
<div class="profile-info">
<div class="col-xs-4">
<a href="profile.html" class="rounded-image profile-image"><img src="images/users/user-100.jpg"></a>
</div>
<div class="col-xs-8">
<div class="profile-text">Welcome <b>Jane</b></div>
<div class="profile-buttons">
<a href="javascript:;"><i class="fa fa-envelope-o pulse"></i></a>
<a href="#connect" class="open-right"><i class="fa fa-comments"></i></a>
<a href="javascript:;" title="Sign Out"><i class="fa fa-power-off text-red-1"></i></a>
</div>
</div>
</div>
<!--- Divider -->
<div class="clearfix"></div>
<hr class="divider" />
<div class="clearfix"></div>
<!--- Divider -->
<div id="sidebar-menu">
<ul><li class='has_sub'><a href='javascript:void(0);'><i class='icon-home-3'></i><span>Dashboard</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='index.html'><span>Dashboard v1</span></a></li><li><a href='index2.html'><span>Dashboard v2</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><i class='icon-feather'></i><span>UI Elements</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='alerts.html'><span>Alerts</span></a></li><li><a href='buttons.html'><span>Buttons</span></a></li><li><a href='calendar.html'><span>Calendar</span></a></li><li><a href='grid.html'><span>Grid</span></a></li><li><a href='icons.html'><span>Icons</span></a></li><li><a href='modals.html'><span>Modals</span></a></li><li><a href='nested-list.html'><span>Nested List</span></a></li><li><a href='notifications.html'><span>Notifications</span></a></li><li><a href='portlets.html'><span>Portlets</span></a></li><li><a href='progress-bars.html'><span>Progress Bars</span></a></li><li><a href='tabs-accordions.html'><span>Tabs & Accordions</span></a></li><li><a href='typography.html'><span>Typography</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><i class='icon-pencil-3'></i><span>Forms</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='forms.html'><span>Form Elements</span></a></li><li><a href='advanced-forms.html' class='active'><span>Advanced Forms</span></a></li><li><a href='form-wizard.html'><span>Form Wizard</span></a></li><li><a href='form-validation.html'><span>Form Validation</span></a></li><li><a href='form-uploads.html'><span>File Uploads</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><i class='fa fa-table'></i><span>Tables</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='tables.html'><span>Basic Tables</span></a></li><li><a href='datatables.html'><span>Datatables</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><i class='fa fa-map-marker'></i><span>Maps</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='google-maps.html'><span>Google Maps</span></a></li><li><a href='vector-maps.html'><span>Vector Maps</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><i class='fa fa-envelope'></i><span>Email</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='inbox.html'><span>Inbox</span></a></li><li><a href='read-message.html'><span>View Email</span></a></li><li><a href='new-message.html'><span>New Message</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><i class='icon-chart-line'></i><span>Charts</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='sparkline-charts.html'><span>Sparkline Charts</span></a></li><li><a href='morris-charts.html'><span>Morris Charts</span></a></li><li><a href='rickshaw-charts.html'><span>Rickshaw Charts</span></a></li><li><a href='other-charts.html'><span>Other Charts</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><i class='icon-megaphone'></i><span>Extras</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='blank.html'><span>Blank Page</span></a></li><li><a href='login.html'><span>Login</span></a></li><li><a href='register.html'><span>Register</span></a></li><li><a href='lockscreen.html'><span>Lock Screen</span></a></li><li><a href='404.html'><span>404 Error</span></a></li><li><a href='500.html'><span>500 Error</span></a></li><li><a href='profile.html'><span>User Profile</span></a></li><li><a href='invoice.html'><span>Invoice</span></a></li><li><a href='gallery.html'><span>Gallery</span></a></li><li><a href='maintenance.html'><span>Maintenance</span></a></li><li class='has_sub'><a href='javascript:void(0);'><span>3 Level menu</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='javascript:void(0);'><span>Sub Item</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><span>4 Level Menu</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li class='has_sub'><a href='javascript:void(0);'><span>Sub Item - level 3</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='javascript:void(0);'><span>Sub Item - level 4</span></a></li></ul></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><span>Submenu with icons</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='javascript:void(0);'><i class='fa fa-camera'></i><span>Item with icon</span></a></li><li><a href='javascript:void(0);'><i class='entypo entypo-users'></i><span>Another Item</span></a></li></ul></li></ul></li></ul> <div class="clearfix"></div>
</div>
<div class="clearfix"></div>
<div class="portlets">
<div id="chat_groups" class="widget transparent nomargin">
<h2>Chat Groups</h2>
<div class="widget-content">
<ul class="list-unstyled">
<li><a href="javascript:;"><i class="fa fa-circle-o text-red-1"></i> Colleagues</a></li>
<li><a href="javascript:;"><i class="fa fa-circle-o text-blue-1"></i> Family</a></li>
<li><a href="javascript:;"><i class="fa fa-circle-o text-green-1"></i> Friends</a></li>
</ul>
</div>
</div>
<div id="recent_tickets" class="widget transparent nomargin">
<h2>Recent Tickets</h2>
<div class="widget-content">
<ul class="list-unstyled">
<li>
<a href="javascript:;">My wordpress blog is broken <span>I was trying to save my page and...</span></a>
</li>
<li>
<a href="javascript:;">Server down, need help!<span>My server is not responding for the last...</span></a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearfix"></div><br><br><br>
</div>
<div class="left-footer">
<div class="progress progress-xs">
<div class="progress-bar bg-green-1" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%">
<span class="progress-precentage">80%</span>
</div>
<a data-toggle="tooltip" title="See task progress" class="btn btn-default md-trigger" data-modal="task-progress"><i class="fa fa-inbox"></i></a>
</div>
</div>
</div>
<!-- Left Sidebar End --> <!-- Right Sidebar Start -->
<div class="right side-menu">
<ul class="nav nav-tabs nav-justified" id="right-tabs">
<li class="active"><a href="#feed" data-toggle="tab" title="Live Feed"><i class="icon-rss-2"></i></a></li>
<li><a href="#connect" data-toggle="tab" title="Chat"><i class="icon-chat"></i></a></li>
<li><a href="#settings" data-toggle="tab" title="Preferences"><i class="icon-wrench"></i></a></li>
</ul>
<div class="clearfix"></div>
<div class="tab-content">
<div class="tab-pane active" id="feed">
<div class="tab-inner slimscroller">
<div class="search-right">
<input type="text" class="form-control" placeholder="Search">
</div>
<div class="right-toolbar">
<a href="javascript:;" class="pull-right">Settings <i class="icon-cog"></i></a>
<div class="clearfix"></div>
</div>
<div class="clearfix"></div>
<div class="panel-group" id="collapse">
<div class="panel panel-default">
<div class="panel-heading bg-orange-1">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#rnotifications">
<i class="icon-bell-2"></i> Notifications
<span class="label bg-darkblue-1 pull-right">4</span>
</a>
</h4>
</div>
<div id="rnotifications" class="panel-collapse collapse in">
<div class="panel-body">
<ul class="list-unstyled" id="notification-list">
<li><a href="javascript:;"><span class="icon-wrapper"><i class="icon-video"></i></span> 1 Video Uploaded <span class="muted">12 minutes ago</span></a></li>
<li><a href="javascript:;"><span class="icon-wrapper"><i class="icon-users-1"></i></span> 3 Users signed up <span class="muted">16 minutes ago</span></a></li>
<li><a href="javascript:;"><span class="icon-wrapper"><i class="icon-picture-1"></i></span> 1 Video Uploaded <span class="muted">12 minutes ago</span></a></li>
<li><a href="javascript:;"><span class="icon-wrapper"><i class="icon-hourglass-1"></i></span> Deadline for 1 project <span class="muted">12 minutes ago</span></a></li>
</ul>
<a class="btn btn-block btn-sm btn-warning">See all notifications</a>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading bg-green-3">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#remails">
<i class="icon-mail"></i> E-mails
<span class="label bg-darkblue-1 pull-right">3</span>
</a>
</h4>
</div>
<div id="remails" class="panel-collapse collapse in">
<div class="panel-body">
<ul class="list-unstyled" id="inbox-list">
<li><a href="javascript:;"><span class="sender"><i class="icon-star text-yellow-2"></i> Kim Wilde</span> <span class="datetime">6 mins ago</span>
<span class="title">You keep me hangin on</span>
<span class="content">Where are you? I am waiting for 3 hours in the restaurant. I ate 3 hamburgers.</span>
</a></li>
<li><a href="javascript:;"><span class="sender">Tyler Durden</span> <span class="datetime">13 hours ago</span>
<span class="title">Buy some soap from market before</span>
<span class="content">We are crowded here. We need some more soap at home. Buy some before you come home.</span>
</a></li>
<li><a href="javascript:;"><span class="sender">John Bonomo</span> <span class="datetime">Yesterday</span>
<span class="title">Late delivery</span>
<span class="content">Hello, I ordered 15 box of viagra for a friend of mine but he still hasn't receive them.</span>
</a></li>
</ul>
<a class="btn btn-block btn-sm btn-primary">Go to inbox</a>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading bg-blue-1">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#rupdates">
<i class="icon-signal-2"></i> Updates
<span class="label bg-darkblue-1 pull-right">5</span>
</a>
</h4>
</div>
<div id="rupdates" class="panel-collapse collapse in">
<div class="panel-body">
<ul class="list-unstyled" id="updates-list">
<li><a href="javascript:;"><span class="icon-wrapper bg-green-1"><i class="icon-comment-1"></i></span> <b>David Guetta</b> came online <abbr title="15 seconds ago">just now</abbr>.</a></li>
<li><a href="javascript:;"><span class="icon-wrapper bg-red-1"><i class="icon-user-3"></i></span> <b>Katy Perry</b> updated her profile <abbr title="4 mins ago">4 mins ago</abbr>.</a></li>
<li><a href="javascript:;"><span class="icon-wrapper bg-blue-1"><i class="icon-twitter-2"></i></span> <b>4 tweets posted</b> with cronjob <abbr title="22 mins ago">22 mins ago</abbr>.</a></li>
<li><a href="javascript:;"><span class="icon-wrapper bg-orange-3"><i class="icon-water"></i></span> <b>Adele</b> set fire to the rain <abbr title="43 mins ago">43 mins ago</abbr>.</a></li>
<li><a href="javascript:;"><span class="icon-wrapper bg-pink-2"><i class="icon-heart-broken"></i></span> <b>Taylor Swift</b> learned that you are trouble <abbr title="3 hours ago">3 days ago</abbr>.</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane" id="connect">
<div class="tab-inner slimscroller">
<div class="search-right">
<input type="text" class="form-control" placeholder="Search">
</div>
<div class="panel-group" id="collapse">
<div class="panel panel-default" id="chat-panel">
<div class="panel-heading bg-darkblue-2">
<h4 class="panel-title">
<a data-toggle="collapse" href="#chat-coll">
<i class="icon-briefcase-1"></i> Colleagues
<span class="label bg-darkblue-1 pull-right">14</span>
</a>
</h4>
</div>
<div id="chat-coll" class="panel-collapse collapse in">
<div class="panel-body">
<ul class="list-unstyled" id="chat-list">
<li><a href="javascript:;" class="online"><span class="chat-user-avatar"><img src="images/users/chat/1.jpg"></span> <span class="chat-user-name">Dorothy Simons</span><span class="chat-user-msg">I wish I was a bird in the sky</span></a></li>
<li><a href="javascript:;" class="online"><span class="chat-user-avatar"><img src="images/users/chat/2.jpg"></span> <span class="chat-user-name">John Malkovich</span><span class="chat-user-msg">You were the traitor</span></a></li>
<li><a href="javascript:;" class="online"><span class="chat-user-avatar"><img src="images/users/chat/3.jpg"></span> <span class="chat-user-name">Jessica Simons</span><span class="chat-user-msg">Where is my mind</span></a></li>
<li><a href="javascript:;" class="away"><span class="chat-user-avatar"><img src="images/users/chat/4.jpg"></span> <span class="chat-user-name">Jack Stallman</span><span class="chat-user-msg">Away since 13:32</span></a></li>
<li><a href="javascript:;" class="offline"><span class="chat-user-avatar"><img src="images/users/chat/5.jpg"></span> <span class="chat-user-name">Neil Armstrong</span><span class="chat-user-msg" title="I am flying to the moon and back">I am flying to the moon and back</span></a></li>
<li><a href="javascript:;" class="offline"><span class="chat-user-avatar"><img src="images/users/chat/6.jpg"></span> <span class="chat-user-name">Hollywood Studios</span><span class="chat-user-msg">Yes he definitely is!</span></a></li>
</ul>
</div>
</div>
</div>
<div class="panel panel-default" id="chat-panel">
<div class="panel-heading bg-darkblue-2">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
<i class="icon-heart-3"></i> Friends
<span class="label bg-darkblue-1 pull-right">3</span>
</a>
</h4>
</div>
<div id="collapseTwo" class="panel-collapse collapse in">
<div class="panel-body">
<ul class="list-unstyled" id="chat-list">
<li><a href="javascript:;" class="online"><span class="chat-user-avatar"><img src="images/users/chat/1.jpg"></span> <span class="chat-user-name">Dorothy Simons</span><span class="chat-user-msg">I wish I was a bird in the sky</span></a></li>
<li><a href="javascript:;" class="online"><span class="chat-user-avatar"><img src="images/users/chat/2.jpg"></span> <span class="chat-user-name">John Malkovich</span><span class="chat-user-msg">You were the traitor</span></a></li>
<li><a href="javascript:;" class="online"><span class="chat-user-avatar"><img src="images/users/chat/3.jpg"></span> <span class="chat-user-name">Jessica Simons</span><span class="chat-user-msg" title="Eminem - The Monster ft. Rihanna"><i class="icon-play"></i> Eminem - The Monster ft. Rihanna</span></a></li>
<li><a href="javascript:;" class="away"><span class="chat-user-avatar"><img src="images/users/chat/4.jpg"></span> <span class="chat-user-name">Jack Stallman</span><span class="chat-user-msg">Away since 13:32</span></a></li>
<li><a href="javascript:;" class="offline"><span class="chat-user-avatar"><img src="images/users/chat/5.jpg"></span> <span class="chat-user-name">Neil Armstrong</span><span class="chat-user-msg" title="I am flying to the moon and back">I am flying to the moon and back</span></a></li>
<li><a href="javascript:;" class="offline"><span class="chat-user-avatar"><img src="images/users/chat/6.jpg"></span> <span class="chat-user-name">Hollywood Studios</span><span class="chat-user-msg">Yes he definitely is!</span></a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane" id="settings">
<div class="tab-inner slimscroller">
<div class="col-sm-12">
<h3>Preferences</h3>
<div class="row">
<div class="col-xs-8">
Live data updates
</div>
<div class="col-xs-4">
<input type="checkbox" class="ios-switch ios-switch-success ios-switch-sm" checked />
</div>
</div>
<div class="row">
<div class="col-xs-8">
Live feeds
</div>
<div class="col-xs-4">
<input type="checkbox" class="ios-switch ios-switch-success ios-switch-sm" checked />
</div>
</div>
<div class="row">
<div class="col-xs-8">
Sync data to cloud
</div>
<div class="col-xs-4">
<input type="checkbox" class="ios-switch ios-switch-success ios-switch-sm" checked />
</div>
</div>
<div class="row">
<div class="col-xs-8">
Keep activity record
</div>
<div class="col-xs-4">
<input type="checkbox" class="ios-switch ios-switch-danger ios-switch-sm" checked />
</div>
</div>
<h4>Other Settings</h4>
<div class="row">
<div class="col-xs-12">
<label class="checkboxw"><input type="checkbox" checked> Autosave settings</label>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<label class="checkboxw"><input type="checkbox"> Always online</label>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Right Sidebar End -->
<!-- Start right content -->
<div class="content-page">
<!-- ============================================================== -->
<!-- Start Content here -->
<!-- ============================================================== -->
<div class="content">
<!-- Page Heading Start -->
<div class="page-heading">
<h1><i class='fa fa-check'></i> Advanced Forms</h1>
</div>
<!-- Page Heading End-->
<!-- Your awesome content goes here -->
<div class="row">
<div class="col-sm-12 portlets">
<div class="widget">
<div class="widget-header">
<h2><strong>Inline</strong> Editing</h2>
<div class="additional-btn">
<a href="#" class="hidden reload"><i class="icon-ccw-1"></i></a>
<a href="#" class="widget-toggle"><i class="icon-down-open-2"></i></a>
<a href="#" class="widget-close"><i class="icon-cancel-3"></i></a>
</div>
</div>
<div class="widget-content padding">
<p>Click to edit</p>
<table id="user" class="table table-bordered table-striped" style="clear: both">
<tbody>
<tr>
<td width="35%">Simple text field</td>
<td width="65%"><a href="#" id="username" data-type="text" data-pk="1" data-title="Enter username">superuser</a></td>
</tr>
<tr>
<td>Empty text field, required</td>
<td><a href="#" id="firstname" data-type="text" data-pk="1" data-placement="right" data-placeholder="Required" data-title="Enter your firstname"></a></td>
</tr>
<tr>
<td>Select, local array, custom display</td>
<td><a href="#" id="sex" data-type="select" data-pk="1" data-value="" data-title="Select sex"></a></td>
</tr>
<tr>
<td>Select, remote array, no buttons</td>
<td><a href="#" id="group" data-type="select" data-pk="1" data-value="5" data-source="/groups" data-title="Select group">Admin</a></td>
</tr>
<tr>
<td>Select, error while loading</td>
<td><a href="#" id="status" data-type="select" data-pk="1" data-value="0" data-source="/status" data-title="Select status">Active</a></td>
</tr>
<tr>
<td>Datepicker</td>
<td>
<span class="notready">not implemented for Bootstrap 3 yet</span>
</td>
</tr>
<tr>
<td>Combodate (date)</td>
<td><a href="#" id="dob" data-type="combodate" data-value="1984-05-15" data-format="YYYY-MM-DD" data-viewformat="DD/MM/YYYY" data-template="D / MMM / YYYY" data-pk="1" data-title="Select Date of birth"></a></td>
</tr>
<tr>
<td>Combodate (datetime)</td>
<td><a href="#" id="event" data-type="combodate" data-template="D MMM YYYY HH:mm" data-format="YYYY-MM-DD HH:mm" data-viewformat="MMM D, YYYY, HH:mm" data-pk="1" data-title="Setup event date and time"></a></td>
</tr>
<tr>
<td>Textarea, buttons below. Submit by <i>ctrl+enter</i></td>
<td><a href="#" id="comments" data-type="textarea" data-pk="1" data-placeholder="Your comments here..." data-title="Enter comments">awesome user!</a></td>
</tr>
<tr>
<td>Checklist</td>
<td><a href="#" id="fruits" data-type="checklist" data-value="2,3" data-title="Select fruits"></a></td>
</tr>
<tr>
<td>Select2 (tags mode)</td>
<td><a href="#" id="tags" data-type="select2" data-pk="1" data-title="Enter tags">html, javascript</a></td>
</tr>
<tr>
<td>Select2 (dropdown mode)</td>
<td><a href="#" id="country" data-type="select2" data-pk="1" data-value="BS" data-title="Select country"></a></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="widget">
<div class="widget-header">
<h2><strong>IOS 7</strong> Switches</h2>
<div class="additional-btn">
<a href="#" class="hidden reload"><i class="icon-ccw-1"></i></a>
<a href="#" class="widget-toggle"><i class="icon-down-open-2"></i></a>
<a href="#" class="widget-close"><i class="icon-cancel-3"></i></a>
</div>
</div>
<div class="widget-content padding">
<h4>Large Size</h4>
<input type="checkbox" class="ios-switch ios-switch-default ios-switch-lg" checked />
<input type="checkbox" class="ios-switch ios-switch-primary ios-switch-lg" checked />
<input type="checkbox" class="ios-switch ios-switch-success ios-switch-lg" checked />
<input type="checkbox" class="ios-switch ios-switch-danger ios-switch-lg" checked />
<input type="checkbox" class="ios-switch ios-switch-warning ios-switch-lg" checked />
<input type="checkbox" class="ios-switch ios-switch-info ios-switch-lg" checked />
<h4>Default Size</h4>
<input type="checkbox" class="ios-switch ios-switch-default" checked />
<input type="checkbox" class="ios-switch ios-switch-primary" checked />
<input type="checkbox" class="ios-switch ios-switch-success" checked />
<input type="checkbox" class="ios-switch ios-switch-danger" checked />
<input type="checkbox" class="ios-switch ios-switch-warning" checked />
<input type="checkbox" class="ios-switch ios-switch-info" checked />
<h4>Small Size</h4>
<input type="checkbox" class="ios-switch ios-switch-default ios-switch-sm" checked />
<input type="checkbox" class="ios-switch ios-switch-primary ios-switch-sm" checked />
<input type="checkbox" class="ios-switch ios-switch-success ios-switch-sm" checked />
<input type="checkbox" class="ios-switch ios-switch-danger ios-switch-sm" checked />
<input type="checkbox" class="ios-switch ios-switch-warning ios-switch-sm" checked />
<input type="checkbox" class="ios-switch ios-switch-info ios-switch-sm" checked />
</div>
</div>
<div class="widget">
<div class="widget-header">
<h2><strong>WYSIWYG</strong> Editor</h2>
<div class="additional-btn">
<a href="#" class="hidden reload"><i class="icon-ccw-1"></i></a>
<a href="#" class="widget-toggle"><i class="icon-down-open-2"></i></a>
<a href="#" class="widget-close"><i class="icon-cancel-3"></i></a>
</div>
</div>
<div class="widget-content">
<textarea id="ckeditor"></textarea>
</div>
</div>
<div class="widget">
<div class="widget-header">
<h2><strong>Inline</strong> WYSIWYG Editor</h2>
<div class="additional-btn">
<a href="#" class="hidden reload"><i class="icon-ccw-1"></i></a>
<a href="#" class="widget-toggle"><i class="icon-down-open-2"></i></a>
<a href="#" class="widget-close"><i class="icon-cancel-3"></i></a>
</div>
</div>
<div class="widget-content padding">
<div id="container">
<div id="header">
<div id="headerLeft">
<h2 id="sampleTitle" contenteditable="true">
CKEditor<br> Goes Inline!
</h2>
<h3 contenteditable="true">
Lorem ipsum dolor sit amet dolor duis blandit vestibulum faucibus a, tortor.
</h3>
</div>
<div id="headerRight">
<div contenteditable="true">
<p>
Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies.
</p>
<p>
Curabitur et ligula. Ut molestie a, ultricies porta urna. Vestibulum commodo volutpat a, convallis ac, laoreet enim. Phasellus fermentum in, dolor. Pellentesque facilisis. Nulla imperdiet sit amet magna. Vestibulum dapibus, mauris nec malesuada fames ac.
</p>
</div>
</div>
</div>
<div id="columns">
<div id="column1">
<div contenteditable="true">
<h3>
Fusce vitae porttitor
</h3>
<p>
<strong>
Lorem ipsum dolor sit amet dolor. Duis blandit vestibulum faucibus a, tortor.
</strong>
</p>
<p>
Proin nunc justo felis mollis tincidunt, risus risus pede, posuere cubilia Curae, Nullam euismod, enim. Etiam nibh ultricies dolor ac dignissim erat volutpat. Vivamus fermentum <a href="http://ckeditor.com/">nisl nulla sem in</a> metus. Maecenas wisi. Donec nec erat volutpat.
</p>
<blockquote>
<p>
Fusce vitae porttitor a, euismod convallis nisl, blandit risus tortor, pretium.
Vehicula vitae, imperdiet vel, ornare enim vel sodales rutrum
</p>
</blockquote>
<blockquote>
<p>
Libero nunc, rhoncus ante ipsum non ipsum. Nunc eleifend pede turpis id sollicitudin fringilla. Phasellus ultrices, velit ac arcu.
</p>
</blockquote>
<p>Pellentesque nunc. Donec suscipit erat. Pellentesque habitant morbi tristique ullamcorper.</p>
<p><s>Mauris mattis feugiat lectus nec mauris. Nullam vitae ante.</s></p>
</div>
</div>
<div id="column2">
<div contenteditable="true">
<h3>
Integer condimentum sit amet
</h3>
<p>
<strong>Aenean nonummy a, mattis varius. Cras aliquet.</strong>
Praesent <a href="http://ckeditor.com/">magna non mattis ac, rhoncus nunc</a>, rhoncus eget, cursus pulvinar mollis.</p>
<p>Proin id nibh. Sed eu libero posuere sed, lectus. Phasellus dui gravida gravida feugiat mattis ac, felis.</p>
<p>Integer condimentum sit amet, tempor elit odio, a dolor non ante at sapien. Sed ac lectus. Nulla ligula quis eleifend mi, id leo velit pede cursus arcu id nulla ac lectus. Phasellus vestibulum. Nunc viverra enim quis diam.</p>
</div>
<div contenteditable="true">
<h3>
Praesent wisi accumsan sit amet nibh
</h3>
<p>Donec ullamcorper, risus tortor, pretium porttitor. Morbi quam quis lectus non leo.</p>
<p style="margin-left: 40px; ">Integer faucibus scelerisque. Proin faucibus at, aliquet vulputate, odio at eros. Fusce <a href="http://ckeditor.com/">gravida, erat vitae augue</a>. Fusce urna fringilla gravida.</p>
<p>In hac habitasse platea dictumst. Praesent wisi accumsan sit amet nibh. Maecenas orci luctus a, lacinia quam sem, posuere commodo, odio condimentum tempor, pede semper risus. Suspendisse pede. In hac habitasse platea dictumst. Nam sed laoreet sit amet erat. Integer.</p>
</div>
</div>
<div id="column3">
<div contenteditable="true">
<p>
<img src="assets/inlineall/logo.png" alt="CKEditor logo" style="float:left">
</p>
<p>Quisque justo neque, mattis sed, fermentum ultrices <strong>posuere cubilia Curae</strong>, Vestibulum elit metus, quis placerat ut, lectus. Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis. Fusce porttitor, nulla quis turpis. Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi. Donec odio nec velit ac nunc sit amet, accumsan cursus aliquet. Vestibulum ante sit amet sagittis mi.</p>
<h3>
Nullam laoreet vel consectetuer tellus suscipit
</h3>
<ul>
<li>Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis.</li>
<li>Fusce porttitor, nulla quis turpis. Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi.</li>
<li>Mauris eget tellus. Donec non felis. Nam eget dolor. Vestibulum enim. Donec.</li>
</ul>
<p>Quisque justo neque, mattis sed, <a href="http://ckeditor.com/">fermentum ultrices posuere cubilia</a> Curae, Vestibulum elit metus, quis placerat ut, lectus.</p>
<p>Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi. Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis. Fusce porttitor, nulla quis turpis.</p>
<p>Donec odio nec velit ac nunc sit amet, accumsan cursus aliquet. Vestibulum ante sit amet sagittis mi. Sed in nonummy faucibus turpis. Mauris eget tellus. Donec non felis. Nam eget dolor. Vestibulum enim. Donec.</p>
</div>
</div>
</div>
<div id="tagLine">
Tags of this article:
<p id="taglist" contenteditable="true">
inline, editing, floating, CKEditor
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- End of your awesome content -->
<!-- Footer Start -->
<footer>
Huban Creative &copy; 2014
<div class="footer-links pull-right">
<a href="#">About</a><a href="#">Support</a><a href="#">Terms of Service</a><a href="#">Legal</a><a href="#">Help</a><a href="#">Contact Us</a>
</div>
</footer>
<!-- Footer End -->
</div>
<!-- ============================================================== -->
<!-- End content here -->
<!-- ============================================================== -->
</div>
<!-- End right content -->
</div>
<!-- End of page -->
<!-- the overlay modal element -->
<div class="md-overlay"></div>
<!-- End of eoverlay modal -->
<script>
var resizefunc = [];
</script>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="assets/libs/jquery/jquery-1.11.1.min.js"></script>
<script src="assets/libs/bootstrap/js/bootstrap.min.js"></script>
<script src="assets/libs/jqueryui/jquery-ui-1.10.4.custom.min.js"></script>
<script src="assets/libs/jquery-ui-touch/jquery.ui.touch-punch.min.js"></script>
<script src="assets/libs/jquery-detectmobile/detect.js"></script>
<script src="assets/libs/jquery-animate-numbers/jquery.animateNumbers.js"></script>
<script src="assets/libs/ios7-switch/ios7.switch.js"></script>
<script src="assets/libs/fastclick/fastclick.js"></script>
<script src="assets/libs/jquery-blockui/jquery.blockUI.js"></script>
<script src="assets/libs/bootstrap-bootbox/bootbox.min.js"></script>
<script src="assets/libs/jquery-slimscroll/jquery.slimscroll.js"></script>
<script src="assets/libs/jquery-sparkline/jquery-sparkline.js"></script>
<script src="assets/libs/nifty-modal/js/classie.js"></script>
<script src="assets/libs/nifty-modal/js/modalEffects.js"></script>
<script src="assets/libs/sortable/sortable.min.js"></script>
<script src="assets/libs/bootstrap-fileinput/bootstrap.file-input.js"></script>
<script src="assets/libs/bootstrap-select/bootstrap-select.min.js"></script>
<script src="assets/libs/bootstrap-select2/select2.min.js"></script>
<script src="assets/libs/magnific-popup/jquery.magnific-popup.min.js"></script>
<script src="assets/libs/pace/pace.min.js"></script>
<script src="assets/libs/bootstrap-datepicker/js/bootstrap-datepicker.js"></script>
<script src="assets/libs/jquery-icheck/icheck.min.js"></script>
<!-- Demo Specific JS Libraries -->
<script src="assets/libs/prettify/prettify.js"></script>
<script src="assets/js/init.js"></script>
<!-- Page Specific JS Libraries -->
<script src="assets/libs/bootstrap-select/bootstrap-select.min.js"></script>
<script src="assets/libs/bootstrap-inputmask/inputmask.js"></script>
<script src="assets/libs/bootstrap-xeditable/js/bootstrap-editable.min.js"></script>
<script src="assets/libs/bootstrap-xeditable/demo/jquery.mockjax.js"></script>
<script src="assets/libs/bootstrap-xeditable/demo/demo-mock.js"></script>
<script src="assets/libs/bootstrap-select2/select2.min.js"></script>
<script src="assets/libs/jquery-clndr/moment-2.5.1.js"></script>
<script src="assets/libs/bootstrap-typeahead/bootstrap3-typeahead.min.js"></script>
<script src="assets/libs/ckeditor/ckeditor.js"></script>
<script src="assets/libs/ckeditor/adapters/jquery.js"></script>
<script src="assets/js/pages/advanced-forms.js"></script>
</body>
</html>

@ -0,0 +1,672 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Alerts | Coco - Responsive Bootstrap Admin Template</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="description" content="">
<meta name="keywords" content="coco bootstrap template, coco admin, bootstrap,admin template, bootstrap admin,">
<meta name="author" content="Huban Creative">
<!-- Base Css Files -->
<link href="assets/libs/jqueryui/ui-lightness/jquery-ui-1.10.4.custom.min.css" rel="stylesheet" />
<link href="assets/libs/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<link href="assets/libs/font-awesome/css/font-awesome.min.css" rel="stylesheet" />
<link href="assets/libs/fontello/css/fontello.css" rel="stylesheet" />
<link href="assets/libs/animate-css/animate.min.css" rel="stylesheet" />
<link href="assets/libs/nifty-modal/css/component.css" rel="stylesheet" />
<link href="assets/libs/magnific-popup/magnific-popup.css" rel="stylesheet" />
<link href="assets/libs/ios7-switch/ios7-switch.css" rel="stylesheet" />
<link href="assets/libs/pace/pace.css" rel="stylesheet" />
<link href="assets/libs/sortable/sortable-theme-bootstrap.css" rel="stylesheet" />
<link href="assets/libs/bootstrap-datepicker/css/datepicker.css" rel="stylesheet" />
<link href="assets/libs/jquery-icheck/skins/all.css" rel="stylesheet" />
<!-- Code Highlighter for Demo -->
<link href="assets/libs/prettify/github.css" rel="stylesheet" />
<!-- Extra CSS Libraries Start -->
<link href="assets/css/style.css" rel="stylesheet" type="text/css" />
<!-- Extra CSS Libraries End -->
<link href="assets/css/style-responsive.css" rel="stylesheet" />
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<link rel="shortcut icon" href="assets/img/favicon.ico">
<link rel="apple-touch-icon" href="assets/img/apple-touch-icon.png" />
<link rel="apple-touch-icon" sizes="57x57" href="assets/img/apple-touch-icon-57x57.png" />
<link rel="apple-touch-icon" sizes="72x72" href="assets/img/apple-touch-icon-72x72.png" />
<link rel="apple-touch-icon" sizes="76x76" href="assets/img/apple-touch-icon-76x76.png" />
<link rel="apple-touch-icon" sizes="114x114" href="assets/img/apple-touch-icon-114x114.png" />
<link rel="apple-touch-icon" sizes="120x120" href="assets/img/apple-touch-icon-120x120.png" />
<link rel="apple-touch-icon" sizes="144x144" href="assets/img/apple-touch-icon-144x144.png" />
<link rel="apple-touch-icon" sizes="152x152" href="assets/img/apple-touch-icon-152x152.png" />
</head>
<body class="fixed-left">
<!-- Modal Start -->
<!-- Modal Task Progress -->
<div class="md-modal md-3d-flip-vertical" id="task-progress">
<div class="md-content">
<h3><strong>Task Progress</strong> Information</h3>
<div>
<p>CLEANING BUGS</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%">
<span class="sr-only">80&#37; Complete</span>
</div>
</div>
<p>POSTING SOME STUFF</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 65%">
<span class="sr-only">65&#37; Complete</span>
</div>
</div>
<p>BACKUP DATA FROM SERVER</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 95%">
<span class="sr-only">95&#37; Complete</span>
</div>
</div>
<p>RE-DESIGNING WEB APPLICATION</p>
<div class="progress progress-xs for-modal">
<div class="progress-bar progress-bar-primary" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
<span class="sr-only">100&#37; Complete</span>
</div>
</div>
<p class="text-center">
<button class="btn btn-danger btn-sm md-close">Close</button>
</p>
</div>
</div>
</div>
<!-- Modal Logout -->
<div class="md-modal md-just-me" id="logout-modal">
<div class="md-content">
<h3><strong>Logout</strong> Confirmation</h3>
<div>
<p class="text-center">Are you sure want to logout from this awesome system?</p>
<p class="text-center">
<button class="btn btn-danger md-close">Nope!</button>
<a href="login.html" class="btn btn-success md-close">Yeah, I'm sure</a>
</p>
</div>
</div>
</div> <!-- Modal End -->
<!-- Begin page -->
<div id="wrapper">
<!-- Top Bar Start -->
<div class="topbar">
<div class="topbar-left">
<div class="logo">
<h1><a href="#"><img src="assets/img/logo.png" alt="Logo"></a></h1>
</div>
<button class="button-menu-mobile open-left">
<i class="fa fa-bars"></i>
</button>
</div>
<!-- Button mobile view to collapse sidebar menu -->
<div class="navbar navbar-default" role="navigation">
<div class="container">
<div class="navbar-collapse2">
<ul class="nav navbar-nav hidden-xs">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="icon-th"></i></a>
<div class="dropdown-menu grid-dropdown">
<div class="row stacked">
<div class="col-xs-4">
<a href="javascript:;" data-app="notes-app" data-status="active"><i class="icon-edit"></i>Notes</a>
</div>
<div class="col-xs-4">
<a href="javascript:;" data-app="todo-app" data-status="active"><i class="icon-check"></i>Todo List</a>
</div>
<div class="col-xs-4">
<a href="javascript:;" data-app="calc" data-status="inactive"><i class="fa fa-calculator"></i>Calculator</a>
</div>
</div>
<div class="row stacked">
<div class="col-xs-4">
<a href="javascript:;" data-app="weather-widget" data-status="active"><i class="icon-cloud-3"></i>Weather</a>
</div>
<div class="col-xs-4">
<a href="javascript:;" data-app="calendar-widget2" data-status="active"><i class="icon-calendar"></i>Calendar</a>
</div>
<div class="col-xs-4">
<a href="javascript:;" data-app="stock-app" data-status="inactive"><i class="icon-chart-line"></i>Stocks</a>
</div>
</div>
<div class="clearfix"></div>
</div>
</li>
<li class="language_bar dropdown hidden-xs">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">English (US) <i class="fa fa-caret-down"></i></a>
<ul class="dropdown-menu pull-right">
<li><a href="#">German</a></li>
<li><a href="#">French</a></li>
<li><a href="#">Italian</a></li>
<li><a href="#">Spanish</a></li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-right top-navbar">
<li class="dropdown iconify hide-phone">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-globe"></i><span class="label label-danger absolute">4</span></a>
<ul class="dropdown-menu dropdown-message">
<li class="dropdown-header notif-header"><i class="icon-bell-2"></i> New Notifications<a class="pull-right" href="#"><i class="fa fa-cog"></i></a></li>
<li class="unread">
<a href="#">
<p><strong>John Doe</strong> Uploaded a photo <strong>&#34;DSC000254.jpg&#34;</strong>
<br /><i>2 minutes ago</i>
</p>
</a>
</li>
<li class="unread">
<a href="#">
<p><strong>John Doe</strong> Created an photo album <strong>&#34;Fappening&#34;</strong>
<br /><i>8 minutes ago</i>
</p>
</a>
</li>
<li>
<a href="#">
<p><strong>John Malkovich</strong> Added 3 products
<br /><i>3 hours ago</i>
</p>
</a>
</li>
<li>
<a href="#">
<p><strong>Sonata Arctica</strong> Send you a message <strong>&#34;Lorem ipsum dolor...&#34;</strong>
<br /><i>12 hours ago</i>
</p>
</a>
</li>
<li>
<a href="#">
<p><strong>Johnny Depp</strong> Updated his avatar
<br /><i>Yesterday</i>
</p>
</a>
</li>
<li class="dropdown-footer">
<div class="btn-group btn-group-justified">
<div class="btn-group">
<a href="#" class="btn btn-sm btn-primary"><i class="icon-ccw-1"></i> Refresh</a>
</div>
<div class="btn-group">
<a href="#" class="btn btn-sm btn-danger"><i class="icon-trash-3"></i> Clear All</a>
</div>
<div class="btn-group">
<a href="#" class="btn btn-sm btn-success">See All <i class="icon-right-open-2"></i></a>
</div>
</div>
</li>
</ul>
</li>
<li class="dropdown iconify hide-phone">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-envelope"></i><span class="label label-danger absolute">3</span></a>
<ul class="dropdown-menu dropdown-message">
<li class="dropdown-header notif-header"><i class="icon-mail-2"></i> New Messages</li>
<li class="unread">
<a href="#" class="clearfix">
<img src="images/users/chat/2.jpg" class="xs-avatar ava-dropdown" alt="Avatar">
<strong>John Doe</strong><i class="pull-right msg-time">5 minutes ago</i><br />
<p>Duis autem vel eum iriure dolor in hendrerit ...</p>
</a>
</li>
<li class="unread">
<a href="#" class="clearfix">
<img src="images/users/chat/1.jpg" class="xs-avatar ava-dropdown" alt="Avatar">
<strong>Sandra Kraken</strong><i class="pull-right msg-time">22 minutes ago</i><br />
<p>Duis autem vel eum iriure dolor in hendrerit ...</p>
</a>
</li>
<li>
<a href="#" class="clearfix">
<img src="images/users/chat/3.jpg" class="xs-avatar ava-dropdown" alt="Avatar">
<strong>Zoey Lombardo</strong><i class="pull-right msg-time">41 minutes ago</i><br />
<p>Duis autem vel eum iriure dolor in hendrerit ...</p>
</a>
</li>
<li class="dropdown-footer"><div class=""><a href="#" class="btn btn-sm btn-block btn-primary"><i class="fa fa-share"></i> See all messages</a></div></li>
</ul>
</li>
<li class="dropdown iconify hide-phone"><a href="#" onclick="javascript:toggle_fullscreen()"><i class="icon-resize-full-2"></i></a></li>
<li class="dropdown topbar-profile">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="rounded-image topbar-profile-image"><img src="images/users/user-35.jpg"></span> Jane <strong>Doe</strong> <i class="fa fa-caret-down"></i></a>
<ul class="dropdown-menu">
<li><a href="#">My Profile</a></li>
<li><a href="#">Change Password</a></li>
<li><a href="#">Account Setting</a></li>
<li class="divider"></li>
<li><a href="#"><i class="icon-help-2"></i> Help</a></li>
<li><a href="lockscreen.html"><i class="icon-lock-1"></i> Lock me</a></li>
<li><a class="md-trigger" data-modal="logout-modal"><i class="icon-logout-1"></i> Logout</a></li>
</ul>
</li>
<li class="right-opener">
<a href="javascript:;" class="open-right"><i class="fa fa-angle-double-left"></i><i class="fa fa-angle-double-right"></i></a>
</li>
</ul>
</div>
<!--/.nav-collapse -->
</div>
</div>
</div>
<!-- Top Bar End -->
<!-- Left Sidebar Start -->
<div class="left side-menu">
<div class="sidebar-inner slimscrollleft">
<!-- Search form -->
<form role="search" class="navbar-form">
<div class="form-group">
<input type="text" placeholder="Search" class="form-control">
<button type="submit" class="btn search-button"><i class="fa fa-search"></i></button>
</div>
</form>
<div class="clearfix"></div>
<!--- Profile -->
<div class="profile-info">
<div class="col-xs-4">
<a href="profile.html" class="rounded-image profile-image"><img src="images/users/user-100.jpg"></a>
</div>
<div class="col-xs-8">
<div class="profile-text">Welcome <b>Jane</b></div>
<div class="profile-buttons">
<a href="javascript:;"><i class="fa fa-envelope-o pulse"></i></a>
<a href="#connect" class="open-right"><i class="fa fa-comments"></i></a>
<a href="javascript:;" title="Sign Out"><i class="fa fa-power-off text-red-1"></i></a>
</div>
</div>
</div>
<!--- Divider -->
<div class="clearfix"></div>
<hr class="divider" />
<div class="clearfix"></div>
<!--- Divider -->
<div id="sidebar-menu">
<ul><li class='has_sub'><a href='javascript:void(0);'><i class='icon-home-3'></i><span>Dashboard</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='index.html'><span>Dashboard v1</span></a></li><li><a href='index2.html'><span>Dashboard v2</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><i class='icon-feather'></i><span>UI Elements</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='alerts.html' class='active'><span>Alerts</span></a></li><li><a href='buttons.html'><span>Buttons</span></a></li><li><a href='calendar.html'><span>Calendar</span></a></li><li><a href='grid.html'><span>Grid</span></a></li><li><a href='icons.html'><span>Icons</span></a></li><li><a href='modals.html'><span>Modals</span></a></li><li><a href='nested-list.html'><span>Nested List</span></a></li><li><a href='notifications.html'><span>Notifications</span></a></li><li><a href='portlets.html'><span>Portlets</span></a></li><li><a href='progress-bars.html'><span>Progress Bars</span></a></li><li><a href='tabs-accordions.html'><span>Tabs & Accordions</span></a></li><li><a href='typography.html'><span>Typography</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><i class='icon-pencil-3'></i><span>Forms</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='forms.html'><span>Form Elements</span></a></li><li><a href='advanced-forms.html'><span>Advanced Forms</span></a></li><li><a href='form-wizard.html'><span>Form Wizard</span></a></li><li><a href='form-validation.html'><span>Form Validation</span></a></li><li><a href='form-uploads.html'><span>File Uploads</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><i class='fa fa-table'></i><span>Tables</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='tables.html'><span>Basic Tables</span></a></li><li><a href='datatables.html'><span>Datatables</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><i class='fa fa-map-marker'></i><span>Maps</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='google-maps.html'><span>Google Maps</span></a></li><li><a href='vector-maps.html'><span>Vector Maps</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><i class='fa fa-envelope'></i><span>Email</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='inbox.html'><span>Inbox</span></a></li><li><a href='read-message.html'><span>View Email</span></a></li><li><a href='new-message.html'><span>New Message</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><i class='icon-chart-line'></i><span>Charts</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='sparkline-charts.html'><span>Sparkline Charts</span></a></li><li><a href='morris-charts.html'><span>Morris Charts</span></a></li><li><a href='rickshaw-charts.html'><span>Rickshaw Charts</span></a></li><li><a href='other-charts.html'><span>Other Charts</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><i class='icon-megaphone'></i><span>Extras</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='blank.html'><span>Blank Page</span></a></li><li><a href='login.html'><span>Login</span></a></li><li><a href='register.html'><span>Register</span></a></li><li><a href='lockscreen.html'><span>Lock Screen</span></a></li><li><a href='404.html'><span>404 Error</span></a></li><li><a href='500.html'><span>500 Error</span></a></li><li><a href='profile.html'><span>User Profile</span></a></li><li><a href='invoice.html'><span>Invoice</span></a></li><li><a href='gallery.html'><span>Gallery</span></a></li><li><a href='maintenance.html'><span>Maintenance</span></a></li><li class='has_sub'><a href='javascript:void(0);'><span>3 Level menu</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='javascript:void(0);'><span>Sub Item</span></a></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><span>4 Level Menu</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li class='has_sub'><a href='javascript:void(0);'><span>Sub Item - level 3</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='javascript:void(0);'><span>Sub Item - level 4</span></a></li></ul></li></ul></li><li class='has_sub'><a href='javascript:void(0);'><span>Submenu with icons</span> <span class="pull-right"><i class="fa fa-angle-down"></i></span></a><ul><li><a href='javascript:void(0);'><i class='fa fa-camera'></i><span>Item with icon</span></a></li><li><a href='javascript:void(0);'><i class='entypo entypo-users'></i><span>Another Item</span></a></li></ul></li></ul></li></ul> <div class="clearfix"></div>
</div>
<div class="clearfix"></div>
<div class="portlets">
<div id="chat_groups" class="widget transparent nomargin">
<h2>Chat Groups</h2>
<div class="widget-content">
<ul class="list-unstyled">
<li><a href="javascript:;"><i class="fa fa-circle-o text-red-1"></i> Colleagues</a></li>
<li><a href="javascript:;"><i class="fa fa-circle-o text-blue-1"></i> Family</a></li>
<li><a href="javascript:;"><i class="fa fa-circle-o text-green-1"></i> Friends</a></li>
</ul>
</div>
</div>
<div id="recent_tickets" class="widget transparent nomargin">
<h2>Recent Tickets</h2>
<div class="widget-content">
<ul class="list-unstyled">
<li>
<a href="javascript:;">My wordpress blog is broken <span>I was trying to save my page and...</span></a>
</li>
<li>
<a href="javascript:;">Server down, need help!<span>My server is not responding for the last...</span></a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearfix"></div><br><br><br>
</div>
<div class="left-footer">
<div class="progress progress-xs">
<div class="progress-bar bg-green-1" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%">
<span class="progress-precentage">80%</span>
</div>
<a data-toggle="tooltip" title="See task progress" class="btn btn-default md-trigger" data-modal="task-progress"><i class="fa fa-inbox"></i></a>
</div>
</div>
</div>
<!-- Left Sidebar End --> <!-- Right Sidebar Start -->
<div class="right side-menu">
<ul class="nav nav-tabs nav-justified" id="right-tabs">
<li class="active"><a href="#feed" data-toggle="tab" title="Live Feed"><i class="icon-rss-2"></i></a></li>
<li><a href="#connect" data-toggle="tab" title="Chat"><i class="icon-chat"></i></a></li>
<li><a href="#settings" data-toggle="tab" title="Preferences"><i class="icon-wrench"></i></a></li>
</ul>
<div class="clearfix"></div>
<div class="tab-content">
<div class="tab-pane active" id="feed">
<div class="tab-inner slimscroller">
<div class="search-right">
<input type="text" class="form-control" placeholder="Search">
</div>
<div class="right-toolbar">
<a href="javascript:;" class="pull-right">Settings <i class="icon-cog"></i></a>
<div class="clearfix"></div>
</div>
<div class="clearfix"></div>
<div class="panel-group" id="collapse">
<div class="panel panel-default">
<div class="panel-heading bg-orange-1">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#rnotifications">
<i class="icon-bell-2"></i> Notifications
<span class="label bg-darkblue-1 pull-right">4</span>
</a>
</h4>
</div>
<div id="rnotifications" class="panel-collapse collapse in">
<div class="panel-body">
<ul class="list-unstyled" id="notification-list">
<li><a href="javascript:;"><span class="icon-wrapper"><i class="icon-video"></i></span> 1 Video Uploaded <span class="muted">12 minutes ago</span></a></li>
<li><a href="javascript:;"><span class="icon-wrapper"><i class="icon-users-1"></i></span> 3 Users signed up <span class="muted">16 minutes ago</span></a></li>
<li><a href="javascript:;"><span class="icon-wrapper"><i class="icon-picture-1"></i></span> 1 Video Uploaded <span class="muted">12 minutes ago</span></a></li>
<li><a href="javascript:;"><span class="icon-wrapper"><i class="icon-hourglass-1"></i></span> Deadline for 1 project <span class="muted">12 minutes ago</span></a></li>
</ul>
<a class="btn btn-block btn-sm btn-warning">See all notifications</a>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading bg-green-3">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#remails">
<i class="icon-mail"></i> E-mails
<span class="label bg-darkblue-1 pull-right">3</span>
</a>
</h4>
</div>
<div id="remails" class="panel-collapse collapse in">
<div class="panel-body">
<ul class="list-unstyled" id="inbox-list">
<li><a href="javascript:;"><span class="sender"><i class="icon-star text-yellow-2"></i> Kim Wilde</span> <span class="datetime">6 mins ago</span>
<span class="title">You keep me hangin on</span>
<span class="content">Where are you? I am waiting for 3 hours in the restaurant. I ate 3 hamburgers.</span>
</a></li>
<li><a href="javascript:;"><span class="sender">Tyler Durden</span> <span class="datetime">13 hours ago</span>
<span class="title">Buy some soap from market before</span>
<span class="content">We are crowded here. We need some more soap at home. Buy some before you come home.</span>
</a></li>
<li><a href="javascript:;"><span class="sender">John Bonomo</span> <span class="datetime">Yesterday</span>
<span class="title">Late delivery</span>
<span class="content">Hello, I ordered 15 box of viagra for a friend of mine but he still hasn't receive them.</span>
</a></li>
</ul>
<a class="btn btn-block btn-sm btn-primary">Go to inbox</a>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading bg-blue-1">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#rupdates">
<i class="icon-signal-2"></i> Updates
<span class="label bg-darkblue-1 pull-right">5</span>
</a>
</h4>
</div>
<div id="rupdates" class="panel-collapse collapse in">
<div class="panel-body">
<ul class="list-unstyled" id="updates-list">
<li><a href="javascript:;"><span class="icon-wrapper bg-green-1"><i class="icon-comment-1"></i></span> <b>David Guetta</b> came online <abbr title="15 seconds ago">just now</abbr>.</a></li>
<li><a href="javascript:;"><span class="icon-wrapper bg-red-1"><i class="icon-user-3"></i></span> <b>Katy Perry</b> updated her profile <abbr title="4 mins ago">4 mins ago</abbr>.</a></li>
<li><a href="javascript:;"><span class="icon-wrapper bg-blue-1"><i class="icon-twitter-2"></i></span> <b>4 tweets posted</b> with cronjob <abbr title="22 mins ago">22 mins ago</abbr>.</a></li>
<li><a href="javascript:;"><span class="icon-wrapper bg-orange-3"><i class="icon-water"></i></span> <b>Adele</b> set fire to the rain <abbr title="43 mins ago">43 mins ago</abbr>.</a></li>
<li><a href="javascript:;"><span class="icon-wrapper bg-pink-2"><i class="icon-heart-broken"></i></span> <b>Taylor Swift</b> learned that you are trouble <abbr title="3 hours ago">3 days ago</abbr>.</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane" id="connect">
<div class="tab-inner slimscroller">
<div class="search-right">
<input type="text" class="form-control" placeholder="Search">
</div>
<div class="panel-group" id="collapse">
<div class="panel panel-default" id="chat-panel">
<div class="panel-heading bg-darkblue-2">
<h4 class="panel-title">
<a data-toggle="collapse" href="#chat-coll">
<i class="icon-briefcase-1"></i> Colleagues
<span class="label bg-darkblue-1 pull-right">14</span>
</a>
</h4>
</div>
<div id="chat-coll" class="panel-collapse collapse in">
<div class="panel-body">
<ul class="list-unstyled" id="chat-list">
<li><a href="javascript:;" class="online"><span class="chat-user-avatar"><img src="images/users/chat/1.jpg"></span> <span class="chat-user-name">Dorothy Simons</span><span class="chat-user-msg">I wish I was a bird in the sky</span></a></li>
<li><a href="javascript:;" class="online"><span class="chat-user-avatar"><img src="images/users/chat/2.jpg"></span> <span class="chat-user-name">John Malkovich</span><span class="chat-user-msg">You were the traitor</span></a></li>
<li><a href="javascript:;" class="online"><span class="chat-user-avatar"><img src="images/users/chat/3.jpg"></span> <span class="chat-user-name">Jessica Simons</span><span class="chat-user-msg">Where is my mind</span></a></li>
<li><a href="javascript:;" class="away"><span class="chat-user-avatar"><img src="images/users/chat/4.jpg"></span> <span class="chat-user-name">Jack Stallman</span><span class="chat-user-msg">Away since 13:32</span></a></li>
<li><a href="javascript:;" class="offline"><span class="chat-user-avatar"><img src="images/users/chat/5.jpg"></span> <span class="chat-user-name">Neil Armstrong</span><span class="chat-user-msg" title="I am flying to the moon and back">I am flying to the moon and back</span></a></li>
<li><a href="javascript:;" class="offline"><span class="chat-user-avatar"><img src="images/users/chat/6.jpg"></span> <span class="chat-user-name">Hollywood Studios</span><span class="chat-user-msg">Yes he definitely is!</span></a></li>
</ul>
</div>
</div>
</div>
<div class="panel panel-default" id="chat-panel">
<div class="panel-heading bg-darkblue-2">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
<i class="icon-heart-3"></i> Friends
<span class="label bg-darkblue-1 pull-right">3</span>
</a>
</h4>
</div>
<div id="collapseTwo" class="panel-collapse collapse in">
<div class="panel-body">
<ul class="list-unstyled" id="chat-list">
<li><a href="javascript:;" class="online"><span class="chat-user-avatar"><img src="images/users/chat/1.jpg"></span> <span class="chat-user-name">Dorothy Simons</span><span class="chat-user-msg">I wish I was a bird in the sky</span></a></li>
<li><a href="javascript:;" class="online"><span class="chat-user-avatar"><img src="images/users/chat/2.jpg"></span> <span class="chat-user-name">John Malkovich</span><span class="chat-user-msg">You were the traitor</span></a></li>
<li><a href="javascript:;" class="online"><span class="chat-user-avatar"><img src="images/users/chat/3.jpg"></span> <span class="chat-user-name">Jessica Simons</span><span class="chat-user-msg" title="Eminem - The Monster ft. Rihanna"><i class="icon-play"></i> Eminem - The Monster ft. Rihanna</span></a></li>
<li><a href="javascript:;" class="away"><span class="chat-user-avatar"><img src="images/users/chat/4.jpg"></span> <span class="chat-user-name">Jack Stallman</span><span class="chat-user-msg">Away since 13:32</span></a></li>
<li><a href="javascript:;" class="offline"><span class="chat-user-avatar"><img src="images/users/chat/5.jpg"></span> <span class="chat-user-name">Neil Armstrong</span><span class="chat-user-msg" title="I am flying to the moon and back">I am flying to the moon and back</span></a></li>
<li><a href="javascript:;" class="offline"><span class="chat-user-avatar"><img src="images/users/chat/6.jpg"></span> <span class="chat-user-name">Hollywood Studios</span><span class="chat-user-msg">Yes he definitely is!</span></a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane" id="settings">
<div class="tab-inner slimscroller">
<div class="col-sm-12">
<h3>Preferences</h3>
<div class="row">
<div class="col-xs-8">
Live data updates
</div>
<div class="col-xs-4">
<input type="checkbox" class="ios-switch ios-switch-success ios-switch-sm" checked />
</div>
</div>
<div class="row">
<div class="col-xs-8">
Live feeds
</div>
<div class="col-xs-4">
<input type="checkbox" class="ios-switch ios-switch-success ios-switch-sm" checked />
</div>
</div>
<div class="row">
<div class="col-xs-8">
Sync data to cloud
</div>
<div class="col-xs-4">
<input type="checkbox" class="ios-switch ios-switch-success ios-switch-sm" checked />
</div>
</div>
<div class="row">
<div class="col-xs-8">
Keep activity record
</div>
<div class="col-xs-4">
<input type="checkbox" class="ios-switch ios-switch-danger ios-switch-sm" checked />
</div>
</div>
<h4>Other Settings</h4>
<div class="row">
<div class="col-xs-12">
<label class="checkboxw"><input type="checkbox" checked> Autosave settings</label>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<label class="checkboxw"><input type="checkbox"> Always online</label>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Right Sidebar End -->
<!-- Start right content -->
<div class="content-page">
<!-- ============================================================== -->
<!-- Start Content here -->
<!-- ============================================================== -->
<div class="content">
<!-- Page Heading Start -->
<div class="page-heading">
<h1><i class='fa fa-bell'></i> Alerts</h1>
<h3>Inner Alert & Notification Elements</h3> </div>
<!-- Page Heading End--> <div class="row">
<div class="col-md-6 portlets">
<div class="widget">
<div class="widget-header ">
<h2>Standard Alert Elements</h2>
<div class="additional-btn">
<a href="#" class="hidden reload"><i class="icon-ccw-1"></i></a>
<a href="#" class="widget-toggle"><i class="icon-down-open-2"></i></a>
<a href="#" class="widget-close"><i class="icon-cancel-3"></i></a>
</div>
</div>
<div class="widget-content padding">
<div class="alert alert-success">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
<div class="alert alert-info">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
<div class="alert alert-warning">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
<div class="alert alert-danger nomargin">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
</div>
</div>
</div>
<div class="col-md-6 portlets">
<div class="widget">
<div class="widget-header ">
<h2>Dismissable Alert Elements</h2>
<div class="additional-btn">
<a href="#" class="hidden reload"><i class="icon-ccw-1"></i></a>
<a href="#" class="widget-toggle"><i class="icon-down-open-2"></i></a>
<a href="#" class="widget-close"><i class="icon-cancel-3"></i></a>
</div>
</div>
<div class="widget-content padding">
<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
<div class="alert alert-info alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
<div class="alert alert-warning alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. <a href="#" class="alert-link">Alert Link</a>.
</div>
<div class="alert alert-info fade in nomargin">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<h4>Big one!</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.</p>
<p>
<button type="button" class="btn btn-info">Wanna do this</button>
<button type="button" class="btn btn-white">Or do this</button>
</p>
</div>
</div>
</div>
</div>
</div>
<!-- Footer Start -->
<footer>
Huban Creative &copy; 2014
<div class="footer-links pull-right">
<a href="#">About</a><a href="#">Support</a><a href="#">Terms of Service</a><a href="#">Legal</a><a href="#">Help</a><a href="#">Contact Us</a>
</div>
</footer>
<!-- Footer End -->
</div>
<!-- ============================================================== -->
<!-- End content here -->
<!-- ============================================================== -->
</div>
<!-- End right content -->
</div>
<!-- End of page -->
<!-- the overlay modal element -->
<div class="md-overlay"></div>
<!-- End of eoverlay modal -->
<script>
var resizefunc = [];
</script>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="assets/libs/jquery/jquery-1.11.1.min.js"></script>
<script src="assets/libs/bootstrap/js/bootstrap.min.js"></script>
<script src="assets/libs/jqueryui/jquery-ui-1.10.4.custom.min.js"></script>
<script src="assets/libs/jquery-ui-touch/jquery.ui.touch-punch.min.js"></script>
<script src="assets/libs/jquery-detectmobile/detect.js"></script>
<script src="assets/libs/jquery-animate-numbers/jquery.animateNumbers.js"></script>
<script src="assets/libs/ios7-switch/ios7.switch.js"></script>
<script src="assets/libs/fastclick/fastclick.js"></script>
<script src="assets/libs/jquery-blockui/jquery.blockUI.js"></script>
<script src="assets/libs/bootstrap-bootbox/bootbox.min.js"></script>
<script src="assets/libs/jquery-slimscroll/jquery.slimscroll.js"></script>
<script src="assets/libs/jquery-sparkline/jquery-sparkline.js"></script>
<script src="assets/libs/nifty-modal/js/classie.js"></script>
<script src="assets/libs/nifty-modal/js/modalEffects.js"></script>
<script src="assets/libs/sortable/sortable.min.js"></script>
<script src="assets/libs/bootstrap-fileinput/bootstrap.file-input.js"></script>
<script src="assets/libs/bootstrap-select/bootstrap-select.min.js"></script>
<script src="assets/libs/bootstrap-select2/select2.min.js"></script>
<script src="assets/libs/magnific-popup/jquery.magnific-popup.min.js"></script>
<script src="assets/libs/pace/pace.min.js"></script>
<script src="assets/libs/bootstrap-datepicker/js/bootstrap-datepicker.js"></script>
<script src="assets/libs/jquery-icheck/icheck.min.js"></script>
<!-- Demo Specific JS Libraries -->
<script src="assets/libs/prettify/prettify.js"></script>
<script src="assets/js/init.js"></script>
</body>
</html>

@ -0,0 +1,263 @@
/*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;}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

@ -0,0 +1,85 @@
// 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();
}
}

@ -0,0 +1,104 @@
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("<li><a href='javascript:;' class='note-trunc' rel='"+localStorage.key(ids[x])+"'>"+note+"</a><div class='btn-group pull-right'><a class='btn btn-sm btn-link kill-note' rel='"+localStorage.key(ids[x])+"'><i class='icon-trash'></i></a></div></li>");
}
}
function guidGenerator() {
var d = new Date().getTime();
d = 9999999999999-d;
var S4 = function() {
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
};
return "coco-note-"+(d+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
if (typeof String.prototype.startsWith != 'function') {
// see below for better implementation!
String.prototype.startsWith = function (str){
return this.indexOf(str) == 0;
};
}
String.prototype.truncate = function(m) {
return (this.length > m)
? jQuery.trim(this).substring(0, m) + "..."
: this;
};

@ -0,0 +1,80 @@
$(document).ready(function(){
$.fn.editable.defaults.mode = 'inline';
$(".todo-list").sortable({
cancel: ".done",
axis: "y",
cursor: "move",
forcePlaceholderSize: true
});
$(document).on("ifChecked", ".check-icon input", function(){
var parent = $(this).parents("li:first");
$(parent).addClass("done");
$(parent).data("orig-order",$(parent).index()).insertAfter($(".todo-list li:last"));
$('.todo-item',parent).editable("toggleDisabled");
});
$(document).on("ifUnchecked", ".check-icon input", function(){
var parent = $(this).parents("li:first");
$(parent).removeClass("done");
if($(parent).data("orig-order")){
$(parent).insertAfter($(".todo-list li:eq("+($(parent).data("orig-order")-1)+")"));
}
$('.todo-item',parent).editable("toggleDisabled");
});
$(document).on("click",".add-todo", function(){
var $item = '<li class="animated bounceInDown">'+
'<span class="check-icon"><input type="checkbox" /></span>'+
'<span class="todo-item">New item</span>'+
'<span class="todo-options pull-right">'+
'<a href="javascript:;" class="todo-delete"><i class="icon-cancel-3"></i></a>'+
'</span>'+
'</li>';
$(".todo-list").append($item);
$('input').iCheck({
checkboxClass: 'icheckbox_square-aero',
radioClass: 'iradio_square-aero',
increaseArea: '20%'
});
$('.todo-list .todo-item').editable({
type: 'text'
});
window.setTimeout(function () {
$(".todo-list li").removeClass("animated");
}, 500);
});
$(document).on("click", ".todo-delete", function(){
var parent = $(this).parents("li:first");
$(parent).hide(200);
})
var $contextMenu = $("#contextMenu");
var $rowClicked;
$(document).on("contextmenu", ".todo-list li", function (e) {
$rowClicked = $(this)
$contextMenu.css({
display: "block",
left: e.pageX,
top: e.pageY
});
return false;
});
$contextMenu.on("click", "a", function () {
$rowClicked.removeAttr("class").addClass($(this).data("priority"));
$contextMenu.hide();
});
$(document).click(function () {
$contextMenu.hide();
});
$('.todo-list .todo-item').editable({
type: 'text'
});
});

@ -0,0 +1,408 @@
var w;
var h;
var dw;
var dh;
function executeFunctionByName(functionName, context /*, args */) {
var args = [].slice.call(arguments).splice(2);
var namespaces = functionName.split(".");
var func = namespaces.pop();
for(var i = 0; i < namespaces.length; i++) {
context = context[namespaces[i]];
}
return context[func].apply(this, args);
}
var changeptype = function(){
w = $(window).width();
h = $(window).height();
dw = $(document).width();
dh = $(document).height();
if(jQuery.browser.mobile === true){
$("body").addClass("mobile").removeClass("fixed-left");
}
if(!$("#wrapper").hasClass("forced")){
if(w > 990){
$("body").removeClass("smallscreen").addClass("widescreen");
$("#wrapper").removeClass("enlarged");
}else{
$("body").removeClass("widescreen").addClass("smallscreen");
$("#wrapper").addClass("enlarged");
$(".left ul").removeAttr("style");
}
if($("#wrapper").hasClass("enlarged") && $("body").hasClass("fixed-left")){
$("body").removeClass("fixed-left").addClass("fixed-left-void");
}else if(!$("#wrapper").hasClass("enlarged") && $("body").hasClass("fixed-left-void")){
$("body").removeClass("fixed-left-void").addClass("fixed-left");
}
}
toggle_slimscroll(".slimscrollleft");
}
$(document).ready(function(){
FastClick.attach(document.body);
resizefunc.push("initscrolls");
resizefunc.push("changeptype");
$('.sparkline').sparkline('html', { enableTagOptions: true });
$('.animate-number').each(function(){
$(this).animateNumbers($(this).attr("data-value"), true, parseInt($(this).attr("data-duration")));
})
//TOOLTIP
$('body').tooltip({
selector: "[data-toggle=tooltip]",
container: "body"
});
//RESPONSIVE SIDEBAR
$(".open-right").click(function(e){
$("#wrapper").toggleClass("open-right-sidebar");
e.stopPropagation();
$("body").trigger("resize");
});
$(".open-left").click(function(e){
e.stopPropagation();
$("#wrapper").toggleClass("enlarged");
$("#wrapper").addClass("forced");
if($("#wrapper").hasClass("enlarged") && $("body").hasClass("fixed-left")){
$("body").removeClass("fixed-left").addClass("fixed-left-void");
}else if(!$("#wrapper").hasClass("enlarged") && $("body").hasClass("fixed-left-void")){
$("body").removeClass("fixed-left-void").addClass("fixed-left");
}
if($("#wrapper").hasClass("enlarged")){
$(".left ul").removeAttr("style");
}else{
$(".subdrop").siblings("ul:first").show();
}
toggle_slimscroll(".slimscrollleft");
$("body").trigger("resize");
});
// LEFT SIDE MAIN NAVIGATION
$("#sidebar-menu a").on('click',function(e){
if(!$("#wrapper").hasClass("enlarged")){
if($(this).parent().hasClass("has_sub")) {
e.preventDefault();
}
if(!$(this).hasClass("subdrop")) {
// hide any open menus and remove all other classes
$("ul",$(this).parents("ul:first")).slideUp(350);
$("a",$(this).parents("ul:first")).removeClass("subdrop");
$("#sidebar-menu .pull-right i").removeClass("fa-angle-up").addClass("fa-angle-down");
// open our new menu and add the open class
$(this).next("ul").slideDown(350);
$(this).addClass("subdrop");
$(".pull-right i",$(this).parents(".has_sub:last")).removeClass("fa-angle-down").addClass("fa-angle-up");
$(".pull-right i",$(this).siblings("ul")).removeClass("fa-angle-up").addClass("fa-angle-down");
}else if($(this).hasClass("subdrop")) {
$(this).removeClass("subdrop");
$(this).next("ul").slideUp(350);
$(".pull-right i",$(this).parent()).removeClass("fa-angle-up").addClass("fa-angle-down");
//$(".pull-right i",$(this).parents("ul:eq(1)")).removeClass("fa-chevron-down").addClass("fa-chevron-left");
}
}
});
// NAVIGATION HIGHLIGHT & OPEN PARENT
$("#sidebar-menu ul li.has_sub a.active").parents("li:last").children("a:first").addClass("active").trigger("click");
//WIDGET ACTIONS
$(".widget-header .widget-close").on("click",function(event){
event.preventDefault();
$item = $(this).parents(".widget:first");
bootbox.confirm("Are you sure to remove this widget?", function(result) {
if(result === true){
$item.addClass("animated bounceOutUp");
window.setTimeout(function () {
if($item.data("is-app")){
$item.removeClass("animated bounceOutUp");
if($item.hasClass("ui-draggable")){
$item.find(".widget-popout").click();
}
$item.hide();
$("a[data-app='"+$item.attr("id")+"']").addClass("clickable");
}else{
$item.remove();
}
}, 300);
}
});
});
$(document).on("click", ".widget-header .widget-toggle", function(event){
event.preventDefault();
$(this).toggleClass("closed").parents(".widget:first").find(".widget-content").slideToggle();
});
$(document).on("click", ".widget-header .widget-popout", function(event){
event.preventDefault();
var widget = $(this).parents(".widget:first");
if(widget.hasClass("modal-widget")){
$("i",this).removeClass("icon-window").addClass("icon-publish");
widget.removeAttr("style").removeClass("modal-widget");
widget.find(".widget-maximize,.widget-toggle").removeClass("nevershow");
widget.draggable("destroy").resizable("destroy");
}else{
widget.removeClass("maximized");
widget.find(".widget-maximize,.widget-toggle").addClass("nevershow");
$("i",this).removeClass("icon-publish").addClass("icon-window");
var w = widget.width();
var h = widget.height();
widget.addClass("modal-widget").removeAttr("style").width(w).height(h);
$(widget).draggable({ handle: ".widget-header",containment: ".content-page" }).css({"left":widget.position().left-2,"top":widget.position().top-2}).resizable({minHeight: 150,minWidth: 200});
}
window.setTimeout(function () {
$("body").trigger("resize");
},300);
});
$("a[data-app]").each(function(e){
var app = $(this).data("app");
var status = $(this).data("status");
$("#"+app).data("is-app",true);
if(status == "inactive"){
$("#"+app).hide();
$(this).addClass("clickable");
}
});
$(document).on("click", "a[data-app].clickable", function(event){
event.preventDefault();
$(this).removeClass("clickable");
var app = $(this).data("app");
$("#"+app).show();
$("#"+app+" .widget-popout").click();
topd = $("#"+app).offset().top - $(window).scrollTop();
$("#"+app).css({"left":"10","top":-(topd-60)+"px"}).addClass("fadeInDown animated");
window.setTimeout(function () {
$("#"+app).removeClass("fadeInDown animated");
}, 300);
});
$(document).on("click", ".widget", function(){
if($(this).hasClass("modal-widget")){
$(".modal-widget").css("z-index",5);
$(this).css("z-index",6);
}
});
$(document).on("click", '.widget .reload', function (event) {
event.preventDefault();
var el = $(this).parents(".widget:first");
blockUI(el);
window.setTimeout(function () {
unblockUI(el);
}, 1000);
});
$(document).on("click", ".widget-header .widget-maximize", function(event){
event.preventDefault();
$(this).parents(".widget:first").removeAttr("style").toggleClass("maximized");
$("i",this).toggleClass("icon-resize-full-1").toggleClass("icon-resize-small-1");
$(this).parents(".widget:first").find(".widget-toggle").toggleClass("nevershow");
$("body").trigger("resize");
return false;
});
$( ".portlets" ).sortable({
connectWith: ".portlets",
handle: ".widget-header",
cancel: ".modal-widget",
opacity: 0.5,
dropOnEmpty: true,
forcePlaceholderSize: true,
receive: function(event, ui) {$("body").trigger("resize")}
});
// Init Code Highlighter
prettyPrint();
//RUN RESIZE ITEMS
$(window).resize(debounce(resizeitems,100));
$("body").trigger("resize");
//SELECT
$('.selectpicker').selectpicker();
//FILE INPUT
$('input[type=file]').bootstrapFileInput();
//DATE PICKER
$('.datepicker-input').datepicker();
//ICHECK
$('input:not(.ios-switch)').iCheck({
checkboxClass: 'icheckbox_square-aero',
radioClass: 'iradio_square-aero',
increaseArea: '20%' // optional
});
// IOS7 SWITCH
$(".ios-switch").each(function(){
mySwitch = new Switch(this);
});
//GALLERY
$('.gallery-wrap').each(function() { // the containers for all your galleries
$(this).magnificPopup({
delegate: 'a.zooming', // the selector for gallery item
type: 'image',
removalDelay: 300,
mainClass: 'mfp-fade',
gallery: {
enabled:true
}
});
});
});
var debounce = function(func, wait, immediate) {
var timeout, result;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) result = func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) result = func.apply(context, args);
return result;
};
}
function resizeitems(){
if($.isArray(resizefunc)){
for (i = 0; i < resizefunc.length; i++) {
window[resizefunc[i]]();
}
}
}
function initscrolls(){
if(jQuery.browser.mobile !== true){
//SLIM SCROLL
$('.slimscroller').slimscroll({
height: 'auto',
size: "5px"
});
$('.slimscrollleft').slimScroll({
height: 'auto',
position: 'left',
size: "5px",
color: '#7A868F'
});
}
}
function toggle_slimscroll(item){
if($("#wrapper").hasClass("enlarged")){
$(item).css("overflow","inherit").parent().css("overflow","inherit");
$(item). siblings(".slimScrollBar").css("visibility","hidden");
}else{
$(item).css("overflow","hidden").parent().css("overflow","hidden");
$(item). siblings(".slimScrollBar").css("visibility","visible");
}
}
function nifty_modal_alert(effect,header,text){
var randLetter = String.fromCharCode(65 + Math.floor(Math.random() * 26));
var uniqid = randLetter + Date.now();
$modal = '<div class="md-modal md-effect-'+effect+'" id="'+uniqid+'">';
$modal += '<div class="md-content">';
$modal += '<h3>'+header+'</h3>';
$modal += '<div class="md-modal-body">'+text;
$modal += '</div>';
$modal += '</div>';
$modal += '</div>';
$("body").prepend($modal);
window.setTimeout(function () {
$("#"+uniqid).addClass("md-show");
$(".md-overlay,.md-close").click(function(){
$("#"+uniqid).removeClass("md-show");
window.setTimeout(function () {$("#"+uniqid).remove();},500);
});
},100);
return false;
}
function blockUI(item) {
$(item).block({
message: '<div class="loading"></div>',
css: {
border: 'none',
width: '14px',
backgroundColor: 'none'
},
overlayCSS: {
backgroundColor: '#fff',
opacity: 0.4,
cursor: 'wait'
}
});
}
function unblockUI(item) {
$(item).unblock();
}
function toggle_fullscreen(){
var fullscreenEnabled = document.fullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled;
if(fullscreenEnabled){
if(!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) {
launchIntoFullscreen(document.documentElement);
}else{
exitFullscreen();
}
}
}
// Thanks to http://davidwalsh.name/fullscreen
function launchIntoFullscreen(element) {
if(element.requestFullscreen) {
element.requestFullscreen();
} else if(element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if(element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if(element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}
function exitFullscreen() {
if(document.exitFullscreen) {
document.exitFullscreen();
} else if(document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if(document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,126 @@
$(function () {
function runCalendar() {
var $modal = $('#event-modal');
$('#draggable-events div.draggable-event').each(function () {
// create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/)
// it doesn't need to have a start or end
var eventObject = {
title: $.trim($(this).text()) // use the element's text as the event title
};
// store the Event Object in the DOM element so we can get to it later
$(this).data('eventObject', eventObject);
// make the event draggable using jQuery UI
$(this).draggable({
zIndex: 999,
revert: true, // will cause the event to go back to its
revertDuration: 20 // original position after the drag
});
});
/* Initialize the calendar */
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
var form = '';
var calendar = $('#calendar').fullCalendar({
slotDuration: '00:15:00', /* If we want to split day time each 15minutes */
minTime: '08:00:00',
maxTime: '19:00:00',
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
events: [{
title: 'Take your pills!',
start: new Date(y, m, 2),
className: 'bg-darkblue-2'
}, {
title: 'Visit Doctor',
start: '2014-05-15 14:00:00',
start: '2014-05-15 15:00:00',
className: 'bg-red-1'
}],
editable: true,
droppable: true, // this allows things to be dropped onto the calendar !!!
drop: function (date, allDay) { // this function is called when something is dropped
// retrieve the dropped element's stored Event Object
var originalEventObject = $(this).data('eventObject');
var $categoryClass = $(this).attr('data-class');
// we need to copy it, so that multiple events don't have a reference to the same object
var copiedEventObject = $.extend({}, originalEventObject);
// assign it the date that was reported
copiedEventObject.start = date;
copiedEventObject.allDay = allDay;
if ($categoryClass)
copiedEventObject['className'] = [$categoryClass];
// render the event on the calendar
// the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)
$('#calendar').fullCalendar('renderEvent', copiedEventObject, true);
// is the "remove after drop" checkbox checked?
if ($('#drop-remove').is(':checked')) {
// if so, remove the element from the "Draggable Events" list
$(this).remove();
}
},
selectable: true,
eventClick: function (calEvent, jsEvent, view) {
var form = $("<form></form>");
form.append("<label>Change event name</label>");
form.append("<div class='input-group'><input class='form-control' type=text value='" + calEvent.title + "' /><span class='input-group-btn'><button type='submit' class='btn btn-success'><i class='fa fa-check'></i> Save Changes</button></span></div>");
$modal.modal({
backdrop: 'static'
});
$modal.find('.delete-event').show().end().find('.save-event').hide().end().find('.modal-body').empty().prepend(form).end().find('.delete-event').unbind('click').click(function () {
calendar.fullCalendar('removeEvents', function (ev) {
return (ev._id == calEvent._id);
});
$modal.modal('hide');
});
$modal.find('form').on('submit', function () {
calEvent.title = form.find("input[type=text]").val();
calendar.fullCalendar('updateEvent', calEvent);
$modal.modal('hide');
return false;
});
},
select: function (start, end, allDay) {
$modal.modal({
backdrop: 'static'
});
form = $("<form></form>");
form.append("<div class='row'></div>");
form.find(".row").append("<div class='col-md-6'><div class='form-group'><label class='control-label'>Event Name</label><input class='form-control' placeholder='Insert Event Name' type='text' name='title'/></div></div>").append("<div class='col-md-6'><div class='form-group'><label class='control-label'>Category</label><select class='form-control' name='category'></select></div></div>").find("select[name='category']").append("<option value='bg-red'>Work</option>")
.append("<option value='bg-green-1'>Entertainment</option>").append("<option value='bg-pink-1'>Meeting</option>").append("<option value='bg-lightblue-1'>Lunch</option>").append("<option value='bg-red-1'>Work</option>").append("<option value='bg-blue-1'>Sport</option>");
$modal.find('.delete-event').hide().end().find('.save-event').show().end().find('.modal-body').empty().prepend(form).end().find('.save-event').unbind('click').click(function () {
form.submit();
});
$modal.find('form').on('submit', function () {
title = form.find("input[name='title']").val();
$categoryClass = form.find("select[name='category'] option:checked").val();
if (title !== null && title.length != 0) {
calendar.fullCalendar('renderEvent', {
title: title,
start: start,
end: end,
allDay: false,
className: $categoryClass
}, true);
}
else{
alert('You need a title for the event!');
}
$modal.modal('hide');
return false;
});
calendar.fullCalendar('unselect');
}
});
}
runCalendar();
});

@ -0,0 +1,60 @@
$(function(){
$("#datatables-1").dataTable();
var table = $('#datatables-2').DataTable();
$("#datatables-2 tfoot th").each( function ( i ) {
var select = $('<select class="form-control input-sm"><option value=""></option></select>')
.appendTo( $(this).empty() )
.on( 'change', function () {
table.column( i )
.search( '^'+$(this).val()+'$', true, false )
.draw();
} );
table.column( i ).data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
} );
} );
$('#datatables-3').dataTable( {
"footerCallback": function ( row, data, start, end, display ) {
var api = this.api(), data;
// Remove the formatting to get integer data for summation
var intVal = function ( i ) {
return typeof i === 'string' ?
i.replace(/[\$,]/g, '')*1 :
typeof i === 'number' ?
i : 0;
};
// Total over all pages
data = api.column( 4 ).data();
total = data.length ?
data.reduce( function (a, b) {
return intVal(a) + intVal(b);
} ) :
0;
// Total over this page
data = api.column( 4, { page: 'current'} ).data();
pageTotal = data.length ?
data.reduce( function (a, b) {
return intVal(a) + intVal(b);
} ) :
0;
// Update footer
$( api.column( 4 ).footer() ).html(
'$'+pageTotal +' ( $'+ total +' total)'
);
}
} );
$('#datatables-4').DataTable( {
dom: 'T<"clear">lfrtip',
tableTools: {
"sSwfPath": "./assets/libs/jquery-datatables/extensions/TableTools/swf/copy_csv_xls_pdf.swf"
}
} );
})

@ -0,0 +1,290 @@
$(document).ready(function() {
// Generate a simple captcha
function randomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
};
$('#captchaOperation').html([randomNumber(1, 20), '+', randomNumber(1, 30), '='].join(' '));
//EXAMPLE REGISTER FORM
$('#registerForm').bootstrapValidator({
message: 'This value is not valid',
fields: {
username: {
message: 'The username is not valid',
validators: {
notEmpty: {
message: 'The username is required and can\'t be empty'
},
stringLength: {
min: 6,
max: 30,
message: 'The username must be more than 6 and less than 30 characters long'
},
regexp: {
regexp: /^[a-zA-Z0-9_\.]+$/,
message: 'The username can only consist of alphabetical, number, dot and underscore'
},
different: {
field: 'password',
message: 'The username and password can\'t be the same as each other'
}
}
},
email: {
validators: {
notEmpty: {
message: 'The email address is required and can\'t be empty'
},
emailAddress: {
message: 'The input is not a valid email address'
}
}
},
password: {
validators: {
notEmpty: {
message: 'The password is required and can\'t be empty'
},
identical: {
field: 'confirmPassword',
message: 'The password and its confirm are not the same'
},
different: {
field: 'username',
message: 'The password can\'t be the same as username'
}
}
},
confirmPassword: {
validators: {
notEmpty: {
message: 'The confirm password is required and can\'t be empty'
},
identical: {
field: 'password',
message: 'The password and its confirm are not the same'
},
different: {
field: 'username',
message: 'The password can\'t be the same as username'
}
}
},
phoneNumber: {
validators: {
digits: {
message: 'The value can contain only digits'
}
}
},
acceptTerms: {
validators: {
notEmpty: {
message: 'You have to accept the terms and policies'
}
}
},
captcha: {
validators: {
callback: {
message: 'Wrong answer',
callback: function(value, validator) {
var items = $('#captchaOperation').html().split(' '), sum = parseInt(items[0]) + parseInt(items[2]);
return value == sum;
}
}
}
}
}
});
//EXAMPLE CONTACT FORM
$('#contactForm').bootstrapValidator({
message: 'This value is not valid',
fields: {
name: {
message: 'Name is not valid',
validators: {
notEmpty: {
message: 'Name is required and can\'t be empty'
},
regexp: {
regexp: /^[a-zA-Z0-9_\.]+$/,
message: 'Name can only consist of alphabetical, number, dot and underscore'
}
}
},
email: {
validators: {
notEmpty: {
message: 'The email address is required and can\'t be empty'
},
emailAddress: {
message: 'The input is not a valid email address'
}
}
},
website: {
validators: {
uri: {
message: 'The input is not a valid URL'
}
}
},
Contactmessage: {
validators: {
notEmpty: {
message: 'Message is required and can\'t be empty'
},
stringLength: {
min: 6,
message: 'Message must be more than 6 characters long'
}
}
},
captcha: {
validators: {
callback: {
message: 'Wrong answer',
callback: function(value, validator) {
var items = $('#captchaOperation').html().split(' '), sum = parseInt(items[0]) + parseInt(items[2]);
return value == sum;
}
}
}
}
}
});
//Regular expression based validators
$('#ExpressionValidator').bootstrapValidator({
message: 'This value is not valid',
fields: {
email: {
validators: {
notEmpty: {
message: 'The email address is required and can\'t be empty'
},
emailAddress: {
message: 'The input is not a valid email address'
}
}
},
website: {
validators: {
uri: {
message: 'The input is not a valid URL'
}
}
},
phoneNumber: {
validators: {
digits: {
message: 'The value can contain only digits'
}
}
},
color: {
validators: {
hexColor: {
message: 'The input is not a valid hex color'
}
}
},
zipCode: {
validators: {
usZipCode: {
message: 'The input is not a valid US zip code'
}
}
}
}
});
//Regular expression based validators
$('#NotEmptyValidator').bootstrapValidator({
message: 'This value is not valid',
fields: {
username: {
message: 'The username is not valid',
validators: {
notEmpty: {
message: 'The username is required and can\'t be empty'
},
stringLength: {
min: 6,
max: 30,
message: 'The username must be more than 6 and less than 30 characters long'
},
regexp: {
regexp: /^[a-zA-Z0-9_\.]+$/,
message: 'The username can only consist of alphabetical, number, dot and underscore'
}
}
},
country: {
validators: {
notEmpty: {
message: 'The country is required and can\'t be empty'
}
}
}
}
});
//Regular expression based validators
$('#IdenticalValidator').bootstrapValidator({
message: 'This value is not valid',
fields: {
password: {
validators: {
notEmpty: {
message: 'The password is required and can\'t be empty'
},
identical: {
field: 'confirmPassword',
message: 'The password and its confirm are not the same'
}
}
},
confirmPassword: {
validators: {
notEmpty: {
message: 'The confirm password is required and can\'t be empty'
},
identical: {
field: 'password',
message: 'The password and its confirm are not the same'
}
}
}
}
});
//Regular expression based validators
$('#OtherValidator').bootstrapValidator({
message: 'This value is not valid',
fields: {
ages: {
validators: {
lessThan: {
value: 100,
inclusive: true,
message: 'The ages has to be less than 100'
},
greaterThan: {
value: 10,
inclusive: false,
message: 'The ages has to be greater than or equals to 10'
}
}
}
}
});
});

@ -0,0 +1,6 @@
$(function() {
$('#myWizard').easyWizard({
buttonsClass: 'btn btn-default',
submitButtonClass: 'btn btn-primary'
});
});

@ -0,0 +1,5 @@
$(function() {
$('.summernote').summernote({
height: 500
});
});

@ -0,0 +1,168 @@
$(function(){
$("#gmap-1").gmap3({
marker:{
latLng: [46.578498,2.457275],
options:{
draggable:true
},
events:{
dragend: function(marker){
$(this).gmap3({
getaddress:{
latLng:marker.getPosition(),
callback:function(results){
var map = $(this).gmap3("get"),
infowindow = $(this).gmap3({get:"infowindow"}),
content = results && results[1] ? results && results[1].formatted_address : "no address";
if (infowindow){
infowindow.open(map, marker);
infowindow.setContent(content);
} else {
$(this).gmap3({
infowindow:{
anchor:marker,
options:{content: content}
}
});
}
}
}
});
}
}
},
map:{
options:{
zoom: 5
}
}
});
$("#gmap-2").gmap3({
map:{
options:{
center:[46.578498,2.457275],
zoom: 4,
mapTypeId: google.maps.MapTypeId.TERRAIN
}
},
marker:{
values: [
[49.28952958093682, 6.152559438984804],
{
latLng:[44.28952958093682, 6.152559438984804],
options:{
icon: "http://maps.google.com/mapfiles/marker_green.png"
}
},
[49.28952958093682, -1.1501188139848408],
{
latLng:[44.28952958093682, -1.1501188139848408],
events:{
click:function(){
alert("I'm the last one, and i have my own click event");
}
}
}
],
events:{ // events trigged by markers
click: function(){
alert("Here is the default click event");
}
},
cluster:{
radius: 100,
0: {
content: "<div class='cluster cluster-1'>CLUSTER_COUNT</div>",
width: 53,
height: 52
},
20: {
content: "<div class='cluster cluster-2'>CLUSTER_COUNT</div>",
width: 56,
height: 55
},
50: {
content: "<div class='cluster cluster-3'>CLUSTER_COUNT</div>",
width: 66,
height: 65
}
}
}
});
var fenway = new google.maps.LatLng(42.345573,-71.098326);
$("#gmap-3").gmap3({
map:{
options:{
zoom: 14,
mapTypeId: google.maps.MapTypeId.ROADMAP,
streetViewControl: true,
center: fenway
}
},
streetviewpanorama:{
options:{
container: $("#gmap-4"),
opts:{
position: fenway,
pov: {
heading: 34,
pitch: 10,
zoom: 1
}
}
}
}
});
$("#gmap-5").gmap3({
map:{
address:"ISTABBUL, TURKEY",
options:{
zoom:4,
mapTypeId: google.maps.MapTypeId.SATELLITE,
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
},
navigationControl: true,
scrollwheel: true,
streetViewControl: true
}
}
});
$("#gmap-6").gmap3({
map:{
options:{
center:[33, -111],
zoom:10,
mapTypeControlOptions: {
mapTypeIds: [google.maps.MapTypeId.ROADMAP,
google.maps.MapTypeId.SATELLITE,
google.maps.MapTypeId.HYBRID,
google.maps.MapTypeId.TERRAIN,
"sectional"]
}
}
},
imagemaptype:{
id: "sectional",
options:{
getTileUrl: function(coord, zoom) {
return "http://www.fourpeaksnavigation.com/sectionals/phx" + "/" + zoom + "/" + coord.x + "/" + coord.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
name: "Chart",
minZoom: 1,
maxZoom: 111
},
callback: function(){
$(this).gmap3("get").setMapTypeId("sectional");
}
}
});
});

@ -0,0 +1,373 @@
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: 'us_aea_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: [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 = '<h2><i class="wicon-'+weather.code+'"></i> '+weather.temp+'&deg;'+weather.units.temp+' <span class="w-temp2">/ '+weather.tempAlt+'&deg;F</span></h2>';
html += '<span class="w-region">'+weather.city+', '+weather.region+'</li>';
html += '<span class="w-currently">'+weather.currently+'</span>';
html += '';
$("#weather").html(html);
},
error: function(error) {
$("#weather").html('<p>'+error+'</p>');
}
});
}
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("<i class='fa fa-caret-down'></i> "+seriesData[0][lastitem].y.toFixed(2));
}else{
$("#sp-status").removeClass("text-danger").html("<i class='fa fa-caret-up'></i> "+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("<i class='fa fa-caret-down'></i> "+seriesData[1][lastitem].y.toFixed(2));
}else{
$("#dow-status").removeClass("text-danger").html("<i class='fa fa-caret-up'></i> "+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("<i class='fa fa-caret-down'></i> "+seriesData[2][lastitem].y.toFixed(2));
}else{
$("#nasdaq-status").removeClass("text-danger").html("<i class='fa fa-caret-up'></i> "+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=

@ -0,0 +1,378 @@
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 = '<h2><i class="wicon-'+weather.code+'"></i> '+weather.temp+'&deg;'+weather.units.temp+' <span class="w-temp2">/ '+weather.tempAlt+'&deg;F</span></h2>';
html += '<span class="w-region">'+weather.city+', '+weather.region+'</li>';
html += '<span class="w-currently">'+weather.currently+'</span>';
html += '';
$("#weather").html(html);
},
error: function(error) {
$("#weather").html('<p>'+error+'</p>');
}
});
}
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("<i class='fa fa-caret-down'></i> "+seriesData[0][lastitem].y.toFixed(2));
}else{
$("#sp-status").removeClass("text-danger").html("<i class='fa fa-caret-up'></i> "+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("<i class='fa fa-caret-down'></i> "+seriesData[1][lastitem].y.toFixed(2));
}else{
$("#dow-status").removeClass("text-danger").html("<i class='fa fa-caret-up'></i> "+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("<i class='fa fa-caret-down'></i> "+seriesData[2][lastitem].y.toFixed(2));
}else{
$("#nasdaq-status").removeClass("text-danger").html("<i class='fa fa-caret-up'></i> "+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=

@ -0,0 +1,8 @@
$(function(){
resizefunc.push("arrangesizeLockscreen");
$(".lock-page .login-wrap").addClass("animated flipInX");
});
function arrangesizeLockscreen(){
$(".lock-page").height($(window).height());
}

@ -0,0 +1,61 @@
$(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}
]
});
});

@ -0,0 +1,22 @@
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')));
})

@ -0,0 +1,11 @@
$(function(){
$('.summernote-small').summernote({
toolbar: [
['style', ['bold', 'italic', 'underline', 'clear']],
['fontsize', ['fontsize']],
['color', ['color']],
['para', ['ul', 'ol', 'paragraph']]
],
height: 200
});
});

@ -0,0 +1,101 @@
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: "<i class='"+icon+"'></i>"
}, {
style: 'metro',
className: style,
globalPosition:position,
showAnimation: "show",
showDuration: 0,
hideDuration: 0,
autoHide: false,
clickToHide: true
});
}
function notify2(style,position) {
$(".autohidebut").notify({
text: '<i class="fa fa-comment-o"></i> 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: "<i class='fa fa-warning'></i>"
}, {
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?<div class="clearfix"></div><br><a class="btn btn-sm btn-default yes">Yes</a> <a class="btn btn-sm btn-danger no">No</a>',
image: "<i class='fa fa-warning'></i>"
}, {
style: 'metro',
className: "cool",
showAnimation: "show",
showDuration: 0,
hideDuration: 0,
autoHide: false,
clickToHide: false
});
}
$(function(){
//listen for click events from this style
$(document).on('click', '.notifyjs-metro-base .no', function() {
//programmatically trigger propogating hide event
$(this).trigger('notify-hide');
});
$(document).on('click', '.notifyjs-metro-base .yes', function() {
//show button text
alert($(this).text() + " clicked!");
//hide notification
$(this).trigger('notify-hide');
});
})

@ -0,0 +1,25 @@
var initCharts = function() {
var charts = $('.percentage');
charts.easyPieChart({
animate: 1000,
lineWidth: 5,
barColor: "#eb5055",
lineCap: "butt",
size: "150",
scaleColor: "transparent",
onStep: function(from, to, percent) {
$(this.el).find('.cpercent').text(Math.round(percent));
}
});
$('.updatePieCharts').on('click', function(e) {
e.preventDefault();
charts.each(function() {
$(this).data('easyPieChart').update(Math.floor(100*Math.random()));
});
});
}
$(function(){
$(".knob").knob();
initCharts();
})

@ -0,0 +1,131 @@
$(function(){
// Initiate graphs right after interface loaded
rungraphs();
});
function rungraphs(){
var graph = new Rickshaw.Graph( {
element: document.querySelector("#chart-2"),
width: $("#chart-2").parent().width(),
height: 235,
renderer: 'area',
stroke: true,
series: [ {
data: [ { x: 0, y: 40 }, { x: 1, y: 49 }, { x: 2, y: 38 }, { x: 3, y: 20 }, { x: 4, y: 16 } ],
color: 'rgba(70,130,180,0.5)',
stroke: 'rgba(0,0,0,0.15)'
}, {
data: [ { x: 0, y: 22 }, { x: 1, y: 25 }, { x: 2, y: 38 }, { x: 3, y: 44 }, { x: 4, y: 46 } ],
color: 'rgba(202,226,247,0.5)',
stroke: 'rgba(0,0,0,0.15)'
} ]
} );
graph.renderer.unstack = true;
graph.render();
var graph = new Rickshaw.Graph({
element: document.querySelector("#chart-1"),
width: $("#chart-1").parent().width(),
height: 235,
renderer: 'line',
series: [{
data: [ { x: 0, y: 40 }, { x: 1, y: 49 }, { x: 2, y: 38 }, { x: 3, y: 30 }, { x: 4, y: 32 } ],
color: '#4682b4'
}, {
data: [ { x: 0, y: 20 }, { x: 1, y: 24 }, { x: 2, y: 19 }, { x: 3, y: 15 }, { x: 4, y: 16 } ],
color: '#9cc1e0'
}]
});
graph.render();
var graph = new Rickshaw.Graph( {
element: document.querySelector("#chart-3"),
height: 235,
renderer: 'bar',
stack: false,
series: [
{
data: [ { x: 0, y: 40 }, { x: 1, y: 49 }, { x: 2, y: 38 }, { x: 3, y: 30 }, { x: 4, y: 32 } ],
color: '#4682b4'
}, {
data: [ { x: 0, y: 20 }, { x: 1, y: 24 }, { x: 2, y: 19 }, { x: 3, y: 15 }, { x: 4, y: 16 } ],
color: '#9cc1e0'
} ]
} );
graph.render();
var graph = new Rickshaw.Graph( {
element: document.querySelector("#chart-4"),
renderer: 'bar',
height: 235,
stack: true,
series: [
{
data: [ { x: 0, y: 40 }, { x: 1, y: 49 }, { x: 2, y: 38 }, { x: 3, y: 30 }, { x: 4, y: 32 } ],
color: '#4682b4'
}, {
data: [ { x: 0, y: 20 }, { x: 1, y: 24 }, { x: 2, y: 19 }, { x: 3, y: 15 }, { x: 4, y: 16 } ],
color: '#9cc1e0'
} ]
} );
graph.render();
// set up our data series with 50 random data points
var seriesData = [ [], [], [] ];
var random = new Rickshaw.Fixtures.RandomData(150);
for (var i = 0; i < 150; i++) {
random.addData(seriesData);
}
// instantiate our graph!
var graph = new Rickshaw.Graph( {
element: document.getElementById("chart-5"),
height: 500,
renderer: 'line',
series: [
{
color: "#6FB07F",
data: seriesData[0],
name: 'New York'
}, {
color: "#FCB03C",
data: seriesData[1],
name: 'London'
}, {
color: "#FC5B3F",
data: seriesData[2],
name: 'Tokyo'
}
]
} );
graph.render();
var hoverDetail = new Rickshaw.Graph.HoverDetail( {
graph: graph
} );
var legend = new Rickshaw.Graph.Legend( {
graph: graph,
element: document.getElementById('legend')
} );
var shelving = new Rickshaw.Graph.Behavior.Series.Toggle( {
graph: graph,
legend: legend
} );
var axes = new Rickshaw.Graph.Axis.Time( {
graph: graph
} );
axes.render();
}

@ -0,0 +1,76 @@
$(function(){
// Bar + line composite charts
$('#compositebar').sparkline('html', { type: 'bar', barColor: '#aaf' });
$('#compositebar').sparkline([4,1,5,7,9,9,8,7,6,6,4,7,8,4,3,2,2,5,6,7],
{ composite: true, fillColor: false, lineColor: 'red' });
// Larger line charts for the docs
$('.largeline').sparkline('html',
{ type: 'line', height: '2.5em', width: '4em' });
// Customized line chart
$('#linecustom').sparkline('html',
{height: '1.5em', width: '8em', lineColor: '#f00', fillColor: '#ffa',
minSpotColor: false, maxSpotColor: false, spotColor: '#77f', spotRadius: 3});
// Bar charts using inline values
$('.sparkbar').sparkline('html', {type: 'bar'});
$('.barformat').sparkline([1, 3, 5, 3, 8], {
type: 'bar',
tooltipFormat: '{{value:levels}} - {{value}}',
tooltipValueLookups: {
levels: $.range_map({ ':2': 'Low', '3:6': 'Medium', '7:': 'High' })
}
});
// Tri-state charts using inline values
$('.sparktristate').sparkline('html', {type: 'tristate'});
$('.sparktristatecols').sparkline('html',
{type: 'tristate', colorMap: {'-2': '#fa7', '2': '#44f'} });
// Composite line charts, the second using values supplied via javascript
$('#compositeline').sparkline('html', { fillColor: false, changeRangeMin: 0, chartRangeMax: 10 });
$('#compositeline').sparkline([4,1,5,7,9,9,8,7,6,6,4,7,8,4,3,2,2,5,6,7],
{ composite: true, fillColor: false, lineColor: 'red', changeRangeMin: 0, chartRangeMax: 10 });
// Line charts with normal range marker
$('#normalline').sparkline('html',
{ fillColor: false, normalRangeMin: -1, normalRangeMax: 8 });
$('#normalExample').sparkline('html',
{ fillColor: false, normalRangeMin: 80, normalRangeMax: 95, normalRangeColor: '#4f4' });
// Discrete charts
$('.discrete1').sparkline('html',
{ type: 'discrete', lineColor: 'blue', xwidth: 18 });
$('#discrete2').sparkline('html',
{ type: 'discrete', lineColor: 'blue', thresholdColor: 'red', thresholdValue: 4 });
// Bullet charts
$('.sparkbullet').sparkline('html', { type: 'bullet' });
// Pie charts
$('.sparkpie').sparkline('html', { type: 'pie', height: '1.0em' });
// Box plots
$('.sparkboxplot').sparkline('html', { type: 'box'});
$('.sparkboxplotraw').sparkline([ 1, 3, 5, 8, 10, 15, 18 ],
{type:'box', raw: true, showOutliers:true, target: 6});
// Box plot with specific field order
$('.boxfieldorder').sparkline('html', {
type: 'box',
tooltipFormatFieldlist: ['med', 'lq', 'uq'],
tooltipFormatFieldlistKey: 'field'
});
// click event demo sparkline
$('.clickdemo').sparkline();
$('.clickdemo').bind('sparklineClick', function(ev) {
var sparkline = ev.sparklines[0],
region = sparkline.getCurrentRegionFields();
value = region.y;
alert("Clicked on x="+region.x+" y="+region.y);
});
});

@ -0,0 +1,3 @@
$(document).ready(function(){
});

@ -0,0 +1,32 @@
$(function(){
$('#vmap-1').vectorMap({map: 'world_mill_en',backgroundColor: 'transparent',
regionStyle: {
initial: {
fill: '#8d8d8d'
}
}});
$('#vmap-3').vectorMap({map: 'europe_mill_en',backgroundColor: 'transparent',
regionStyle: {
initial: {
fill: '#8d8d8d'
}
}});
$('#vmap-4').vectorMap({map: 'us_aea_en',backgroundColor: 'transparent',
regionStyle: {
initial: {
fill: '#8d8d8d'
}
}});
$('#vmap-5').vectorMap({map: 'uk_mill_en',backgroundColor: 'transparent',
regionStyle: {
initial: {
fill: '#8d8d8d'
}
}});
$('#vmap-6').vectorMap({map: 'us-il-chicago_mill_en',backgroundColor: 'transparent',
regionStyle: {
initial: {
fill: '#8d8d8d'
}
}});
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,86 @@
.bic_calendar{
}
.bic_calendar a{
text-decoration: none;
color: #333;
display: block;
cursor: pointer;
}
.bic_calendar .table tbody > tr > td{
text-align: center;
padding: 0px;
}
.bic_calendar td a{
}
.bic_calendar .header{
padding: 10px 0 10px 0;
}
.bic_calendar .button-month-previous{
padding: 5px;
float: left;
}
.bic_calendar .button-month-next{
padding: 5px;
float: right;
}
.bic_calendar .button-year-previous{
padding: 5px;
float: left;
}
.bic_calendar .button-year-next{
padding: 5px;
float: right;
}
.bic_calendar .monthAndYear{
text-align: center;
font-weight: 600;
}
.bic_calendar .days-month{
font-weight: 600;
}
.bic_calendar .event{
color: white;
background: #3B5A97;
font-weight: bold;
}
.bic_calendar .event:hover > a{
background: #3B5A97;
text-shadow: 0 0 4px #fff;
}
.bic_calendar .event a{
color: white;
}
.bic_calendar .day:hover{
background: rgba(0,0,0,0.04)
}
.bic_calendar .table{
margin-bottom: 3px;
}
.bic_calendar .days-month td{
background: #f0f0f0 ;
}
.bic_calendar .selection{
background: rgba(141,200,230,0.5);
}
.bic_calendar .first-selection{
border-radius: 6px 0 0 6px;
border-right: 0;
}
.bic_calendar .last-selection{
border-radius: 0 6px 6px 0;
border-left: 0;
}
.bic_calendar .middle-selection{
border-left: 0;
border-right: 0;
border-radius: 0;
}
.bic_calendar .popover{
color: #000;
text-shadow: none;
}
.bic_calendar .popover-content{
font-weight: 300;
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,182 @@
/*!
* Datepicker for Bootstrap
*
* Copyright 2012 Stefan Petre
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
*/
.datepicker {
top: 0;
left: 0;
padding: 4px;
margin-top: 1px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
/*.dow {
border-top: 1px solid #ddd !important;
}*/
}
.datepicker:before {
content: '';
display: inline-block;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom: 7px solid #ccc;
border-bottom-color: rgba(0, 0, 0, 0.2);
position: absolute;
top: -7px;
left: 6px;
}
.datepicker:after {
content: '';
display: inline-block;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #ffffff;
position: absolute;
top: -6px;
left: 7px;
}
.datepicker > div {
display: none;
}
.datepicker table {
width: 100%;
margin: 0;
}
.datepicker td,
.datepicker th {
text-align: center;
width: 20px;
height: 20px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
.datepicker td.day:hover {
background: #eeeeee;
cursor: pointer;
}
.datepicker td.day.disabled {
color: #eeeeee;
}
.datepicker td.old,
.datepicker td.new {
color: #999999;
}
.datepicker td.active,
.datepicker td.active:hover {
color: #ffffff;
background-color: #006dcc;
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
background-image: linear-gradient(to bottom, #0088cc, #0044cc);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
border-color: #0044cc #0044cc #002a80;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
*background-color: #0044cc;
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker td.active:hover,
.datepicker td.active:hover:hover,
.datepicker td.active:focus,
.datepicker td.active:hover:focus,
.datepicker td.active:active,
.datepicker td.active:hover:active,
.datepicker td.active.active,
.datepicker td.active:hover.active,
.datepicker td.active.disabled,
.datepicker td.active:hover.disabled,
.datepicker td.active[disabled],
.datepicker td.active:hover[disabled] {
color: #ffffff;
background-color: #0044cc;
*background-color: #003bb3;
}
.datepicker td.active:active,
.datepicker td.active:hover:active,
.datepicker td.active.active,
.datepicker td.active:hover.active {
background-color: #003399 \9;
}
.datepicker td span {
display: block;
width: 47px;
height: 54px;
line-height: 54px;
float: left;
margin: 2px;
cursor: pointer;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
.datepicker td span:hover {
background: #eeeeee;
}
.datepicker td span.active {
color: #ffffff;
background-color: #006dcc;
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
background-image: linear-gradient(to bottom, #0088cc, #0044cc);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
border-color: #0044cc #0044cc #002a80;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
*background-color: #0044cc;
/* Darken IE7 buttons by default so they stand out more given they won't have borders */
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker td span.active:hover,
.datepicker td span.active:focus,
.datepicker td span.active:active,
.datepicker td span.active.active,
.datepicker td span.active.disabled,
.datepicker td span.active[disabled] {
color: #ffffff;
background-color: #0044cc;
*background-color: #003bb3;
}
.datepicker td span.active:active,
.datepicker td span.active.active {
background-color: #003399 \9;
}
.datepicker td span.old {
color: #999999;
}
.datepicker th.switch {
width: 145px;
}
.datepicker th.next,
.datepicker th.prev {
font-size: 21px;
}
.datepicker thead tr:first-child th {
cursor: pointer;
}
.datepicker thead tr:first-child th:hover {
background: #eeeeee;
}
.input-append.date .add-on i,
.input-prepend.date .add-on i {
display: block;
cursor: pointer;
width: 16px;
height: 16px;
}

@ -0,0 +1,474 @@
/* =========================================================
* bootstrap-datepicker.js
* http://www.eyecon.ro/bootstrap-datepicker
* =========================================================
* Copyright 2012 Stefan Petre
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ========================================================= */
!function( $ ) {
// Picker object
var Datepicker = function(element, options){
this.element = $(element);
this.format = DPGlobal.parseFormat(options.format||this.element.data('date-format')||'mm/dd/yyyy');
this.picker = $(DPGlobal.template)
.appendTo('body')
.on({
click: $.proxy(this.click, this)//,
//mousedown: $.proxy(this.mousedown, this)
});
this.isInput = this.element.is('input');
this.component = this.element.is('.date') ? this.element.find('.add-on') : false;
if (this.isInput) {
this.element.on({
focus: $.proxy(this.show, this),
//blur: $.proxy(this.hide, this),
keyup: $.proxy(this.update, this)
});
} else {
if (this.component){
this.component.on('click', $.proxy(this.show, this));
} else {
this.element.on('click', $.proxy(this.show, this));
}
}
this.minViewMode = options.minViewMode||this.element.data('date-minviewmode')||0;
if (typeof this.minViewMode === 'string') {
switch (this.minViewMode) {
case 'months':
this.minViewMode = 1;
break;
case 'years':
this.minViewMode = 2;
break;
default:
this.minViewMode = 0;
break;
}
}
this.viewMode = options.viewMode||this.element.data('date-viewmode')||0;
if (typeof this.viewMode === 'string') {
switch (this.viewMode) {
case 'months':
this.viewMode = 1;
break;
case 'years':
this.viewMode = 2;
break;
default:
this.viewMode = 0;
break;
}
}
this.startViewMode = this.viewMode;
this.weekStart = options.weekStart||this.element.data('date-weekstart')||0;
this.weekEnd = this.weekStart === 0 ? 6 : this.weekStart - 1;
this.onRender = options.onRender;
this.fillDow();
this.fillMonths();
this.update();
this.showMode();
};
Datepicker.prototype = {
constructor: Datepicker,
show: function(e) {
this.picker.show();
this.height = this.component ? this.component.outerHeight() : this.element.outerHeight();
this.place();
$(window).on('resize', $.proxy(this.place, this));
if (e ) {
e.stopPropagation();
e.preventDefault();
}
if (!this.isInput) {
}
var that = this;
$(document).on('mousedown', function(ev){
if ($(ev.target).closest('.datepicker').length == 0) {
that.hide();
}
});
this.element.trigger({
type: 'show',
date: this.date
});
},
hide: function(){
this.picker.hide();
$(window).off('resize', this.place);
this.viewMode = this.startViewMode;
this.showMode();
if (!this.isInput) {
$(document).off('mousedown', this.hide);
}
//this.set();
this.element.trigger({
type: 'hide',
date: this.date
});
},
set: function() {
var formated = DPGlobal.formatDate(this.date, this.format);
if (!this.isInput) {
if (this.component){
this.element.find('input').prop('value', formated);
}
this.element.data('date', formated);
} else {
this.element.prop('value', formated);
}
},
setValue: function(newDate) {
if (typeof newDate === 'string') {
this.date = DPGlobal.parseDate(newDate, this.format);
} else {
this.date = new Date(newDate);
}
this.set();
this.viewDate = new Date(this.date.getFullYear(), this.date.getMonth(), 1, 0, 0, 0, 0);
this.fill();
},
place: function(){
var offset = this.component ? this.component.offset() : this.element.offset();
this.picker.css({
top: offset.top + this.height,
left: offset.left
});
},
update: function(newDate){
this.date = DPGlobal.parseDate(
typeof newDate === 'string' ? newDate : (this.isInput ? this.element.prop('value') : this.element.data('date')),
this.format
);
this.viewDate = new Date(this.date.getFullYear(), this.date.getMonth(), 1, 0, 0, 0, 0);
this.fill();
},
fillDow: function(){
var dowCnt = this.weekStart;
var html = '<tr>';
while (dowCnt < this.weekStart + 7) {
html += '<th class="dow">'+DPGlobal.dates.daysMin[(dowCnt++)%7]+'</th>';
}
html += '</tr>';
this.picker.find('.datepicker-days thead').append(html);
},
fillMonths: function(){
var html = '';
var i = 0
while (i < 12) {
html += '<span class="month">'+DPGlobal.dates.monthsShort[i++]+'</span>';
}
this.picker.find('.datepicker-months td').append(html);
},
fill: function() {
var d = new Date(this.viewDate),
year = d.getFullYear(),
month = d.getMonth(),
currentDate = this.date.valueOf();
this.picker.find('.datepicker-days th:eq(1)')
.text(DPGlobal.dates.months[month]+' '+year);
var prevMonth = new Date(year, month-1, 28,0,0,0,0),
day = DPGlobal.getDaysInMonth(prevMonth.getFullYear(), prevMonth.getMonth());
prevMonth.setDate(day);
prevMonth.setDate(day - (prevMonth.getDay() - this.weekStart + 7)%7);
var nextMonth = new Date(prevMonth);
nextMonth.setDate(nextMonth.getDate() + 42);
nextMonth = nextMonth.valueOf();
var html = [];
var clsName,
prevY,
prevM;
while(prevMonth.valueOf() < nextMonth) {
if (prevMonth.getDay() === this.weekStart) {
html.push('<tr>');
}
clsName = this.onRender(prevMonth);
prevY = prevMonth.getFullYear();
prevM = prevMonth.getMonth();
if ((prevM < month && prevY === year) || prevY < year) {
clsName += ' old';
} else if ((prevM > month && prevY === year) || prevY > year) {
clsName += ' new';
}
if (prevMonth.valueOf() === currentDate) {
clsName += ' active';
}
html.push('<td class="day '+clsName+'">'+prevMonth.getDate() + '</td>');
if (prevMonth.getDay() === this.weekEnd) {
html.push('</tr>');
}
prevMonth.setDate(prevMonth.getDate()+1);
}
this.picker.find('.datepicker-days tbody').empty().append(html.join(''));
var currentYear = this.date.getFullYear();
var months = this.picker.find('.datepicker-months')
.find('th:eq(1)')
.text(year)
.end()
.find('span').removeClass('active');
if (currentYear === year) {
months.eq(this.date.getMonth()).addClass('active');
}
html = '';
year = parseInt(year/10, 10) * 10;
var yearCont = this.picker.find('.datepicker-years')
.find('th:eq(1)')
.text(year + '-' + (year + 9))
.end()
.find('td');
year -= 1;
for (var i = -1; i < 11; i++) {
html += '<span class="year'+(i === -1 || i === 10 ? ' old' : '')+(currentYear === year ? ' active' : '')+'">'+year+'</span>';
year += 1;
}
yearCont.html(html);
},
click: function(e) {
e.stopPropagation();
e.preventDefault();
var target = $(e.target).closest('span, td, th');
if (target.length === 1) {
switch(target[0].nodeName.toLowerCase()) {
case 'th':
switch(target[0].className) {
case 'switch':
this.showMode(1);
break;
case 'prev':
case 'next':
this.viewDate['set'+DPGlobal.modes[this.viewMode].navFnc].call(
this.viewDate,
this.viewDate['get'+DPGlobal.modes[this.viewMode].navFnc].call(this.viewDate) +
DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1)
);
this.fill();
this.set();
break;
}
break;
case 'span':
if (target.is('.month')) {
var month = target.parent().find('span').index(target);
this.viewDate.setMonth(month);
} else {
var year = parseInt(target.text(), 10)||0;
this.viewDate.setFullYear(year);
}
if (this.viewMode !== 0) {
this.date = new Date(this.viewDate);
this.element.trigger({
type: 'changeDate',
date: this.date,
viewMode: DPGlobal.modes[this.viewMode].clsName
});
}
this.showMode(-1);
this.fill();
this.set();
break;
case 'td':
if (target.is('.day') && !target.is('.disabled')){
var day = parseInt(target.text(), 10)||1;
var month = this.viewDate.getMonth();
if (target.is('.old')) {
month -= 1;
} else if (target.is('.new')) {
month += 1;
}
var year = this.viewDate.getFullYear();
this.date = new Date(year, month, day,0,0,0,0);
this.viewDate = new Date(year, month, Math.min(28, day),0,0,0,0);
this.fill();
this.set();
this.element.trigger({
type: 'changeDate',
date: this.date,
viewMode: DPGlobal.modes[this.viewMode].clsName
});
}
break;
}
}
},
mousedown: function(e){
e.stopPropagation();
e.preventDefault();
},
showMode: function(dir) {
if (dir) {
this.viewMode = Math.max(this.minViewMode, Math.min(2, this.viewMode + dir));
}
this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();
}
};
$.fn.datepicker = function ( option, val ) {
return this.each(function () {
var $this = $(this),
data = $this.data('datepicker'),
options = typeof option === 'object' && option;
if (!data) {
$this.data('datepicker', (data = new Datepicker(this, $.extend({}, $.fn.datepicker.defaults,options))));
}
if (typeof option === 'string') data[option](val);
});
};
$.fn.datepicker.defaults = {
onRender: function(date) {
return '';
}
};
$.fn.datepicker.Constructor = Datepicker;
var DPGlobal = {
modes: [
{
clsName: 'days',
navFnc: 'Month',
navStep: 1
},
{
clsName: 'months',
navFnc: 'FullYear',
navStep: 1
},
{
clsName: 'years',
navFnc: 'FullYear',
navStep: 10
}],
dates:{
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
},
isLeapYear: function (year) {
return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0))
},
getDaysInMonth: function (year, month) {
return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]
},
parseFormat: function(format){
var separator = format.match(/[.\/\-\s].*?/),
parts = format.split(/\W+/);
if (!separator || !parts || parts.length === 0){
throw new Error("Invalid date format.");
}
return {separator: separator, parts: parts};
},
parseDate: function(date, format) {
var parts = date.split(format.separator),
date = new Date(),
val;
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
date.setMilliseconds(0);
if (parts.length === format.parts.length) {
var year = date.getFullYear(), day = date.getDate(), month = date.getMonth();
for (var i=0, cnt = format.parts.length; i < cnt; i++) {
val = parseInt(parts[i], 10)||1;
switch(format.parts[i]) {
case 'dd':
case 'd':
day = val;
date.setDate(val);
break;
case 'mm':
case 'm':
month = val - 1;
date.setMonth(val - 1);
break;
case 'yy':
year = 2000 + val;
date.setFullYear(2000 + val);
break;
case 'yyyy':
year = val;
date.setFullYear(val);
break;
}
}
date = new Date(year, month, day, 0 ,0 ,0);
}
return date;
},
formatDate: function(date, format){
var val = {
d: date.getDate(),
m: date.getMonth() + 1,
yy: date.getFullYear().toString().substring(2),
yyyy: date.getFullYear()
};
val.dd = (val.d < 10 ? '0' : '') + val.d;
val.mm = (val.m < 10 ? '0' : '') + val.m;
var date = [];
for (var i=0, cnt = format.parts.length; i < cnt; i++) {
date.push(val[format.parts[i]]);
}
return date.join(format.separator);
},
headTemplate: '<thead>'+
'<tr>'+
'<th class="prev">&lsaquo;</th>'+
'<th colspan="5" class="switch"></th>'+
'<th class="next">&rsaquo;</th>'+
'</tr>'+
'</thead>',
contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>'
};
DPGlobal.template = '<div class="datepicker dropdown-menu">'+
'<div class="datepicker-days">'+
'<table class=" table-condensed">'+
DPGlobal.headTemplate+
'<tbody></tbody>'+
'</table>'+
'</div>'+
'<div class="datepicker-months">'+
'<table class="table-condensed">'+
DPGlobal.headTemplate+
DPGlobal.contTemplate+
'</table>'+
'</div>'+
'<div class="datepicker-years">'+
'<table class="table-condensed">'+
DPGlobal.headTemplate+
DPGlobal.contTemplate+
'</table>'+
'</div>'+
'</div>';
}( window.jQuery );

@ -0,0 +1,122 @@
/*
Bootstrap - File Input
======================
This is meant to convert all file input tags into a set of elements that displays consistently in all browsers.
Converts all
<input type="file">
into Bootstrap buttons
<a class="btn">Browse</a>
*/
$(function() {
$.fn.bootstrapFileInput = function() {
this.each(function(i,elem){
var $elem = $(elem);
// Maybe some fields don't need to be standardized.
if (typeof $elem.attr('data-bfi-disabled') != 'undefined') {
return;
}
// Set the word to be displayed on the button
var buttonWord = 'Browse';
if (typeof $elem.attr('title') != 'undefined') {
buttonWord = $elem.attr('title');
}
// Start by getting the HTML of the input element.
// Thanks for the tip http://stackoverflow.com/a/1299069
var input = $('<div>').append( $elem.eq(0).clone() ).html();
var className = '';
if (!!$elem.attr('class')) {
className = ' ' + $elem.attr('class');
}
// Now we're going to replace that input field with a Bootstrap button.
// The input will actually still be there, it will just be float above and transparent (done with the CSS).
$elem.replaceWith('<a class="file-input-wrapper btn' + className + '">'+buttonWord+input+'</a>');
})
// After we have found all of the file inputs let's apply a listener for tracking the mouse movement.
// This is important because the in order to give the illusion that this is a button in FF we actually need to move the button from the file input under the cursor. Ugh.
.promise().done( function(){
// As the cursor moves over our new Bootstrap button we need to adjust the position of the invisible file input Browse button to be under the cursor.
// This gives us the pointer cursor that FF denies us
$('.file-input-wrapper').mousemove(function(cursor) {
var input, wrapper,
wrapperX, wrapperY,
inputWidth, inputHeight,
cursorX, cursorY;
// This wrapper element (the button surround this file input)
wrapper = $(this);
// The invisible file input element
input = wrapper.find("input");
// The left-most position of the wrapper
wrapperX = wrapper.offset().left;
// The top-most position of the wrapper
wrapperY = wrapper.offset().top;
// The with of the browsers input field
inputWidth= input.width();
// The height of the browsers input field
inputHeight= input.height();
//The position of the cursor in the wrapper
cursorX = cursor.pageX;
cursorY = cursor.pageY;
//The positions we are to move the invisible file input
// The 20 at the end is an arbitrary number of pixels that we can shift the input such that cursor is not pointing at the end of the Browse button but somewhere nearer the middle
moveInputX = cursorX - wrapperX - inputWidth + 20;
// Slides the invisible input Browse button to be positioned middle under the cursor
moveInputY = cursorY- wrapperY - (inputHeight/2);
// Apply the positioning styles to actually move the invisible file input
input.css({
left:moveInputX,
top:moveInputY
});
});
$('.file-input-wrapper input[type=file]').change(function(){
var fileName;
fileName = $(this).val();
// Remove any previous file names
$(this).parent().next('.file-input-name').remove();
if (!!$(this).prop('files') && $(this).prop('files').length > 1) {
fileName = $(this)[0].files.length+' files';
//$(this).parent().after('<span class="file-input-name">'+$(this)[0].files.length+' files</span>');
}
else {
// var fakepath = 'C:\\fakepath\\';
// fileName = $(this).val().replace('C:\\fakepath\\','');
fileName = fileName.substring(fileName.lastIndexOf('\\')+1,fileName.length);
}
$(this).parent().after('<span class="file-input-name">'+fileName+'</span>');
});
});
};
// Add the styles before the first stylesheet
// This ensures they can be easily overridden with developer styles
var cssHtml = '<style>'+
'.file-input-wrapper { overflow: hidden; position: relative; cursor: pointer; z-index: 1; }'+
'.file-input-wrapper input[type=file], .file-input-wrapper input[type=file]:focus, .file-input-wrapper input[type=file]:hover { position: absolute; top: 0; left: 0; cursor: pointer; opacity: 0; filter: alpha(opacity=0); z-index: 99; outline: 0; }'+
'.file-input-name { margin-left: 8px; }'+
'</style>';
$('link[rel=stylesheet]').eq(0).before(cssHtml);
});

@ -0,0 +1,360 @@
/* ===========================================================
* Bootstrap: inputmask.js v3.1.0
* http://jasny.github.io/bootstrap/javascript/#inputmask
*
* Based on Masked Input plugin by Josh Bush (digitalbush.com)
* ===========================================================
* Copyright 2012-2014 Arnold Daniels
*
* Licensed under the Apache License, Version 2.0 (the "License")
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ========================================================== */
+function ($) { "use strict";
var isIphone = (window.orientation !== undefined)
var isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1
var isIE = window.navigator.appName == 'Microsoft Internet Explorer'
// INPUTMASK PUBLIC CLASS DEFINITION
// =================================
var Inputmask = function (element, options) {
if (isAndroid) return // No support because caret positioning doesn't work on Android
this.$element = $(element)
this.options = $.extend({}, Inputmask.DEFAULTS, options)
this.mask = String(this.options.mask)
this.init()
this.listen()
this.checkVal() //Perform initial check for existing values
}
Inputmask.DEFAULTS = {
mask: "",
placeholder: "_",
definitions: {
'9': "[0-9]",
'a': "[A-Za-z]",
'w': "[A-Za-z0-9]",
'*': "."
}
}
Inputmask.prototype.init = function() {
var defs = this.options.definitions
var len = this.mask.length
this.tests = []
this.partialPosition = this.mask.length
this.firstNonMaskPos = null
$.each(this.mask.split(""), $.proxy(function(i, c) {
if (c == '?') {
len--
this.partialPosition = i
} else if (defs[c]) {
this.tests.push(new RegExp(defs[c]))
if (this.firstNonMaskPos === null)
this.firstNonMaskPos = this.tests.length - 1
} else {
this.tests.push(null)
}
}, this))
this.buffer = $.map(this.mask.split(""), $.proxy(function(c, i) {
if (c != '?') return defs[c] ? this.options.placeholder : c
}, this))
this.focusText = this.$element.val()
this.$element.data("rawMaskFn", $.proxy(function() {
return $.map(this.buffer, function(c, i) {
return this.tests[i] && c != this.options.placeholder ? c : null
}).join('')
}, this))
}
Inputmask.prototype.listen = function() {
if (this.$element.attr("readonly")) return
var pasteEventName = (isIE ? 'paste' : 'input') + ".mask"
this.$element
.on("unmask.bs.inputmask", $.proxy(this.unmask, this))
.on("focus.bs.inputmask", $.proxy(this.focusEvent, this))
.on("blur.bs.inputmask", $.proxy(this.blurEvent, this))
.on("keydown.bs.inputmask", $.proxy(this.keydownEvent, this))
.on("keypress.bs.inputmask", $.proxy(this.keypressEvent, this))
.on(pasteEventName, $.proxy(this.pasteEvent, this))
}
//Helper Function for Caret positioning
Inputmask.prototype.caret = function(begin, end) {
if (this.$element.length === 0) return
if (typeof begin == 'number') {
end = (typeof end == 'number') ? end : begin
return this.$element.each(function() {
if (this.setSelectionRange) {
this.setSelectionRange(begin, end)
} else if (this.createTextRange) {
var range = this.createTextRange()
range.collapse(true)
range.moveEnd('character', end)
range.moveStart('character', begin)
range.select()
}
})
} else {
if (this.$element[0].setSelectionRange) {
begin = this.$element[0].selectionStart
end = this.$element[0].selectionEnd
} else if (document.selection && document.selection.createRange) {
var range = document.selection.createRange()
begin = 0 - range.duplicate().moveStart('character', -100000)
end = begin + range.text.length
}
return {
begin: begin,
end: end
}
}
}
Inputmask.prototype.seekNext = function(pos) {
var len = this.mask.length
while (++pos <= len && !this.tests[pos]);
return pos
}
Inputmask.prototype.seekPrev = function(pos) {
while (--pos >= 0 && !this.tests[pos]);
return pos
}
Inputmask.prototype.shiftL = function(begin,end) {
var len = this.mask.length
if (begin < 0) return
for (var i = begin, j = this.seekNext(end); i < len; i++) {
if (this.tests[i]) {
if (j < len && this.tests[i].test(this.buffer[j])) {
this.buffer[i] = this.buffer[j]
this.buffer[j] = this.options.placeholder
} else
break
j = this.seekNext(j)
}
}
this.writeBuffer()
this.caret(Math.max(this.firstNonMaskPos, begin))
}
Inputmask.prototype.shiftR = function(pos) {
var len = this.mask.length
for (var i = pos, c = this.options.placeholder; i < len; i++) {
if (this.tests[i]) {
var j = this.seekNext(i)
var t = this.buffer[i]
this.buffer[i] = c
if (j < len && this.tests[j].test(t))
c = t
else
break
}
}
},
Inputmask.prototype.unmask = function() {
this.$element
.unbind(".mask")
.removeData("inputmask")
}
Inputmask.prototype.focusEvent = function() {
this.focusText = this.$element.val()
var len = this.mask.length
var pos = this.checkVal()
this.writeBuffer()
var that = this
var moveCaret = function() {
if (pos == len)
that.caret(0, pos)
else
that.caret(pos)
}
moveCaret()
setTimeout(moveCaret, 50)
}
Inputmask.prototype.blurEvent = function() {
this.checkVal()
if (this.$element.val() !== this.focusText)
this.$element.trigger('change')
}
Inputmask.prototype.keydownEvent = function(e) {
var k = e.which
//backspace, delete, and escape get special treatment
if (k == 8 || k == 46 || (isIphone && k == 127)) {
var pos = this.caret(),
begin = pos.begin,
end = pos.end
if (end - begin === 0) {
begin = k != 46 ? this.seekPrev(begin) : (end = this.seekNext(begin - 1))
end = k == 46 ? this.seekNext(end) : end
}
this.clearBuffer(begin, end)
this.shiftL(begin, end - 1)
return false
} else if (k == 27) {//escape
this.$element.val(this.focusText)
this.caret(0, this.checkVal())
return false
}
}
Inputmask.prototype.keypressEvent = function(e) {
var len = this.mask.length
var k = e.which,
pos = this.caret()
if (e.ctrlKey || e.altKey || e.metaKey || k < 32) {//Ignore
return true
} else if (k) {
if (pos.end - pos.begin !== 0) {
this.clearBuffer(pos.begin, pos.end)
this.shiftL(pos.begin, pos.end - 1)
}
var p = this.seekNext(pos.begin - 1)
if (p < len) {
var c = String.fromCharCode(k)
if (this.tests[p].test(c)) {
this.shiftR(p)
this.buffer[p] = c
this.writeBuffer()
var next = this.seekNext(p)
this.caret(next)
}
}
return false
}
}
Inputmask.prototype.pasteEvent = function() {
var that = this
setTimeout(function() {
that.caret(that.checkVal(true))
}, 0)
}
Inputmask.prototype.clearBuffer = function(start, end) {
var len = this.mask.length
for (var i = start; i < end && i < len; i++) {
if (this.tests[i])
this.buffer[i] = this.options.placeholder
}
}
Inputmask.prototype.writeBuffer = function() {
return this.$element.val(this.buffer.join('')).val()
}
Inputmask.prototype.checkVal = function(allow) {
var len = this.mask.length
//try to place characters where they belong
var test = this.$element.val()
var lastMatch = -1
for (var i = 0, pos = 0; i < len; i++) {
if (this.tests[i]) {
this.buffer[i] = this.options.placeholder
while (pos++ < test.length) {
var c = test.charAt(pos - 1)
if (this.tests[i].test(c)) {
this.buffer[i] = c
lastMatch = i
break
}
}
if (pos > test.length)
break
} else if (this.buffer[i] == test.charAt(pos) && i != this.partialPosition) {
pos++
lastMatch = i
}
}
if (!allow && lastMatch + 1 < this.partialPosition) {
this.$element.val("")
this.clearBuffer(0, len)
} else if (allow || lastMatch + 1 >= this.partialPosition) {
this.writeBuffer()
if (!allow) this.$element.val(this.$element.val().substring(0, lastMatch + 1))
}
return (this.partialPosition ? i : this.firstNonMaskPos)
}
// INPUTMASK PLUGIN DEFINITION
// ===========================
var old = $.fn.inputmask
$.fn.inputmask = function (options) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.inputmask')
if (!data) $this.data('bs.inputmask', (data = new Inputmask(this, options)))
})
}
$.fn.inputmask.Constructor = Inputmask
// INPUTMASK NO CONFLICT
// ====================
$.fn.inputmask.noConflict = function () {
$.fn.inputmask = old
return this
}
// INPUTMASK DATA-API
// ==================
$(document).on('focus.bs.inputmask.data-api', '[data-mask]', function (e) {
var $this = $(this)
if ($this.data('bs.inputmask')) return
$this.inputmask($this.data())
})
}(window.jQuery);

@ -0,0 +1,7 @@
/*!
* bootstrap-select v1.4.2
* http://silviomoreto.github.io/bootstrap-select/
*
* Copyright 2013 bootstrap-select
* Licensed under the MIT license
*/.bootstrap-select.btn-group,.bootstrap-select.btn-group[class*="span"]{float:none;display:inline-block;margin-bottom:10px;margin-left:0}.form-search .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group{margin-bottom:0}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:0}.bootstrap-select.btn-group.pull-right,.bootstrap-select.btn-group[class*="span"].pull-right,.row-fluid .bootstrap-select.btn-group[class*="span"].pull-right{float:right}.input-append .bootstrap-select.btn-group{margin-left:-1px}.input-prepend .bootstrap-select.btn-group{margin-right:-1px}.bootstrap-select:not([class*="span"]):not([class*="col-"]):not([class*="form-control"]){width:220px}.bootstrap-select{width:220px\0}.bootstrap-select.form-control:not([class*="span"]){width:100%}.bootstrap-select>.btn{width:100%}.error .bootstrap-select .btn{border:1px solid #b94a48}.dropdown-menu{z-index:2000}.bootstrap-select.show-menu-arrow.open>.btn{z-index:2051}.bootstrap-select .btn:focus{outline:thin dotted #333 !important;outline:5px auto -webkit-focus-ring-color !important;outline-offset:-2px}.bootstrap-select.btn-group .btn .filter-option{overflow:hidden;position:absolute;left:12px;right:25px;text-align:left}.bootstrap-select.btn-group .btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group>.disabled,.bootstrap-select.btn-group .dropdown-menu li.disabled>a{cursor:not-allowed}.bootstrap-select.btn-group>.disabled:focus{outline:none !important}.bootstrap-select.btn-group[class*="span"] .btn{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu dt{display:block;padding:3px 20px;cursor:default}.bootstrap-select.btn-group .div-contain{overflow:hidden}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li>a.opt{position:relative;padding-left:35px}.bootstrap-select.btn-group .dropdown-menu li>a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:normal}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a i.check-mark{display:inline-block;position:absolute;right:15px;margin-top:2.5px}.bootstrap-select.btn-group .dropdown-menu li a i.check-mark{display:none}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:hover small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled)>a:focus small,.bootstrap-select.btn-group .dropdown-menu li.active:not(.disabled)>a small{color:#64b1d8;color:rgba(255,255,255,0.4)}.bootstrap-select.btn-group .dropdown-menu li>dt small{font-weight:normal}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #CCC;border-bottom-color:rgba(0,0,0,0.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid white;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after{display:block}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px}.mobile-device{position:absolute;top:0;left:0;display:block !important;width:100%;height:100% !important;opacity:0}.bootstrap-select.fit-width{width:auto !important}.bootstrap-select.btn-group.fit-width .btn .filter-option{position:static}.bootstrap-select.btn-group.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.control-group.error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select-searchbox{padding:4px 8px}.bootstrap-select-searchbox input{margin-bottom:0}

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -0,0 +1,589 @@
/*
Version: 3.4.3 Timestamp: Tue Sep 17 06:47:14 PDT 2013
*/
.select2-container {
margin: 0;
position: relative;
display: inline-block;
/* inline-block for ie7 */
zoom: 1;
*display: inline;
vertical-align: middle;
}
.select2-container,
.select2-drop,
.select2-search,
.select2-search input {
/*
Force border-box so that % widths fit the parent
container without overlap because of margin/padding.
More Info : http://www.quirksmode.org/css/box.html
*/
-webkit-box-sizing: border-box; /* webkit */
-moz-box-sizing: border-box; /* firefox */
box-sizing: border-box; /* css3 */
}
.select2-container .select2-choice {
display: block;
height: 26px;
padding: 0 0 0 8px;
overflow: hidden;
position: relative;
border: 1px solid #aaa;
white-space: nowrap;
line-height: 26px;
color: #444;
text-decoration: none;
border-radius: 4px;
background-clip: padding-box;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-color: #fff;
}
.select2-container.select2-drop-above .select2-choice {
border-bottom-color: #aaa;
border-radius: 0 0 4px 4px;
}
.select2-container.select2-allowclear .select2-choice .select2-chosen {
margin-right: 42px;
}
.select2-container .select2-choice > .select2-chosen {
margin-right: 26px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.select2-container .select2-choice abbr {
display: none;
width: 12px;
height: 12px;
position: absolute;
right: 24px;
top: 8px;
font-size: 1px;
text-decoration: none;
border: 0;
background: url('select2.png') right top no-repeat;
cursor: pointer;
outline: 0;
}
.select2-container.select2-allowclear .select2-choice abbr {
display: inline-block;
}
.select2-container .select2-choice abbr:hover {
background-position: right -11px;
cursor: pointer;
}
.select2-drop-mask {
border: 0;
margin: 0;
padding: 0;
position: fixed;
left: 0;
top: 0;
min-height: 100%;
min-width: 100%;
height: auto;
width: auto;
opacity: 0;
z-index: 9998;
/* styles required for IE to work */
background-color: #fff;
filter: alpha(opacity=0);
}
.select2-drop {
width: 100%;
margin-top: -1px;
position: absolute;
z-index: 9999;
top: 100%;
background: #fff;
color: #000;
border: 1px solid #aaa;
border-top: 0;
border-radius: 0 0 4px 4px;
-webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
}
.select2-drop-auto-width {
border-top: 1px solid #aaa;
width: auto;
}
.select2-drop-auto-width .select2-search {
padding-top: 4px;
}
.select2-drop.select2-drop-above {
margin-top: 1px;
border-top: 1px solid #aaa;
border-bottom: 0;
border-radius: 4px 4px 0 0;
-webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
}
.select2-drop-active {
border: 1px solid #5897fb;
border-top: none;
}
.select2-drop.select2-drop-above.select2-drop-active {
border-top: 1px solid #5897fb;
}
.select2-container .select2-choice .select2-arrow {
display: inline-block;
width: 18px;
height: 100%;
position: absolute;
right: 0;
top: 0;
border-left: 1px solid #aaa;
border-radius: 0 4px 4px 0;
background-clip: padding-box;
background: #ccc;
}
.select2-container .select2-choice .select2-arrow b {
display: block;
width: 100%;
height: 100%;
background: url('select2.png') no-repeat 0 1px;
}
.select2-search {
display: inline-block;
width: 100%;
min-height: 26px;
margin: 0;
padding-left: 4px;
padding-right: 4px;
position: relative;
z-index: 10000;
white-space: nowrap;
}
.select2-search input {
width: 100%;
height: auto !important;
min-height: 26px;
padding: 4px 20px 4px 5px;
margin: 0;
outline: 0;
font-family: sans-serif;
font-size: 1em;
border: 1px solid #aaa;
border-radius: 0;
-webkit-box-shadow: none;
box-shadow: none;
background: #fff url('select2.png') no-repeat 100% -22px;
background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
background: url('select2.png') no-repeat 100% -22px, linear-gradient(top, #fff 85%, #eee 99%);
}
.select2-drop.select2-drop-above .select2-search input {
margin-top: 4px;
}
.select2-search input.select2-active {
background: #fff url('select2-spinner.gif') no-repeat 100%;
background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(top, #fff 85%, #eee 99%);
}
.select2-container-active .select2-choice,
.select2-container-active .select2-choices {
border: 1px solid #5897fb;
outline: none;
-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
box-shadow: 0 0 5px rgba(0, 0, 0, .3);
}
.select2-dropdown-open .select2-choice {
border-bottom-color: transparent;
-webkit-box-shadow: 0 1px 0 #fff inset;
box-shadow: 0 1px 0 #fff inset;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
background-color: #eee;
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));
background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);
background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
background-image: linear-gradient(top, #fff 0%, #eee 50%);
}
.select2-dropdown-open.select2-drop-above .select2-choice,
.select2-dropdown-open.select2-drop-above .select2-choices {
border: 1px solid #5897fb;
border-top-color: transparent;
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));
background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);
background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
background-image: linear-gradient(bottom, #fff 0%, #eee 50%);
}
.select2-dropdown-open .select2-choice .select2-arrow {
background: transparent;
border-left: none;
filter: none;
}
.select2-dropdown-open .select2-choice .select2-arrow b {
background-position: -18px 1px;
}
/* results */
.select2-results {
max-height: 200px;
padding: 0 0 0 4px;
margin: 4px 4px 4px 0;
position: relative;
overflow-x: hidden;
overflow-y: auto;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
.select2-results ul.select2-result-sub {
margin: 0;
padding-left: 0;
}
.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px }
.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px }
.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px }
.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px }
.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px }
.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px }
.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px }
.select2-results li {
list-style: none;
display: list-item;
background-image: none;
}
.select2-results li.select2-result-with-children > .select2-result-label {
font-weight: bold;
}
.select2-results .select2-result-label {
padding: 3px 7px 4px;
margin: 0;
cursor: pointer;
min-height: 1em;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.select2-results .select2-highlighted {
background: #3875d7;
color: #fff;
}
.select2-results li em {
background: #feffde;
font-style: normal;
}
.select2-results .select2-highlighted em {
background: transparent;
}
.select2-results .select2-highlighted ul {
background: #fff;
color: #000;
}
.select2-results .select2-no-results,
.select2-results .select2-searching,
.select2-results .select2-selection-limit {
background: #f4f4f4;
display: list-item;
}
/*
disabled look for disabled choices in the results dropdown
*/
.select2-results .select2-disabled.select2-highlighted {
color: #666;
background: #f4f4f4;
display: list-item;
cursor: default;
}
.select2-results .select2-disabled {
background: #f4f4f4;
display: list-item;
cursor: default;
}
.select2-results .select2-selected {
display: none;
}
.select2-more-results.select2-active {
background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;
}
.select2-more-results {
background: #f4f4f4;
display: list-item;
}
/* disabled styles */
.select2-container.select2-container-disabled .select2-choice {
background-color: #f4f4f4;
background-image: none;
border: 1px solid #ddd;
cursor: default;
}
.select2-container.select2-container-disabled .select2-choice .select2-arrow {
background-color: #f4f4f4;
background-image: none;
border-left: 0;
}
.select2-container.select2-container-disabled .select2-choice abbr {
display: none;
}
/* multiselect */
.select2-container-multi .select2-choices {
height: auto !important;
height: 1%;
margin: 0;
padding: 0;
position: relative;
border: 1px solid #aaa;
cursor: text;
overflow: hidden;
background-color: #fff;
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));
background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);
background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);
background-image: linear-gradient(top, #eee 1%, #fff 15%);
}
.select2-locked {
padding: 3px 5px 3px 5px !important;
}
.select2-container-multi .select2-choices {
min-height: 26px;
}
.select2-container-multi.select2-container-active .select2-choices {
border: 1px solid #5897fb;
outline: none;
-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
box-shadow: 0 0 5px rgba(0, 0, 0, .3);
}
.select2-container-multi .select2-choices li {
float: left;
list-style: none;
}
.select2-container-multi .select2-choices .select2-search-field {
margin: 0;
padding: 0;
white-space: nowrap;
}
.select2-container-multi .select2-choices .select2-search-field input {
padding: 5px;
margin: 1px 0;
font-family: sans-serif;
font-size: 100%;
color: #666;
outline: 0;
border: 0;
-webkit-box-shadow: none;
box-shadow: none;
background: transparent !important;
}
.select2-container-multi .select2-choices .select2-search-field input.select2-active {
background: #fff url('select2-spinner.gif') no-repeat 100% !important;
}
.select2-default {
color: #999 !important;
}
.select2-container-multi .select2-choices .select2-search-choice {
padding: 3px 5px 3px 18px;
margin: 3px 0 3px 5px;
position: relative;
line-height: 13px;
color: #333;
cursor: default;
border: 1px solid #aaaaaa;
border-radius: 3px;
-webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
background-clip: padding-box;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-color: #e4e4e4;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));
background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
}
.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {
cursor: default;
}
.select2-container-multi .select2-choices .select2-search-choice-focus {
background: #d4d4d4;
}
.select2-search-choice-close {
display: block;
width: 12px;
height: 13px;
position: absolute;
right: 3px;
top: 4px;
font-size: 1px;
outline: none;
background: url('select2.png') right top no-repeat;
}
.select2-container-multi .select2-search-choice-close {
left: 3px;
}
.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {
background-position: right -11px;
}
.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {
background-position: right -11px;
}
/* disabled styles */
.select2-container-multi.select2-container-disabled .select2-choices {
background-color: #f4f4f4;
background-image: none;
border: 1px solid #ddd;
cursor: default;
}
.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {
padding: 3px 5px 3px 5px;
border: 1px solid #ddd;
background-image: none;
background-color: #f4f4f4;
}
.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;
background: none;
}
/* end multiselect */
.select2-result-selectable .select2-match,
.select2-result-unselectable .select2-match {
text-decoration: underline;
}
.select2-offscreen, .select2-offscreen:focus {
clip: rect(0 0 0 0) !important;
width: 1px !important;
height: 1px !important;
border: 0 !important;
margin: 0 !important;
padding: 0 !important;
overflow: hidden !important;
position: absolute !important;
outline: 0 !important;
left: 0px !important;
top: 0px !important;
}
.select2-display-none {
display: none;
}
.select2-measure-scrollbar {
position: absolute;
top: -10000px;
left: -10000px;
width: 100px;
height: 100px;
overflow: scroll;
}
/* Retina-ize icons */

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 B

File diff suppressed because one or more lines are too long

@ -0,0 +1,13 @@
/**
* BootstrapValidator (http://bootstrapvalidator.com)
*
* The best jQuery plugin to validate form fields. Designed to use with Bootstrap 3
*
* @version v0.4.5
* @author https://twitter.com/nghuuphuoc
* @copyright (c) 2013 - 2014 Nguyen Huu Phuoc
* @license MIT
*/
.bv-form .help-block{margin-bottom:0}.nav-tabs li.bv-tab-success>a{color:#3c763d}.nav-tabs li.bv-tab-error>a{color:#a94442}

File diff suppressed because one or more lines are too long

@ -0,0 +1,663 @@
/*! X-editable - v1.5.1
* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery
* http://github.com/vitalets/x-editable
* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */
.editableform {
margin-bottom: 0; /* overwrites bootstrap margin */
}
.editableform .control-group {
margin-bottom: 0; /* overwrites bootstrap margin */
white-space: nowrap; /* prevent wrapping buttons on new line */
line-height: 20px; /* overwriting bootstrap line-height. See #133 */
}
/*
BS3 width:1005 for inputs breaks editable form in popup
See: https://github.com/vitalets/x-editable/issues/393
*/
.editableform .form-control {
width: 100%;
}
.editable-buttons {
display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */
vertical-align: top;
margin-left: 7px;
/* inline-block emulation for IE7*/
zoom: 1;
*display: inline;
}
.editable-buttons.editable-buttons-bottom {
display: block;
margin-top: 7px;
margin-left: 0;
}
.editable-input {
vertical-align: top;
display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */
width: auto; /* bootstrap-responsive has width: 100% that breakes layout */
white-space: normal; /* reset white-space decalred in parent*/
/* display-inline emulation for IE7*/
zoom: 1;
*display: inline;
}
.editable-buttons .editable-cancel {
margin-left: 7px;
}
/*for jquery-ui buttons need set height to look more pretty*/
.editable-buttons button.ui-button-icon-only {
height: 24px;
width: 30px;
}
.editableform-loading {
background: url('../img/loading.gif') center center no-repeat;
height: 25px;
width: auto;
min-width: 25px;
}
.editable-inline .editableform-loading {
background-position: left 5px;
}
.editable-error-block {
max-width: 300px;
margin: 5px 0 0 0;
width: auto;
white-space: normal;
}
/*add padding for jquery ui*/
.editable-error-block.ui-state-error {
padding: 3px;
}
.editable-error {
color: red;
}
/* ---- For specific types ---- */
.editableform .editable-date {
padding: 0;
margin: 0;
float: left;
}
/* move datepicker icon to center of add-on button. See https://github.com/vitalets/x-editable/issues/183 */
.editable-inline .add-on .icon-th {
margin-top: 3px;
margin-left: 1px;
}
/* checklist vertical alignment */
.editable-checklist label input[type="checkbox"],
.editable-checklist label span {
vertical-align: middle;
margin: 0;
}
.editable-checklist label {
white-space: nowrap;
}
/* set exact width of textarea to fit buttons toolbar */
.editable-wysihtml5 {
width: 566px;
height: 250px;
}
/* clear button shown as link in date inputs */
.editable-clear {
clear: both;
font-size: 0.9em;
text-decoration: none;
text-align: right;
}
/* IOS-style clear button for text inputs */
.editable-clear-x {
background: url('../img/clear.png') center center no-repeat;
display: block;
width: 13px;
height: 13px;
position: absolute;
opacity: 0.6;
z-index: 100;
top: 50%;
right: 6px;
margin-top: -6px;
}
.editable-clear-x:hover {
opacity: 1;
}
.editable-pre-wrapped {
white-space: pre-wrap;
}
.editable-container.editable-popup {
max-width: none !important; /* without this rule poshytip/tooltip does not stretch */
}
.editable-container.popover {
width: auto; /* without this rule popover does not stretch */
}
.editable-container.editable-inline {
display: inline-block;
vertical-align: middle;
width: auto;
/* inline-block emulation for IE7*/
zoom: 1;
*display: inline;
}
.editable-container.ui-widget {
font-size: inherit; /* jqueryui widget font 1.1em too big, overwrite it */
z-index: 9990; /* should be less than select2 dropdown z-index to close dropdown first when click */
}
.editable-click,
a.editable-click,
a.editable-click:hover {
text-decoration: none;
border-bottom: dashed 1px #0088cc;
}
.editable-click.editable-disabled,
a.editable-click.editable-disabled,
a.editable-click.editable-disabled:hover {
color: #585858;
cursor: default;
border-bottom: none;
}
.editable-empty, .editable-empty:hover, .editable-empty:focus{
font-style: italic;
color: #DD1144;
/* border-bottom: none; */
text-decoration: none;
}
.editable-unsaved {
font-weight: bold;
}
.editable-unsaved:after {
/* content: '*'*/
}
.editable-bg-transition {
-webkit-transition: background-color 1400ms ease-out;
-moz-transition: background-color 1400ms ease-out;
-o-transition: background-color 1400ms ease-out;
-ms-transition: background-color 1400ms ease-out;
transition: background-color 1400ms ease-out;
}
/*see https://github.com/vitalets/x-editable/issues/139 */
.form-horizontal .editable
{
padding-top: 5px;
display:inline-block;
}
/*!
* Datepicker for Bootstrap
*
* Copyright 2012 Stefan Petre
* Improvements by Andrew Rowls
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
*/
.datepicker {
padding: 4px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
direction: ltr;
/*.dow {
border-top: 1px solid #ddd !important;
}*/
}
.datepicker-inline {
width: 220px;
}
.datepicker.datepicker-rtl {
direction: rtl;
}
.datepicker.datepicker-rtl table tr td span {
float: right;
}
.datepicker-dropdown {
top: 0;
left: 0;
}
.datepicker-dropdown:before {
content: '';
display: inline-block;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom: 7px solid #ccc;
border-bottom-color: rgba(0, 0, 0, 0.2);
position: absolute;
top: -7px;
left: 6px;
}
.datepicker-dropdown:after {
content: '';
display: inline-block;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #ffffff;
position: absolute;
top: -6px;
left: 7px;
}
.datepicker > div {
display: none;
}
.datepicker.days div.datepicker-days {
display: block;
}
.datepicker.months div.datepicker-months {
display: block;
}
.datepicker.years div.datepicker-years {
display: block;
}
.datepicker table {
margin: 0;
}
.datepicker td,
.datepicker th {
text-align: center;
width: 20px;
height: 20px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
border: none;
}
.table-striped .datepicker table tr td,
.table-striped .datepicker table tr th {
background-color: transparent;
}
.datepicker table tr td.day:hover {
background: #eeeeee;
cursor: pointer;
}
.datepicker table tr td.old,
.datepicker table tr td.new {
color: #999999;
}
.datepicker table tr td.disabled,
.datepicker table tr td.disabled:hover {
background: none;
color: #999999;
cursor: default;
}
.datepicker table tr td.today,
.datepicker table tr td.today:hover,
.datepicker table tr td.today.disabled,
.datepicker table tr td.today.disabled:hover {
background-color: #fde19a;
background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
background-image: linear-gradient(top, #fdd49a, #fdf59a);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
border-color: #fdf59a #fdf59a #fbed50;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #000;
}
.datepicker table tr td.today:hover,
.datepicker table tr td.today:hover:hover,
.datepicker table tr td.today.disabled:hover,
.datepicker table tr td.today.disabled:hover:hover,
.datepicker table tr td.today:active,
.datepicker table tr td.today:hover:active,
.datepicker table tr td.today.disabled:active,
.datepicker table tr td.today.disabled:hover:active,
.datepicker table tr td.today.active,
.datepicker table tr td.today:hover.active,
.datepicker table tr td.today.disabled.active,
.datepicker table tr td.today.disabled:hover.active,
.datepicker table tr td.today.disabled,
.datepicker table tr td.today:hover.disabled,
.datepicker table tr td.today.disabled.disabled,
.datepicker table tr td.today.disabled:hover.disabled,
.datepicker table tr td.today[disabled],
.datepicker table tr td.today:hover[disabled],
.datepicker table tr td.today.disabled[disabled],
.datepicker table tr td.today.disabled:hover[disabled] {
background-color: #fdf59a;
}
.datepicker table tr td.today:active,
.datepicker table tr td.today:hover:active,
.datepicker table tr td.today.disabled:active,
.datepicker table tr td.today.disabled:hover:active,
.datepicker table tr td.today.active,
.datepicker table tr td.today:hover.active,
.datepicker table tr td.today.disabled.active,
.datepicker table tr td.today.disabled:hover.active {
background-color: #fbf069 \9;
}
.datepicker table tr td.today:hover:hover {
color: #000;
}
.datepicker table tr td.today.active:hover {
color: #fff;
}
.datepicker table tr td.range,
.datepicker table tr td.range:hover,
.datepicker table tr td.range.disabled,
.datepicker table tr td.range.disabled:hover {
background: #eeeeee;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
}
.datepicker table tr td.range.today,
.datepicker table tr td.range.today:hover,
.datepicker table tr td.range.today.disabled,
.datepicker table tr td.range.today.disabled:hover {
background-color: #f3d17a;
background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);
background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));
background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);
background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);
background-image: linear-gradient(top, #f3c17a, #f3e97a);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);
border-color: #f3e97a #f3e97a #edde34;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
}
.datepicker table tr td.range.today:hover,
.datepicker table tr td.range.today:hover:hover,
.datepicker table tr td.range.today.disabled:hover,
.datepicker table tr td.range.today.disabled:hover:hover,
.datepicker table tr td.range.today:active,
.datepicker table tr td.range.today:hover:active,
.datepicker table tr td.range.today.disabled:active,
.datepicker table tr td.range.today.disabled:hover:active,
.datepicker table tr td.range.today.active,
.datepicker table tr td.range.today:hover.active,
.datepicker table tr td.range.today.disabled.active,
.datepicker table tr td.range.today.disabled:hover.active,
.datepicker table tr td.range.today.disabled,
.datepicker table tr td.range.today:hover.disabled,
.datepicker table tr td.range.today.disabled.disabled,
.datepicker table tr td.range.today.disabled:hover.disabled,
.datepicker table tr td.range.today[disabled],
.datepicker table tr td.range.today:hover[disabled],
.datepicker table tr td.range.today.disabled[disabled],
.datepicker table tr td.range.today.disabled:hover[disabled] {
background-color: #f3e97a;
}
.datepicker table tr td.range.today:active,
.datepicker table tr td.range.today:hover:active,
.datepicker table tr td.range.today.disabled:active,
.datepicker table tr td.range.today.disabled:hover:active,
.datepicker table tr td.range.today.active,
.datepicker table tr td.range.today:hover.active,
.datepicker table tr td.range.today.disabled.active,
.datepicker table tr td.range.today.disabled:hover.active {
background-color: #efe24b \9;
}
.datepicker table tr td.selected,
.datepicker table tr td.selected:hover,
.datepicker table tr td.selected.disabled,
.datepicker table tr td.selected.disabled:hover {
background-color: #9e9e9e;
background-image: -moz-linear-gradient(top, #b3b3b3, #808080);
background-image: -ms-linear-gradient(top, #b3b3b3, #808080);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));
background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);
background-image: -o-linear-gradient(top, #b3b3b3, #808080);
background-image: linear-gradient(top, #b3b3b3, #808080);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);
border-color: #808080 #808080 #595959;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td.selected:hover,
.datepicker table tr td.selected:hover:hover,
.datepicker table tr td.selected.disabled:hover,
.datepicker table tr td.selected.disabled:hover:hover,
.datepicker table tr td.selected:active,
.datepicker table tr td.selected:hover:active,
.datepicker table tr td.selected.disabled:active,
.datepicker table tr td.selected.disabled:hover:active,
.datepicker table tr td.selected.active,
.datepicker table tr td.selected:hover.active,
.datepicker table tr td.selected.disabled.active,
.datepicker table tr td.selected.disabled:hover.active,
.datepicker table tr td.selected.disabled,
.datepicker table tr td.selected:hover.disabled,
.datepicker table tr td.selected.disabled.disabled,
.datepicker table tr td.selected.disabled:hover.disabled,
.datepicker table tr td.selected[disabled],
.datepicker table tr td.selected:hover[disabled],
.datepicker table tr td.selected.disabled[disabled],
.datepicker table tr td.selected.disabled:hover[disabled] {
background-color: #808080;
}
.datepicker table tr td.selected:active,
.datepicker table tr td.selected:hover:active,
.datepicker table tr td.selected.disabled:active,
.datepicker table tr td.selected.disabled:hover:active,
.datepicker table tr td.selected.active,
.datepicker table tr td.selected:hover.active,
.datepicker table tr td.selected.disabled.active,
.datepicker table tr td.selected.disabled:hover.active {
background-color: #666666 \9;
}
.datepicker table tr td.active,
.datepicker table tr td.active:hover,
.datepicker table tr td.active.disabled,
.datepicker table tr td.active.disabled:hover {
background-color: #006dcc;
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
background-image: linear-gradient(top, #0088cc, #0044cc);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
border-color: #0044cc #0044cc #002a80;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td.active:hover,
.datepicker table tr td.active:hover:hover,
.datepicker table tr td.active.disabled:hover,
.datepicker table tr td.active.disabled:hover:hover,
.datepicker table tr td.active:active,
.datepicker table tr td.active:hover:active,
.datepicker table tr td.active.disabled:active,
.datepicker table tr td.active.disabled:hover:active,
.datepicker table tr td.active.active,
.datepicker table tr td.active:hover.active,
.datepicker table tr td.active.disabled.active,
.datepicker table tr td.active.disabled:hover.active,
.datepicker table tr td.active.disabled,
.datepicker table tr td.active:hover.disabled,
.datepicker table tr td.active.disabled.disabled,
.datepicker table tr td.active.disabled:hover.disabled,
.datepicker table tr td.active[disabled],
.datepicker table tr td.active:hover[disabled],
.datepicker table tr td.active.disabled[disabled],
.datepicker table tr td.active.disabled:hover[disabled] {
background-color: #0044cc;
}
.datepicker table tr td.active:active,
.datepicker table tr td.active:hover:active,
.datepicker table tr td.active.disabled:active,
.datepicker table tr td.active.disabled:hover:active,
.datepicker table tr td.active.active,
.datepicker table tr td.active:hover.active,
.datepicker table tr td.active.disabled.active,
.datepicker table tr td.active.disabled:hover.active {
background-color: #003399 \9;
}
.datepicker table tr td span {
display: block;
width: 23%;
height: 54px;
line-height: 54px;
float: left;
margin: 1%;
cursor: pointer;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
.datepicker table tr td span:hover {
background: #eeeeee;
}
.datepicker table tr td span.disabled,
.datepicker table tr td span.disabled:hover {
background: none;
color: #999999;
cursor: default;
}
.datepicker table tr td span.active,
.datepicker table tr td span.active:hover,
.datepicker table tr td span.active.disabled,
.datepicker table tr td span.active.disabled:hover {
background-color: #006dcc;
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
background-image: linear-gradient(top, #0088cc, #0044cc);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
border-color: #0044cc #0044cc #002a80;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td span.active:hover,
.datepicker table tr td span.active:hover:hover,
.datepicker table tr td span.active.disabled:hover,
.datepicker table tr td span.active.disabled:hover:hover,
.datepicker table tr td span.active:active,
.datepicker table tr td span.active:hover:active,
.datepicker table tr td span.active.disabled:active,
.datepicker table tr td span.active.disabled:hover:active,
.datepicker table tr td span.active.active,
.datepicker table tr td span.active:hover.active,
.datepicker table tr td span.active.disabled.active,
.datepicker table tr td span.active.disabled:hover.active,
.datepicker table tr td span.active.disabled,
.datepicker table tr td span.active:hover.disabled,
.datepicker table tr td span.active.disabled.disabled,
.datepicker table tr td span.active.disabled:hover.disabled,
.datepicker table tr td span.active[disabled],
.datepicker table tr td span.active:hover[disabled],
.datepicker table tr td span.active.disabled[disabled],
.datepicker table tr td span.active.disabled:hover[disabled] {
background-color: #0044cc;
}
.datepicker table tr td span.active:active,
.datepicker table tr td span.active:hover:active,
.datepicker table tr td span.active.disabled:active,
.datepicker table tr td span.active.disabled:hover:active,
.datepicker table tr td span.active.active,
.datepicker table tr td span.active:hover.active,
.datepicker table tr td span.active.disabled.active,
.datepicker table tr td span.active.disabled:hover.active {
background-color: #003399 \9;
}
.datepicker table tr td span.old,
.datepicker table tr td span.new {
color: #999999;
}
.datepicker th.datepicker-switch {
width: 145px;
}
.datepicker thead tr:first-child th,
.datepicker tfoot tr th {
cursor: pointer;
}
.datepicker thead tr:first-child th:hover,
.datepicker tfoot tr th:hover {
background: #eeeeee;
}
.datepicker .cw {
font-size: 10px;
width: 12px;
padding: 0 2px 0 5px;
vertical-align: middle;
}
.datepicker thead tr:first-child th.cw {
cursor: default;
background-color: transparent;
}
.input-append.date .add-on i,
.input-prepend.date .add-on i {
display: block;
cursor: pointer;
width: 16px;
height: 16px;
}
.input-daterange input {
text-align: center;
}
.input-daterange input:first-child {
-webkit-border-radius: 3px 0 0 3px;
-moz-border-radius: 3px 0 0 3px;
border-radius: 3px 0 0 3px;
}
.input-daterange input:last-child {
-webkit-border-radius: 0 3px 3px 0;
-moz-border-radius: 0 3px 3px 0;
border-radius: 0 3px 3px 0;
}
.input-daterange .add-on {
display: inline-block;
width: auto;
min-width: 16px;
height: 18px;
padding: 4px 5px;
font-weight: normal;
line-height: 18px;
text-align: center;
text-shadow: 0 1px 0 #ffffff;
vertical-align: middle;
background-color: #eeeeee;
border: 1px solid #ccc;
margin-left: -5px;
margin-right: -5px;
}

@ -0,0 +1,76 @@
$(function(){
//ajax mocks
$.mockjaxSettings.responseTime = 500;
$.mockjax({
url: '/post',
response: function(settings) {
log(settings, this);
}
});
$.mockjax({
url: '/error',
status: 400,
statusText: 'Bad Request',
response: function(settings) {
this.responseText = 'Please input correct value';
log(settings, this);
}
});
$.mockjax({
url: '/status',
status: 500,
response: function(settings) {
this.responseText = 'Internal Server Error';
log(settings, this);
}
});
$.mockjax({
url: '/groups',
response: function(settings) {
this.responseText = [
{value: 0, text: 'Guest'},
{value: 1, text: 'Service'},
{value: 2, text: 'Customer'},
{value: 3, text: 'Operator'},
{value: 4, text: 'Support'},
{value: 5, text: 'Admin'}
];
log(settings, this);
}
});
function log(settings, response) {
var s = [], str;
s.push(settings.type.toUpperCase() + ' url = "' + settings.url + '"');
for(var a in settings.data) {
if(settings.data[a] && typeof settings.data[a] === 'object') {
str = [];
for(var j in settings.data[a]) {str.push(j+': "'+settings.data[a][j]+'"');}
str = '{ '+str.join(', ')+' }';
} else {
str = '"'+settings.data[a]+'"';
}
s.push(a + ' = ' + str);
}
s.push('RESPONSE: status = ' + response.status);
if(response.responseText) {
if($.isArray(response.responseText)) {
s.push('[');
$.each(response.responseText, function(i, v){
s.push('{value: ' + v.value+', text: "'+v.text+'"}');
});
s.push(']');
} else {
s.push($.trim(response.responseText));
}
}
s.push('--------------------------------------\n');
$('#console').val(s.join('\n') + $('#console').val());
}
});

@ -0,0 +1,521 @@
/*!
* MockJax - jQuery Plugin to Mock Ajax requests
*
* Version: 1.5.0pre
* Released:
* Home: http://github.com/appendto/jquery-mockjax
* Author: Jonathan Sharp (http://jdsharp.com)
* License: MIT,GPL
*
* Copyright (c) 2011 appendTo LLC.
* Dual licensed under the MIT or GPL licenses.
* http://appendto.com/open-source-licenses
*/
(function($) {
var _ajax = $.ajax,
mockHandlers = [],
CALLBACK_REGEX = /=\?(&|$)/,
jsc = (new Date()).getTime();
// Parse the given XML string.
function parseXML(xml) {
if ( window['DOMParser'] == undefined && window.ActiveXObject ) {
DOMParser = function() { };
DOMParser.prototype.parseFromString = function( xmlString ) {
var doc = new ActiveXObject('Microsoft.XMLDOM');
doc.async = 'false';
doc.loadXML( xmlString );
return doc;
};
}
try {
var xmlDoc = ( new DOMParser() ).parseFromString( xml, 'text/xml' );
if ( $.isXMLDoc( xmlDoc ) ) {
var err = $('parsererror', xmlDoc);
if ( err.length == 1 ) {
throw('Error: ' + $(xmlDoc).text() );
}
} else {
throw('Unable to parse XML');
}
} catch( e ) {
var msg = ( e.name == undefined ? e : e.name + ': ' + e.message );
$(document).trigger('xmlParseError', [ msg ]);
return undefined;
}
return xmlDoc;
}
// Trigger a jQuery event
function trigger(s, type, args) {
(s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);
}
// Check if the data field on the mock handler and the request match. This
// can be used to restrict a mock handler to being used only when a certain
// set of data is passed to it.
function isMockDataEqual( mock, live ) {
var identical = false;
// Test for situations where the data is a querystring (not an object)
if (typeof live === 'string') {
// Querystring may be a regex
return $.isFunction( mock.test ) ? mock.test(live) : mock == live;
}
$.each(mock, function(k, v) {
if ( live[k] === undefined ) {
identical = false;
return identical;
} else {
identical = true;
if ( typeof live[k] == 'object' ) {
return isMockDataEqual(mock[k], live[k]);
} else {
if ( $.isFunction( mock[k].test ) ) {
identical = mock[k].test(live[k]);
} else {
identical = ( mock[k] == live[k] );
}
return identical;
}
}
});
return identical;
}
// Check the given handler should mock the given request
function getMockForRequest( handler, requestSettings ) {
// If the mock was registered with a function, let the function decide if we
// want to mock this request
if ( $.isFunction(handler) ) {
return handler( requestSettings );
}
// Inspect the URL of the request and check if the mock handler's url
// matches the url for this ajax request
if ( $.isFunction(handler.url.test) ) {
// The user provided a regex for the url, test it
if ( !handler.url.test( requestSettings.url ) ) {
return null;
}
} else {
// Look for a simple wildcard '*' or a direct URL match
var star = handler.url.indexOf('*');
if (handler.url !== requestSettings.url && star === -1 ||
!new RegExp(handler.url.replace(/[-[\]{}()+?.,\\^$|#\s]/g, "\\$&").replace('*', '.+')).test(requestSettings.url)) {
return null;
}
}
// Inspect the data submitted in the request (either POST body or GET query string)
if ( handler.data && requestSettings.data ) {
if ( !isMockDataEqual(handler.data, requestSettings.data) ) {
// They're not identical, do not mock this request
return null;
}
}
// Inspect the request type
if ( handler && handler.type &&
handler.type.toLowerCase() != requestSettings.type.toLowerCase() ) {
// The request type doesn't match (GET vs. POST)
return null;
}
return handler;
}
// If logging is enabled, log the mock to the console
function logMock( mockHandler, requestSettings ) {
var c = $.extend({}, $.mockjaxSettings, mockHandler);
if ( c.log && $.isFunction(c.log) ) {
c.log('MOCK ' + requestSettings.type.toUpperCase() + ': ' + requestSettings.url, $.extend({}, requestSettings));
}
}
// Process the xhr objects send operation
function _xhrSend(mockHandler, requestSettings, origSettings) {
// This is a substitute for < 1.4 which lacks $.proxy
var process = (function(that) {
return function() {
return (function() {
// The request has returned
this.status = mockHandler.status;
this.statusText = mockHandler.statusText;
this.readyState = 4;
// We have an executable function, call it to give
// the mock handler a chance to update it's data
if ( $.isFunction(mockHandler.response) ) {
mockHandler.response(origSettings);
}
// Copy over our mock to our xhr object before passing control back to
// jQuery's onreadystatechange callback
if ( requestSettings.dataType == 'json' && ( typeof mockHandler.responseText == 'object' ) ) {
this.responseText = JSON.stringify(mockHandler.responseText);
} else if ( requestSettings.dataType == 'xml' ) {
if ( typeof mockHandler.responseXML == 'string' ) {
this.responseXML = parseXML(mockHandler.responseXML);
} else {
this.responseXML = mockHandler.responseXML;
}
} else {
this.responseText = mockHandler.responseText;
}
if( typeof mockHandler.status == 'number' || typeof mockHandler.status == 'string' ) {
this.status = mockHandler.status;
}
if( typeof mockHandler.statusText === "string") {
this.statusText = mockHandler.statusText;
}
// jQuery < 1.4 doesn't have onreadystate change for xhr
if ( $.isFunction(this.onreadystatechange) ) {
if( mockHandler.isTimeout) {
this.status = -1;
}
this.onreadystatechange( mockHandler.isTimeout ? 'timeout' : undefined );
} else if ( mockHandler.isTimeout ) {
// Fix for 1.3.2 timeout to keep success from firing.
this.status = -1;
}
}).apply(that);
};
})(this);
if ( mockHandler.proxy ) {
// We're proxying this request and loading in an external file instead
_ajax({
global: false,
url: mockHandler.proxy,
type: mockHandler.proxyType,
data: mockHandler.data,
dataType: requestSettings.dataType === "script" ? "text/plain" : requestSettings.dataType,
complete: function(xhr, txt) {
mockHandler.responseXML = xhr.responseXML;
mockHandler.responseText = xhr.responseText;
mockHandler.status = xhr.status;
mockHandler.statusText = xhr.statusText;
this.responseTimer = setTimeout(process, mockHandler.responseTime || 0);
}
});
} else {
// type == 'POST' || 'GET' || 'DELETE'
if ( requestSettings.async === false ) {
// TODO: Blocking delay
process();
} else {
this.responseTimer = setTimeout(process, mockHandler.responseTime || 50);
}
}
}
// Construct a mocked XHR Object
function xhr(mockHandler, requestSettings, origSettings, origHandler) {
// Extend with our default mockjax settings
mockHandler = $.extend({}, $.mockjaxSettings, mockHandler);
if (typeof mockHandler.headers === 'undefined') {
mockHandler.headers = {};
}
if ( mockHandler.contentType ) {
mockHandler.headers['content-type'] = mockHandler.contentType;
}
return {
status: mockHandler.status,
statusText: mockHandler.statusText,
readyState: 1,
open: function() { },
send: function() {
origHandler.fired = true;
_xhrSend.call(this, mockHandler, requestSettings, origSettings);
},
abort: function() {
clearTimeout(this.responseTimer);
},
setRequestHeader: function(header, value) {
mockHandler.headers[header] = value;
},
getResponseHeader: function(header) {
// 'Last-modified', 'Etag', 'content-type' are all checked by jQuery
if ( mockHandler.headers && mockHandler.headers[header] ) {
// Return arbitrary headers
return mockHandler.headers[header];
} else if ( header.toLowerCase() == 'last-modified' ) {
return mockHandler.lastModified || (new Date()).toString();
} else if ( header.toLowerCase() == 'etag' ) {
return mockHandler.etag || '';
} else if ( header.toLowerCase() == 'content-type' ) {
return mockHandler.contentType || 'text/plain';
}
},
getAllResponseHeaders: function() {
var headers = '';
$.each(mockHandler.headers, function(k, v) {
headers += k + ': ' + v + "\n";
});
return headers;
}
};
}
// Process a JSONP mock request.
function processJsonpMock( requestSettings, mockHandler, origSettings ) {
// Handle JSONP Parameter Callbacks, we need to replicate some of the jQuery core here
// because there isn't an easy hook for the cross domain script tag of jsonp
processJsonpUrl( requestSettings );
requestSettings.dataType = "json";
if(requestSettings.data && CALLBACK_REGEX.test(requestSettings.data) || CALLBACK_REGEX.test(requestSettings.url)) {
createJsonpCallback(requestSettings, mockHandler);
// We need to make sure
// that a JSONP style response is executed properly
var rurl = /^(\w+:)?\/\/([^\/?#]+)/,
parts = rurl.exec( requestSettings.url ),
remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);
requestSettings.dataType = "script";
if(requestSettings.type.toUpperCase() === "GET" && remote ) {
var newMockReturn = processJsonpRequest( requestSettings, mockHandler, origSettings );
// Check if we are supposed to return a Deferred back to the mock call, or just
// signal success
if(newMockReturn) {
return newMockReturn;
} else {
return true;
}
}
}
return null;
}
// Append the required callback parameter to the end of the request URL, for a JSONP request
function processJsonpUrl( requestSettings ) {
if ( requestSettings.type.toUpperCase() === "GET" ) {
if ( !CALLBACK_REGEX.test( requestSettings.url ) ) {
requestSettings.url += (/\?/.test( requestSettings.url ) ? "&" : "?") +
(requestSettings.jsonp || "callback") + "=?";
}
} else if ( !requestSettings.data || !CALLBACK_REGEX.test(requestSettings.data) ) {
requestSettings.data = (requestSettings.data ? requestSettings.data + "&" : "") + (requestSettings.jsonp || "callback") + "=?";
}
}
// Process a JSONP request by evaluating the mocked response text
function processJsonpRequest( requestSettings, mockHandler, origSettings ) {
// Synthesize the mock request for adding a script tag
var callbackContext = origSettings && origSettings.context || requestSettings,
newMock = null;
// If the response handler on the moock is a function, call it
if ( mockHandler.response && $.isFunction(mockHandler.response) ) {
mockHandler.response(origSettings);
} else {
// Evaluate the responseText javascript in a global context
if( typeof mockHandler.responseText === 'object' ) {
$.globalEval( '(' + JSON.stringify( mockHandler.responseText ) + ')');
} else {
$.globalEval( '(' + mockHandler.responseText + ')');
}
}
// Successful response
jsonpSuccess( requestSettings, mockHandler );
jsonpComplete( requestSettings, mockHandler );
// If we are running under jQuery 1.5+, return a deferred object
if(jQuery.Deferred){
newMock = new jQuery.Deferred();
if(typeof mockHandler.responseText == "object"){
newMock.resolve( mockHandler.responseText );
}
else{
newMock.resolve( jQuery.parseJSON( mockHandler.responseText ) );
}
}
return newMock;
}
// Create the required JSONP callback function for the request
function createJsonpCallback( requestSettings, mockHandler ) {
jsonp = requestSettings.jsonpCallback || ("jsonp" + jsc++);
// Replace the =? sequence both in the query string and the data
if ( requestSettings.data ) {
requestSettings.data = (requestSettings.data + "").replace(CALLBACK_REGEX, "=" + jsonp + "$1");
}
requestSettings.url = requestSettings.url.replace(CALLBACK_REGEX, "=" + jsonp + "$1");
// Handle JSONP-style loading
window[ jsonp ] = window[ jsonp ] || function( tmp ) {
data = tmp;
jsonpSuccess( requestSettings, mockHandler );
jsonpComplete( requestSettings, mockHandler );
// Garbage collect
window[ jsonp ] = undefined;
try {
delete window[ jsonp ];
} catch(e) {}
if ( head ) {
head.removeChild( script );
}
};
}
// The JSONP request was successful
function jsonpSuccess(requestSettings, mockHandler) {
// If a local callback was specified, fire it and pass it the data
if ( requestSettings.success ) {
requestSettings.success.call( callbackContext, ( mockHandler.response ? mockHandler.response.toString() : mockHandler.responseText || ''), status, {} );
}
// Fire the global callback
if ( requestSettings.global ) {
trigger(requestSettings, "ajaxSuccess", [{}, requestSettings] );
}
}
// The JSONP request was completed
function jsonpComplete(requestSettings, mockHandler) {
// Process result
if ( requestSettings.complete ) {
requestSettings.complete.call( callbackContext, {} , status );
}
// The request was completed
if ( requestSettings.global ) {
trigger( "ajaxComplete", [{}, requestSettings] );
}
// Handle the global AJAX counter
if ( requestSettings.global && ! --jQuery.active ) {
jQuery.event.trigger( "ajaxStop" );
}
}
// The core $.ajax replacement.
function handleAjax( url, origSettings ) {
var mockRequest, requestSettings, mockHandler;
// If url is an object, simulate pre-1.5 signature
if ( typeof url === "object" ) {
origSettings = url;
url = undefined;
} else {
// work around to support 1.5 signature
origSettings.url = url;
}
// Extend the original settings for the request
requestSettings = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);
// Iterate over our mock handlers (in registration order) until we find
// one that is willing to intercept the request
for(var k = 0; k < mockHandlers.length; k++) {
if ( !mockHandlers[k] ) {
continue;
}
mockHandler = getMockForRequest( mockHandlers[k], requestSettings );
if(!mockHandler) {
// No valid mock found for this request
continue;
}
// Handle console logging
logMock( mockHandler, requestSettings );
if ( requestSettings.dataType === "jsonp" ) {
if ((mockRequest = processJsonpMock( requestSettings, mockHandler, origSettings ))) {
// This mock will handle the JSONP request
return mockRequest;
}
}
// Removed to fix #54 - keep the mocking data object intact
//mockHandler.data = requestSettings.data;
mockHandler.cache = requestSettings.cache;
mockHandler.timeout = requestSettings.timeout;
mockHandler.global = requestSettings.global;
(function(mockHandler, requestSettings, origSettings, origHandler) {
mockRequest = _ajax.call($, $.extend(true, {}, origSettings, {
// Mock the XHR object
xhr: function() { return xhr( mockHandler, requestSettings, origSettings, origHandler ) }
}));
})(mockHandler, requestSettings, origSettings, mockHandlers[k]);
return mockRequest;
}
// We don't have a mock request, trigger a normal request
return _ajax.apply($, [origSettings]);
}
// Public
$.extend({
ajax: handleAjax
});
$.mockjaxSettings = {
//url: null,
//type: 'GET',
log: function(msg) {
window['console'] && window.console.log && window.console.log(msg);
},
status: 200,
statusText: "OK",
responseTime: 500,
isTimeout: false,
contentType: 'text/plain',
response: '',
responseText: '',
responseXML: '',
proxy: '',
proxyType: 'GET',
lastModified: null,
etag: '',
headers: {
etag: 'IJF@H#@923uf8023hFO@I#H#',
'content-type' : 'text/plain'
}
};
$.mockjax = function(settings) {
var i = mockHandlers.length;
mockHandlers[i] = settings;
return i;
};
$.mockjaxClear = function(i) {
if ( arguments.length == 1 ) {
mockHandlers[i] = null;
} else {
mockHandlers = [];
}
};
$.mockjax.handler = function(i) {
if ( arguments.length == 1 ) {
return mockHandlers[i];
}
};
})(jQuery);

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save