فهرست منبع

Wesmiler 时光单身NN2019120501项目迁移

wesmiler 4 سال پیش
والد
کامیت
e24023731e
100فایلهای تغییر یافته به همراه13320 افزوده شده و 2 حذف شده
  1. 227 2
      README.md
  2. 12 0
      public/.htaccess
  3. 1 0
      public/MP_verify_75jrLQj3TBPIwf8d.txt
  4. 46 0
      public/api.php
  5. BIN
      public/favicon.ico
  6. BIN
      public/fonts/msyh.ttc
  7. BIN
      public/fonts/msyhbd.ttc
  8. BIN
      public/fonts/msyhl.ttc
  9. 42 0
      public/index.php
  10. 17 0
      public/router.php
  11. 17 0
      public/static/css/cmf-ide-helper.css
  12. 4 0
      public/static/font-awesome/css/font-awesome.min.css
  13. BIN
      public/static/font-awesome/fonts/FontAwesome.otf
  14. BIN
      public/static/font-awesome/fonts/fontawesome-webfont.eot
  15. 2671 0
      public/static/font-awesome/fonts/fontawesome-webfont.svg
  16. BIN
      public/static/font-awesome/fonts/fontawesome-webfont.ttf
  17. BIN
      public/static/font-awesome/fonts/fontawesome-webfont.woff
  18. BIN
      public/static/font-awesome/fonts/fontawesome-webfont.woff2
  19. BIN
      public/static/images/advert/1.jpg
  20. BIN
      public/static/images/advert/2.jpg
  21. BIN
      public/static/images/advert/3.jpg
  22. BIN
      public/static/images/avatar.png
  23. BIN
      public/static/images/headicon.png
  24. 241 0
      public/static/install/css/install.css
  25. BIN
      public/static/install/images/bg.png
  26. BIN
      public/static/install/images/loading.gif
  27. 7 0
      public/static/install/simpleboot/css/simplebootadmin.css
  28. 8 0
      public/static/install/simpleboot/css/simplebootadminindex-ie.css
  29. BIN
      public/static/install/simpleboot/themes/flat/img/glyphicons-halflings-white.png
  30. BIN
      public/static/install/simpleboot/themes/flat/img/glyphicons-halflings.png
  31. 9 0
      public/static/install/simpleboot/themes/flat/theme.min.css
  32. 1085 0
      public/static/js/admin.js
  33. 1520 0
      public/static/js/ajaxForm.js
  34. 195 0
      public/static/js/ajaxfileupload.js
  35. 1579 0
      public/static/js/animate/animate.css
  36. 2023 0
      public/static/js/artDialog/artDialog.js
  37. 461 0
      public/static/js/artDialog/iframeTools.js
  38. 10 0
      public/static/js/artDialog/iframeTools.old.js
  39. 79 0
      public/static/js/artDialog/skins/blue.css
  40. BIN
      public/static/js/artDialog/skins/blue/bg.png
  41. BIN
      public/static/js/artDialog/skins/blue/bg2.png
  42. BIN
      public/static/js/artDialog/skins/blue/bg_css3.png
  43. BIN
      public/static/js/artDialog/skins/blue/bg_css3_2.png
  44. BIN
      public/static/js/artDialog/skins/blue/ie6/close.hover.png
  45. BIN
      public/static/js/artDialog/skins/blue/ie6/close.png
  46. BIN
      public/static/js/artDialog/skins/blue/ie6/e.png
  47. BIN
      public/static/js/artDialog/skins/blue/ie6/n.png
  48. BIN
      public/static/js/artDialog/skins/blue/ie6/ne.png
  49. BIN
      public/static/js/artDialog/skins/blue/ie6/nw.png
  50. BIN
      public/static/js/artDialog/skins/blue/ie6/s.png
  51. BIN
      public/static/js/artDialog/skins/blue/ie6/se.png
  52. BIN
      public/static/js/artDialog/skins/blue/ie6/sw.png
  53. BIN
      public/static/js/artDialog/skins/blue/ie6/w.png
  54. 67 0
      public/static/js/artDialog/skins/default.css
  55. BIN
      public/static/js/artDialog/skins/icons/error.png
  56. BIN
      public/static/js/artDialog/skins/icons/face-sad.png
  57. BIN
      public/static/js/artDialog/skins/icons/face-smile.png
  58. BIN
      public/static/js/artDialog/skins/icons/loading.gif
  59. BIN
      public/static/js/artDialog/skins/icons/question.png
  60. BIN
      public/static/js/artDialog/skins/icons/succeed.png
  61. BIN
      public/static/js/artDialog/skins/icons/warning.png
  62. 418 0
      public/static/js/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css
  63. 1981 0
      public/static/js/bootstrap-datetimepicker/js/bootstrap-datetimepicker.js
  64. 17 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ar.js
  65. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.az.js
  66. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.bg.js
  67. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.bn.js
  68. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ca.js
  69. 19 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.cs.js
  70. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.da.js
  71. 18 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.de.js
  72. 18 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ee.js
  73. 15 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.el.js
  74. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.es.js
  75. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fi.js
  76. 18 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fr.js
  77. 17 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.he.js
  78. 15 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hr.js
  79. 17 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hu.js
  80. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hy.js
  81. 19 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.id.js
  82. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.is.js
  83. 18 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.it.js
  84. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ja.js
  85. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ka.js
  86. 17 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ko.js
  87. 18 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lt.js
  88. 18 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lv.js
  89. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ms.js
  90. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.nb.js
  91. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.nl.js
  92. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.no.js
  93. 17 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pl.js
  94. 17 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pt-BR.js
  95. 17 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pt.js
  96. 17 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ro.js
  97. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.rs-latin.js
  98. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.rs.js
  99. 16 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ru.js
  100. 0 0
      public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sk.js

+ 227 - 2
README.md

@@ -1,3 +1,228 @@
-# NN2021012701
+ThinkCMF 5.1.3 让你更自由地飞
+===============
+
+### 系列讲座
+https://www.thinkcmf.com/college.html
+
+### ThinkCMF5.1主要特性
+* 更改框架协议为`MIT`,让你更自由地飞
+* 基于`ThinkPHP 5.1`重构,但核心代码兼容5.0版本,保证老用户最小升级成本
+* 增加对`swoole`支持,同时支持`swoole`协程和全同步模式
+* 重新规范目录结构,更贴心
+* CMF核心库及应用使用`composer`加载
+* 合并API到框架核心
+* 更规范的代码,遵循`PSR-2`命名规范和`PSR-4`自动加载规范
+* 支持 `composer` 管理第三方库
+* 核心化:独立核心代码包
+* 应用化:开发者以应用的形式增加项目模模块
+* 插件化:更强的插件机制,开发者以插件形式扩展功能
+* 模板化:前台可视化设计
+* 支持URL美化功能,支持别名设置,更简单
+* 独立的回收站功能,可以管理所有应用临时删除的数据
+* 统一的资源管理,相同文件只保存一份
+* 注解式的后台菜单管理功能,方便开发者代码管理后台菜单
+* 插件同样支持注解式的后台菜单管理功能
+* 文件存储插件化,默认支持七牛文件存储插件
+* 模板制作标签化,内置多个cmf标签,方便小白用户
+* 更人性化的导航标签,可以随意定制 html 结构
+* 后台首页插件化,用户可以定制的网站后台首页
+
+### 开发手册
+http://www.kancloud.cn/thinkcmf/doc5_1
+
+### Git仓库
+
+1. GitHub:https://github.com/thinkcmf/thinkcmf 主要仓库
+2. 码云:https://gitee.com/thinkcmf/ThinkCMF 中国镜像
+
+### 演示仓库
+此仓库会放官方的一些演示应用,插件,模板,API等 
+1. https://github.com/thinkcmf/demos 主要仓库
+2. https://gitee.com/thinkcmf/demos 中国镜像
+
+### 环境推荐
+> php7.1
+
+> mysql 5.6+
+
+> 打开rewrite
+
+
+### 最低环境要求
+> php5.6+
+
+> mysql 5.5+ (mysql5.1安装时选择utf8编码,不支持表情符)
+
+> 打开rewrite
+
+
+### 运行环境配置教程
+https://www.thinkcmf.com/topic/1502.html
+
+
+
+代码已经加入自动安装程序,如果你在安装中有任何问题请提交 issue!
+
+1. public目录做为网站根目录,入口文件在 public/index.php
+2. 配置好网站,请访问http://你的域名
+
+enjoy your cmf~!
+
+### 系统更新
+如果您是已经安装过ThinkCMF的用户,请查看 update 目录下的 sql 升级文件,根据自己的下载的程序版本进行更新
+
+### 完整版目录结构
+~~~
+thinkcmf  根目录
+├─api                     api目录
+│  ├─demo                 演示应用api目录
+│  │  ├─controller        控制器目录
+│  │  ├─model             模型目录
+│  │  └─ ...              更多类库目录
+├─app                     应用目录
+│  ├─demo                 演示应用目录
+│  │  ├─controller        控制器目录
+│  │  ├─model             模型目录
+│  │  └─ ...              更多类库目录
+│  ├─ ...                 更多应用
+│  ├─app.php              应用(公共)配置文件[可选]
+│  ├─command.php          命令行工具配置文件[可选]
+│  ├─common.php           应用公共(函数)文件[可选]
+│  ├─database.php         数据库配置文件[可选]
+│  ├─tags.php             应用行为扩展定义文件[可选]
+├─data                    数据目录(可写)
+│  ├─config               动态配置目录(可写)
+│  ├─route                动态路由目录(可写)
+│  ├─runtime              应用的运行时目录(可写)
+│  └─ ...                 更多
+├─public                  WEB 部署目录(对外访问目录)
+│  ├─plugins              插件目录
+│  ├─static               官方静态资源存放目录(css,js,image),勿放自己项目文件
+│  ├─themes               前后台主题目录
+│  │  ├─admin_simpleboot3 后台默认主题
+│  │  └─default           前台默认主题
+│  ├─upload               文件上传目录
+│  ├─api.php              API入口
+│  ├─index.php            入口文件
+│  ├─robots.txt           爬虫协议文件
+│  ├─router.php           快速测试文件
+│  └─.htaccess            apache重写文件
+├─extend                  扩展类库目录[可选]
+├─vendor                  第三方类库目录(Composer)
+│  ├─thinkphp             ThinkPHP目录
+│  └─...             
+├─composer.json           composer 定义文件
+├─LICENSE                 授权说明文件
+├─README.md               README 文件
+├─think                   命令行入口文件
+~~~
+
+### QQ群:
+`ThinkCMF 官方交流群`:316669417  
+   
+`ThinkCMF 高级交流群`:100828313 (付费)  
+高级群专属权益:  
+第一波:两个后台风格(ThinkCMF官网风格后台主题,蓝色风格后台主题)  
+第二波:ThinkCMF5完全开发手册离线版(PDF,EPUB,MOBI格式)  
+更多专属权益正在路上...
+
+`ThinkCMF 铲屎官交流群`:415136742 (生活娱乐,为有喵的猿人准备)
+
+### 话题专区
+http://www.thinkcmf.com/topic/index/index/cat/11.html
+
+### 反馈问题
+https://github.com/thinkcmf/thinkcmf/issues
+
+### 更新日志
+#### 5.1.3
+* 增加`CMF_DATA`常量(注意升级)
+* 增加插件路由功能
+* 增加插件URL美化功能
+* 修复app_init钩子引起的命令行报错
+* 修复API中文件url转化错误
+
+#### 5.1.2
+[核心]
+* 升级tp到`5.1.37`
+* 优化`slides,noslides`标签
+* 修复头像地址获取函数
+* 优化上传类支持API文件上传
+* 封装后台菜单,应用钩子,用户行为导入
+* 增加应用自动安装
+* 优化后台百度地图链接支持https
+
+[API]
+* 优化文件上传,支持云存储
+* 修复积分日志接口数据返回错误
+* 修复钩子不加载问题
+* 修复API跨域报错问题
+
+
+#### 5.1.1
+[核心]
+* `composer.json` extra 增加`think-config`配置
+* 修复API UserLikeModel继承错误类
+* 优化后台菜单 url 生成
+* 增加Linux下全新安装时data目录不可写提示
+* 修复插件模板常量`__ROOT__`不替换
+* 增加`swoole`扩展钩子检测
+* 修复插件API基类报错#577
+* 优化应用初始化流程
+* 优化行为加载流程
+
+[swoole]
+* 增加`swoole_server_start`,`swoole_worker_start`,`swoole_websocket_on_open`,`swoole_websocket_on_close`钩子
+* 增加`WebSocket`独立运行命令
+* 增加`WebSocket onOpen`回调
+* 修复`WebSocket`事件引起的数据库执行报错
+* 修复`WebSocket`发送消息未判断是否为`WebSocket`连接
+* 增加`worker`进程启动时自动初始化所有模块
+
+
+
+#### 5.1.0
+[核心]
+* 更改框架协议为`MIT`,让你更自由地飞
+* 升级`TP`到`5.1.35`
+* 独立安装应用为`composer`包
+* 移除portal应用,请到`https://github.com/thinkcmf/demos`下载
+* 移除`simpleboot3`模板,请到`https://github.com/thinkcmf/demos`下载
+* 移除`phpoffice/phpspreadsheet`,`phpoffice/phpexcel`,`dompdf/dompdf`第三方库,请自行安装
+* 移动`qiniu/php-sdk`库到七牛插件
+* `extend`目录改为可选,开发者自行添加,核心不再包含此目录
+* 增加`demo`应用,方便开发者学习
+* 增加插件`@adminMenuRoot`注解支持
+* 增加`app,api和插件`composer第三方库支持
+* 增加后台模板动态设置功能
+* 使用`composer classmap`做相关类的映射
+* 更改所有`thinkcmf`包版本号依赖
+* 优化清除缓存,清除opcache缓存
+* 优化`cmf_set_dynamic_config`兼容5.0和5.1
+* 升级`PHPMailer`使用`PHPMailer 6.0`(注意类的引入变化)
+* 修复路由是否存在检测问题
+* 修复url美化由于后台权限设置可能引起的漏洞(漏洞编号CVE-2019-6713 感谢topsec(zhan_ran)的及时反馈)
+* 修复子导航标签报错
+* 修复数据库对象实例化不当导致的问题
+* 修复`BaseController`排序批量更新
+* 修复新建管理员登录时报错
+* 取消`THINKCMF_VERSION`常量,请使用`cmf_version()`
+* 取消`PLUGINS_PATH`常量,请使用`WEB_ROOT.'plugins/`
+
+[swoole]
+* 增加`websocket`演示
+* 优化`swoole`配置初始化
+* 优化`swoole`下内容输出
+* 更改默认缓存大小为128M
+* 修复`swoole`如果控制器返回内容为空报错问题
+* 修复`swoole`下核心包路由注册位置
+* 修复`swoole`下后台风格无法设置
+
+#### 5.1.0-beta
+[核心]
+* 升级`ThinkCMF 5.0`到`ThinkPHP 5.1`
+
+
+
+
 
-时光婚恋公众号,原NN2019120501项目

+ 12 - 0
public/.htaccess

@@ -0,0 +1,12 @@
+<IfModule mod_rewrite.c>
+  Options +FollowSymlinks -Multiviews
+  RewriteEngine On
+
+  RewriteCond %{REQUEST_FILENAME} !-d
+  RewriteCond %{REQUEST_FILENAME} !-f
+  RewriteRule ^api/?(.*)$ api.php?s=$1 [QSA,PT,L]
+
+  RewriteCond %{REQUEST_FILENAME} !-d
+  RewriteCond %{REQUEST_FILENAME} !-f
+  RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
+</IfModule>

+ 1 - 0
public/MP_verify_75jrLQj3TBPIwf8d.txt

@@ -0,0 +1 @@
+75jrLQj3TBPIwf8d

+ 46 - 0
public/api.php

@@ -0,0 +1,46 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2013-2019 http://www.thinkcmf.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Author: 老猫 <zxxjjforever@163.com>
+// +----------------------------------------------------------------------
+
+namespace think;
+
+// [ 入口文件 ]
+
+// 调试模式开关
+define('APP_DEBUG', true);
+
+define('DS', DIRECTORY_SEPARATOR);
+
+// 定义CMF根目录,可更改此目录
+define('CMF_ROOT', dirname(__DIR__) . '/');
+
+// 定义CMF数据目录,可更改此目录
+define('CMF_DATA', CMF_ROOT . 'data/');
+
+// 定义应用目录
+define('APP_PATH', CMF_ROOT . 'api/');
+
+// 定义路由目录
+define('ROUTE_PATH', APP_PATH . 'route.php');
+
+// 定义配置目录
+define('CONFIG_PATH', CMF_ROOT . 'data/config/');
+
+define('CACHE_PATH', CMF_DATA . 'cache' . DS);
+
+// 定义命名空间
+define('APP_NAMESPACE', 'api');
+
+// 定义网站入口目录
+define('WEB_ROOT', __DIR__ . '/');
+
+// 加载基础文件
+require __DIR__ . '/../vendor/thinkphp/base.php';
+
+// 执行应用并响应
+Container::get('app', [APP_PATH])->run()->send();

BIN
public/favicon.ico


BIN
public/fonts/msyh.ttc


BIN
public/fonts/msyhbd.ttc


BIN
public/fonts/msyhl.ttc


+ 42 - 0
public/index.php

@@ -0,0 +1,42 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2013-2019 http://www.thinkcmf.com All rights reserved.
+// +----------------------------------------------------------------------
+// | Author: 老猫 <zxxjjforever@163.com>
+// +----------------------------------------------------------------------
+
+namespace think;
+
+// [ 入口文件 ]
+
+// 调试模式开关
+define('APP_DEBUG', true);
+
+define('TRACE_DEBUG', FALSE);
+
+define('DS', DIRECTORY_SEPARATOR);
+
+// 定义CMF根目录,可更改此目录
+define('CMF_ROOT', dirname(__DIR__) . '/');
+
+// 定义CMF数据目录,可更改此目录
+define('CMF_DATA', CMF_ROOT . 'data/');
+
+// 定义应用目录
+define('APP_PATH', CMF_ROOT . 'app/');
+
+// 上传目录
+define('UPLOAD_PATH', CMF_ROOT . 'public/upload/');
+
+// 定义网站入口目录
+define('WEB_ROOT', __DIR__ . '/');
+
+define('CACHE_PATH', CMF_DATA . 'cache' . DS);
+
+// 加载基础文件
+require CMF_ROOT . 'vendor/thinkphp/base.php';
+
+// 执行应用并响应
+Container::get('app', [APP_PATH])->run()->send();

+ 17 - 0
public/router.php

@@ -0,0 +1,17 @@
+<?php
+// +----------------------------------------------------------------------
+// | ThinkPHP [ WE CAN DO IT JUST THINK ]
+// +----------------------------------------------------------------------
+// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
+// +----------------------------------------------------------------------
+// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+// +----------------------------------------------------------------------
+// | Author: liu21st <liu21st@gmail.com>
+// +----------------------------------------------------------------------
+// $Id$
+
+if (is_file($_SERVER['DOCUMENT_ROOT'].$_SERVER['SCRIPT_NAME'])) {
+    return false;
+} else {
+    require __DIR__.'/index.php';
+}

+ 17 - 0
public/static/css/cmf-ide-helper.css

@@ -0,0 +1,17 @@
+.js-ajax-dialog-btn {
+}
+
+.js-ajax-form {
+}
+
+.js-bootstrap-date {
+}
+
+.js-bootstrap-datetime {
+
+}
+
+.js-bootstrap-year {
+
+}
+

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 4 - 0
public/static/font-awesome/css/font-awesome.min.css


BIN
public/static/font-awesome/fonts/FontAwesome.otf


BIN
public/static/font-awesome/fonts/fontawesome-webfont.eot


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 2671 - 0
public/static/font-awesome/fonts/fontawesome-webfont.svg


BIN
public/static/font-awesome/fonts/fontawesome-webfont.ttf


BIN
public/static/font-awesome/fonts/fontawesome-webfont.woff


BIN
public/static/font-awesome/fonts/fontawesome-webfont.woff2


BIN
public/static/images/advert/1.jpg


BIN
public/static/images/advert/2.jpg


BIN
public/static/images/advert/3.jpg


BIN
public/static/images/avatar.png


BIN
public/static/images/headicon.png


+ 241 - 0
public/static/install/css/install.css

@@ -0,0 +1,241 @@
+body {
+	font: 12px/1.5 Arial, Microsoft Yahei, Simsun;
+	color: #333;
+	background: url(../images/bg.png);
+}
+
+.wrap {
+	margin: 50px auto 0;
+	box-shadow: 0 0 1px #ccc;
+	width: 750px;
+	background: #fff;
+	border-radius: 3px;
+}
+
+.main{
+	padding-top:30px;
+}
+
+.header {
+	background: #2c3e50;
+	height: 60px;
+	position: relative;
+	color: #fff;
+	border-radius: 3px 3px 0 0;
+}
+
+.footer {
+	text-align: center;
+	padding: 15px 0 50px;
+	color: #999999;
+}
+
+.footer a {
+	color: #999;
+	text-decoration: none;
+}
+
+.bottom {
+	padding: 0 0 25px;
+}
+
+.agreement {
+	box-shadow: 5px 5px 5px #f7f7f7 inset;
+	border: 1px solid #bdbcbc;
+	width: 670px;
+	height: 350px;
+	padding: 10px;
+	overflow: hidden;
+	display: block;
+	overflow-y: scroll;
+	margin: 0 auto;
+	font-size: 12px;
+	line-height: 1.5;
+	margin-bottom: 22px;
+	outline: none;
+}
+
+pre {
+	white-space: pre-wrap;
+	white-space: -moz-pre-wrap;
+	white-space: -pre-wrap;
+	white-space: -o-pre-wrap;
+	word-wrap: break-word;
+	word-break: normal;
+}
+
+.version {
+	float: right;
+	margin: 0 20px 0 0;
+	height: 100%;
+	line-height: 60px;
+}
+
+.logo {
+	float: left;
+	width: auto;
+	height: 60px;
+	overflow: hidden;
+	font-size: 24px;
+	line-height: 60px;
+	padding: 0 15px;
+	margin: 0;
+	font-weight:normal;
+}
+
+.step {
+	border-bottom: 1px solid #dce1e5;
+	height: 60px;
+	background-color: #fff;
+}
+
+.step li {
+	float: left;
+	height: 60px;
+	line-height: 60px;
+	width: 33%;
+	text-align: center;
+	font-size: 14px;
+	color: #6f7885;
+	font-weight: 700;
+}
+
+.step li em {
+	width: 32px;
+	height: 32px;
+	text-align: center;
+	line-height: 32px;
+	display: inline-block;
+	font-size: 20px;
+	color: #fff;
+	font-family: Microsoft Yahei;
+	margin-right: 10px;
+	vertical-align: 0;
+	background-color: #ddd;
+    border-radius: 50%;
+}
+
+.step li.current {
+	color: #2c3e50;
+}
+
+.step li.current em {
+	background:#2c3e50;
+}
+
+.server {
+	padding: 20px 20px 10px 65px;
+}
+
+.server table {
+	margin-bottom: 20px;
+}
+
+.server td {
+	padding: 3px 5px;
+}
+
+.server .td1 {
+	color: #2c3e50;
+	font-weight: 700;
+}
+
+.server .input {
+	border-width: 1px;
+	/* padding: 3px; */
+	width: 200px;
+	margin:0;
+}
+
+.server .input:hover, .server .input:focus {
+	outline: none;
+}
+
+.gray {
+	color: #bbb;
+}
+
+.server tr:hover .gray {
+	color: #333;
+}
+
+.correct.fa{
+	color:#1dccaa;
+	font-size:16px;
+}
+.error.fa{
+	color:#e95d4e;
+	font-size:16px;
+}
+
+.install {
+	box-shadow: 5px 5px 5px #f7f7f7 inset;
+	border: 1px solid #bdbcbc;
+	width: 670px;
+	height: 350px;
+	padding: 10px;
+	overflow: hidden;
+	display: block;
+	overflow-y: scroll;
+	margin: 25px auto;
+	font-size: 12px;
+	margin-bottom: 22px;
+	outline: none;
+}
+
+.install ul {
+	line-height: 1.8;
+}
+
+/*
+===================
+操作提示
+>>	tips					普通
+>>	tips-error		错误
+>>	tips-success	正确
+>>	tips-loading	加载中
+使用方法
+	可独立样式使用,亦可与tips组装,例:
+	<div class="tips"><span class="tips-error">错误内容</span></div>
+	
+	可在外出包裹 tips-block 对错误提示进行块级效果展示
+===================
+*/
+.tips, .tips-block span {
+	line-height: 25px;
+	padding: 0 6px;
+}
+
+.tips {
+	border: 1px solid #faebd2;
+	background: #ffffe9;
+	color: #666;
+}
+
+.tips-error, .tips-success {
+	color: #cc3333;
+	padding-left: 0px;
+	display: inline-block;
+	line-height: 18px;
+}
+
+.tips-success {
+	color: #008800;
+	background-position: 0 -19px;
+}
+
+.tips-loading {
+	color: #cc3333;
+	color: #333333;
+	display: inline-block;
+	line-height: 20px;
+}
+
+.question{
+	color:#f4a425;
+	cursor:pointer;
+}
+
+.question:hover{
+	color:#D08207;
+}

BIN
public/static/install/images/bg.png


BIN
public/static/install/images/loading.gif


+ 7 - 0
public/static/install/simpleboot/css/simplebootadmin.css

@@ -0,0 +1,7 @@
+@CHARSET "UTF-8";
+
+.input-order{width:30px;}
+.wrap {
+padding: 20px 20px 70px;
+}
+.table td {font-size:12px;}

+ 8 - 0
public/static/install/simpleboot/css/simplebootadminindex-ie.css

@@ -0,0 +1,8 @@
+@CHARSET "UTF-8";
+.sidebar {
+	*left: 0
+}
+
+.sidebar:before {
+	display: none
+}

BIN
public/static/install/simpleboot/themes/flat/img/glyphicons-halflings-white.png


BIN
public/static/install/simpleboot/themes/flat/img/glyphicons-halflings.png


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 9 - 0
public/static/install/simpleboot/themes/flat/theme.min.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1085 - 0
public/static/js/admin.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1520 - 0
public/static/js/ajaxForm.js


+ 195 - 0
public/static/js/ajaxfileupload.js

@@ -0,0 +1,195 @@
+jQuery.extend({
+    handleError: function (s, xhr, status, e) {
+        // If a local callback was specified, fire it  
+        if (s.error) {
+            s.error.call(s.context || s, xhr, status, e);
+        }
+
+        // Fire the global callback
+        if (s.global) {
+            (s.context ? jQuery(s.context) : jQuery.event).trigger("ajaxError", [xhr, s, e]);
+        }
+    },
+
+    createUploadIframe: function (id, uri) {
+        //create frame
+        var frameId    = 'jUploadFrame' + id;
+        var iframeHtml = '<iframe id="' + frameId + '" name="' + frameId + '" style="position:absolute; top:-9999px; left:-9999px"';
+        if (window.ActiveXObject) {
+            if (typeof uri == 'boolean') {
+                iframeHtml += ' src="' + 'javascript:false' + '"';
+
+            }
+            else if (typeof uri == 'string') {
+                iframeHtml += ' src="' + uri + '"';
+
+            }
+        }
+        iframeHtml += ' />';
+        jQuery(iframeHtml).appendTo(document.body);
+
+        return jQuery('#' + frameId).get(0);
+    },
+    createUploadForm: function (id, fileElementId, data) {
+        //create form
+        var formId = 'jUploadForm' + id;
+        var fileId = 'jUploadFile' + id;
+        var form   = jQuery('<form  action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');
+        if (data) {
+            for (var i in data) {
+                jQuery('<input type="hidden" name="' + i + '" value="' + data[i] + '" />').appendTo(form);
+            }
+        }
+        var oldElement = jQuery('#' + fileElementId);
+        var newElement = jQuery(oldElement).clone();
+        jQuery(oldElement).attr('id', fileId);
+        jQuery(oldElement).before(newElement);
+        jQuery(oldElement).appendTo(form);
+
+
+        //set attributes
+        jQuery(form).css('position', 'absolute');
+        jQuery(form).css('top', '-1200px');
+        jQuery(form).css('left', '-1200px');
+        jQuery(form).appendTo('body');
+        return form;
+    },
+
+    ajaxFileUpload: function (s) {
+        // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout		
+        s           = jQuery.extend({}, jQuery.ajaxSettings, s);
+        var id      = new Date().getTime()
+        var form    = jQuery.createUploadForm(id, s.fileElementId, (typeof(s.data) == 'undefined' ? false : s.data));
+        var io      = jQuery.createUploadIframe(id, s.secureuri);
+        var frameId = 'jUploadFrame' + id;
+        var formId  = 'jUploadForm' + id;
+        // Watch for a new set of requests
+        if (s.global && !jQuery.active++) {
+            jQuery.event.trigger("ajaxStart");
+        }
+        var requestDone = false;
+        // Create the request object
+        var xml         = {}
+        if (s.global)
+            jQuery.event.trigger("ajaxSend", [xml, s]);
+        // Wait for a response to come back
+        var uploadCallback = function (isTimeout) {
+            var io = document.getElementById(frameId);
+            try {
+                if (io.contentWindow) {
+                    xml.responseText = io.contentWindow.document.body ? io.contentWindow.document.body.innerHTML : null;
+                    xml.responseXML  = io.contentWindow.document.XMLDocument ? io.contentWindow.document.XMLDocument : io.contentWindow.document;
+
+                } else if (io.contentDocument) {
+                    xml.responseText = io.contentDocument.document.body ? io.contentDocument.document.body.innerHTML : null;
+                    xml.responseXML  = io.contentDocument.document.XMLDocument ? io.contentDocument.document.XMLDocument : io.contentDocument.document;
+                }
+            } catch (e) {
+                jQuery.handleError(s, xml, null, e);
+            }
+            var $responseText=jQuery('<div>'+xml.responseText+'</div>');
+            $responseText.find('*').remove();
+            xml.responseText=$responseText.text();
+
+            if (xml || isTimeout == "timeout") {
+                requestDone = true;
+                var status;
+                try {
+                    status = isTimeout != "timeout" ? "success" : "error";
+                    // Make sure that the request was successful or notmodified
+                    if (status != "error") {
+                        // process the data (runs the xml through httpData regardless of callback)
+                        var data = jQuery.uploadHttpData(xml, s.dataType);
+                        // If a local callback was specified, fire it and pass it the data
+                        if (s.success)
+                            s.success(data, status);
+
+                        // Fire the global callback
+                        if (s.global)
+                            jQuery.event.trigger("ajaxSuccess", [xml, s]);
+                    } else
+                        jQuery.handleError(s, xml, status);
+                } catch (e) {
+                    status = "error";
+                    jQuery.handleError(s, xml, status, e);
+                }
+
+                // The request was completed
+                if (s.global)
+                    jQuery.event.trigger("ajaxComplete", [xml, s]);
+
+                // Handle the global AJAX counter
+                if (s.global && !--jQuery.active)
+                    jQuery.event.trigger("ajaxStop");
+
+                // Process result
+                if (s.complete)
+                    s.complete(xml, status);
+
+                jQuery(io).unbind()
+
+                setTimeout(function () {
+                    try {
+                        jQuery(io).remove();
+                        jQuery(form).remove();
+
+                    } catch (e) {
+                        jQuery.handleError(s, xml, null, e);
+                    }
+
+                }, 100)
+
+                xml = null
+
+            }
+        }
+        // Timeout checker
+        if (s.timeout > 0) {
+            setTimeout(function () {
+                // Check to see if the request is still happening
+                if (!requestDone) uploadCallback("timeout");
+            }, s.timeout);
+        }
+        try {
+
+            var form = jQuery('#' + formId);
+            jQuery(form).attr('action', s.url);
+            jQuery(form).attr('method', 'POST');
+            jQuery(form).attr('target', frameId);
+            if (form.encoding) {
+                jQuery(form).attr('encoding', 'multipart/form-data');
+            }
+            else {
+                jQuery(form).attr('enctype', 'multipart/form-data');
+            }
+            jQuery(form).submit();
+
+        } catch (e) {
+            jQuery.handleError(s, xml, null, e);
+        }
+
+        jQuery('#' + frameId).load(uploadCallback);
+        return {
+            abort: function () {
+            }
+        };
+
+    },
+
+    uploadHttpData: function (r, type) {
+        var data = !type;
+        data     = type == "xml" || data ? r.responseXML : r.responseText;
+        // If the type is "script", eval it in global context
+        if (type == "script")
+            jQuery.globalEval(data);
+        // Get the JavaScript object, if JSON is used.
+        if (type == "json")
+            eval("data = " + data);
+        // evaluate scripts within html
+        if (type == "html")
+            jQuery("<div>").html(data).evalScripts();
+
+        return data;
+    }
+})
+

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1579 - 0
public/static/js/animate/animate.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 2023 - 0
public/static/js/artDialog/artDialog.js


+ 461 - 0
public/static/js/artDialog/iframeTools.js

@@ -0,0 +1,461 @@
+/*!
+ * artDialog iframeTools
+ * Date: 2011-11-25 13:54
+ * http://code.google.com/p/artdialog/
+ * (c) 2009-2011 TangBin, http://www.planeArt.cn
+ *
+ * This is licensed under the GNU LGPL, version 2.1 or later.
+ * For details, see: http://creativecommons.org/licenses/LGPL/2.1/
+ */
+ 
+;(function ($, window, artDialog, undefined) {
+
+var _topDialog, _proxyDialog, _zIndex,
+	_data = '@ARTDIALOG.DATA',
+	_open = '@ARTDIALOG.OPEN',
+	_opener = '@ARTDIALOG.OPENER',
+	_winName = window.name = window.name
+	|| '@ARTDIALOG.WINNAME' + + new Date,
+	_isIE6 = window.VBArray && !window.XMLHttpRequest;
+
+$(function () {
+	!window.jQuery && document.compatMode === 'BackCompat'
+	// 不支持怪异模式,请用主流的XHTML1.0或者HTML5的DOCTYPE申明
+	&& alert('artDialog Error: document.compatMode === "BackCompat"');
+});
+	
+	
+/** 获取 artDialog 可跨级调用的最高层的 window 对象 */
+var _top = artDialog.top = function () {
+	var top = window,
+	test = function (name) {
+		try {
+			var doc = window[name].document;	// 跨域|无权限
+			doc.getElementsByTagName; 			// chrome 本地安全限制
+		} catch (e) {
+			return false;
+        }
+        return window[name].artDialog
+		// 框架集无法显示第三方元素
+		&& doc.getElementsByTagName('frameset').length === 0;
+	};
+	
+	if (test('top')) {
+		top = window.top;
+	} else if (test('parent')) {
+		top = window.parent;
+    }
+    return top;
+}();
+artDialog.parent = _top; // 兼容v4.1之前版本,未来版本将删除此
+
+
+_topDialog = _top.artDialog;
+
+
+// 获取顶层页面对话框叠加值
+_zIndex = function () {
+	return _topDialog.defaults.zIndex;
+};
+
+
+
+/**
+ * 跨框架数据共享接口
+ * @see		http://www.planeart.cn/?p=1554
+ * @param	{String}	存储的数据名
+ * @param	{Any}		将要存储的任意数据(无此项则返回被查询的数据)
+ */
+artDialog.data = function (name, value) {
+	var top = artDialog.top,
+		cache = top[_data] || {};
+	top[_data] = cache;
+	
+	if (value !== undefined) {
+		cache[name] = value;
+	} else {
+		return cache[name];
+    }
+    return cache;
+};
+
+
+/**
+ * 数据共享删除接口
+ * @param	{String}	删除的数据名
+ */
+artDialog.removeData = function (name) {
+	var cache = artDialog.top[_data];
+	if (cache && cache[name]) delete cache[name];
+};
+
+
+/** 跨框架普通对话框 */
+artDialog.through = _proxyDialog = function () {
+	var api = _topDialog.apply(this, arguments);
+		
+	// 缓存从当前 window(可能为iframe)调出所有跨框架对话框,
+	// 以便让当前 window 卸载前去关闭这些对话框。
+	// 因为iframe注销后也会从内存中删除其创建的对象,这样可以防止回调函数报错
+	if (_top !== window) artDialog.list[api.config.id] = api;
+	return api;
+};
+
+// 框架页面卸载前关闭所有穿越的对话框
+_top !== window && $(window).bind('unload', function () {
+	var list = artDialog.list, config;
+	for (var i in list) {
+		if (list[i]) {
+			config = list[i].config;
+			if (config) config.duration = 0; // 取消动画
+			list[i].close();
+			//delete list[i];
+        }
+    }
+});
+
+
+/**
+ * 弹窗 (iframe)
+ * @param	{String}	地址
+ * @param	{Object}	配置参数. 这里传入的回调函数接收的第1个参数为iframe内部window对象
+ * @param	{Boolean}	是否允许缓存. 默认true
+ */
+artDialog.open = function (url, options, cache) {
+	options = options || {};
+	
+	var api, DOM,
+		$content, $main, iframe, $iframe, $idoc, iwin, ibody,
+		top = artDialog.top,
+		initCss = 'position:absolute;left:-9999em;top:-9999em;border:none 0;background:transparent',
+		loadCss = 'width:100%;height:100%;border:none 0';
+		
+	if (cache === false) {
+		var ts = + new Date,
+			ret = url.replace(/([?&])_=[^&]*/, "$1_=" + ts );
+		url = ret + ((ret === url) ? (/\?/.test(url) ? "&" : "?") + "_=" + ts : "");
+    }
+    var load = function () {
+		var iWidth, iHeight,
+			loading = DOM.content.find('.aui_loading'),
+			aConfig = api.config;
+			
+		$content.addClass('aui_state_full');
+		
+		loading && loading.hide();
+		
+		try {
+			iwin = iframe.contentWindow;
+			$idoc = $(iwin.document);
+			ibody = iwin.document.body;
+		} catch (e) {// 跨域
+			iframe.style.cssText = loadCss;
+			
+			aConfig.follow
+			? api.follow(aConfig.follow)
+			: api.position(aConfig.left, aConfig.top);
+			
+			options.init && options.init.call(api, iwin, top);
+			options.init = null;
+			return;
+        }
+        // 获取iframe内部尺寸
+		iWidth = aConfig.width === 'auto'
+		? $idoc.width() + (_isIE6 ? 0 : parseInt($(ibody).css('marginLeft')))
+		: aConfig.width;
+		
+		iHeight = aConfig.height === 'auto'
+		? $idoc.height()
+		: aConfig.height;
+		
+		// 适应iframe尺寸
+		setTimeout(function () {
+			iframe.style.cssText = loadCss;
+		}, 0);// setTimeout: 防止IE6~7对话框样式渲染异常
+		api.size(iWidth, iHeight);
+		
+		// 调整对话框位置
+		aConfig.follow
+		? api.follow(aConfig.follow)
+		: api.position(aConfig.left, aConfig.top);
+		
+		options.init && options.init.call(api, iwin, top);
+		options.init = null;
+	};
+		
+	var config = {
+		zIndex: _zIndex(),
+		init: function () {
+			api = this;
+			DOM = api.DOM;
+			$main = DOM.main;
+			$content = DOM.content;
+			
+			iframe = api.iframe = top.document.createElement('iframe');
+			iframe.src = url;
+			iframe.name = 'Open' + api.config.id;
+			iframe.style.cssText = initCss;
+			iframe.setAttribute('frameborder', 0, 0);
+			iframe.setAttribute('allowTransparency', true);
+			
+			$iframe = $(iframe);
+			api.content().appendChild(iframe);
+			iwin = iframe.contentWindow;
+			
+			try {
+				iwin.name = iframe.name;
+				artDialog.data(iframe.name + _open, api);
+				artDialog.data(iframe.name + _opener, window);
+            } catch (e) {
+            }
+            $iframe.bind('load', load);
+		},
+		close: function () {
+			$iframe.css('display', 'none').unbind('load', load);
+			
+			if (options.close && options.close.call(this, iframe.contentWindow, top) === false) {
+				return false;
+            }
+            $content.removeClass('aui_state_full');
+			
+			// 重要!需要重置iframe地址,否则下次出现的对话框在IE6、7无法聚焦input
+			// IE删除iframe后,iframe仍然会留在内存中出现上述问题,置换src是最容易解决的方法
+			$iframe[0].src = 'about:blank';
+			$iframe.remove();
+			
+			try {
+				artDialog.removeData(iframe.name + _open);
+				artDialog.removeData(iframe.name + _opener);
+            } catch (e) {
+            }
+        }
+	};
+	
+	// 回调函数第一个参数指向iframe内部window对象
+	if (typeof options.ok === 'function') config.ok = function () {
+		return options.ok.call(api, iframe.contentWindow, top);
+	};
+	if (typeof options.cancel === 'function') config.cancel = function () {
+		return options.cancel.call(api, iframe.contentWindow, top);
+	};
+	
+	delete options.content;
+
+	for (var i in options) {
+		if (config[i] === undefined) config[i] = options[i];
+    }
+    return _proxyDialog(config);
+};
+
+
+/** 引用open方法扩展方法(在open打开的iframe内部私有方法) */
+artDialog.open.api = artDialog.data(_winName + _open);
+
+
+/** 引用open方法触发来源页面window(在open打开的iframe内部私有方法) */
+artDialog.opener = artDialog.data(_winName + _opener) || window;
+artDialog.open.origin = artDialog.opener; // 兼容v4.1之前版本,未来版本将删除此
+
+/** artDialog.open 打开的iframe页面里关闭对话框快捷方法 */
+artDialog.close = function () {
+	var api = artDialog.data(_winName + _open);
+	api && api.close();
+	return false;
+};
+
+// 点击iframe内容切换叠加高度
+_top != window && $(document).bind('mousedown', function () {
+	var api = artDialog.open.api;
+	api && api.zIndex();
+});
+
+
+/**
+ * Ajax填充内容
+ * @param	{String}			地址
+ * @param	{Object}			配置参数
+ * @param	{Boolean}			是否允许缓存. 默认true
+ */
+artDialog.load = function(url, options, cache){
+	cache = cache || false;
+	var opt = options || {};
+		
+	var config = {
+		zIndex: _zIndex(),
+		init: function(here){
+			var api = this,
+				aConfig = api.config;
+			
+			$.ajax({
+				url: url,
+				success: function (content) {
+					api.content(content);
+					opt.init && opt.init.call(api, here);		
+				},
+				cache: cache
+			});
+			
+		}
+	};
+	
+	delete options.content;
+	
+	for (var i in opt) {
+		if (config[i] === undefined) config[i] = opt[i];
+    }
+    return _proxyDialog(config);
+};
+
+
+/**
+ * 警告
+ * @param	{String}	消息内容
+ */
+artDialog.alert = function (content, callback) {
+	return _proxyDialog({
+		id: 'Alert',
+		zIndex: _zIndex(),
+		icon: 'warning',
+		fixed: true,
+		lock: true,
+		content: content,
+		ok: true,
+		close: callback
+	});
+};
+
+
+/**
+ * 确认
+ * @param	{String}	消息内容
+ * @param	{Function}	确定按钮回调函数
+ * @param	{Function}	取消按钮回调函数
+ */
+artDialog.confirm = function (content, yes, no) {
+	return _proxyDialog({
+		id: 'Confirm',
+		zIndex: _zIndex(),
+		icon: 'question',
+		fixed: true,
+		lock: true,
+		opacity: .1,
+		content: content,
+		ok: function (here) {
+			return yes.call(this, here);
+		},
+		cancel: function (here) {
+			return no && no.call(this, here);
+		}
+	});
+};
+
+
+/**
+ * 提问
+ * @param	{String}	提问内容
+ * @param	{Function}	回调函数. 接收参数:输入值
+ * @param	{String}	默认值
+ */
+artDialog.prompt = function (content, yes, value) {
+	value = value || '';
+	var input;
+	
+	return _proxyDialog({
+		id: 'Prompt',
+		zIndex: _zIndex(),
+		icon: 'question',
+		fixed: true,
+		lock: true,
+		opacity: .1,
+		content: [
+			'<div style="margin-bottom:5px;font-size:12px">',
+				content,
+			'</div>',
+			'<div>',
+				'<input value="',
+					value,
+				'" style="width:18em;padding:6px 4px" />',
+			'</div>'
+			].join(''),
+		init: function () {
+			input = this.DOM.content.find('input')[0];
+			input.select();
+			input.focus();
+		},
+		ok: function (here) {
+			return yes && yes.call(this, input.value, here);
+		},
+		cancel: true
+	});
+};
+
+
+/**
+ * 短暂提示
+ * @param	{String}	提示内容
+ * @param	{Number}	显示时间 (默认1.5秒)
+ */
+artDialog.tips = function (content, time) {
+	return _proxyDialog({
+		id: 'Tips',
+		zIndex: _zIndex(),
+		title: false,
+		cancel: false,
+		fixed: true,
+		lock: false
+	})
+	.content('<div style="padding: 0 1em;">' + content + '</div>')
+	.time(time || 1.5);
+};
+
+
+// 增强artDialog拖拽体验
+// - 防止鼠标落入iframe导致不流畅
+// - 对超大对话框拖动优化
+$(function () {
+	var event = artDialog.dragEvent;
+	if (!event) return;
+
+	var $window = $(window),
+		$document = $(document),
+		positionType = _isIE6 ? 'absolute' : 'fixed',
+		dragEvent = event.prototype,
+		mask = document.createElement('div'),
+		style = mask.style;
+		
+	style.cssText = 'display:none;position:' + positionType + ';left:0;top:0;width:100%;height:100%;'
+	+ 'cursor:move;filter:alpha(opacity=0);opacity:0;background:#FFF';
+		
+	document.body.appendChild(mask);
+	dragEvent._start = dragEvent.start;
+	dragEvent._end = dragEvent.end;
+	
+	dragEvent.start = function () {
+		var DOM = artDialog.focus.DOM,
+			main = DOM.main[0],
+			iframe = DOM.content[0].getElementsByTagName('iframe')[0];
+		
+		dragEvent._start.apply(this, arguments);
+		style.display = 'block';
+		style.zIndex = artDialog.defaults.zIndex + 3;
+		
+		if (positionType === 'absolute') {
+			style.width = $window.width() + 'px';
+			style.height = $window.height() + 'px';
+			style.left = $document.scrollLeft() + 'px';
+			style.top = $document.scrollTop() + 'px';
+        }
+        if (iframe && main.offsetWidth * main.offsetHeight > 307200) {
+			main.style.visibility = 'hidden';
+        }
+    };
+	
+	dragEvent.end = function () {
+		var dialog = artDialog.focus;
+		dragEvent._end.apply(this, arguments);
+		style.display = 'none';
+		if (dialog) dialog.DOM.main[0].style.visibility = 'visible';
+	};
+});
+
+})(this.art || this.jQuery, this, this.artDialog);

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 10 - 0
public/static/js/artDialog/iframeTools.old.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 79 - 0
public/static/js/artDialog/skins/blue.css


BIN
public/static/js/artDialog/skins/blue/bg.png


BIN
public/static/js/artDialog/skins/blue/bg2.png


BIN
public/static/js/artDialog/skins/blue/bg_css3.png


BIN
public/static/js/artDialog/skins/blue/bg_css3_2.png


BIN
public/static/js/artDialog/skins/blue/ie6/close.hover.png


BIN
public/static/js/artDialog/skins/blue/ie6/close.png


BIN
public/static/js/artDialog/skins/blue/ie6/e.png


BIN
public/static/js/artDialog/skins/blue/ie6/n.png


BIN
public/static/js/artDialog/skins/blue/ie6/ne.png


BIN
public/static/js/artDialog/skins/blue/ie6/nw.png


BIN
public/static/js/artDialog/skins/blue/ie6/s.png


BIN
public/static/js/artDialog/skins/blue/ie6/se.png


BIN
public/static/js/artDialog/skins/blue/ie6/sw.png


BIN
public/static/js/artDialog/skins/blue/ie6/w.png


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 67 - 0
public/static/js/artDialog/skins/default.css


BIN
public/static/js/artDialog/skins/icons/error.png


BIN
public/static/js/artDialog/skins/icons/face-sad.png


BIN
public/static/js/artDialog/skins/icons/face-smile.png


BIN
public/static/js/artDialog/skins/icons/loading.gif


BIN
public/static/js/artDialog/skins/icons/question.png


BIN
public/static/js/artDialog/skins/icons/succeed.png


BIN
public/static/js/artDialog/skins/icons/warning.png


+ 418 - 0
public/static/js/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css

@@ -0,0 +1,418 @@
+/*!
+ * Datetimepicker 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
+ *
+ */
+.datetimepicker {
+	padding: 4px;
+	margin-top: 1px;
+	-webkit-border-radius: 4px;
+	-moz-border-radius: 4px;
+	border-radius: 4px;
+	direction: ltr;
+}
+
+.datetimepicker-inline {
+	width: 220px;
+}
+
+.datetimepicker.datetimepicker-rtl {
+	direction: rtl;
+}
+
+.datetimepicker.datetimepicker-rtl table tr td span {
+	float: right;
+}
+
+.datetimepicker-dropdown, .datetimepicker-dropdown-left {
+	top: 0;
+	left: 0;
+}
+
+[class*=" datetimepicker-dropdown"]:before {
+	content: '';
+	display: inline-block;
+	border-left: 7px solid transparent;
+	border-right: 7px solid transparent;
+	border-bottom: 7px solid #cccccc;
+	border-bottom-color: rgba(0, 0, 0, 0.2);
+	position: absolute;
+}
+
+[class*=" datetimepicker-dropdown"]:after {
+	content: '';
+	display: inline-block;
+	border-left: 6px solid transparent;
+	border-right: 6px solid transparent;
+	border-bottom: 6px solid #ffffff;
+	position: absolute;
+}
+
+[class*=" datetimepicker-dropdown-top"]:before {
+	content: '';
+	display: inline-block;
+	border-left: 7px solid transparent;
+	border-right: 7px solid transparent;
+	border-top: 7px solid #cccccc;
+	border-top-color: rgba(0, 0, 0, 0.2);
+	border-bottom: 0;
+}
+
+[class*=" datetimepicker-dropdown-top"]:after {
+	content: '';
+	display: inline-block;
+	border-left: 6px solid transparent;
+	border-right: 6px solid transparent;
+	border-top: 6px solid #ffffff;
+	border-bottom: 0;
+}
+
+.datetimepicker-dropdown-bottom-left:before {
+	top: -7px;
+	right: 6px;
+}
+
+.datetimepicker-dropdown-bottom-left:after {
+	top: -6px;
+	right: 7px;
+}
+
+.datetimepicker-dropdown-bottom-right:before {
+	top: -7px;
+	left: 6px;
+}
+
+.datetimepicker-dropdown-bottom-right:after {
+	top: -6px;
+	left: 7px;
+}
+
+.datetimepicker-dropdown-top-left:before {
+	bottom: -7px;
+	right: 6px;
+}
+
+.datetimepicker-dropdown-top-left:after {
+	bottom: -6px;
+	right: 7px;
+}
+
+.datetimepicker-dropdown-top-right:before {
+	bottom: -7px;
+	left: 6px;
+}
+
+.datetimepicker-dropdown-top-right:after {
+	bottom: -6px;
+	left: 7px;
+}
+
+.datetimepicker > div {
+	display: none;
+}
+
+.datetimepicker.minutes div.datetimepicker-minutes {
+	display: block;
+}
+
+.datetimepicker.hours div.datetimepicker-hours {
+	display: block;
+}
+
+.datetimepicker.days div.datetimepicker-days {
+	display: block;
+}
+
+.datetimepicker.months div.datetimepicker-months {
+	display: block;
+}
+
+.datetimepicker.years div.datetimepicker-years {
+	display: block;
+}
+
+.datetimepicker table {
+	margin: 0;
+}
+
+.datetimepicker  td,
+.datetimepicker th {
+	text-align: center;
+	width: 20px;
+	height: 20px;
+	-webkit-border-radius: 4px;
+	-moz-border-radius: 4px;
+	border-radius: 4px;
+	border: none;
+}
+
+.table-striped .datetimepicker table tr td,
+.table-striped .datetimepicker table tr th {
+	background-color: transparent;
+}
+
+.datetimepicker table tr td.minute:hover {
+	background: #eeeeee;
+	cursor: pointer;
+}
+
+.datetimepicker table tr td.hour:hover {
+	background: #eeeeee;
+	cursor: pointer;
+}
+
+.datetimepicker table tr td.day:hover {
+	background: #eeeeee;
+	cursor: pointer;
+}
+
+.datetimepicker table tr td.old,
+.datetimepicker table tr td.new {
+	color: #999999;
+}
+
+.datetimepicker table tr td.disabled,
+.datetimepicker table tr td.disabled:hover {
+	background: none;
+	color: #999999;
+	cursor: default;
+}
+
+.datetimepicker table tr td.today,
+.datetimepicker table tr td.today:hover,
+.datetimepicker table tr td.today.disabled,
+.datetimepicker 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(to bottom, #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);
+}
+
+.datetimepicker table tr td.today:hover,
+.datetimepicker table tr td.today:hover:hover,
+.datetimepicker table tr td.today.disabled:hover,
+.datetimepicker table tr td.today.disabled:hover:hover,
+.datetimepicker table tr td.today:active,
+.datetimepicker table tr td.today:hover:active,
+.datetimepicker table tr td.today.disabled:active,
+.datetimepicker table tr td.today.disabled:hover:active,
+.datetimepicker table tr td.today.active,
+.datetimepicker table tr td.today:hover.active,
+.datetimepicker table tr td.today.disabled.active,
+.datetimepicker table tr td.today.disabled:hover.active,
+.datetimepicker table tr td.today.disabled,
+.datetimepicker table tr td.today:hover.disabled,
+.datetimepicker table tr td.today.disabled.disabled,
+.datetimepicker table tr td.today.disabled:hover.disabled,
+.datetimepicker table tr td.today[disabled],
+.datetimepicker table tr td.today:hover[disabled],
+.datetimepicker table tr td.today.disabled[disabled],
+.datetimepicker table tr td.today.disabled:hover[disabled] {
+	background-color: #fdf59a;
+}
+
+.datetimepicker table tr td.today:active,
+.datetimepicker table tr td.today:hover:active,
+.datetimepicker table tr td.today.disabled:active,
+.datetimepicker table tr td.today.disabled:hover:active,
+.datetimepicker table tr td.today.active,
+.datetimepicker table tr td.today:hover.active,
+.datetimepicker table tr td.today.disabled.active,
+.datetimepicker table tr td.today.disabled:hover.active {
+	background-color: #fbf069;
+}
+
+.datetimepicker table tr td.active,
+.datetimepicker table tr td.active:hover,
+.datetimepicker table tr td.active.disabled,
+.datetimepicker 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(to bottom, #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: #ffffff;
+	text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+
+.datetimepicker table tr td.active:hover,
+.datetimepicker table tr td.active:hover:hover,
+.datetimepicker table tr td.active.disabled:hover,
+.datetimepicker table tr td.active.disabled:hover:hover,
+.datetimepicker table tr td.active:active,
+.datetimepicker table tr td.active:hover:active,
+.datetimepicker table tr td.active.disabled:active,
+.datetimepicker table tr td.active.disabled:hover:active,
+.datetimepicker table tr td.active.active,
+.datetimepicker table tr td.active:hover.active,
+.datetimepicker table tr td.active.disabled.active,
+.datetimepicker table tr td.active.disabled:hover.active,
+.datetimepicker table tr td.active.disabled,
+.datetimepicker table tr td.active:hover.disabled,
+.datetimepicker table tr td.active.disabled.disabled,
+.datetimepicker table tr td.active.disabled:hover.disabled,
+.datetimepicker table tr td.active[disabled],
+.datetimepicker table tr td.active:hover[disabled],
+.datetimepicker table tr td.active.disabled[disabled],
+.datetimepicker table tr td.active.disabled:hover[disabled] {
+	background-color: #0044cc;
+}
+
+.datetimepicker table tr td.active:active,
+.datetimepicker table tr td.active:hover:active,
+.datetimepicker table tr td.active.disabled:active,
+.datetimepicker table tr td.active.disabled:hover:active,
+.datetimepicker table tr td.active.active,
+.datetimepicker table tr td.active:hover.active,
+.datetimepicker table tr td.active.disabled.active,
+.datetimepicker table tr td.active.disabled:hover.active {
+	background-color: #003399;
+}
+
+.datetimepicker 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;
+}
+
+.datetimepicker .datetimepicker-hours span {
+	height: 26px;
+	line-height: 26px;
+}
+
+.datetimepicker .datetimepicker-hours table tr td span.hour_am,
+.datetimepicker .datetimepicker-hours table tr td span.hour_pm {
+	width: 14.6%;
+}
+
+.datetimepicker .datetimepicker-hours fieldset legend,
+.datetimepicker .datetimepicker-minutes fieldset legend {
+	margin-bottom: inherit;
+	line-height: 30px;
+}
+
+.datetimepicker .datetimepicker-minutes span {
+	height: 26px;
+	line-height: 26px;
+}
+
+.datetimepicker table tr td span:hover {
+	background: #eeeeee;
+}
+
+.datetimepicker table tr td span.disabled,
+.datetimepicker table tr td span.disabled:hover {
+	background: none;
+	color: #999999;
+	cursor: default;
+}
+
+.datetimepicker table tr td span.active,
+.datetimepicker table tr td span.active:hover,
+.datetimepicker table tr td span.active.disabled,
+.datetimepicker 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(to bottom, #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: #ffffff;
+	text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+
+.datetimepicker table tr td span.active:hover,
+.datetimepicker table tr td span.active:hover:hover,
+.datetimepicker table tr td span.active.disabled:hover,
+.datetimepicker table tr td span.active.disabled:hover:hover,
+.datetimepicker table tr td span.active:active,
+.datetimepicker table tr td span.active:hover:active,
+.datetimepicker table tr td span.active.disabled:active,
+.datetimepicker table tr td span.active.disabled:hover:active,
+.datetimepicker table tr td span.active.active,
+.datetimepicker table tr td span.active:hover.active,
+.datetimepicker table tr td span.active.disabled.active,
+.datetimepicker table tr td span.active.disabled:hover.active,
+.datetimepicker table tr td span.active.disabled,
+.datetimepicker table tr td span.active:hover.disabled,
+.datetimepicker table tr td span.active.disabled.disabled,
+.datetimepicker table tr td span.active.disabled:hover.disabled,
+.datetimepicker table tr td span.active[disabled],
+.datetimepicker table tr td span.active:hover[disabled],
+.datetimepicker table tr td span.active.disabled[disabled],
+.datetimepicker table tr td span.active.disabled:hover[disabled] {
+	background-color: #0044cc;
+}
+
+.datetimepicker table tr td span.active:active,
+.datetimepicker table tr td span.active:hover:active,
+.datetimepicker table tr td span.active.disabled:active,
+.datetimepicker table tr td span.active.disabled:hover:active,
+.datetimepicker table tr td span.active.active,
+.datetimepicker table tr td span.active:hover.active,
+.datetimepicker table tr td span.active.disabled.active,
+.datetimepicker table tr td span.active.disabled:hover.active {
+	background-color: #003399;
+}
+
+.datetimepicker table tr td span.old {
+	color: #999999;
+}
+
+.datetimepicker th.switch {
+	width: 145px;
+}
+
+.datetimepicker th span.glyphicon {
+	pointer-events: none;
+}
+
+.datetimepicker thead tr:first-child th,
+.datetimepicker tfoot th {
+	cursor: pointer;
+}
+
+.datetimepicker thead tr:first-child th:hover,
+.datetimepicker tfoot th:hover {
+	background: #eeeeee;
+}
+
+.input-append.date .add-on i,
+.input-prepend.date .add-on i,
+.input-group.date .input-group-addon span {
+	cursor: pointer;
+	width: 14px;
+	height: 14px;
+}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1981 - 0
public/static/js/bootstrap-datetimepicker/js/bootstrap-datetimepicker.js


+ 17 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ar.js

@@ -0,0 +1,17 @@
+/**
+* Arabic translation for bootstrap-datetimepicker
+* Ala' Mohammad <amohammad@birzeit.ecu>
+*/
+;(function($){
+	$.fn.datetimepicker.dates['ar'] = {
+		days: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"],
+		daysShort: ["أحد", "اثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت", "أحد"],
+		daysMin: ["أح", "إث", "ث", "أر", "خ", "ج", "س", "أح"],
+		months: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"],
+		monthsShort: ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"],
+		today: "هذا اليوم",
+		suffix: [],
+		meridiem: [],
+		rtl: true
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.az.js

@@ -0,0 +1,16 @@
+/**
+ * Azerbaijani translation for bootstrap-datetimepicker
+ * Konstantin Kaluzhnikov <k.kaluzhnikov@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['az'] = {
+		days: ["Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə", "Bazar"],
+		daysShort: ["B", "Be", "Ça", "Ç", "Ca", "C", "Ş", "B"],
+		daysMin: ["B", "Be", "Ça", "Ç", "Ca", "C", "Ş", "B"],
+		months: ["Yanvar", "Fevral", "Mart", "Aprel", "May", "İyun", "İyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"],
+		monthsShort: ["Yan", "Fev", "Mar", "Apr", "May", "İyun", "İyul", "Avq", "Sen", "Okt", "Noy", "Dek"],
+		today: "Bugün",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.bg.js

@@ -0,0 +1,16 @@
+/**
+ * Bulgarian translation for bootstrap-datetimepicker
+ * Apostol Apostolov <apostol.s.apostolov@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['bg'] = {
+		days: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота", "Неделя"],
+		daysShort: ["Нед", "Пон", "Вто", "Сря", "Чет", "Пет", "Съб", "Нед"],
+		daysMin: ["Н", "П", "В", "С", "Ч", "П", "С", "Н"],
+		months: ["Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"],
+		monthsShort: ["Ян", "Фев", "Мар", "Апр", "Май", "Юни", "Юли", "Авг", "Сеп", "Окт", "Ное", "Дек"],
+		today: "днес",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.bn.js

@@ -0,0 +1,16 @@
+/**
+ * Bangla(Bangladesh) translation for bootstrap-datetimepicker
+ * Mahbub Rabbani <mahbub [dot] rucse [at] gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['bn'] = {
+		days: ["রবিবার", "সোমবার", "মঙ্গলবার", "বুধবার", "বৃহষ্পতিবার", "শুক্রবার", "শনিবার", "রবিবার"],
+		daysShort: ["রবি", "সোম", "মঙ্গল", "বুধ", "  বৃহঃ", "শুক্র", "শনি", "রবি"],
+		daysMin: ["রবি", "সোম", "মঙ্গ", "বুধ", "বৃহ", "শুক্র", "শনি", "রবি"],
+		months: ['জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'অগাস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর' ],
+		monthsShort: ['জানু', 'ফেব্রু', 'মার্চ', 'এপ্রি', 'মে', 'জুন', 'জুলা', 'অগা', 'সেপ্টে', 'অক্টো', 'নভে', 'ডিসে' ],
+		today: "আজ",
+		suffix: [],
+		meridiem: ['পূর্বাহ্ণ', 'অপরাহ্ন']
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ca.js

@@ -0,0 +1,16 @@
+/**
+ * Catalan translation for bootstrap-datetimepicker
+ * J. Garcia <jogaco.en@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['ca'] = {
+		days: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte", "Diumenge"],
+		daysShort: ["Diu",  "Dil", "Dmt", "Dmc", "Dij", "Div", "Dis", "Diu"],
+		daysMin: ["dg", "dl", "dt", "dc", "dj", "dv", "ds", "dg"],
+		months: ["Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"],
+		monthsShort: ["Gen", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Des"],
+		today: "Avui",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 19 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.cs.js

@@ -0,0 +1,19 @@
+/**
+ * Czech translation for bootstrap-datetimepicker
+ * Matěj Koubík <matej@koubik.name>
+ * Fixes by Michal Remiš <michal.remis@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['cs'] = {
+		days: ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota", "Neděle"],
+		daysShort: ["Ned", "Pon", "Úte", "Stř", "Čtv", "Pát", "Sob", "Ned"],
+		daysMin: ["Ne", "Po", "Út", "St", "Čt", "Pá", "So", "Ne"],
+		months: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"],
+		monthsShort: ["Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čnc", "Srp", "Zář", "Říj", "Lis", "Pro"],
+		today: "Dnes",
+		suffix: [],
+		meridiem: [],
+		weekStart: 1,
+		format: "dd.mm.yyyy"
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.da.js

@@ -0,0 +1,16 @@
+/**
+ * Danish translation for bootstrap-datetimepicker
+ * Christian Pedersen <http://github.com/chripede>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['da'] = {
+		days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"],
+		daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"],
+		daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"],
+		months: ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"],
+		monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		today: "I Dag",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 18 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.de.js

@@ -0,0 +1,18 @@
+/**
+ * German translation for bootstrap-datetimepicker
+ * Sam Zurcher <sam@orelias.ch>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['de'] = {
+		days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"],
+		daysShort: ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam", "Son"],
+		daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"],
+		months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
+		monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
+		today: "Heute",
+		suffix: [],
+		meridiem: [],
+		weekStart: 1,
+		format: "dd.mm.yyyy"
+	};
+}(jQuery));

+ 18 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ee.js

@@ -0,0 +1,18 @@
+/**
+ * Estonian translation for bootstrap-datetimepicker
+ * Rene Korss <http://rene.korss.ee> 
+ */
+;(function($){
+	$.fn.datetimepicker.dates['ee'] = {
+		days:        	["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev", "Pühapäev"],
+		daysShort:   	["P", "E", "T", "K", "N", "R", "L", "P"],
+		daysMin:     	["P", "E", "T", "K", "N", "R", "L", "P"],
+		months:      	["Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"],
+		monthsShort: 	["Jaan", "Veebr", "Märts", "Apr", "Mai", "Juuni", "Juuli", "Aug", "Sept", "Okt", "Nov", "Dets"],
+		today:       	"Täna",
+		suffix:     	[],
+		meridiem: 		[],
+		weekStart: 		1,
+		format: 		"dd.mm.yyyy hh:ii"
+	};
+}(jQuery));

+ 15 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.el.js

@@ -0,0 +1,15 @@
+/**
+* Greek translation for bootstrap-datetimepicker
+*/
+;(function($){
+  $.fn.datetimepicker.dates['el'] = {
+	    days: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο", "Κυριακή"],
+	    daysShort: ["Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ", "Κυρ"],
+	    daysMin: ["Κυ", "Δε", "Τρ", "Τε", "Πε", "Πα", "Σα", "Κυ"],
+	    months: ["Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"],
+	    monthsShort: ["Ιαν", "Φεβ", "Μαρ", "Απρ", "Μάι", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ"],
+	    today: "Σήμερα",
+		suffix: [],
+		meridiem: []
+  };
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.es.js

@@ -0,0 +1,16 @@
+/**
+ * Spanish translation for bootstrap-datetimepicker
+ * Bruno Bonamin <bruno.bonamin@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['es'] = {
+		days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"],
+		daysShort: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb", "Dom"],
+		daysMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa", "Do"],
+		months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
+		monthsShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
+		today: "Hoy",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fi.js

@@ -0,0 +1,16 @@
+/**
+ * Finnish translation for bootstrap-datetimepicker
+ * Jaakko Salonen <https://github.com/jsalonen>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['fi'] = {
+		days: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai", "sunnuntai"],
+		daysShort: ["sun", "maa", "tii", "kes", "tor", "per", "lau", "sun"],
+		daysMin: ["su", "ma", "ti", "ke", "to", "pe", "la", "su"],
+		months: ["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"],
+		monthsShort: ["tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mar", "jou"],
+		today: "tänään",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 18 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.fr.js

@@ -0,0 +1,18 @@
+/**
+ * French translation for bootstrap-datetimepicker
+ * Nico Mollet <nico.mollet@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['fr'] = {
+		days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"],
+		daysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim"],
+		daysMin: ["D", "L", "Ma", "Me", "J", "V", "S", "D"],
+		months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
+		monthsShort: ["Jan", "Fev", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Dec"],
+		today: "Aujourd'hui",
+		suffix: [],
+		meridiem: ["am", "pm"],
+		weekStart: 1,
+		format: "dd/mm/yyyy hh:ii"
+	};
+}(jQuery));

+ 17 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.he.js

@@ -0,0 +1,17 @@
+/**
+ * Hebrew translation for bootstrap-datetimepicker
+ * Sagie Maoz <sagie@maoz.info>
+ */
+;(function($){
+  $.fn.datetimepicker.dates['he'] = {
+      days: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"],
+      daysShort: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"],
+      daysMin: ["א", "ב", "ג", "ד", "ה", "ו", "ש", "א"],
+      months: ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"],
+      monthsShort: ["ינו", "פבר", "מרץ", "אפר", "מאי", "יונ", "יול", "אוג", "ספט", "אוק", "נוב", "דצמ"],
+      today: "היום",
+	  suffix: [],
+	  meridiem: [],
+      rtl: true
+  };
+}(jQuery));

+ 15 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hr.js

@@ -0,0 +1,15 @@
+/**
+ * Croatian localisation
+ */
+;(function($){
+	$.fn.datetimepicker.dates['hr'] = {
+		days: ["Nedjelja", "Ponedjelja", "Utorak", "Srijeda", "Četrtak", "Petak", "Subota", "Nedjelja"],
+		daysShort: ["Ned", "Pon", "Uto", "Srr", "Čet", "Pet", "Sub", "Ned"],
+		daysMin: ["Ne", "Po", "Ut", "Sr", "Če", "Pe", "Su", "Ne"],
+		months: ["Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"],
+		monthsShort: ["Sije", "Velj", "Ožu", "Tra", "Svi", "Lip", "Jul", "Kol", "Ruj", "Lis", "Stu", "Pro"],
+		today: "Danas",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 17 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hu.js

@@ -0,0 +1,17 @@
+/**
+ * Hungarian translation for bootstrap-datetimepicker
+ * darevish <http://github.com/darevish>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['hu'] = {
+		days: ["Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat", "Vasárnap"],
+		daysShort: ["Vas", "Hét", "Ked", "Sze", "Csü", "Pén", "Szo", "Vas"],
+		daysMin: ["V", "H", "K", "Sze", "Cs", "P", "Szo", "V"],
+		months: ["Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"],
+		monthsShort: ["Jan", "Feb", "Már", "Ápr", "Máj", "Jún", "Júl", "Aug", "Sze", "Okt", "Nov", "Dec"],
+		today: "Ma",
+		suffix: [],
+		meridiem: [],
+		weekStart: 1
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.hy.js

@@ -0,0 +1,16 @@
+/**
+ * Armenian translation for bootstrap-datepicker
+ * Hayk Chamyan <hamshen@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['hy'] = {
+		days: ["Կիրակի", "Երկուշաբթի", "Երեքշաբթի", "Չորեքշաբթի", "Հինգշաբթի", "Ուրբաթ", "Շաբաթ", "Կիրակի"],
+		daysShort: ["Կիր", "Երկ", "Երք", "Չոր", "Հնգ", "Ուր", "Շաբ", "Կիր"],
+		daysMin: ["Կի", "Եկ", "Եք", "Չո", "Հի", "Ու", "Շա", "Կի"],
+		months: ["Հունվար", "Փետրվար", "Մարտ", "Ապրիլ", "Մայիս", "Հունիս", "Հուլիս", "Օգոստոս", "Սեպտեմբեր", "Հոկտեմբեր", "Նոյեմբեր", "Դեկտեմբեր"],
+		monthsShort: ["Հնվ", "Փետ", "Մար", "Ապր", "Մայ", "Հուն", "Հուլ", "Օգս", "Սեպ", "Հոկ", "Նոյ", "Դեկ"],
+		today: "Այսօր",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 19 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.id.js

@@ -0,0 +1,19 @@
+/**
+ * Bahasa translation for bootstrap-datetimepicker
+ * Azwar Akbar <azwar.akbar@gmail.com>
+ * Addtional by Yulian Sutopo <yuliansutopo@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['id'] = {
+		days: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"],
+		daysShort: ["Mng", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab", "Mng"],
+		daysMin: ["Mg", "Sn", "Sl", "Ra", "Ka", "Ju", "Sa", "Mg"],
+		months: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"],
+		monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ags", "Sep", "Okt", "Nov", "Des"],
+		today: "Hari Ini",
+		suffix: [],
+		meridiem: [],
+		weekStart: 1,
+		format: "dd/mm/yyyy hh:ii:ss"
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.is.js

@@ -0,0 +1,16 @@
+/**
+ * Icelandic translation for bootstrap-datetimepicker
+ * Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['is'] = {
+		days: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur", "Sunnudagur"],
+		daysShort: ["Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau", "Sun"],
+		daysMin: ["Su", "Má", "Þr", "Mi", "Fi", "Fö", "La", "Su"],
+		months: ["Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"],
+		monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Ágú", "Sep", "Okt", "Nóv", "Des"],
+		today: "Í Dag",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 18 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.it.js

@@ -0,0 +1,18 @@
+/**
+ * Italian translation for bootstrap-datetimepicker
+ * Enrico Rubboli <rubboli@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['it'] = {
+		days: ["Domenica", "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato", "Domenica"],
+		daysShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"],
+		daysMin: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa", "Do"],
+		months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
+		monthsShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"],
+		today: "Oggi",
+		suffix: [],
+		meridiem: [],
+		weekStart: 1,
+		format: "dd/mm/yyyy hh:ii:ss"
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ja.js

@@ -0,0 +1,16 @@
+/**
+ * Japanese translation for bootstrap-datetimepicker
+ * Norio Suzuki <https://github.com/suzuki/>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['ja'] = {
+		days: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"],
+		daysShort: ["日", "月", "火", "水", "木", "金", "土", "日"],
+		daysMin: ["日", "月", "火", "水", "木", "金", "土", "日"],
+		months: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
+		monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
+		today: "今日",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ka.js

@@ -0,0 +1,16 @@
+/**
+ * Georgian translation for bootstrap-datetimepicker
+ * Zura Jijavadze <mailzura@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['ka'] = {
+		days: ["კვირა", "ორშაბათი", "სამშაბათი", "ოთხშაბათი", "ხუთშაბათი", "პარასკევი", "შაბათი", "კვირა"],
+		daysShort: ["კვი", "ორშ", "სამ", "ოთხ", "ხუთ", "პარ", "შაბ", "კვი"],
+		daysMin: ["კვ", "ორ", "სა", "ოთ", "ხუ", "პა", "შა", "კვ"],
+		months: ["იანვარი", "თებერვალი", "მარტი", "აპრილი", "მაისი", "ივნისი", "ივლისი", "აგვისტო", "სექტემბერი", "ოქტომბერი", "ნოემბერი", "დეკემბერი"],
+		monthsShort: ["იან", "თებ", "მარ", "აპრ", "მაი", "ივნ", "ივლ", "აგვ", "სექ", "ოქტ", "ნოე", "დეკ"],
+		today: "დღეს",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 17 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ko.js

@@ -0,0 +1,17 @@
+/**
+ * Korean translation for bootstrap-datetimepicker
+ * Gu Youn <http://github.com/guyoun>
+ * Baekjoon Choi <http://github.com/Baekjoon>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['ko'] = {
+		days: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"],
+		daysShort: ["일", "월", "화", "수", "목", "금", "토", "일"],
+		daysMin: ["일", "월", "화", "수", "목", "금", "토", "일"],
+		months: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
+		monthsShort: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
+		suffix: [],
+		meridiem: ["오전", "오후"],
+        today: "오늘",
+	};
+}(jQuery));

+ 18 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lt.js

@@ -0,0 +1,18 @@
+/**
+ * Lithuanian translation for bootstrap-datetimepicker
+ * Šarūnas Gliebus <ssharunas@yahoo.co.uk>
+ */
+
+;(function($){
+    $.fn.datetimepicker.dates['lt'] = {
+        days: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis", "Sekmadienis"],
+        daysShort: ["S", "Pr", "A", "T", "K", "Pn", "Š", "S"],
+        daysMin: ["Sk", "Pr", "An", "Tr", "Ke", "Pn", "Št", "Sk"],
+        months: ["Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"],
+        monthsShort: ["Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugp", "Rugs", "Spa", "Lap", "Gru"],
+        today: "Šiandien",
+		suffix: [],
+		meridiem: [],
+        weekStart: 1
+    };
+}(jQuery));

+ 18 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.lv.js

@@ -0,0 +1,18 @@
+/**
+ * Latvian translation for bootstrap-datetimepicker
+ * Artis Avotins <artis@apit.lv>
+ */
+
+;(function($){
+    $.fn.datetimepicker.dates['lv'] = {
+        days: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena", "Svētdiena"],
+        daysShort: ["Sv", "P", "O", "T", "C", "Pk", "S", "Sv"],
+        daysMin: ["Sv", "Pr", "Ot", "Tr", "Ce", "Pk", "St", "Sv"],
+        months: ["Janvāris", "Februāris", "Marts", "Aprīlis", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"],
+        monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jūn", "Jūl", "Aug", "Sep", "Okt", "Nov", "Dec."],
+        today: "Šodien",
+		suffix: [],
+		meridiem: [],
+        weekStart: 1
+    };
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ms.js

@@ -0,0 +1,16 @@
+/**
+ * Malay translation for bootstrap-datetimepicker
+ * Ateman Faiz <noorulfaiz@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['ms'] = {
+		days: ["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu", "Ahad"],
+		daysShort: ["Aha", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab", "Aha"],
+		daysMin: ["Ah", "Is", "Se", "Ra", "Kh", "Ju", "Sa", "Ah"],
+		months: ["Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember"],
+		monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis"],
+		today: "Hari Ini",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.nb.js

@@ -0,0 +1,16 @@
+/**
+ * Norwegian (bokmål) translation for bootstrap-datetimepicker
+ * Fredrik Sundmyhr <http://github.com/fsundmyhr>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['nb'] = {
+		days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"],
+		daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"],
+		daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"],
+		months: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"],
+		monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
+		today: "I Dag",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.nl.js

@@ -0,0 +1,16 @@
+/**
+ * Dutch translation for bootstrap-datetimepicker
+ * Reinier Goltstein <mrgoltstein@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['nl'] = {
+		days: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Zondag"],
+		daysShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
+		daysMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
+		months: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
+		monthsShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
+		today: "Vandaag",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.no.js

@@ -0,0 +1,16 @@
+/**
+ * Norwegian translation for bootstrap-datetimepicker
+ * Rune Warhuus <rune@dinkdonkd.no>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['no'] = {
+		days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"],
+		daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"],
+		daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"],
+		months: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"],
+		monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
+		today: "I Dag",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 17 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pl.js

@@ -0,0 +1,17 @@
+/**
+ * Polish translation for bootstrap-datetimepicker
+ * Robert <rtpm@gazeta.pl>
+ */
+;(function($){
+$.fn.datetimepicker.dates['pl'] = {
+        days: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"],
+        daysShort: ["Nie", "Pn", "Wt", "Śr", "Czw", "Pt", "So", "Nie"],
+        daysMin: ["N", "Pn", "Wt", "Śr", "Cz", "Pt", "So", "N"],
+        months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"],
+        monthsShort: ["Sty", "Lu", "Mar", "Kw", "Maj", "Cze", "Lip", "Sie", "Wrz", "Pa", "Lis", "Gru"],
+        today: "Dzisiaj",
+		suffix: [],
+		meridiem: [],
+        weekStart: 1
+};
+}(jQuery));

+ 17 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pt-BR.js

@@ -0,0 +1,17 @@
+/**
+ * Brazilian translation for bootstrap-datetimepicker
+ * Cauan Cabral <cauan@radig.com.br>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['pt-BR'] = {
+        format: 'dd/mm/yyyy',
+		days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"],
+		daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"],
+		daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"],
+		months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
+		monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
+		today: "Hoje",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 17 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.pt.js

@@ -0,0 +1,17 @@
+/**
+ * Portuguese translation for bootstrap-datetimepicker
+ * Original code: Cauan Cabral <cauan@radig.com.br>
+ * Tiago Melo <tiago.blackcode@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['pt'] = {
+		days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"],
+		daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"],
+		daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"],
+		months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
+		monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
+		suffix: [],
+		meridiem: [],
+		today: "Hoje"
+	};
+}(jQuery));

+ 17 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ro.js

@@ -0,0 +1,17 @@
+/**
+ * Romanian translation for bootstrap-datetimepicker
+ * Cristian Vasile <cristi.mie@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['ro'] = {
+		days: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă", "Duminică"],
+		daysShort: ["Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm", "Dum"],
+		daysMin: ["Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ", "Du"],
+		months: ["Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"],
+		monthsShort: ["Ian", "Feb", "Mar", "Apr", "Mai", "Iun", "Iul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+		today: "Astăzi",
+		suffix: [],
+		meridiem: [],
+		weekStart: 1
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.rs-latin.js

@@ -0,0 +1,16 @@
+/**
+ * Serbian latin translation for bootstrap-datetimepicker
+ * Bojan Milosavlević <milboj@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['rs'] = {
+		days: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota", "Nedelja"],
+		daysShort: ["Ned", "Pon", "Uto", "Sre", "Čet", "Pet", "Sub", "Ned"],
+		daysMin: ["N", "Po", "U", "Sr", "Č", "Pe", "Su", "N"],
+		months: ["Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"],
+		monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"],
+		today: "Danas",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.rs.js

@@ -0,0 +1,16 @@
+/**
+ * Serbian cyrillic translation for bootstrap-datetimepicker
+ * Bojan Milosavlević <milboj@gmail.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['rs'] = {
+		days: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота", "Недеља"],
+		daysShort: ["Нед", "Пон", "Уто", "Сре", "Чет", "Пет", "Суб", "Нед"],
+		daysMin: ["Н", "По", "У", "Ср", "Ч", "Пе", "Су", "Н"],
+		months: ["Јануар", "Фебруар", "Март", "Април", "Мај", "Јун", "Јул", "Август", "Септембар", "Октобар", "Новембар", "Децембар"],
+		monthsShort: ["Јан", "Феб", "Мар", "Апр", "Мај", "Јун", "Јул", "Авг", "Сеп", "Окт", "Нов", "Дец"],
+		today: "Данас",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 16 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.ru.js

@@ -0,0 +1,16 @@
+/**
+ * Russian translation for bootstrap-datetimepicker
+ * Victor Taranenko <darwin@snowdale.com>
+ */
+;(function($){
+	$.fn.datetimepicker.dates['ru'] = {
+		days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"],
+		daysShort: ["Вск", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Вск"],
+		daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"],
+		months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
+		monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
+		today: "Сегодня",
+		suffix: [],
+		meridiem: []
+	};
+}(jQuery));

+ 0 - 0
public/static/js/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.sk.js


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است