├── .classpath ├── .project ├── .settings ├── .jsdtscope ├── org.eclipse.jdt.core.prefs ├── org.eclipse.ltk.core.refactoring.prefs ├── org.eclipse.wst.common.component ├── org.eclipse.wst.common.project.facet.core.xml ├── org.eclipse.wst.jsdt.ui.superType.container └── org.eclipse.wst.jsdt.ui.superType.name ├── README.md ├── WebRoot ├── META-INF │ └── MANIFEST.MF ├── WEB-INF │ ├── classes │ │ ├── a_little_config.txt │ │ ├── com │ │ │ └── idiet │ │ │ │ ├── caipu │ │ │ │ ├── CaipuController.class │ │ │ │ ├── CaipuInterceptor.class │ │ │ │ └── CaipuValidator.class │ │ │ │ ├── canting │ │ │ │ └── CantingController.class │ │ │ │ ├── config │ │ │ │ └── Config.class │ │ │ │ ├── dao │ │ │ │ ├── Caipu.class │ │ │ │ ├── Canting.class │ │ │ │ ├── Food.class │ │ │ │ └── User.class │ │ │ │ ├── food │ │ │ │ └── FoodController.class │ │ │ │ ├── index │ │ │ │ └── IndexController.class │ │ │ │ ├── login │ │ │ │ └── LoginController.class │ │ │ │ ├── member │ │ │ │ └── MemberController.class │ │ │ │ └── util │ │ │ │ └── MD5Util.class │ │ └── log4j.properties │ ├── lib │ │ ├── c3p0-0.9.1.2.jar │ │ ├── javax.servlet.jsp.jstl-1.2.0.v201105211821.jar │ │ ├── jfinal-2.0-bin-with-src.jar │ │ ├── jfinal-2.0-bin.jar │ │ ├── log4j-1.2.16.jar │ │ ├── mysql-connector-java-5.1.20-bin.jar │ │ └── org.apache.taglibs.standard.glassfish-1.2.0.v201112081803.jar │ └── web.xml ├── assets │ ├── avatars │ │ ├── avatar.png │ │ ├── avatar1.png │ │ ├── avatar2.png │ │ ├── avatar3.png │ │ ├── avatar4.png │ │ ├── avatar5.png │ │ ├── profile-pic.jpg │ │ └── user.jpg │ ├── css │ │ ├── ace-ie.min.css │ │ ├── ace-rtl.min.css │ │ ├── ace-skins.min.css │ │ ├── ace.min.css │ │ ├── bootstrap-editable.css │ │ ├── bootstrap-timepicker.css │ │ ├── bootstrap.min.css │ │ ├── chosen.css │ │ ├── colorbox.css │ │ ├── colorpicker.css │ │ ├── datepicker.css │ │ ├── daterangepicker.css │ │ ├── dropzone.css │ │ ├── font-awesome-ie7.min.css │ │ ├── font-awesome.min.css │ │ ├── fullcalendar.css │ │ ├── images │ │ │ └── loading.gif │ │ ├── jquery-ui-1.10.3.custom.min.css │ │ ├── jquery-ui-1.10.3.full.min.css │ │ ├── jquery.gritter.css │ │ ├── select2.css │ │ └── ui.jqgrid.css │ ├── font │ │ └── fontawesome-webfont.woff │ ├── images │ │ └── gallery │ │ │ ├── image-1.jpg │ │ │ ├── image-2.jpg │ │ │ ├── image-3.jpg │ │ │ ├── image-4.jpg │ │ │ ├── image-5.jpg │ │ │ ├── image-6.jpg │ │ │ ├── thumb-1.jpg │ │ │ ├── thumb-2.jpg │ │ │ ├── thumb-3.jpg │ │ │ ├── thumb-4.jpg │ │ │ ├── thumb-5.jpg │ │ │ └── thumb-6.jpg │ └── js │ │ ├── ace-elements.min.js │ │ ├── ace-extra.min.js │ │ ├── ace.min.js │ │ ├── additional-methods.min.js │ │ ├── bootbox.min.js │ │ ├── bootstrap-colorpicker.min.js │ │ ├── bootstrap-tag.min.js │ │ ├── bootstrap-wysiwyg.min.js │ │ ├── bootstrap.min.js │ │ ├── chosen.jquery.min.js │ │ ├── date-time │ │ ├── bootstrap-datepicker.min.js │ │ ├── bootstrap-timepicker.min.js │ │ ├── daterangepicker.min.js │ │ └── moment.min.js │ │ ├── dropzone.min.js │ │ ├── excanvas.min.js │ │ ├── flot │ │ ├── jquery.flot.min.js │ │ ├── jquery.flot.pie.min.js │ │ └── jquery.flot.resize.min.js │ │ ├── fuelux │ │ ├── data │ │ │ └── fuelux.tree-sampledata.js │ │ ├── fuelux.spinner.min.js │ │ ├── fuelux.tree.min.js │ │ └── fuelux.wizard.min.js │ │ ├── fullcalendar.min.js │ │ ├── html5shiv.js │ │ ├── jqGrid │ │ ├── i18n │ │ │ └── grid.locale-en.js │ │ └── jquery.jqGrid.min.js │ │ ├── jquery-1.10.2.min.js │ │ ├── jquery-2.0.3.min.js │ │ ├── jquery-ui-1.10.3.custom.min.js │ │ ├── jquery-ui-1.10.3.full.min.js │ │ ├── jquery.autosize.min.js │ │ ├── jquery.colorbox-min.js │ │ ├── jquery.dataTables.bootstrap.js │ │ ├── jquery.dataTables.min.js │ │ ├── jquery.easy-pie-chart.min.js │ │ ├── jquery.gritter.min.js │ │ ├── jquery.hotkeys.min.js │ │ ├── jquery.inputlimiter.1.3.1.min.js │ │ ├── jquery.knob.min.js │ │ ├── jquery.maskedinput.min.js │ │ ├── jquery.mobile.custom.min.js │ │ ├── jquery.nestable.min.js │ │ ├── jquery.slimscroll.min.js │ │ ├── jquery.sparkline.min.js │ │ ├── jquery.ui.touch-punch.min.js │ │ ├── jquery.validate.min.js │ │ ├── markdown │ │ ├── bootstrap-markdown.min.js │ │ └── markdown.min.js │ │ ├── respond.min.js │ │ ├── select2.min.js │ │ ├── typeahead-bs2.min.js │ │ └── x-editable │ │ ├── ace-editable.min.js │ │ └── bootstrap-editable.min.js ├── caipu │ ├── add.jsp │ ├── edit.jsp │ └── index.jsp ├── canting │ ├── add.jsp │ ├── edit.jsp │ └── index.jsp ├── common │ ├── _paginate.jsp │ ├── footer.jsp │ └── header.jsp ├── food │ ├── add.jsp │ ├── edit.jsp │ └── index.jsp ├── index │ └── index.jsp ├── login │ ├── index.jsp │ └── register.jsp └── member │ ├── add.jsp │ ├── edit.jsp │ └── index.jsp ├── doc ├── common-admin.sql ├── jfinal-2.0-manual.pdf └── 使用说明.doc ├── res ├── a_little_config.txt └── log4j.properties └── src └── com └── idiet ├── caipu ├── CaipuController.java ├── CaipuInterceptor.java └── CaipuValidator.java ├── canting └── CantingController.java ├── config └── Config.java ├── dao ├── Caipu.java ├── Canting.java ├── Food.java └── User.java ├── food └── FoodController.java ├── index └── IndexController.java ├── login └── LoginController.java ├── member └── MemberController.java └── util └── MD5Util.java /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | common-admin 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.wst.jsdt.core.javascriptValidator 10 | 11 | 12 | 13 | 14 | org.eclipse.jdt.core.javabuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.wst.common.project.facet.core.builder 20 | 21 | 22 | 23 | 24 | org.eclipse.wst.validation.validationbuilder 25 | 26 | 27 | 28 | 29 | 30 | org.eclipse.jem.workbench.JavaEMFNature 31 | org.eclipse.wst.common.modulecore.ModuleCoreNature 32 | org.eclipse.wst.common.project.facet.core.nature 33 | org.eclipse.jdt.core.javanature 34 | org.eclipse.wst.jsdt.core.jsNature 35 | 36 | 37 | -------------------------------------------------------------------------------- /.settings/.jsdtscope: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 4 | org.eclipse.jdt.core.compiler.compliance=1.7 5 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 6 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 7 | org.eclipse.jdt.core.compiler.source=1.7 8 | -------------------------------------------------------------------------------- /.settings/org.eclipse.ltk.core.refactoring.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false 3 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.common.component: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.common.project.facet.core.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.jsdt.ui.superType.container: -------------------------------------------------------------------------------- 1 | org.eclipse.wst.jsdt.launching.baseBrowserLibrary -------------------------------------------------------------------------------- /.settings/org.eclipse.wst.jsdt.ui.superType.name: -------------------------------------------------------------------------------- 1 | Window -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #jfinal2-common-admin 2 | 1、基于jfinal2.0版本开发的通用后台管理系统,包括完整的登录、注册、菜谱管理、厨师管理、餐厅管理等功能 3 | 4 | 2、开发时是基于jdk1.8、tomcat7.0,utf8编码 5 | 6 | 3、运行时请先把doc下的common-admin.sql导入到数据库,然后修改配置文件:a_little_config.txt及相应的运行环境:Java Build Path、Targeted Runtimes等 7 | 8 | 4、详细使用请参考同目录doc下的使用说明.doc和jfinal官方手册:jfinal-2.0-manual.pdf -------------------------------------------------------------------------------- /WebRoot/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/a_little_config.txt: -------------------------------------------------------------------------------- 1 | jdbcUrl = jdbc:mysql://127.0.0.1/common-admin?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull 2 | user = root 3 | password =123456 4 | devMode = true 5 | -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/com/idiet/caipu/CaipuController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/classes/com/idiet/caipu/CaipuController.class -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/com/idiet/caipu/CaipuInterceptor.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/classes/com/idiet/caipu/CaipuInterceptor.class -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/com/idiet/caipu/CaipuValidator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/classes/com/idiet/caipu/CaipuValidator.class -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/com/idiet/canting/CantingController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/classes/com/idiet/canting/CantingController.class -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/com/idiet/config/Config.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/classes/com/idiet/config/Config.class -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/com/idiet/dao/Caipu.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/classes/com/idiet/dao/Caipu.class -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/com/idiet/dao/Canting.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/classes/com/idiet/dao/Canting.class -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/com/idiet/dao/Food.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/classes/com/idiet/dao/Food.class -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/com/idiet/dao/User.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/classes/com/idiet/dao/User.class -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/com/idiet/food/FoodController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/classes/com/idiet/food/FoodController.class -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/com/idiet/index/IndexController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/classes/com/idiet/index/IndexController.class -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/com/idiet/login/LoginController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/classes/com/idiet/login/LoginController.class -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/com/idiet/member/MemberController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/classes/com/idiet/member/MemberController.class -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/com/idiet/util/MD5Util.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/classes/com/idiet/util/MD5Util.class -------------------------------------------------------------------------------- /WebRoot/WEB-INF/classes/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=WARN, stdout, file 2 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender 3 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 4 | log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n 5 | 6 | # Output to the File 7 | log4j.appender.file=org.apache.log4j.FileAppender 8 | log4j.appender.file.File=./run.log 9 | log4j.appender.file.layout=org.apache.log4j.PatternLayout 10 | log4j.appender.file.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n -------------------------------------------------------------------------------- /WebRoot/WEB-INF/lib/c3p0-0.9.1.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/lib/c3p0-0.9.1.2.jar -------------------------------------------------------------------------------- /WebRoot/WEB-INF/lib/javax.servlet.jsp.jstl-1.2.0.v201105211821.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/lib/javax.servlet.jsp.jstl-1.2.0.v201105211821.jar -------------------------------------------------------------------------------- /WebRoot/WEB-INF/lib/jfinal-2.0-bin-with-src.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/lib/jfinal-2.0-bin-with-src.jar -------------------------------------------------------------------------------- /WebRoot/WEB-INF/lib/jfinal-2.0-bin.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/lib/jfinal-2.0-bin.jar -------------------------------------------------------------------------------- /WebRoot/WEB-INF/lib/log4j-1.2.16.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/lib/log4j-1.2.16.jar -------------------------------------------------------------------------------- /WebRoot/WEB-INF/lib/mysql-connector-java-5.1.20-bin.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/lib/mysql-connector-java-5.1.20-bin.jar -------------------------------------------------------------------------------- /WebRoot/WEB-INF/lib/org.apache.taglibs.standard.glassfish-1.2.0.v201112081803.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/WEB-INF/lib/org.apache.taglibs.standard.glassfish-1.2.0.v201112081803.jar -------------------------------------------------------------------------------- /WebRoot/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | common-admin 5 | 6 | 7 | jfinal 8 | com.jfinal.core.JFinalFilter 9 | 10 | configClass 11 | com.idiet.config.Config 12 | 13 | 14 | 15 | jfinal 16 | /* 17 | 18 | -------------------------------------------------------------------------------- /WebRoot/assets/avatars/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/avatars/avatar.png -------------------------------------------------------------------------------- /WebRoot/assets/avatars/avatar1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/avatars/avatar1.png -------------------------------------------------------------------------------- /WebRoot/assets/avatars/avatar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/avatars/avatar2.png -------------------------------------------------------------------------------- /WebRoot/assets/avatars/avatar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/avatars/avatar3.png -------------------------------------------------------------------------------- /WebRoot/assets/avatars/avatar4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/avatars/avatar4.png -------------------------------------------------------------------------------- /WebRoot/assets/avatars/avatar5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/avatars/avatar5.png -------------------------------------------------------------------------------- /WebRoot/assets/avatars/profile-pic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/avatars/profile-pic.jpg -------------------------------------------------------------------------------- /WebRoot/assets/avatars/user.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/avatars/user.jpg -------------------------------------------------------------------------------- /WebRoot/assets/css/ace-ie.min.css: -------------------------------------------------------------------------------- 1 | .sidebar{*left:0}.sidebar:before{display:none}.ace-nav>li.white-opaque{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#CCFFFFFF',endColorstr='#CCFFFFFF',GradientType=0)}.ace-nav>li.dark-opaque{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#33000000',endColorstr='#33000000',GradientType=0)}.infobox>.infobox-icon>[class*="icon-"]:before{color:#FFF}.infobox-dark>.badge{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#33FFFFFF',endColorstr='#33FFFFFF',GradientType=0)!important}.widget-box-overlay{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#55000000',endColorstr='#55000000',GradientType=0)!important}.widget-toolbar-light{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#D8FFFFFF',endColorstr='#D8FFFFFF',GradientType=0)!important}input[type=checkbox].ace,input[type=radio].ace{position:static;width:auto;height:auto;z-index:auto}input[type=checkbox].ace+.lbl,input[type=radio].ace+.lbl{min-height:auto;min-width:auto}input[type=checkbox].ace.ace-switch{width:auto}input[type=checkbox].ace.ace-switch+.lbl{margin:0;min-height:auto}input[type=checkbox].ace.ace-switch-7{width:auto}.ace-file-input input[type=file]{width:100%;height:30px;position:absolute;z-index:1;filter:alpha(opacity=0);cursor:pointer}.ace-file-input input[type=file]:hover+.file-label{border-color:#f59942}.ace-file-multiple input[type=file]{height:100%}.ace-file-input .remove{z-index:2}.ace-file-input .file-label.selected .file-name{width:50%}.ace-file-multiple .file-label.selected .file-name{width:auto}.wizard-steps li:first-child:before{max-width:100%;left:0}.login-layout .widget-box{display:none;visibility:visible;position:static}.login-layout .widget-box.visible{display:block}.pricing-box-small:hover{zoom:1.04;left:-1px;top:-3px}.ace-thumbnails>li>a>img{width:auto!important}.ace-thumbnails>li>:first-child>.text{display:none}.ace-thumbnails>li:hover>:first-child>.text{display:block}.ace-thumbnails>li>.tools{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8C000000',endColorstr='#8C000000',GradientType=0)!important}.ace-thumbnails>li>:first-child>.text{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8C000000',endColorstr='#8C000000',GradientType=0)!important}#cboxLoadingGraphic>[class*="icon-"]{display:inline-block;background:#FFF url('images/loading.gif') no-repeat center}#cboxLoadingGraphic>[class*="icon-"]:before{display:none}.widget-box-overlay>[class*="icon-"]{display:inline-block;width:24px;height:24px;margin-left:46%;background:transparent url('images/loading.gif') no-repeat center}.widget-box-overlay>[class*="icon-"]:before{display:none}.btn.btn-app.btn-light{border:1px solid #d9d9d9}.btn.btn-app.btn-yellow{border:1px solid #fee188}.grid3{width:31%}.grid4{width:23%}.itemdiv.dialogdiv>.body:before{display:none}.fc-event-hori,.fc-event-vert{border:none!important}[class*="tab-color-"] .nav-tabs>li>a>[class*="icon-"]:first-child{color:#666!important}.dropdown-preview>.dropdown-menu{*width:180px}.ui-datepicker,.ui-autocomplete,.ui-menu{border:1px solid #CCC}.ui-widget-overlay{filter:alpha(opacity=100)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#44000000',endColorstr='#44000000',GradientType=0)!important}.message-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#CCFFFFFF',endColorstr='#CCFFFFFF',GradientType=0)!important}.gritter-item-wrapper{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#EA323232',endColorstr='#EA323232',GradientType=0)!important}.gritter-item-wrapper.gritter-info{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#EA315185',endColorstr='#EA315185',GradientType=0)!important}.gritter-item-wrapper.gritter-error{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#EA992812',endColorstr='#EA992812',GradientType=0)!important}.gritter-item-wrapper.gritter-success{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#EA59834B',endColorstr='#EA59834B',GradientType=0)!important}.gritter-item-wrapper.gritter-warning{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#EABE701F',endColorstr='#EABE701F',GradientType=0)!important}.gritter-item-wrapper.gritter-light{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#F2F5F5F5',endColorstr='#F2F5F5F5',GradientType=0)!important}.gritter-info.gritter-light{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#F2E8F2FF',endColorstr='#F2E8F2FF',GradientType=0)!important}.gritter-error.gritter-light{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#F2FFEBEB',endColorstr='#F2FFEBEB',GradientType=0)!important}.gritter-success.gritter-light{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#F2EFFAE3',endColorstr='#F2EFFAE3',GradientType=0)!important}.gritter-warning.gritter-light{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#F2FCF8E3',endColorstr='#F2FCF8E3',GradientType=0)!important}.widget-header .wysiwyg-toolbar .btn-group>.btn,.widget-body .md-header .btn{background:transparent none!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#40FFFFFF',endColorstr='#40FFFFFF',GradientType=0)!important}.widget-header .wysiwyg-toolbar .btn-group>.btn.active,.widget-body .md-header .btn-inverse{background:transparent none!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#40000000',endColorstr='#40000000',GradientType=0)!important}.widget-body .md-header .btn,.widget-body .md-header .btn-inverse{display:none}body.skin-3,.skin-3 .sidebar{background-color:#d6d6d6}.skin-3 .menu-min .nav-list>li.active>a{background-color:#eef8ff}body.skin-2,.skin-2 .sidebar{background-color:#505050}.skin-2 .nav-list>li:hover>a>span{color:#FFF}.skin-2 .nav-list>li:hover>a>[class*="icon-"]:first-child{color:#FFF}.skin-2 .menu-min .nav-list>li>a:hover>[class*="icon-"]:first-child{color:#FFF}.rtl .nav-list li.active>a:after{border-left-color:transparent;border-right-color:#0b6cbc}.rtl.skin-1 .nav-list li.active>a:after{border-right-color:#FFF;border-left-color:transparent}.rtl.skin-1 .menu-min .nav-list li.active:hover>a:after{border-right-color:#242a2b}.rtl.skin-2 .nav-list li.active>a:after{border-right-color:#FFF;border-left-color:transparent}.rtl.skin-2 .menu-min .nav-list li.active:hover>a:after{border-right-color:#292929;border-left-color:transparent}.rtl.skin-2 .nav-list li.active.open>.submenu>li.active>a:after{border-right-color:#FFF;border-left-color:transparent}.rtl.skin-3 .nav-list li.active>a:after{border-right-color:#FFF;border-left-color:transparent}.rtl.skin-3 .nav-list li.active>a:before{border-right-color:#a4c6dd;border-left-color:transparent} -------------------------------------------------------------------------------- /WebRoot/assets/css/bootstrap-timepicker.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Timepicker Component for Twitter Bootstrap 3 | * 4 | * Copyright 2013 Joris de Wit 5 | * 6 | * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | .bootstrap-timepicker { 12 | position: relative; 13 | } 14 | .bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu { 15 | left: auto; 16 | right: 0; 17 | } 18 | .bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before { 19 | left: auto; 20 | right: 12px; 21 | } 22 | .bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after { 23 | left: auto; 24 | right: 13px; 25 | } 26 | .bootstrap-timepicker .add-on { 27 | cursor: pointer; 28 | } 29 | .bootstrap-timepicker .add-on i { 30 | display: inline-block; 31 | width: 16px; 32 | height: 16px; 33 | } 34 | .bootstrap-timepicker-widget.dropdown-menu { 35 | padding: 2px 3px 2px 2px; 36 | } 37 | .bootstrap-timepicker-widget.dropdown-menu.open { 38 | display: inline-block; 39 | } 40 | .bootstrap-timepicker-widget.dropdown-menu:before { 41 | border-bottom: 7px solid rgba(0, 0, 0, 0.2); 42 | border-left: 7px solid transparent; 43 | border-right: 7px solid transparent; 44 | content: ""; 45 | display: inline-block; 46 | left: 9px; 47 | position: absolute; 48 | top: -7px; 49 | } 50 | .bootstrap-timepicker-widget.dropdown-menu:after { 51 | border-bottom: 6px solid #FFFFFF; 52 | border-left: 6px solid transparent; 53 | border-right: 6px solid transparent; 54 | content: ""; 55 | display: inline-block; 56 | left: 10px; 57 | position: absolute; 58 | top: -6px; 59 | } 60 | .bootstrap-timepicker-widget a.btn, 61 | .bootstrap-timepicker-widget input { 62 | border-radius: 4px; 63 | } 64 | .bootstrap-timepicker-widget table { 65 | width: 100%; 66 | margin: 0; 67 | } 68 | .bootstrap-timepicker-widget table td { 69 | text-align: center; 70 | height: 30px; 71 | margin: 0; 72 | padding: 2px; 73 | } 74 | .bootstrap-timepicker-widget table td:not(.separator) { 75 | min-width: 30px; 76 | } 77 | .bootstrap-timepicker-widget table td span { 78 | width: 100%; 79 | } 80 | .bootstrap-timepicker-widget table td a { 81 | border: 1px transparent solid; 82 | width: 100%; 83 | display: inline-block; 84 | margin: 0; 85 | padding: 8px 0; 86 | outline: 0; 87 | color: #333; 88 | } 89 | .bootstrap-timepicker-widget table td a:hover { 90 | text-decoration: none; 91 | background-color: #eee; 92 | -webkit-border-radius: 4px; 93 | -moz-border-radius: 4px; 94 | border-radius: 4px; 95 | border-color: #ddd; 96 | } 97 | .bootstrap-timepicker-widget table td a i { 98 | margin-top: 2px; 99 | } 100 | .bootstrap-timepicker-widget table td input { 101 | width: 25px; 102 | margin: 0; 103 | text-align: center; 104 | } 105 | .bootstrap-timepicker-widget .modal-content { 106 | padding: 4px; 107 | } 108 | @media (min-width: 767px) { 109 | .bootstrap-timepicker-widget.modal { 110 | width: 200px; 111 | margin-left: -100px; 112 | } 113 | } 114 | @media (max-width: 767px) { 115 | .bootstrap-timepicker { 116 | width: 100%; 117 | } 118 | .bootstrap-timepicker .dropdown-menu { 119 | width: 100%; 120 | } 121 | } 122 | -------------------------------------------------------------------------------- /WebRoot/assets/css/colorbox.css: -------------------------------------------------------------------------------- 1 | /* 2 | Colorbox Core Style: 3 | The following CSS is consistent between example themes and should not be altered. 4 | */ 5 | #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;} 6 | #cboxOverlay{position:fixed; width:100%; height:100%;} 7 | #cboxMiddleLeft, #cboxBottomLeft{clear:left;} 8 | #cboxContent{position:relative;} 9 | #cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;} 10 | #cboxTitle{margin:0;} 11 | #cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;} 12 | #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;} 13 | .cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;} 14 | .cboxIframe{width:100%; height:100%; display:block; border:0;} 15 | #colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;} 16 | 17 | /* 18 | User Style: 19 | Change the following styles to modify the appearance of Colorbox. They are 20 | ordered & tabbed in a way that represents the nesting of the generated HTML. 21 | */ 22 | #cboxOverlay{background:url(images/overlay.png) repeat 0 0;} 23 | #colorbox{outline:0;} 24 | #cboxTopLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px 0;} 25 | #cboxTopRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px 0;} 26 | #cboxBottomLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px -29px;} 27 | #cboxBottomRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px -29px;} 28 | #cboxMiddleLeft{width:21px; background:url(images/controls.png) left top repeat-y;} 29 | #cboxMiddleRight{width:21px; background:url(images/controls.png) right top repeat-y;} 30 | #cboxTopCenter{height:21px; background:url(images/border.png) 0 0 repeat-x;} 31 | #cboxBottomCenter{height:21px; background:url(images/border.png) 0 -29px repeat-x;} 32 | #cboxContent{background:#fff; overflow:hidden;} 33 | .cboxIframe{background:#fff;} 34 | #cboxError{padding:50px; border:1px solid #ccc;} 35 | #cboxLoadedContent{margin-bottom:28px;} 36 | #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;} 37 | #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;} 38 | #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;} 39 | #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;} 40 | 41 | /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */ 42 | #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; } 43 | 44 | /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */ 45 | #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;} 46 | 47 | #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;} 48 | #cboxPrevious{position:absolute; bottom:0; left:0; background:url(images/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;} 49 | #cboxPrevious:hover{background-position:-75px -25px;} 50 | #cboxNext{position:absolute; bottom:0; left:27px; background:url(images/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;} 51 | #cboxNext:hover{background-position:-50px -25px;} 52 | #cboxClose{position:absolute; bottom:0; right:0; background:url(images/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;} 53 | #cboxClose:hover{background-position:-25px -25px;} 54 | 55 | /* 56 | The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill 57 | when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9. 58 | See: http://jacklmoore.com/notes/ie-transparency-problems/ 59 | */ 60 | .cboxIE #cboxTopLeft, 61 | .cboxIE #cboxTopCenter, 62 | .cboxIE #cboxTopRight, 63 | .cboxIE #cboxBottomLeft, 64 | .cboxIE #cboxBottomCenter, 65 | .cboxIE #cboxBottomRight, 66 | .cboxIE #cboxMiddleLeft, 67 | .cboxIE #cboxMiddleRight { 68 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF); 69 | } -------------------------------------------------------------------------------- /WebRoot/assets/css/colorpicker.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Colorpicker for Bootstrap 3 | * 4 | * Copyright 2012 Stefan Petre 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | */ 9 | .colorpicker-saturation { 10 | width: 100px; 11 | height: 100px; 12 | background-image: url(img/saturation.png); 13 | cursor: crosshair; 14 | float: left; 15 | } 16 | .colorpicker-saturation i { 17 | display: block; 18 | height: 5px; 19 | width: 5px; 20 | border: 1px solid #000; 21 | -webkit-border-radius: 5px; 22 | -moz-border-radius: 5px; 23 | border-radius: 5px; 24 | position: absolute; 25 | top: 0; 26 | left: 0; 27 | margin: -4px 0 0 -4px; 28 | } 29 | .colorpicker-saturation i b { 30 | display: block; 31 | height: 5px; 32 | width: 5px; 33 | border: 1px solid #fff; 34 | -webkit-border-radius: 5px; 35 | -moz-border-radius: 5px; 36 | border-radius: 5px; 37 | } 38 | .colorpicker-hue, .colorpicker-alpha { 39 | width: 15px; 40 | height: 100px; 41 | float: left; 42 | cursor: row-resize; 43 | margin-left: 4px; 44 | margin-bottom: 4px; 45 | } 46 | .colorpicker-hue i, .colorpicker-alpha i { 47 | display: block; 48 | height: 1px; 49 | background: #000; 50 | border-top: 1px solid #fff; 51 | position: absolute; 52 | top: 0; 53 | left: 0; 54 | width: 100%; 55 | margin-top: -1px; 56 | } 57 | .colorpicker-hue { 58 | background-image: url(img/hue.png); 59 | } 60 | .colorpicker-alpha { 61 | background-image: url(img/alpha.png); 62 | display: none; 63 | } 64 | .colorpicker { 65 | *zoom: 1; 66 | top: 0; 67 | left: 0; 68 | padding: 4px; 69 | min-width: 120px; 70 | margin-top: 1px; 71 | -webkit-border-radius: 4px; 72 | -moz-border-radius: 4px; 73 | border-radius: 4px; 74 | } 75 | .colorpicker:before, .colorpicker:after { 76 | display: table; 77 | content: ""; 78 | } 79 | .colorpicker:after { 80 | clear: both; 81 | } 82 | .colorpicker:before { 83 | content: ''; 84 | display: inline-block; 85 | border-left: 7px solid transparent; 86 | border-right: 7px solid transparent; 87 | border-bottom: 7px solid #ccc; 88 | border-bottom-color: rgba(0, 0, 0, 0.2); 89 | position: absolute; 90 | top: -7px; 91 | left: 6px; 92 | } 93 | .colorpicker:after { 94 | content: ''; 95 | display: inline-block; 96 | border-left: 6px solid transparent; 97 | border-right: 6px solid transparent; 98 | border-bottom: 6px solid #ffffff; 99 | position: absolute; 100 | top: -6px; 101 | left: 7px; 102 | } 103 | .colorpicker div { 104 | position: relative; 105 | } 106 | .colorpicker.alpha { 107 | min-width: 140px; 108 | } 109 | .colorpicker.alpha .colorpicker-alpha { 110 | display: block; 111 | } 112 | .colorpicker-color { 113 | height: 10px; 114 | margin-top: 5px; 115 | clear: both; 116 | background-image: url(img/alpha.png); 117 | background-position: 0 100%; 118 | } 119 | .colorpicker-color div { 120 | height: 10px; 121 | } 122 | .input-append.color .add-on i, .input-prepend.color .add-on i { 123 | display: block; 124 | cursor: pointer; 125 | width: 16px; 126 | height: 16px; 127 | } -------------------------------------------------------------------------------- /WebRoot/assets/css/daterangepicker.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Stylesheet for the Date Range Picker, for use with Bootstrap 3.x 3 | * 4 | * Copyright 2013 Dan Grossman ( http://www.dangrossman.info ) 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Built for http://www.improvely.com 9 | */ 10 | 11 | .daterangepicker.dropdown-menu { 12 | max-width: none; 13 | } 14 | 15 | .daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar { 16 | float: left; 17 | margin: 4px; 18 | } 19 | 20 | .daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar { 21 | float: right; 22 | margin: 4px; 23 | } 24 | 25 | .daterangepicker .ranges { 26 | width: 160px; 27 | text-align: left; 28 | } 29 | 30 | .daterangepicker .ranges .range_inputs>div { 31 | float: left; 32 | } 33 | 34 | .daterangepicker .ranges .range_inputs>div:nth-child(2) { 35 | padding-left: 11px; 36 | } 37 | 38 | .daterangepicker .calendar { 39 | display: none; 40 | max-width: 270px; 41 | } 42 | 43 | .daterangepicker .calendar th, .daterangepicker .calendar td { 44 | font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; 45 | white-space: nowrap; 46 | text-align: center; 47 | min-width: 32px; 48 | } 49 | 50 | .daterangepicker .ranges label { 51 | color: #333; 52 | display: block; 53 | font-size: 11px; 54 | font-weight: normal; 55 | height: 20px; 56 | line-height: 20px; 57 | margin-bottom: 2px; 58 | text-shadow: #fff 1px 1px 0px; 59 | text-transform: uppercase; 60 | width: 74px; 61 | } 62 | 63 | .daterangepicker .ranges input { 64 | font-size: 11px; 65 | } 66 | 67 | .daterangepicker .ranges .input-mini { 68 | background-color: #eee; 69 | border: 1px solid #ccc; 70 | border-radius: 4px; 71 | color: #555; 72 | display: block; 73 | font-size: 11px; 74 | height: 30px; 75 | line-height: 30px; 76 | vertical-align: middle; 77 | margin: 0 0 10px 0; 78 | padding: 0 6px; 79 | width: 74px; 80 | } 81 | 82 | .daterangepicker .ranges ul { 83 | list-style: none; 84 | margin: 0; 85 | padding: 0; 86 | } 87 | 88 | .daterangepicker .ranges li { 89 | font-size: 13px; 90 | background: #f5f5f5; 91 | border: 1px solid #f5f5f5; 92 | color: #08c; 93 | padding: 3px 12px; 94 | margin-bottom: 8px; 95 | -webkit-border-radius: 5px; 96 | -moz-border-radius: 5px; 97 | border-radius: 5px; 98 | cursor: pointer; 99 | } 100 | 101 | .daterangepicker .ranges li.active, .daterangepicker .ranges li:hover { 102 | background: #08c; 103 | border: 1px solid #08c; 104 | color: #fff; 105 | } 106 | 107 | .daterangepicker .calendar-date { 108 | border: 1px solid #ddd; 109 | padding: 4px; 110 | border-radius: 4px; 111 | background: #fff; 112 | } 113 | 114 | .daterangepicker .calendar-time { 115 | text-align: center; 116 | margin: 8px auto 0 auto; 117 | line-height: 30px; 118 | } 119 | 120 | .daterangepicker { 121 | position: absolute; 122 | background: #fff; 123 | top: 100px; 124 | left: 20px; 125 | padding: 4px; 126 | margin-top: 1px; 127 | -webkit-border-radius: 4px; 128 | -moz-border-radius: 4px; 129 | border-radius: 4px; 130 | } 131 | 132 | .daterangepicker.opensleft:before { 133 | position: absolute; 134 | top: -7px; 135 | right: 9px; 136 | display: inline-block; 137 | border-right: 7px solid transparent; 138 | border-bottom: 7px solid #ccc; 139 | border-left: 7px solid transparent; 140 | border-bottom-color: rgba(0, 0, 0, 0.2); 141 | content: ''; 142 | } 143 | 144 | .daterangepicker.opensleft:after { 145 | position: absolute; 146 | top: -6px; 147 | right: 10px; 148 | display: inline-block; 149 | border-right: 6px solid transparent; 150 | border-bottom: 6px solid #fff; 151 | border-left: 6px solid transparent; 152 | content: ''; 153 | } 154 | 155 | .daterangepicker.opensright:before { 156 | position: absolute; 157 | top: -7px; 158 | left: 9px; 159 | display: inline-block; 160 | border-right: 7px solid transparent; 161 | border-bottom: 7px solid #ccc; 162 | border-left: 7px solid transparent; 163 | border-bottom-color: rgba(0, 0, 0, 0.2); 164 | content: ''; 165 | } 166 | 167 | .daterangepicker.opensright:after { 168 | position: absolute; 169 | top: -6px; 170 | left: 10px; 171 | display: inline-block; 172 | border-right: 6px solid transparent; 173 | border-bottom: 6px solid #fff; 174 | border-left: 6px solid transparent; 175 | content: ''; 176 | } 177 | 178 | .daterangepicker table { 179 | width: 100%; 180 | margin: 0; 181 | } 182 | 183 | .daterangepicker td, .daterangepicker th { 184 | text-align: center; 185 | width: 20px; 186 | height: 20px; 187 | -webkit-border-radius: 4px; 188 | -moz-border-radius: 4px; 189 | border-radius: 4px; 190 | cursor: pointer; 191 | white-space: nowrap; 192 | } 193 | 194 | .daterangepicker td.off { 195 | color: #999; 196 | } 197 | 198 | .daterangepicker td.disabled { 199 | color: #999; 200 | } 201 | 202 | .daterangepicker td.available:hover, .daterangepicker th.available:hover { 203 | background: #eee; 204 | } 205 | 206 | .daterangepicker td.in-range { 207 | background: #ebf4f8; 208 | -webkit-border-radius: 0; 209 | -moz-border-radius: 0; 210 | border-radius: 0; 211 | } 212 | 213 | .daterangepicker td.active, .daterangepicker td.active:hover { 214 | background-color: #357ebd; 215 | border-color: #3071a9; 216 | color: #fff; 217 | } 218 | 219 | .daterangepicker td.week, .daterangepicker th.week { 220 | font-size: 80%; 221 | color: #ccc; 222 | } 223 | 224 | .daterangepicker select.monthselect, .daterangepicker select.yearselect { 225 | font-size: 12px; 226 | padding: 1px; 227 | height: auto; 228 | margin: 0; 229 | cursor: default; 230 | } 231 | 232 | .daterangepicker select.monthselect { 233 | margin-right: 2%; 234 | width: 56%; 235 | } 236 | 237 | .daterangepicker select.yearselect { 238 | width: 40%; 239 | } 240 | 241 | .daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.ampmselect { 242 | width: 50px; 243 | margin-bottom: 0; 244 | } -------------------------------------------------------------------------------- /WebRoot/assets/css/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/css/images/loading.gif -------------------------------------------------------------------------------- /WebRoot/assets/css/jquery-ui-1.10.3.custom.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery UI - v1.10.3 - 2013-07-07 2 | * http://jqueryui.com 3 | * Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css 4 | * Copyright 2013 jQuery Foundation and other contributors Licensed MIT */ 5 | 6 | .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0} -------------------------------------------------------------------------------- /WebRoot/assets/css/jquery-ui-1.10.3.full.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/css/jquery-ui-1.10.3.full.min.css -------------------------------------------------------------------------------- /WebRoot/assets/css/jquery.gritter.css: -------------------------------------------------------------------------------- 1 | /* the norm */ 2 | #gritter-notice-wrapper { 3 | position:fixed; 4 | top:20px; 5 | right:20px; 6 | width:301px; 7 | z-index:9999; 8 | } 9 | #gritter-notice-wrapper.top-left { 10 | left: 20px; 11 | right: auto; 12 | } 13 | #gritter-notice-wrapper.bottom-right { 14 | top: auto; 15 | left: auto; 16 | bottom: 20px; 17 | right: 20px; 18 | } 19 | #gritter-notice-wrapper.bottom-left { 20 | top: auto; 21 | right: auto; 22 | bottom: 20px; 23 | left: 20px; 24 | } 25 | .gritter-item-wrapper { 26 | position:relative; 27 | margin:0 0 10px 0; 28 | background:url('../images/ie-spacer.gif'); /* ie7/8 fix */ 29 | } 30 | .gritter-top { 31 | background:url(../images/gritter.png) no-repeat left -30px; 32 | height:10px; 33 | } 34 | .hover .gritter-top { 35 | background-position:right -30px; 36 | } 37 | .gritter-bottom { 38 | background:url(../images/gritter.png) no-repeat left bottom; 39 | height:8px; 40 | margin:0; 41 | } 42 | .hover .gritter-bottom { 43 | background-position: bottom right; 44 | } 45 | .gritter-item { 46 | display:block; 47 | background:url(../images/gritter.png) no-repeat left -40px; 48 | color:#eee; 49 | padding:2px 11px 8px 11px; 50 | font-size: 11px; 51 | font-family:verdana; 52 | } 53 | .hover .gritter-item { 54 | background-position:right -40px; 55 | } 56 | .gritter-item p { 57 | padding:0; 58 | margin:0; 59 | word-wrap:break-word; 60 | } 61 | .gritter-close { 62 | display:none; 63 | position:absolute; 64 | top:5px; 65 | left:3px; 66 | background:url(../images/gritter.png) no-repeat left top; 67 | cursor:pointer; 68 | width:30px; 69 | height:30px; 70 | } 71 | .gritter-title { 72 | font-size:14px; 73 | font-weight:bold; 74 | padding:0 0 7px 0; 75 | display:block; 76 | text-shadow:1px 1px 0 #000; /* Not supported by IE :( */ 77 | } 78 | .gritter-image { 79 | width:48px; 80 | height:48px; 81 | float:left; 82 | } 83 | .gritter-with-image, 84 | .gritter-without-image { 85 | padding:0; 86 | } 87 | .gritter-with-image { 88 | width:220px; 89 | float:right; 90 | } 91 | /* for the light (white) version of the gritter notice */ 92 | .gritter-light .gritter-item, 93 | .gritter-light .gritter-bottom, 94 | .gritter-light .gritter-top, 95 | .gritter-light .gritter-close { 96 | background-image: url(../images/gritter-light.png); 97 | color: #222; 98 | } 99 | .gritter-light .gritter-title { 100 | text-shadow: none; 101 | } 102 | -------------------------------------------------------------------------------- /WebRoot/assets/font/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/font/fontawesome-webfont.woff -------------------------------------------------------------------------------- /WebRoot/assets/images/gallery/image-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/images/gallery/image-1.jpg -------------------------------------------------------------------------------- /WebRoot/assets/images/gallery/image-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/images/gallery/image-2.jpg -------------------------------------------------------------------------------- /WebRoot/assets/images/gallery/image-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/images/gallery/image-3.jpg -------------------------------------------------------------------------------- /WebRoot/assets/images/gallery/image-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/images/gallery/image-4.jpg -------------------------------------------------------------------------------- /WebRoot/assets/images/gallery/image-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/images/gallery/image-5.jpg -------------------------------------------------------------------------------- /WebRoot/assets/images/gallery/image-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/images/gallery/image-6.jpg -------------------------------------------------------------------------------- /WebRoot/assets/images/gallery/thumb-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/images/gallery/thumb-1.jpg -------------------------------------------------------------------------------- /WebRoot/assets/images/gallery/thumb-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/images/gallery/thumb-2.jpg -------------------------------------------------------------------------------- /WebRoot/assets/images/gallery/thumb-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/images/gallery/thumb-3.jpg -------------------------------------------------------------------------------- /WebRoot/assets/images/gallery/thumb-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/images/gallery/thumb-4.jpg -------------------------------------------------------------------------------- /WebRoot/assets/images/gallery/thumb-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/images/gallery/thumb-5.jpg -------------------------------------------------------------------------------- /WebRoot/assets/images/gallery/thumb-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/WebRoot/assets/images/gallery/thumb-6.jpg -------------------------------------------------------------------------------- /WebRoot/assets/js/ace-extra.min.js: -------------------------------------------------------------------------------- 1 | if(!("ace" in window)){window.ace={}}ace.config={cookie_expiry:604800,storage_method:2};ace.settings={is:function(b,a){return(ace.data.get("settings",b+"-"+a)==1)},exists:function(b,a){return(ace.data.get("settings",b+"-"+a)!==null)},set:function(b,a){ace.data.set("settings",b+"-"+a,1)},unset:function(b,a){ace.data.set("settings",b+"-"+a,-1)},remove:function(b,a){ace.data.remove("settings",b+"-"+a)},navbar_fixed:function(a){a=a||false;if(!a&&ace.settings.is("sidebar","fixed")){ace.settings.sidebar_fixed(false)}var b=document.getElementById("navbar");if(a){if(!ace.hasClass(b,"navbar-fixed-top")){ace.addClass(b,"navbar-fixed-top")}if(!ace.hasClass(document.body,"navbar-fixed")){ace.addClass(document.body,"navbar-fixed")}ace.settings.set("navbar","fixed")}else{ace.removeClass(b,"navbar-fixed-top");ace.removeClass(document.body,"navbar-fixed");ace.settings.unset("navbar","fixed")}document.getElementById("ace-settings-navbar").checked=a},breadcrumbs_fixed:function(a){a=a||false;if(a&&!ace.settings.is("sidebar","fixed")){ace.settings.sidebar_fixed(true)}var b=document.getElementById("breadcrumbs");if(a){if(!ace.hasClass(b,"breadcrumbs-fixed")){ace.addClass(b,"breadcrumbs-fixed")}if(!ace.hasClass(document.body,"breadcrumbs-fixed")){ace.addClass(document.body,"breadcrumbs-fixed")}ace.settings.set("breadcrumbs","fixed")}else{ace.removeClass(b,"breadcrumbs-fixed");ace.removeClass(document.body,"breadcrumbs-fixed");ace.settings.unset("breadcrumbs","fixed")}document.getElementById("ace-settings-breadcrumbs").checked=a},sidebar_fixed:function(a){a=a||false;if(!a&&ace.settings.is("breadcrumbs","fixed")){ace.settings.breadcrumbs_fixed(false)}if(a&&!ace.settings.is("navbar","fixed")){ace.settings.navbar_fixed(true)}var b=document.getElementById("sidebar");if(a){if(!ace.hasClass(b,"sidebar-fixed")){ace.addClass(b,"sidebar-fixed")}ace.settings.set("sidebar","fixed")}else{ace.removeClass(b,"sidebar-fixed");ace.settings.unset("sidebar","fixed")}document.getElementById("ace-settings-sidebar").checked=a},main_container_fixed:function(a){a=a||false;var c=document.getElementById("main-container");var b=document.getElementById("navbar-container");if(a){if(!ace.hasClass(c,"container")){ace.addClass(c,"container")}if(!ace.hasClass(b,"container")){ace.addClass(b,"container")}ace.settings.set("main-container","fixed")}else{ace.removeClass(c,"container");ace.removeClass(b,"container");ace.settings.unset("main-container","fixed")}document.getElementById("ace-settings-add-container").checked=a;if(navigator.userAgent.match(/webkit/i)){var d=document.getElementById("sidebar");ace.toggleClass(d,"menu-min");setTimeout(function(){ace.toggleClass(d,"menu-min")},0)}},sidebar_collapsed:function(c){c=c||false;var e=document.getElementById("sidebar");var d=document.getElementById("sidebar-collapse").querySelector('[class*="icon-"]');var b=d.getAttribute("data-icon1");var a=d.getAttribute("data-icon2");if(c){ace.addClass(e,"menu-min");ace.removeClass(d,b);ace.addClass(d,a);ace.settings.set("sidebar","collapsed")}else{ace.removeClass(e,"menu-min");ace.removeClass(d,a);ace.addClass(d,b);ace.settings.unset("sidebar","collapsed")}},};ace.settings.check=function(c,e){if(!ace.settings.exists(c,e)){return}var a=ace.settings.is(c,e);var b={"navbar-fixed":"navbar-fixed-top","sidebar-fixed":"sidebar-fixed","breadcrumbs-fixed":"breadcrumbs-fixed","sidebar-collapsed":"menu-min","main-container-fixed":"container"};var d=document.getElementById(c);if(a!=ace.hasClass(d,b[c+"-"+e])){ace.settings[c.replace("-","_")+"_"+e](a)}};ace.data_storage=function(e,c){var b="ace.";var d=null;var a=0;if((e==1||e===c)&&"localStorage" in window&&window.localStorage!==null){d=ace.storage;a=1}else{if(d==null&&(e==2||e===c)&&"cookie" in document&&document.cookie!==null){d=ace.cookie;a=2}}this.set=function(h,g,i,k){if(!d){return}if(i===k){i=g;g=h;if(i==null){d.remove(b+g)}else{if(a==1){d.set(b+g,i)}else{if(a==2){d.set(b+g,i,ace.config.cookie_expiry)}}}}else{if(a==1){if(i==null){d.remove(b+h+"."+g)}else{d.set(b+h+"."+g,i)}}else{if(a==2){var j=d.get(b+h);var f=j?JSON.parse(j):{};if(i==null){delete f[g];if(ace.sizeof(f)==0){d.remove(b+h);return}}else{f[g]=i}d.set(b+h,JSON.stringify(f),ace.config.cookie_expiry)}}}};this.get=function(h,g,j){if(!d){return null}if(g===j){g=h;return d.get(b+g)}else{if(a==1){return d.get(b+h+"."+g)}else{if(a==2){var i=d.get(b+h);var f=i?JSON.parse(i):{};return g in f?f[g]:null}}}};this.remove=function(g,f,h){if(!d){return}if(f===h){f=g;this.set(f,null)}else{this.set(g,f,null)}}};ace.cookie={get:function(c){var d=document.cookie,g,f=c+"=",a;if(!d){return}a=d.indexOf("; "+f);if(a==-1){a=d.indexOf(f);if(a!=0){return null}}else{a+=2}g=d.indexOf(";",a);if(g==-1){g=d.length}return decodeURIComponent(d.substring(a+f.length,g))},set:function(b,e,a,g,c,f){var h=new Date();if(typeof(a)=="object"&&a.toGMTString){a=a.toGMTString()}else{if(parseInt(a,10)){h.setTime(h.getTime()+(parseInt(a,10)*1000));a=h.toGMTString()}else{a=""}}document.cookie=b+"="+encodeURIComponent(e)+((a)?"; expires="+a:"")+((g)?"; path="+g:"")+((c)?"; domain="+c:"")+((f)?"; secure":"")},remove:function(a,b){this.set(a,"",-1000,b)}};ace.storage={get:function(a){return window.localStorage.getItem(a)},set:function(a,b){window.localStorage.setItem(a,b)},remove:function(a){window.localStorage.removeItem(a)}};ace.sizeof=function(c){var b=0;for(var a in c){if(c.hasOwnProperty(a)){b++}}return b};ace.hasClass=function(b,a){return(" "+b.className+" ").indexOf(" "+a+" ")>-1};ace.addClass=function(c,b){if(!ace.hasClass(c,b)){var a=c.className;c.className=a+(a.length?" ":"")+b}};ace.removeClass=function(b,a){ace.replaceClass(b,a)};ace.replaceClass=function(c,b,d){var a=new RegExp(("(^|\\s)"+b+"(\\s|$)"),"i");c.className=c.className.replace(a,function(e,g,f){return d?(g+d+f):" "}).replace(/^\s+|\s+$/g,"")};ace.toggleClass=function(b,a){if(ace.hasClass(b,a)){ace.removeClass(b,a)}else{ace.addClass(b,a)}};ace.data=new ace.data_storage(ace.config.storage_method); -------------------------------------------------------------------------------- /WebRoot/assets/js/bootbox.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootbox.js v4.0.0 3 | * 4 | * http://bootboxjs.com/license.txt 5 | */ 6 | window.bootbox=window.bootbox||function a(b,c){"use strict";function d(a){var b=s[q.locale];return b?b[a]:s.en[a]}function e(a,c,d){a.preventDefault();var e=b.isFunction(d)&&d(a)===!1;e||c.modal("hide")}function f(a){var b,c=0;for(b in a)c++;return c}function g(a,c){var d=0;b.each(a,function(a,b){c(a,b,d++)})}function h(a){var c,d;if("object"!=typeof a)throw new Error("Please supply an object of options");if(!a.message)throw new Error("Please specify a message");return a=b.extend({},q,a),a.buttons||(a.buttons={}),a.backdrop=a.backdrop?"static":!1,c=a.buttons,d=f(c),g(c,function(a,e,f){if(b.isFunction(e)&&(e=c[a]={callback:e}),"object"!==b.type(e))throw new Error("button with key "+a+" must be an object");e.label||(e.label=a),e.className||(e.className=2>=d&&f===d-1?"btn-primary":"btn-default")}),a}function i(a,b){var c=a.length,d={};if(1>c||c>2)throw new Error("Invalid argument length");return 2===c||"string"==typeof a[0]?(d[b[0]]=a[0],d[b[1]]=a[1]):d=a[0],d}function j(a,c,d){return b.extend(!0,{},a,i(c,d))}function k(a,b,c){return n(j(m.apply(null,a),b,c),a)}function l(){for(var a={},b=0,c=arguments.length;c>b;b++){var e=arguments[b],f=e.toLowerCase(),g=e.toUpperCase();a[f]={label:d(g)}}return a}function m(){return{buttons:l.apply(null,arguments)}}function n(a,b){var d={};return g(b,function(a,b){d[b]=!0}),g(a.buttons,function(a){if(d[a]===c)throw new Error("button key "+a+" is not allowed (options are "+b.join("\n")+")")}),a}var o={dialog:"",header:"",footer:"",closeButton:"",form:"
",inputs:{text:""}},p=b("body"),q={locale:"en",backdrop:!0,animate:!0,className:null,closeButton:!0,show:!0},r={};r.alert=function(){var a;if(a=k(["ok"],arguments,["message","callback"]),a.callback&&!b.isFunction(a.callback))throw new Error("alert requires callback property to be a function when provided");return a.buttons.ok.callback=a.onEscape=function(){return b.isFunction(a.callback)?a.callback():!0},r.dialog(a)},r.confirm=function(){var a;if(a=k(["cancel","confirm"],arguments,["message","callback"]),a.buttons.cancel.callback=a.onEscape=function(){return a.callback(!1)},a.buttons.confirm.callback=function(){return a.callback(!0)},!b.isFunction(a.callback))throw new Error("confirm requires a callback");return r.dialog(a)},r.prompt=function(){var a,d,e,f,g,h;if(f=b(o.form),d={buttons:l("cancel","confirm"),value:""},a=n(j(d,arguments,["title","callback"]),["cancel","confirm"]),h=a.show===c?!0:a.show,a.message=f,a.buttons.cancel.callback=a.onEscape=function(){return a.callback(null)},a.buttons.confirm.callback=function(){return a.callback(g.val())},a.show=!1,!a.title)throw new Error("prompt requires a title");if(!b.isFunction(a.callback))throw new Error("prompt requires a callback");return g=b(o.inputs.text),g.val(a.value),f.append(g),f.on("submit",function(a){a.preventDefault(),e.find(".btn-primary").click()}),e=r.dialog(a),e.off("shown.bs.modal"),e.on("shown.bs.modal",function(){g.focus()}),h===!0&&e.modal("show"),e},r.dialog=function(a){a=h(a);var c=b(o.dialog),d=c.find(".modal-body"),f=a.buttons,i="",j={onEscape:a.onEscape};if(g(f,function(a,b){i+="",j[a]=b.callback}),d.find(".bootbox-body").html(a.message),a.animate===!0&&c.addClass("fade"),a.className&&c.addClass(a.className),a.title&&d.before(o.header),a.closeButton){var k=b(o.closeButton);a.title?c.find(".modal-header").prepend(k):k.css("margin-top","-10px").prependTo(d)}return a.title&&c.find(".modal-title").html(a.title),i.length&&(d.after(o.footer),c.find(".modal-footer").html(i)),c.on("hidden.bs.modal",function(a){a.target===this&&c.remove()}),c.on("shown.bs.modal",function(){c.find(".btn-primary:first").focus()}),c.on("escape.close.bb",function(a){j.onEscape&&e(a,c,j.onEscape)}),c.on("click",".modal-footer button",function(a){var d=b(this).data("bb-handler");e(a,c,j[d])}),c.on("click",".bootbox-close-button",function(a){e(a,c,j.onEscape)}),c.on("keyup",function(a){27===a.which&&c.trigger("escape.close.bb")}),p.append(c),c.modal({backdrop:a.backdrop,keyboard:!1,show:!1}),a.show&&c.modal("show"),c},r.setDefaults=function(a){b.extend(q,a)},r.hideAll=function(){b(".bootbox").modal("hide")};var s={br:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Sim"},da:{OK:"OK",CANCEL:"Annuller",CONFIRM:"Accepter"},de:{OK:"OK",CANCEL:"Abbrechen",CONFIRM:"Akzeptieren"},en:{OK:"OK",CANCEL:"Cancel",CONFIRM:"OK"},es:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Aceptar"},fi:{OK:"OK",CANCEL:"Peruuta",CONFIRM:"OK"},fr:{OK:"OK",CANCEL:"Annuler",CONFIRM:"D'accord"},it:{OK:"OK",CANCEL:"Annulla",CONFIRM:"Conferma"},nl:{OK:"OK",CANCEL:"Annuleren",CONFIRM:"Accepteren"},pl:{OK:"OK",CANCEL:"Anuluj",CONFIRM:"Potwierdź"},ru:{OK:"OK",CANCEL:"Отмена",CONFIRM:"Применить"},zh_CN:{OK:"OK",CANCEL:"取消",CONFIRM:"确认"},zh_TW:{OK:"OK",CANCEL:"取消",CONFIRM:"確認"}};return r.init=function(c){window.bootbox=a(c||b)},r}(window.jQuery); -------------------------------------------------------------------------------- /WebRoot/assets/js/bootstrap-tag.min.js: -------------------------------------------------------------------------------- 1 | !function(c){var b=function(e,d){this.element=c(e);this.options=c.extend(true,{},c.fn.tag.defaults,d);this.values=c.grep(c.map(this.element.val().split(","),c.trim),function(f){return f.length>0});this.show()};b.prototype={constructor:b,show:function(){var d=this;d.element.parent().prepend(d.element.detach().hide());d.element.wrap(c('
')).parent().on("click",function(){d.input.focus()});if(d.values.length){c.each(d.values,function(){d.createBadge(this)})}d.input=c('').attr("placeholder",d.options.placeholder).insertAfter(d.element).on("focus",function(){d.element.parent().addClass("tags-hover")}).on("blur",function(){if(!d.skip){d.process();d.element.parent().removeClass("tags-hover");d.element.siblings(".tag").removeClass("tag-important")}d.skip=false}).on("keydown",function(g){if(g.keyCode==188||g.keyCode==13||g.keyCode==9){if(c.trim(c(this).val())&&(!d.element.siblings(".typeahead").length||d.element.siblings(".typeahead").is(":hidden"))){if(g.keyCode!=9){g.preventDefault()}d.process()}else{if(g.keyCode==188){if(!d.element.siblings(".typeahead").length||d.element.siblings(".typeahead").is(":hidden")){g.preventDefault()}else{d.input.data("typeahead").select();g.stopPropagation();g.preventDefault()}}}}else{if(!c.trim(c(this).val())&&g.keyCode==8){var f=d.element.siblings(".tag").length;if(f){var e=d.element.siblings(".tag:eq("+(f-1)+")");if(e.hasClass("tag-important")){d.remove(f-1)}else{e.addClass("tag-important")}}}else{d.element.siblings(".tag").removeClass("tag-important")}}}).typeahead({source:d.options.source,matcher:function(e){return ~e.toLowerCase().indexOf(this.query.toLowerCase())&&(d.inValues(e)==-1||d.options.allowDuplicates)},updater:c.proxy(d.add,d)});c(d.input.data("typeahead").$menu).on("mousedown",function(){d.skip=true});this.element.trigger("shown")},inValues:function(e){if(this.options.caseInsensitive){var d=-1;c.each(this.values,function(f,g){if(g.toLowerCase()==e.toLowerCase()){d=f;return false}});return d}else{return c.inArray(e,this.values)}},createBadge:function(e){var d=this;c("",{"class":"tag"}).text(e).append(c('').on("click",function(){d.remove(d.element.siblings(".tag").index(c(this).closest(".tag")))})).insertBefore(d.element)},add:function(g){var f=this;if(!f.options.allowDuplicates){var e=f.inValues(g);if(e!=-1){var d=f.element.siblings(".tag:eq("+e+")");d.addClass("tag-warning");setTimeout(function(){c(d).removeClass("tag-warning")},500);return}}this.values.push(g);this.createBadge(g);this.element.val(this.values.join(", "));this.element.trigger("added",[g])},remove:function(d){if(d>=0){var e=this.values.splice(d,1);this.element.siblings(".tag:eq("+d+")").remove();this.element.val(this.values.join(", "));this.element.trigger("removed",[e])}},process:function(){var d=c.grep(c.map(this.input.val().split(","),c.trim),function(f){return f.length>0}),e=this;c.each(d,function(){e.add(this)});this.input.val("")},skip:false};var a=c.fn.tag;c.fn.tag=function(d){return this.each(function(){var f=c(this),g=f.data("tag"),e=typeof d=="object"&&d;if(!g){f.data("tag",(g=new b(this,e)))}if(typeof d=="string"){g[d]()}})};c.fn.tag.defaults={allowDuplicates:false,caseInsensitive:true,placeholder:"",source:[]};c.fn.tag.Constructor=b;c.fn.tag.noConflict=function(){c.fn.tag=a;return this};c(window).on("load",function(){c('[data-provide="tag"]').each(function(){var d=c(this);if(d.data("tag")){return}d.tag(d.data())})})}(window.jQuery); -------------------------------------------------------------------------------- /WebRoot/assets/js/bootstrap-wysiwyg.min.js: -------------------------------------------------------------------------------- 1 | (function(b){var a=function(e){var c=b.Deferred(),d=new FileReader();d.onload=function(f){c.resolve(f.target.result)};d.onerror=c.reject;d.onprogress=c.notify;d.readAsDataURL(e);return c.promise()};b.fn.cleanHtml=function(){var c=b(this).html();return c&&c.replace(/(
|\s|

<\/div>| )*$/,"")};b.fn.wysiwyg=function(k){var l=this,h,q,d,p=function(){if(q.activeToolbarClass){b(q.toolbarSelector).find(d).each(function(){try{var s=b(this).data(q.commandRole);if(document.queryCommandState(s)){b(this).addClass(q.activeToolbarClass)}else{b(this).removeClass(q.activeToolbarClass)}}catch(r){}})}},o=function(r,s){var u=r.split(" "),v=u.shift(),t=u.join(" ")+(s||"");document.execCommand(v,0,t);p()},f=function(r){b.each(r,function(s,t){l.keydown(s,function(u){if(l.attr("contenteditable")&&l.is(":visible")){u.preventDefault();u.stopPropagation();o(t)}}).keyup(s,function(u){if(l.attr("contenteditable")&&l.is(":visible")){u.preventDefault();u.stopPropagation()}})})},g=function(){try{var r=window.getSelection();if(r.getRangeAt&&r.rangeCount){return r.getRangeAt(0)}}catch(s){}},i=function(){h=g()},e=function(){try{var s=window.getSelection();if(h){try{s.removeAllRanges()}catch(r){document.body.createTextRange().select();document.selection.empty()}s.addRange(h)}}catch(t){}},j=function(r){l.focus();b.each(r,function(s,t){if(/^image\//.test(t.type)){b.when(a(t)).done(function(u){o("insertimage",u)}).fail(function(u){q.fileUploadError("file-reader",u)})}else{q.fileUploadError("unsupported-file-type",t.type)}})},c=function(s,r){e();if(document.queryCommandSupported("hiliteColor")){document.execCommand("hiliteColor",0,r||"transparent")}i();s.data(q.selectionMarker,r)},m=function(s,r){s.find(d).click(function(){e();l.focus();o(b(this).data(r.commandRole));i()});s.find("[data-toggle=dropdown]").click(e);s.find("input[type=text][data-"+r.commandRole+"]").on("webkitspeechchange change",function(){var t=this.value;this.value="";e();if(t){l.focus();o(b(this).data(r.commandRole),t)}i()}).on("focus",function(){var t=b(this);if(!t.data(r.selectionMarker)){c(t,r.selectionColor);t.focus()}}).on("blur",function(){var t=b(this);if(t.data(r.selectionMarker)){c(t,false)}});s.find("input[type=file][data-"+r.commandRole+"]").change(function(){e();if(this.type==="file"&&this.files&&this.files.length>0){j(this.files)}i();this.value=""})},n=function(){l.on("dragenter dragover",false).on("drop",function(s){var r=s.originalEvent.dataTransfer;s.stopPropagation();s.preventDefault();if(r&&r.files&&r.files.length>0){j(r.files)}})};q=b.extend({},b.fn.wysiwyg.defaults,k);d="a[data-"+q.commandRole+"],button[data-"+q.commandRole+"],input[type=button][data-"+q.commandRole+"]";f(q.hotKeys);if(q.dragAndDropImages){n()}m(b(q.toolbarSelector),q);l.attr("contenteditable",true).on("mouseup keyup mouseout",function(){i();p()});b(window).bind("touchend",function(u){var t=(l.is(u.target)||l.has(u.target).length>0),s=g(),r=s&&(s.startContainer===s.endContainer&&s.startOffset===s.endOffset);if(!r||t){i();p()}});return this};b.fn.wysiwyg.defaults={hotKeys:{"ctrl+b meta+b":"bold","ctrl+i meta+i":"italic","ctrl+u meta+u":"underline","ctrl+z meta+z":"undo","ctrl+y meta+y meta+shift+z":"redo","ctrl+l meta+l":"justifyleft","ctrl+r meta+r":"justifyright","ctrl+e meta+e":"justifycenter","ctrl+j meta+j":"justifyfull","shift+tab":"outdent",tab:"indent"},toolbarSelector:"[data-role=editor-toolbar]",commandRole:"edit",activeToolbarClass:"btn-info",selectionMarker:"edit-focus-marker",selectionColor:"darkgrey",dragAndDropImages:true,fileUploadError:function(d,c){console.log("File upload error",d,c)}}}(window.jQuery)); -------------------------------------------------------------------------------- /WebRoot/assets/js/flot/jquery.flot.resize.min.js: -------------------------------------------------------------------------------- 1 | /* Flot plugin for automatically redrawing plots as the placeholder resizes. 2 | 3 | Copyright (c) 2007-2013 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | It works by listening for changes on the placeholder div (through the jQuery 7 | resize event plugin) - if the size changes, it will redraw the plot. 8 | 9 | There are no options. If you need to disable the plugin for some plots, you 10 | can just fix the size of their placeholders. 11 | 12 | *//* Inline dependency: 13 | * jQuery resize event - v1.1 - 3/14/2010 14 | * http://benalman.com/projects/jquery-resize-plugin/ 15 | * 16 | * Copyright (c) 2010 "Cowboy" Ben Alman 17 | * Dual licensed under the MIT and GPL licenses. 18 | * http://benalman.com/about/license/ 19 | */(function(e,t,n){function c(){s=t[o](function(){r.each(function(){var t=e(this),n=t.width(),r=t.height(),i=e.data(this,a);(n!==i.w||r!==i.h)&&t.trigger(u,[i.w=n,i.h=r])}),c()},i[f])}var r=e([]),i=e.resize=e.extend(e.resize,{}),s,o="setTimeout",u="resize",a=u+"-special-event",f="delay",l="throttleWindow";i[f]=250,i[l]=!0,e.event.special[u]={setup:function(){if(!i[l]&&this[o])return!1;var t=e(this);r=r.add(t),e.data(this,a,{w:t.width(),h:t.height()}),r.length===1&&c()},teardown:function(){if(!i[l]&&this[o])return!1;var t=e(this);r=r.not(t),t.removeData(a),r.length||clearTimeout(s)},add:function(t){function s(t,i,s){var o=e(this),u=e.data(this,a);u.w=i!==n?i:o.width(),u.h=s!==n?s:o.height(),r.apply(this,arguments)}if(!i[l]&&this[o])return!1;var r;if(e.isFunction(t))return r=t,s;r=t.handler,t.handler=s}}})(jQuery,this),function(e){function n(e){function t(){var t=e.getPlaceholder();if(t.width()==0||t.height()==0)return;e.resize(),e.setupGrid(),e.draw()}function n(e,n){e.getPlaceholder().resize(t)}function r(e,n){e.getPlaceholder().unbind("resize",t)}e.hooks.bindEvents.push(n),e.hooks.shutdown.push(r)}var t={};e.plot.plugins.push({init:n,options:t,name:"resize",version:"1.0"})}(jQuery); -------------------------------------------------------------------------------- /WebRoot/assets/js/fuelux/data/fuelux.tree-sampledata.js: -------------------------------------------------------------------------------- 1 | var DataSourceTree = function(options) { 2 | this._data = options.data; 3 | this._delay = options.delay; 4 | } 5 | 6 | DataSourceTree.prototype.data = function(options, callback) { 7 | var self = this; 8 | var $data = null; 9 | 10 | if(!("name" in options) && !("type" in options)){ 11 | $data = this._data;//the root tree 12 | callback({ data: $data }); 13 | return; 14 | } 15 | else if("type" in options && options.type == "folder") { 16 | if("additionalParameters" in options && "children" in options.additionalParameters) 17 | $data = options.additionalParameters.children; 18 | else $data = {}//no data 19 | } 20 | 21 | if($data != null)//this setTimeout is only for mimicking some random delay 22 | setTimeout(function(){callback({ data: $data });} , parseInt(Math.random() * 500) + 200); 23 | 24 | //we have used static data here 25 | //but you can retrieve your data dynamically from a server using ajax call 26 | //checkout examples/treeview.html and examples/treeview.js for more info 27 | }; 28 | 29 | var tree_data = { 30 | 'for-sale' : {name: 'For Sale', type: 'folder'} , 31 | 'vehicles' : {name: 'Vehicles', type: 'folder'} , 32 | 'rentals' : {name: 'Rentals', type: 'folder'} , 33 | 'real-estate' : {name: 'Real Estate', type: 'folder'} , 34 | 'pets' : {name: 'Pets', type: 'folder'} , 35 | 'tickets' : {name: 'Tickets', type: 'item'} , 36 | 'services' : {name: 'Services', type: 'item'} , 37 | 'personals' : {name: 'Personals', type: 'item'} 38 | } 39 | tree_data['for-sale']['additionalParameters'] = { 40 | 'children' : { 41 | 'appliances' : {name: 'Appliances', type: 'item'}, 42 | 'arts-crafts' : {name: 'Arts & Crafts', type: 'item'}, 43 | 'clothing' : {name: 'Clothing', type: 'item'}, 44 | 'computers' : {name: 'Computers', type: 'item'}, 45 | 'jewelry' : {name: 'Jewelry', type: 'item'}, 46 | 'office-business' : {name: 'Office & Business', type: 'item'}, 47 | 'sports-fitness' : {name: 'Sports & Fitness', type: 'item'} 48 | } 49 | } 50 | tree_data['vehicles']['additionalParameters'] = { 51 | 'children' : { 52 | 'cars' : {name: 'Cars', type: 'folder'}, 53 | 'motorcycles' : {name: 'Motorcycles', type: 'item'}, 54 | 'boats' : {name: 'Boats', type: 'item'} 55 | } 56 | } 57 | tree_data['vehicles']['additionalParameters']['children']['cars']['additionalParameters'] = { 58 | 'children' : { 59 | 'classics' : {name: 'Classics', type: 'item'}, 60 | 'convertibles' : {name: 'Convertibles', type: 'item'}, 61 | 'coupes' : {name: 'Coupes', type: 'item'}, 62 | 'hatchbacks' : {name: 'Hatchbacks', type: 'item'}, 63 | 'hybrids' : {name: 'Hybrids', type: 'item'}, 64 | 'suvs' : {name: 'SUVs', type: 'item'}, 65 | 'sedans' : {name: 'Sedans', type: 'item'}, 66 | 'trucks' : {name: 'Trucks', type: 'item'} 67 | } 68 | } 69 | 70 | tree_data['rentals']['additionalParameters'] = { 71 | 'children' : { 72 | 'apartments-rentals' : {name: 'Apartments', type: 'item'}, 73 | 'office-space-rentals' : {name: 'Office Space', type: 'item'}, 74 | 'vacation-rentals' : {name: 'Vacation Rentals', type: 'item'} 75 | } 76 | } 77 | tree_data['real-estate']['additionalParameters'] = { 78 | 'children' : { 79 | 'apartments' : {name: 'Apartments', type: 'item'}, 80 | 'villas' : {name: 'Villas', type: 'item'}, 81 | 'plots' : {name: 'Plots', type: 'item'} 82 | } 83 | } 84 | tree_data['pets']['additionalParameters'] = { 85 | 'children' : { 86 | 'cats' : {name: 'Cats', type: 'item'}, 87 | 'dogs' : {name: 'Dogs', type: 'item'}, 88 | 'horses' : {name: 'Horses', type: 'item'}, 89 | 'reptiles' : {name: 'Reptiles', type: 'item'} 90 | } 91 | } 92 | 93 | var treeDataSource = new DataSourceTree({data: tree_data}); 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | var tree_data_2 = { 106 | 'pictures' : {name: 'Pictures', type: 'folder', 'icon-class':'red'} , 107 | 'music' : {name: 'Music', type: 'folder', 'icon-class':'orange'} , 108 | 'video' : {name: 'Video', type: 'folder', 'icon-class':'blue'} , 109 | 'documents' : {name: 'Documents', type: 'folder', 'icon-class':'green'} , 110 | 'backup' : {name: 'Backup', type: 'folder'} , 111 | 'readme' : {name: ' ReadMe.txt', type: 'item'}, 112 | 'manual' : {name: ' Manual.html', type: 'item'} 113 | } 114 | tree_data_2['music']['additionalParameters'] = { 115 | 'children' : [ 116 | {name: ' song1.ogg', type: 'item'}, 117 | {name: ' song2.ogg', type: 'item'}, 118 | {name: ' song3.ogg', type: 'item'}, 119 | {name: ' song4.ogg', type: 'item'}, 120 | {name: ' song5.ogg', type: 'item'} 121 | ] 122 | } 123 | tree_data_2['video']['additionalParameters'] = { 124 | 'children' : [ 125 | {name: ' movie1.avi', type: 'item'}, 126 | {name: ' movie2.avi', type: 'item'}, 127 | {name: ' movie3.avi', type: 'item'}, 128 | {name: ' movie4.avi', type: 'item'}, 129 | {name: ' movie5.avi', type: 'item'} 130 | ] 131 | } 132 | tree_data_2['pictures']['additionalParameters'] = { 133 | 'children' : { 134 | 'wallpapers' : {name: 'Wallpapers', type: 'folder', 'icon-class':'pink'}, 135 | 'camera' : {name: 'Camera', type: 'folder', 'icon-class':'pink'} 136 | } 137 | } 138 | tree_data_2['pictures']['additionalParameters']['children']['wallpapers']['additionalParameters'] = { 139 | 'children' : [ 140 | {name: ' wallpaper1.jpg', type: 'item'}, 141 | {name: ' wallpaper2.jpg', type: 'item'}, 142 | {name: ' wallpaper3.jpg', type: 'item'}, 143 | {name: ' wallpaper4.jpg', type: 'item'} 144 | ] 145 | } 146 | tree_data_2['pictures']['additionalParameters']['children']['camera']['additionalParameters'] = { 147 | 'children' : [ 148 | {name: ' photo1.jpg', type: 'item'}, 149 | {name: ' photo2.jpg', type: 'item'}, 150 | {name: ' photo3.jpg', type: 'item'}, 151 | {name: ' photo4.jpg', type: 'item'}, 152 | {name: ' photo5.jpg', type: 'item'}, 153 | {name: ' photo6.jpg', type: 'item'} 154 | ] 155 | } 156 | 157 | 158 | tree_data_2['documents']['additionalParameters'] = { 159 | 'children' : [ 160 | {name: ' document1.pdf', type: 'item'}, 161 | {name: ' document2.doc', type: 'item'}, 162 | {name: ' document3.doc', type: 'item'}, 163 | {name: ' document4.pdf', type: 'item'}, 164 | {name: ' document5.doc', type: 'item'} 165 | ] 166 | } 167 | 168 | tree_data_2['backup']['additionalParameters'] = { 169 | 'children' : [ 170 | {name: ' backup1.zip', type: 'item'}, 171 | {name: ' backup2.zip', type: 'item'}, 172 | {name: ' backup3.zip', type: 'item'}, 173 | {name: ' backup4.zip', type: 'item'} 174 | ] 175 | } 176 | var treeDataSource2 = new DataSourceTree({data: tree_data_2}); -------------------------------------------------------------------------------- /WebRoot/assets/js/fuelux/fuelux.spinner.min.js: -------------------------------------------------------------------------------- 1 | (function(b,c){var a=function(e,d){this.$element=b(e);this.options=b.extend({},b.fn.spinner.defaults,d);this.$input=this.$element.find(".spinner-input");this.$element.on("keyup",this.$input,b.proxy(this.change,this));if(this.options.hold){this.$element.on("mousedown",".spinner-up",b.proxy(function(){this.startSpin(true)},this));this.$element.on("mouseup",".spinner-up, .spinner-down",b.proxy(this.stopSpin,this));this.$element.on("mouseout",".spinner-up, .spinner-down",b.proxy(this.stopSpin,this));this.$element.on("mousedown",".spinner-down",b.proxy(function(){this.startSpin(false)},this))}else{this.$element.on("click",".spinner-up",b.proxy(function(){this.step(true)},this));this.$element.on("click",".spinner-down",b.proxy(function(){this.step(false)},this))}this.switches={count:1,enabled:true};if(this.options.speed==="medium"){this.switches.speed=300}else{if(this.options.speed==="fast"){this.switches.speed=100}else{this.switches.speed=500}}this.lastValue=null;this.render();if(this.options.disabled){this.disable()}};a.prototype={constructor:a,render:function(){this.$input.val(this.options.value);this.$input.attr("maxlength",(this.options.max+"").split("").length)},change:function(){var d=this.$input.val();if(d/1){this.options.value=d/1}else{d=d.replace(/[^0-9]/g,"");this.$input.val(d);this.options.value=d/1}this.triggerChangedEvent()},stopSpin:function(){clearTimeout(this.switches.timeout);this.switches.count=1;this.triggerChangedEvent()},triggerChangedEvent:function(){var d=this.value();if(d===this.lastValue){return}this.lastValue=d;this.$element.trigger("changed",d);this.$element.trigger("change")},startSpin:function(d){if(!this.options.disabled){var e=this.switches.count;if(e===1){this.step(d);e=1}else{if(e<3){e=1.5}else{if(e<8){e=2.5}else{e=4}}}this.switches.timeout=setTimeout(b.proxy(function(){this.iterator(d)},this),this.switches.speed/e);this.switches.count++}},iterator:function(d){this.step(d);this.startSpin(d)},step:function(e){var g=this.options.value;var f=e?this.options.max:this.options.min;if((e?gf)){var d=g+(e?1:-1)*this.options.step;if(e?d>f:dLoading...
",cacheItems:true};a.fn.tree.Constructor=b})(window.jQuery); -------------------------------------------------------------------------------- /WebRoot/assets/js/fuelux/fuelux.wizard.min.js: -------------------------------------------------------------------------------- 1 | (function(b,c){var a=function(f,e){var d;this.$element=b(f);this.options=b.extend({},b.fn.wizard.defaults,e);this.currentStep=1;this.numSteps=this.$element.find("li").length;this.$prevBtn=this.$element.find("button.btn-prev");this.$nextBtn=this.$element.find("button.btn-next");d=this.$nextBtn.children().detach();this.nextText=b.trim(this.$nextBtn.text());this.$nextBtn.append(d);this.$prevBtn.on("click",b.proxy(this.previous,this));this.$nextBtn.on("click",b.proxy(this.next,this));this.$element.on("click","li.complete",b.proxy(this.stepclicked,this));this.$stepContainer=this.$element.data("target")||"body";this.$stepContainer=b(this.$stepContainer)};a.prototype={constructor:a,setState:function(){var n=(this.currentStep>1);var o=(this.currentStep===1);var d=(this.currentStep===this.numSteps);this.$prevBtn.attr("disabled",(o===true||n===false));var h=this.$nextBtn.data();if(h&&h.last){this.lastText=h.last;if(typeof this.lastText!=="undefined"){var l=(d!==true)?this.nextText:this.lastText;var f=this.$nextBtn.children().detach();this.$nextBtn.text(l).append(f)}}var j=this.$element.find("li");j.removeClass("active").removeClass("complete");j.find("span.badge").removeClass("badge-info").removeClass("badge-success");var m="li:lt("+(this.currentStep-1)+")";var g=this.$element.find(m);g.addClass("complete");g.find("span.badge").addClass("badge-success");var e="li:eq("+(this.currentStep-1)+")";var k=this.$element.find(e);k.addClass("active");k.find("span.badge").addClass("badge-info");var i=k.data().target;this.$stepContainer.find(".step-pane").removeClass("active");b(i).addClass("active");this.$element.trigger("changed")},stepclicked:function(h){var d=b(h.currentTarget);var g=this.$element.find("li").index(d);var f=b.Event("stepclick");this.$element.trigger(f,{step:g+1});if(f.isDefaultPrevented()){return}this.currentStep=(g+1);this.setState()},previous:function(){var d=(this.currentStep>1);if(d){var f=b.Event("change");this.$element.trigger(f,{step:this.currentStep,direction:"previous"});if(f.isDefaultPrevented()){return}this.currentStep-=1;this.setState()}},next:function(){var g=(this.currentStep+1<=this.numSteps);var d=(this.currentStep===this.numSteps);if(g){var f=b.Event("change");this.$element.trigger(f,{step:this.currentStep,direction:"next"});if(f.isDefaultPrevented()){return}this.currentStep+=1;this.setState()}else{if(d){this.$element.trigger("finished")}}},selectedItem:function(d){return{step:this.currentStep}}};b.fn.wizard=function(e,g){var f;var d=this.each(function(){var j=b(this);var i=j.data("wizard");var h=typeof e==="object"&&e;if(!i){j.data("wizard",(i=new a(this,h)))}if(typeof e==="string"){f=i[e](g)}});return(f===c)?d:f};b.fn.wizard.defaults={};b.fn.wizard.Constructor=a;b(function(){b("body").on("mousedown.wizard.data-api",".wizard",function(){var d=b(this);if(d.data("wizard")){return}d.wizard(d.data())})})})(window.jQuery); -------------------------------------------------------------------------------- /WebRoot/assets/js/jqGrid/i18n/grid.locale-en.js: -------------------------------------------------------------------------------- 1 | ;(function($){ 2 | /** 3 | * jqGrid English Translation 4 | * Tony Tomov tony@trirand.com 5 | * http://trirand.com/blog/ 6 | * Dual licensed under the MIT and GPL licenses: 7 | * http://www.opensource.org/licenses/mit-license.php 8 | * http://www.gnu.org/licenses/gpl.html 9 | **/ 10 | $.jgrid = $.jgrid || {}; 11 | $.extend($.jgrid,{ 12 | defaults : { 13 | recordtext: "View {0} - {1} of {2}", 14 | emptyrecords: "No records to view", 15 | loadtext: "Loading...", 16 | pgtext : "Page {0} of {1}" 17 | }, 18 | search : { 19 | caption: "Search...", 20 | Find: "Find", 21 | Reset: "Reset", 22 | odata: [{ oper:'eq', text:'equal'},{ oper:'ne', text:'not equal'},{ oper:'lt', text:'less'},{ oper:'le', text:'less or equal'},{ oper:'gt', text:'greater'},{ oper:'ge', text:'greater or equal'},{ oper:'bw', text:'begins with'},{ oper:'bn', text:'does not begin with'},{ oper:'in', text:'is in'},{ oper:'ni', text:'is not in'},{ oper:'ew', text:'ends with'},{ oper:'en', text:'does not end with'},{ oper:'cn', text:'contains'},{ oper:'nc', text:'does not contain'}], 23 | groupOps: [ { op: "AND", text: "all" }, { op: "OR", text: "any" } ] 24 | }, 25 | edit : { 26 | addCaption: "Add Record", 27 | editCaption: "Edit Record", 28 | bSubmit: "Submit", 29 | bCancel: "Cancel", 30 | bClose: "Close", 31 | saveData: "Data has been changed! Save changes?", 32 | bYes : "Yes", 33 | bNo : "No", 34 | bExit : "Cancel", 35 | msg: { 36 | required:"Field is required", 37 | number:"Please, enter valid number", 38 | minValue:"value must be greater than or equal to ", 39 | maxValue:"value must be less than or equal to", 40 | email: "is not a valid e-mail", 41 | integer: "Please, enter valid integer value", 42 | date: "Please, enter valid date value", 43 | url: "is not a valid URL. Prefix required ('http://' or 'https://')", 44 | nodefined : " is not defined!", 45 | novalue : " return value is required!", 46 | customarray : "Custom function should return array!", 47 | customfcheck : "Custom function should be present in case of custom checking!" 48 | 49 | } 50 | }, 51 | view : { 52 | caption: "View Record", 53 | bClose: "Close" 54 | }, 55 | del : { 56 | caption: "Delete", 57 | msg: "Delete selected record(s)?", 58 | bSubmit: "Delete", 59 | bCancel: "Cancel" 60 | }, 61 | nav : { 62 | edittext: "", 63 | edittitle: "Edit selected row", 64 | addtext:"", 65 | addtitle: "Add new row", 66 | deltext: "", 67 | deltitle: "Delete selected row", 68 | searchtext: "", 69 | searchtitle: "Find records", 70 | refreshtext: "", 71 | refreshtitle: "Reload Grid", 72 | alertcap: "Warning", 73 | alerttext: "Please, select row", 74 | viewtext: "", 75 | viewtitle: "View selected row" 76 | }, 77 | col : { 78 | caption: "Select columns", 79 | bSubmit: "Ok", 80 | bCancel: "Cancel" 81 | }, 82 | errors : { 83 | errcap : "Error", 84 | nourl : "No url is set", 85 | norecords: "No records to process", 86 | model : "Length of colNames <> colModel!" 87 | }, 88 | formatter : { 89 | integer : {thousandsSeparator: ",", defaultValue: '0'}, 90 | number : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, defaultValue: '0.00'}, 91 | currency : {decimalSeparator:".", thousandsSeparator: ",", decimalPlaces: 2, prefix: "", suffix:"", defaultValue: '0.00'}, 92 | date : { 93 | dayNames: [ 94 | "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat", 95 | "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" 96 | ], 97 | monthNames: [ 98 | "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", 99 | "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" 100 | ], 101 | AmPm : ["am","pm","AM","PM"], 102 | S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th';}, 103 | srcformat: 'Y-m-d', 104 | newformat: 'n/j/Y', 105 | parseRe : /[Tt\\\/:_;.,\t\s-]/, 106 | masks : { 107 | // see http://php.net/manual/en/function.date.php for PHP format used in jqGrid 108 | // and see http://docs.jquery.com/UI/Datepicker/formatDate 109 | // and https://github.com/jquery/globalize#dates for alternative formats used frequently 110 | // one can find on https://github.com/jquery/globalize/tree/master/lib/cultures many 111 | // information about date, time, numbers and currency formats used in different countries 112 | // one should just convert the information in PHP format 113 | ISO8601Long:"Y-m-d H:i:s", 114 | ISO8601Short:"Y-m-d", 115 | // short date: 116 | // n - Numeric representation of a month, without leading zeros 117 | // j - Day of the month without leading zeros 118 | // Y - A full numeric representation of a year, 4 digits 119 | // example: 3/1/2012 which means 1 March 2012 120 | ShortDate: "n/j/Y", // in jQuery UI Datepicker: "M/d/yyyy" 121 | // long date: 122 | // l - A full textual representation of the day of the week 123 | // F - A full textual representation of a month 124 | // d - Day of the month, 2 digits with leading zeros 125 | // Y - A full numeric representation of a year, 4 digits 126 | LongDate: "l, F d, Y", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy" 127 | // long date with long time: 128 | // l - A full textual representation of the day of the week 129 | // F - A full textual representation of a month 130 | // d - Day of the month, 2 digits with leading zeros 131 | // Y - A full numeric representation of a year, 4 digits 132 | // g - 12-hour format of an hour without leading zeros 133 | // i - Minutes with leading zeros 134 | // s - Seconds, with leading zeros 135 | // A - Uppercase Ante meridiem and Post meridiem (AM or PM) 136 | FullDateTime: "l, F d, Y g:i:s A", // in jQuery UI Datepicker: "dddd, MMMM dd, yyyy h:mm:ss tt" 137 | // month day: 138 | // F - A full textual representation of a month 139 | // d - Day of the month, 2 digits with leading zeros 140 | MonthDay: "F d", // in jQuery UI Datepicker: "MMMM dd" 141 | // short time (without seconds) 142 | // g - 12-hour format of an hour without leading zeros 143 | // i - Minutes with leading zeros 144 | // A - Uppercase Ante meridiem and Post meridiem (AM or PM) 145 | ShortTime: "g:i A", // in jQuery UI Datepicker: "h:mm tt" 146 | // long time (with seconds) 147 | // g - 12-hour format of an hour without leading zeros 148 | // i - Minutes with leading zeros 149 | // s - Seconds, with leading zeros 150 | // A - Uppercase Ante meridiem and Post meridiem (AM or PM) 151 | LongTime: "g:i:s A", // in jQuery UI Datepicker: "h:mm:ss tt" 152 | SortableDateTime: "Y-m-d\\TH:i:s", 153 | UniversalSortableDateTime: "Y-m-d H:i:sO", 154 | // month with year 155 | // Y - A full numeric representation of a year, 4 digits 156 | // F - A full textual representation of a month 157 | YearMonth: "F, Y" // in jQuery UI Datepicker: "MMMM, yyyy" 158 | }, 159 | reformatAfterEdit : false 160 | }, 161 | baseLinkUrl: '', 162 | showAction: '', 163 | target: '', 164 | checkbox : {disabled:true}, 165 | idName : 'id' 166 | } 167 | }); 168 | })(jQuery); -------------------------------------------------------------------------------- /WebRoot/assets/js/jquery.autosize.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Autosize v1.17.7 - 2013-09-03 3 | Automatically adjust textarea height based on user input. 4 | (c) 2013 Jack Moore - http://www.jacklmoore.com/autosize 5 | license: http://www.opensource.org/licenses/mit-license.php 6 | */ 7 | (function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(window.jQuery||window.$)})(function(e){var t,o={className:"autosizejs",append:"",callback:!1,resizeDelay:10},i=' 63 | 64 |
65 | 66 | 67 |
68 | 69 |
70 | 71 | 72 |
73 |
74 | 75 | 76 | 77 | 78 | 122 | <%@ include file="/common/footer.jsp"%> 123 | -------------------------------------------------------------------------------- /WebRoot/caipu/edit.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2 | <%@ include file="/common/header.jsp"%> 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 |
5 | 31 | 32 |
33 | 42 | 45 |
46 |
47 |
48 | 49 |
50 | 51 |
52 |
53 |
54 | 55 |
56 | 57 |
58 |
59 |
60 | 61 |
62 | 63 | 64 |
65 |
66 |
67 | 68 |
69 | 70 | 71 |
72 |
73 |
74 |
75 |
76 |
77 | 94 | 95 | <%@ include file="/common/footer.jsp"%> 96 | -------------------------------------------------------------------------------- /WebRoot/canting/add.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2 | <%@ include file="/common/header.jsp"%> 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 |
5 | 31 | 32 |
33 | 42 | 45 |
46 |
47 |
48 | 49 |
50 | 51 |
52 |
53 |
54 | 55 |
56 | 57 |
58 |
59 |
60 | 61 |
62 | 63 | 64 |
65 |
66 | 67 |
68 | 69 |
70 | 71 | 72 |
73 |
74 |
75 |
76 |
77 |
78 | 122 | <%@ include file="/common/footer.jsp"%> 123 | -------------------------------------------------------------------------------- /WebRoot/canting/edit.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2 | <%@ include file="/common/header.jsp"%> 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 |
5 | 31 | 32 |
33 | 42 | 45 |
46 |
47 |
48 | 49 |
50 | 51 |
52 |
53 |
54 | 55 |
56 | 57 |
58 |
59 |
60 | 61 |
62 | 63 | 64 |
65 |
66 |
67 | 68 |
69 | 70 | 71 |
72 |
73 |
74 |
75 |
76 |
77 | 94 | <%@ include file="/common/footer.jsp"%> 95 | -------------------------------------------------------------------------------- /WebRoot/common/_paginate.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 3 | 4 | <% 5 | // 如下参数需要在 include 该页面的地方被赋值才能使用,以下是示例 6 | /* 7 | 8 | 9 | 10 | 11 | */ 12 | %> 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 77 | -------------------------------------------------------------------------------- /WebRoot/common/footer.jsp: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 225 | 226 | -------------------------------------------------------------------------------- /WebRoot/common/header.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 3 | <% 4 | //app 路径 5 | String path = request.getContextPath(); 6 | request.setAttribute("path", path); 7 | %> 8 | 9 | 10 | 11 | 12 | 通用后台管理平台1.0 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 52 | 53 | 54 | 55 | 56 | 57 | 122 | 123 |
124 | 127 | 128 |
129 | 130 | 131 | 132 | 133 | -------------------------------------------------------------------------------- /WebRoot/food/add.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2 | <%@ include file="/common/header.jsp"%> 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 |
5 | 31 | 32 |
33 | 42 | 45 |
46 |
47 |
48 | 49 |
50 | 51 |
52 |
53 |
54 | 55 |
56 | 57 |
58 |
59 | 60 |
61 | 62 |
63 | 64 |
65 |
66 |
67 | 68 |
69 | 70 |
71 |
72 |
73 | 74 |
75 | 76 | 77 |
78 |
79 |
80 | 81 |
82 | 83 | 84 |
85 |
86 |
87 |
88 |
89 |
90 | 130 | <%@ include file="/common/footer.jsp"%> 131 | -------------------------------------------------------------------------------- /WebRoot/food/edit.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2 | <%@ include file="/common/header.jsp"%> 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 |
5 | 31 | 32 |
33 | 42 | 45 |
46 |
47 |
48 | 49 |
50 | 51 |
52 |
53 |
54 | 55 |
56 | 57 |
58 |
59 |
60 | 61 |
62 | 63 |
64 |
65 |
66 | 67 |
68 | 69 |
70 |
71 |
72 | 73 |
74 | 75 | 76 |
77 |
78 |
79 | 80 |
81 | 82 | 83 |
84 |
85 |
86 |
87 |
88 |
89 | 129 | <%@ include file="/common/footer.jsp"%> 130 | -------------------------------------------------------------------------------- /WebRoot/login/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2 | <% 3 | //app 路径 4 | String path = request.getContextPath(); 5 | request.setAttribute("path", path); 6 | %> 7 | 8 | 9 | 10 | 11 | 通用后台登录页面 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 35 | 36 | 37 | 38 | 39 | 40 | 44 | 45 | 46 | 47 |
48 |
49 |
50 |
51 | 130 |
131 |
132 |
133 |
134 | 135 | 138 | 144 | 145 | 146 | -------------------------------------------------------------------------------- /WebRoot/login/register.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2 | <% 3 | //app 路径 4 | String path = request.getContextPath(); 5 | request.setAttribute("path", path); 6 | %> 7 | 8 | 9 | 10 | 11 | 通用后台注册页面 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 35 | 36 | 37 | 38 | 39 | 40 | 44 | 45 | 46 | 47 | 48 |
49 |
50 |
51 |
52 | 140 |
141 |
142 |
143 |
144 | 145 | 148 | 168 | 169 | 170 | -------------------------------------------------------------------------------- /WebRoot/member/add.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2 | <%@ include file="/common/header.jsp"%> 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 |
5 | 31 | 32 |
33 | 42 | 45 |
46 |
47 |
48 | 49 |
50 | 51 |
52 |
53 |
54 | 55 |
56 | 57 |
58 |
59 |
60 | 61 |
62 | 63 |
64 |
65 |
66 | 67 |
68 | 69 |
70 |
71 | 72 |
73 | 74 |
75 | 76 | 77 |
78 |
79 |
80 |
81 |
82 |
83 | 131 | <%@ include file="/common/footer.jsp"%> 132 | -------------------------------------------------------------------------------- /WebRoot/member/edit.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2 | <%@ include file="/common/header.jsp"%> 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 |
5 | 31 | 32 |
33 | 42 | 45 |
46 |
47 |
48 | 49 |
50 | 51 |
52 |
53 |
54 | 55 |
56 | 57 |
58 |
59 |
60 | 61 |
62 | 63 |
64 |
65 |
66 | 67 |
68 | 69 |
70 |
71 | 72 |
73 | 74 |
75 | 76 | 77 |
78 |
79 |
80 |
81 |
82 |
83 | 131 | <%@ include file="/common/footer.jsp"%> 132 | -------------------------------------------------------------------------------- /doc/common-admin.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/doc/common-admin.sql -------------------------------------------------------------------------------- /doc/jfinal-2.0-manual.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/doc/jfinal-2.0-manual.pdf -------------------------------------------------------------------------------- /doc/使用说明.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phper-hard/jfinal2-common-admin/97a8fe7b4cf8e4da7ba4c123f2af22fb99520179/doc/使用说明.doc -------------------------------------------------------------------------------- /res/a_little_config.txt: -------------------------------------------------------------------------------- 1 | jdbcUrl = jdbc:mysql://127.0.0.1/common-admin?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull 2 | user = root 3 | password =123456 4 | devMode = true 5 | -------------------------------------------------------------------------------- /res/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=WARN, stdout, file 2 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender 3 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 4 | log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n 5 | 6 | # Output to the File 7 | log4j.appender.file=org.apache.log4j.FileAppender 8 | log4j.appender.file.File=./run.log 9 | log4j.appender.file.layout=org.apache.log4j.PatternLayout 10 | log4j.appender.file.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n -------------------------------------------------------------------------------- /src/com/idiet/caipu/CaipuController.java: -------------------------------------------------------------------------------- 1 | package com.idiet.caipu; 2 | 3 | 4 | import com.idiet.caipu.CaipuInterceptor; 5 | import com.idiet.dao.Caipu; 6 | import com.jfinal.aop.Before; 7 | import com.jfinal.core.Controller; 8 | 9 | @Before(CaipuInterceptor.class) 10 | public class CaipuController extends Controller { 11 | public void index() { 12 | String username=getSessionAttr("username"); 13 | //System.out.println(username); 14 | if(username==null){ 15 | redirect("/login"); 16 | }else{ 17 | System.out.println("start_"); 18 | setAttr("data", Caipu.me.paginate(getParaToInt(0, 1), 10)); 19 | System.out.println("end_"); 20 | render("index.jsp"); 21 | } 22 | } 23 | //新增 24 | public void add() { 25 | } 26 | @Before(CaipuValidator.class) //过来post参数 27 | public void save(){ 28 | System.out.println(getPara("caipu.title"));//打印post参数 29 | getModel(Caipu.class).save(); 30 | 31 | redirect("/caipu"); 32 | } 33 | //删除 34 | public void delete(){ 35 | Caipu.me.deleteById(getParaToInt()); 36 | redirect("/caipu"); 37 | } 38 | //修改 39 | public void edit(){ 40 | setAttr("row",Caipu.me.findById(getParaToInt())); 41 | } 42 | @Before(CaipuValidator.class) 43 | public void update(){ 44 | //System.out.println(getPara("title"));//打印post参数 45 | getModel(Caipu.class).update(); 46 | redirect("/caipu"); 47 | } 48 | 49 | } -------------------------------------------------------------------------------- /src/com/idiet/caipu/CaipuInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.idiet.caipu; 2 | 3 | import com.jfinal.aop.Interceptor; 4 | import com.jfinal.aop.Invocation; 5 | 6 | /** 7 | * BlogInterceptor 8 | * 此拦截器仅做为示例展示,在本 demo 中并不需要 9 | */ 10 | public class CaipuInterceptor implements Interceptor { 11 | 12 | public void intercept(Invocation inv) { 13 | System.out.println("Before invoking " + inv.getActionKey()); 14 | inv.invoke(); 15 | System.out.println("After invoking " + inv.getActionKey()); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/idiet/caipu/CaipuValidator.java: -------------------------------------------------------------------------------- 1 | package com.idiet.caipu; 2 | 3 | import com.idiet.dao.Caipu; 4 | import com.jfinal.core.Controller; 5 | import com.jfinal.validate.Validator; 6 | 7 | /** 8 | * BlogValidator. 9 | */ 10 | public class CaipuValidator extends Validator { 11 | 12 | protected void validate(Controller controller) { 13 | validateRequiredString("caipu.title", "titleMsg", "请输入标题!");//过滤不通过执行到handleError 14 | //validateRequiredString("blog.content", "contentMsg", "请输入Blog内容!"); 15 | } 16 | 17 | protected void handleError(Controller controller) { 18 | controller.keepModel(Caipu.class); 19 | 20 | String actionKey = getActionKey(); 21 | if (actionKey.equals("/caipu/save")) //提交参数不合法跳转add。jsp 22 | controller.render("add.jsp"); 23 | else if (actionKey.equals("/caipu/update")) 24 | controller.render("edit.jsp"); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/com/idiet/canting/CantingController.java: -------------------------------------------------------------------------------- 1 | package com.idiet.canting; 2 | 3 | 4 | import com.idiet.dao.Canting; 5 | import com.jfinal.core.Controller; 6 | 7 | public class CantingController extends Controller { 8 | public void index() { 9 | String username=getSessionAttr("username"); 10 | //System.out.println(username); 11 | if(username==null){ 12 | redirect("/login"); 13 | }else{ 14 | System.out.println("start_"); 15 | setAttr("data", Canting.me.paginate(getParaToInt(0, 1), 10)); 16 | System.out.println("end_"); 17 | render("index.jsp"); 18 | } 19 | } 20 | //新增 21 | public void add() { 22 | } 23 | 24 | public void save(){ 25 | //System.out.println(getPara("User.title"));//打印post参数 26 | getModel(Canting.class).save(); 27 | 28 | redirect("/canting"); 29 | } 30 | //删除 31 | public void delete(){ 32 | Canting.me.deleteById(getParaToInt()); 33 | redirect("/canting"); 34 | } 35 | //修改 36 | public void edit(){ 37 | setAttr("row",Canting.me.findById(getParaToInt())); 38 | } 39 | 40 | public void update(){ 41 | //System.out.println(getPara("title"));//打印post参数 42 | getModel(Canting.class).update(); 43 | redirect("/canting"); 44 | } 45 | 46 | } -------------------------------------------------------------------------------- /src/com/idiet/config/Config.java: -------------------------------------------------------------------------------- 1 | package com.idiet.config; 2 | 3 | import com.idiet.caipu.CaipuController; 4 | import com.idiet.canting.CantingController; 5 | import com.idiet.dao.Caipu; 6 | import com.idiet.dao.Canting; 7 | import com.idiet.dao.User; 8 | import com.idiet.index.IndexController; 9 | import com.idiet.login.LoginController; 10 | import com.idiet.member.MemberController; 11 | import com.jfinal.config.Constants; 12 | import com.jfinal.config.Handlers; 13 | import com.jfinal.config.Interceptors; 14 | import com.jfinal.config.JFinalConfig; 15 | import com.jfinal.config.Plugins; 16 | import com.jfinal.config.Routes; 17 | import com.jfinal.kit.PropKit; 18 | import com.jfinal.plugin.activerecord.ActiveRecordPlugin; 19 | import com.jfinal.plugin.c3p0.C3p0Plugin; 20 | import com.jfinal.render.ViewType; 21 | 22 | public class Config extends JFinalConfig { 23 | public void configConstant(Constants me) { 24 | PropKit.use("a_little_config.txt"); 25 | me.setDevMode(PropKit.getBoolean("devMode", false)); 26 | me.setViewType(ViewType.JSP); 27 | } 28 | 29 | public void configRoute(Routes me) { 30 | // me.add("/hello", HelloController.class); 31 | me.add("/", IndexController.class, "/index"); 32 | me.add("/caipu", CaipuController.class, "/caipu");// 只需定位到控制器 方法自动处理 33 | // me.add("/caipu/add", CaipuController.class, "/caipu"); 34 | me.add("/login", LoginController.class, "/login"); 35 | // me.add("/food", FoodController.class, "/food"); 36 | me.add("/member", MemberController.class, "/member"); 37 | me.add("/canting", CantingController.class, "/canting"); 38 | } 39 | 40 | /** 41 | * 配置插件 42 | */ 43 | public void configPlugin(Plugins me) { 44 | // 配置C3p0数据库连接池插件 45 | C3p0Plugin c3p0Plugin = new C3p0Plugin(PropKit.get("jdbcUrl"), 46 | PropKit.get("user"), PropKit.get("password").trim()); 47 | me.add(c3p0Plugin); 48 | 49 | // 配置ActiveRecord插件 50 | ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin); 51 | me.add(arp); 52 | // arp.addMapping("caipu", Caipu.class); // 映射caipu 表到 Blog模型 53 | arp.addMapping("ih_caipu", Caipu.class); // 映射ih_caipu 表到 Blog模型 54 | arp.addMapping("ih_ucenter_member", User.class); // 映射ih_caipu 表到 Blog模型 55 | // arp.addMapping("ih_dishes", Food.class); 56 | arp.addMapping("ih_canting", Canting.class); 57 | } 58 | 59 | public void configInterceptor(Interceptors me) { 60 | } 61 | 62 | public void configHandler(Handlers me) { 63 | } 64 | } -------------------------------------------------------------------------------- /src/com/idiet/dao/Caipu.java: -------------------------------------------------------------------------------- 1 | package com.idiet.dao; 2 | 3 | import com.jfinal.plugin.activerecord.Model; 4 | import com.jfinal.plugin.activerecord.Page; 5 | 6 | @SuppressWarnings("serial") 7 | public class Caipu extends Model { 8 | public static final Caipu me = new Caipu(); 9 | 10 | /** 11 | * 所有 sql 与业务逻辑写在 Model 或 Service 中,不要写在 Controller 中,养成好习惯,有利于大型项目的开发与维护 12 | */ 13 | public Page paginate(int pageNumber, int pageSize) { 14 | return paginate(pageNumber, pageSize, "select *", "from ih_caipu order by id desc"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/idiet/dao/Canting.java: -------------------------------------------------------------------------------- 1 | package com.idiet.dao; 2 | 3 | import com.jfinal.plugin.activerecord.Model; 4 | import com.jfinal.plugin.activerecord.Page; 5 | 6 | @SuppressWarnings("serial") 7 | public class Canting extends Model { 8 | public static final Canting me = new Canting(); 9 | 10 | /** 11 | * 所有 sql 与业务逻辑写在 Model 或 Service 中,不要写在 Controller 中,养成好习惯,有利于大型项目的开发与维护 12 | */ 13 | public Page paginate(int pageNumber, int pageSize) { 14 | return paginate(pageNumber, pageSize, "select *", "from ih_canting order by id desc"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/idiet/dao/Food.java: -------------------------------------------------------------------------------- 1 | package com.idiet.dao; 2 | 3 | import com.jfinal.plugin.activerecord.Model; 4 | import com.jfinal.plugin.activerecord.Page; 5 | 6 | @SuppressWarnings("serial") 7 | public class Food extends Model { 8 | public static final Food me = new Food(); 9 | 10 | /** 11 | * 所有 sql 与业务逻辑写在 Model 或 Service 中,不要写在 Controller 中,养成好习惯,有利于大型项目的开发与维护 12 | */ 13 | public Page paginate(int pageNumber, int pageSize) { 14 | return paginate(pageNumber, pageSize, "select *", "from ih_ucenter_member order by id desc"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/com/idiet/dao/User.java: -------------------------------------------------------------------------------- 1 | package com.idiet.dao; 2 | 3 | import com.jfinal.plugin.activerecord.Model; 4 | import com.jfinal.plugin.activerecord.Page; 5 | 6 | @SuppressWarnings("serial") 7 | 8 | public class User extends Model { 9 | public static final User me = new User(); 10 | 11 | /** 12 | * 所有 sql 与业务逻辑写在 Model 或 Service 中,不要写在 Controller 中,养成好习惯,有利于大型项目的开发与维护 13 | */ 14 | public Page paginate(int pageNumber, int pageSize) { 15 | return paginate(pageNumber, pageSize, "select *", "from ih_ucenter_member order by id desc"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/com/idiet/food/FoodController.java: -------------------------------------------------------------------------------- 1 | package com.idiet.food; 2 | 3 | import com.idiet.dao.Canting; 4 | import com.idiet.dao.Food; 5 | import com.jfinal.core.Controller; 6 | 7 | public class FoodController extends Controller { 8 | public void index() { 9 | String username = getSessionAttr("username"); 10 | // System.out.println(username); 11 | if (username == null) { 12 | redirect("/login"); 13 | } else { 14 | System.out.println("start_"); 15 | setAttr("data", Canting.me.paginate(getParaToInt(0, 1), 10)); 16 | System.out.println("end_"); 17 | render("index.jsp"); 18 | } 19 | } 20 | 21 | // 新增 22 | public void add() { 23 | } 24 | 25 | public void save() { 26 | //System.out.println(getPara("Food.title"));// 打印post参数 27 | getModel(Food.class).save(); 28 | redirect("/food"); 29 | } 30 | 31 | // 删除 32 | public void delete() { 33 | Food.me.deleteById(getParaToInt()); 34 | redirect("/food"); 35 | } 36 | 37 | // 修改 38 | public void edit() { 39 | setAttr("row", Food.me.findById(getParaToInt())); 40 | } 41 | 42 | public void update() { 43 | // System.out.println(getPara("title"));//打印post参数 44 | getModel(Food.class).update(); 45 | redirect("/food"); 46 | } 47 | 48 | } -------------------------------------------------------------------------------- /src/com/idiet/index/IndexController.java: -------------------------------------------------------------------------------- 1 | package com.idiet.index; 2 | 3 | import com.idiet.dao.Caipu; 4 | import com.jfinal.core.Controller; 5 | 6 | /** 7 | * IndexController 8 | */ 9 | public class IndexController extends Controller { 10 | public void index() { 11 | String username=getSessionAttr("username"); 12 | //System.out.println(username); 13 | if(username==null){ 14 | redirect("/login"); 15 | }else{ 16 | render("index.jsp"); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/com/idiet/login/LoginController.java: -------------------------------------------------------------------------------- 1 | package com.idiet.login; 2 | 3 | import com.idiet.dao.User; 4 | import com.idiet.util.MD5Util; 5 | import com.jfinal.core.Controller; 6 | import com.jfinal.plugin.activerecord.Db; 7 | import com.jfinal.plugin.activerecord.Record; 8 | 9 | /** 10 | * IndexController 11 | */ 12 | public class LoginController extends Controller { 13 | // private String username=null; 14 | // private String password=null; 15 | 16 | public void index() { 17 | render("index.jsp"); 18 | } 19 | 20 | public void login_on() { 21 | String username = getPara("username"); 22 | 23 | String password = MD5Util.toMd5String(getPara("password")); 24 | // User userInDb = 25 | // User.me.findFirst("select id, user_name, user_type, name_chn from user where user_name=? and password=?", 26 | // user_name, MD5.getMD5(password)); 27 | // 查询?表示占位符号 不需加引号 28 | User userInDb = User.me 29 | .findFirst( 30 | "select * from ih_ucenter_member where username=? and password=?", 31 | username, password); 32 | if (userInDb != null) { 33 | // 保存session 34 | getSession().setAttribute("username", username); 35 | redirect("/caipu"); 36 | } else { 37 | render("index.jsp"); 38 | } 39 | 40 | /* 41 | * String name=getPara("member.name"); String 42 | * password=getPara("member.password"); String 43 | * sql="select * from ih_ucenter_member where username='" 44 | * +name+"' and password='"+password+"'"; List 45 | * memuser=Member.me.find(sql); 46 | * 47 | * 48 | * username=getPara("username"); setSessionAttr("username", username); 49 | * String username2=getSessionAttr("username"); 50 | * System.out.println(username2); 51 | * 52 | * String sql = 53 | * "select * from ih_ucenter_member where username='?' and passowrd='?'" 54 | * ; System.out.println(sql); Member mem = Member.me.findFirst(sql, 55 | * 123); String name1 = mem.getStr("username"); 56 | */ 57 | } 58 | 59 | public void logout() { 60 | getSession().removeAttribute("username");// 移除session 61 | redirect("/login"); 62 | } 63 | 64 | public void register() { 65 | // setAttr("error_msg", "注册信息有误"); 66 | render("register.jsp"); 67 | } 68 | 69 | public void register_on() { 70 | // System.out.println(getPara("caipu.title"));//打印post参数 71 | String email = getPara("user.email"); 72 | String username = getPara("user.username"); 73 | String password = MD5Util.toMd5String(getPara("user.password")); 74 | User has = (User) User.me.findFirst( 75 | "select id from ih_ucenter_member where username=?", username); 76 | 77 | if (has != null) { 78 | System.out.println(has); 79 | redirect("/register"); 80 | } else { 81 | 82 | Record user = new Record().set("email", email) 83 | .set("username", username).set("password", password); 84 | Db.save("ih_ucenter_member", user); 85 | Long insertId = user.get("id"); 86 | redirect("/login"); 87 | // System.out.println(insertId); 88 | 89 | /* 90 | * Boolean rs=getModel(User.class).save(); if(rs){ 91 | * redirect("/login"); }else{ setAttr("error_msg", "注册信息有误"); 92 | * redirect("/register"); } //redirect("/login"); 93 | */ 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /src/com/idiet/member/MemberController.java: -------------------------------------------------------------------------------- 1 | package com.idiet.member; 2 | 3 | 4 | import com.idiet.dao.Canting; 5 | import com.idiet.dao.User; 6 | import com.jfinal.aop.Before; 7 | import com.jfinal.core.Controller; 8 | 9 | public class MemberController extends Controller { 10 | public void index() { 11 | String username=getSessionAttr("username"); 12 | //System.out.println(username); 13 | if(username==null){ 14 | redirect("/login"); 15 | }else{ 16 | System.out.println("start_"); 17 | setAttr("data", User.me.paginate(getParaToInt(0, 1), 10)); 18 | System.out.println("end_"); 19 | render("index.jsp"); 20 | } 21 | } 22 | //新增 23 | public void add() { 24 | } 25 | 26 | public void save(){ 27 | //System.out.println(getPara("User.title"));//打印post参数 28 | getModel(User.class).save(); 29 | 30 | redirect("/member"); 31 | } 32 | //删除 33 | public void delete(){ 34 | User.me.deleteById(getParaToInt()); 35 | redirect("/member"); 36 | } 37 | //修改 38 | public void edit(){ 39 | setAttr("row",User.me.findById(getParaToInt())); 40 | } 41 | 42 | public void update(){ 43 | //System.out.println(getPara("title"));//打印post参数 44 | getModel(User.class).update(); 45 | redirect("/member"); 46 | } 47 | 48 | } -------------------------------------------------------------------------------- /src/com/idiet/util/MD5Util.java: -------------------------------------------------------------------------------- 1 | package com.idiet.util; 2 | 3 | import java.security.MessageDigest; 4 | import java.security.NoSuchAlgorithmException; 5 | 6 | import org.apache.log4j.chainsaw.Main; 7 | 8 | /** 9 | * @author Administrator 10 | * 11 | */ 12 | public class MD5Util { 13 | 14 | /** 15 | * @param content 16 | * @return 17 | */ 18 | public static String toMd5(String content) { 19 | try { 20 | 21 | byte[] buffer = content.getBytes("Unicode"); 22 | 23 | return toMd5(buffer); 24 | } catch (Exception e) { 25 | 26 | return null; 27 | } 28 | } 29 | 30 | /** 31 | * @param bytes 32 | * @return 33 | */ 34 | public static String toMd5(byte[] bytes) { 35 | try { 36 | MessageDigest algorithm = MessageDigest.getInstance("MD5"); 37 | algorithm.reset(); 38 | algorithm.update(bytes); 39 | return toHexString(algorithm.digest(), ""); 40 | } catch (NoSuchAlgorithmException e) { 41 | throw new RuntimeException(e); 42 | } 43 | 44 | } 45 | 46 | /* 47 | * public static void main(String[] args) { Md52 m=new Md52(); 48 | * System.out.println(m.toMd5String("123456")); } 49 | */ 50 | /** 51 | * @param bytes 52 | * @param separator 53 | * @return 54 | */ 55 | private static String toHexString(byte[] bytes, String separator) { 56 | StringBuilder hexString = new StringBuilder(); 57 | for (byte b : bytes) { 58 | hexString.append(Integer.toHexString(0xFF & b)).append(separator); 59 | } 60 | return hexString.toString(); 61 | } 62 | 63 | @SuppressWarnings("unused") 64 | public static String toMd5String(String plainText) { 65 | try { 66 | MessageDigest md = MessageDigest.getInstance("MD5"); 67 | md.update(plainText.getBytes()); 68 | byte b[] = md.digest(); 69 | 70 | int i; 71 | 72 | StringBuffer buf = new StringBuffer(""); 73 | for (int offset = 0; offset < b.length; offset++) { 74 | i = b[offset]; 75 | if (i < 0) 76 | i += 256; 77 | if (i < 16) 78 | buf.append("0"); 79 | buf.append(Integer.toHexString(i)); 80 | } 81 | return buf.toString(); 82 | // System.out.println("result: " + buf.toString());// 32位的加密 83 | 84 | // System.out.println("result: " + buf.toString().substring(8, 85 | // 24));// 16位的加密 86 | 87 | } catch (NoSuchAlgorithmException e) { 88 | // TODO Auto-generated catch block 89 | e.printStackTrace(); 90 | } 91 | return plainText; 92 | } 93 | } 94 | --------------------------------------------------------------------------------