summaryrefslogtreecommitdiff
path: root/nz-admin/src/main/resources/templates
diff options
context:
space:
mode:
Diffstat (limited to 'nz-admin/src/main/resources/templates')
-rw-r--r--nz-admin/src/main/resources/templates/404.html11
-rw-r--r--nz-admin/src/main/resources/templates/header.html56
-rw-r--r--nz-admin/src/main/resources/templates/index.html144
-rw-r--r--nz-admin/src/main/resources/templates/index1.html113
-rw-r--r--nz-admin/src/main/resources/templates/js/index.js171
-rw-r--r--nz-admin/src/main/resources/templates/js/modules/romote/console.js242
-rw-r--r--nz-admin/src/main/resources/templates/js/modules/romote/main.js10
-rw-r--r--nz-admin/src/main/resources/templates/js/modules/romote/romote.js75
-rw-r--r--nz-admin/src/main/resources/templates/js/modules/sys/i18n.js217
-rw-r--r--nz-admin/src/main/resources/templates/js/modules/sys/icon.js86
-rw-r--r--nz-admin/src/main/resources/templates/js/modules/sys/menu.js273
-rw-r--r--nz-admin/src/main/resources/templates/js/modules/sys/user.js235
-rw-r--r--nz-admin/src/main/resources/templates/login.html173
-rw-r--r--nz-admin/src/main/resources/templates/main.html37
-rw-r--r--nz-admin/src/main/resources/templates/modules/job/schedule.html80
-rw-r--r--nz-admin/src/main/resources/templates/modules/job/schedule_log.html22
-rw-r--r--nz-admin/src/main/resources/templates/modules/romote/console.html107
-rw-r--r--nz-admin/src/main/resources/templates/modules/romote/romote.html17
-rw-r--r--nz-admin/src/main/resources/templates/modules/sys/config.html56
-rw-r--r--nz-admin/src/main/resources/templates/modules/sys/dict.html79
-rw-r--r--nz-admin/src/main/resources/templates/modules/sys/i18n.html77
-rw-r--r--nz-admin/src/main/resources/templates/modules/sys/icons.html1037
-rw-r--r--nz-admin/src/main/resources/templates/modules/sys/log.html24
-rw-r--r--nz-admin/src/main/resources/templates/modules/sys/menu.html158
-rw-r--r--nz-admin/src/main/resources/templates/modules/sys/role.html81
-rw-r--r--nz-admin/src/main/resources/templates/modules/sys/user.html102
-rw-r--r--nz-admin/src/main/resources/templates/spring.ftl384
27 files changed, 0 insertions, 4067 deletions
diff --git a/nz-admin/src/main/resources/templates/404.html b/nz-admin/src/main/resources/templates/404.html
deleted file mode 100644
index ec465d5f..00000000
--- a/nz-admin/src/main/resources/templates/404.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>404</title>
-</head>
-<body>
-404
-</body>
-</html>
diff --git a/nz-admin/src/main/resources/templates/header.html b/nz-admin/src/main/resources/templates/header.html
deleted file mode 100644
index e19eb41b..00000000
--- a/nz-admin/src/main/resources/templates/header.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<meta charset="UTF-8">
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
-<link rel="stylesheet" href="${request.contextPath}/statics/css/bootstrap.min.css">
-<link rel="stylesheet" href="${request.contextPath}/statics/css/font-awesome.min.css">
-<link rel="stylesheet" href="${request.contextPath}/statics/css/myfont.css">
-<link rel="stylesheet" href="${request.contextPath}/statics/plugins/ztree/css/metroStyle/metroStyle.css">
-<link rel="stylesheet" href="${request.contextPath}/statics/plugins/jqgrid/ui.jqgrid-bootstrap.css">
-<link rel="stylesheet" href="${request.contextPath}/statics/libs/vue-multiselect.min.css">
-<link rel="stylesheet" href="${request.contextPath}/statics/libs/vue-easytable.css">
-<link rel="stylesheet" href="${request.contextPath}/statics/plugins/perfect-scrollbar/perfect-scrollbar.css">
-<link rel="stylesheet" href="${request.contextPath}/statics/css/main.css">
-<link rel="stylesheet" href="${request.contextPath}/statics/plugins/daterangepicker/daterangepicker.css">
-<link rel="stylesheet" href="${request.contextPath}/statics/plugins/pagination/pagination.css">
-<link rel="stylesheet" href="${request.contextPath}/statics/plugins/jquery-gridster/jquery-gridster.css">
-<link rel="stylesheet" href="${request.contextPath}/statics/plugins/switch/bootstrap-switch.css">
-<link rel="stylesheet" href="${request.contextPath}/statics/plugins/minicolors/jquery.minicolors.css">
-<script src="${request.contextPath}/statics/libs/jquery.min.js"></script>
-<script src="${request.contextPath}/statics/plugins/layer/layer.js"></script>
-<script src="${request.contextPath}/statics/libs/bootstrap.min.js"></script>
-<!--<script src="${request.contextPath}/statics/libs/vue.min.js"></script>-->
-<script src="${request.contextPath}/statics/libs/vue.upper.js"></script>
-<script src="${request.contextPath}/statics/libs/vue-multiselect.min.js"></script>
-<script src="${request.contextPath}/statics/libs/vue-easytable.js"></script>
-<script src="${request.contextPath}/statics/libs/vuelidate.min.js"></script>
-<script src="${request.contextPath}/statics/libs/validators.min.js"></script>
-<script src="${request.contextPath}/statics/plugins/jqgrid/i18n/grid.locale-en.js"></script>
-<script src="${request.contextPath}/statics/plugins/jqgrid/jquery.jqGrid.min.js"></script>
-<script src="${request.contextPath}/statics/plugins/ztree/jquery.ztree.all.min.js"></script>
-<script src="${request.contextPath}/statics/js/common.js"></script>
-<script src="${request.contextPath}/statics/plugins/perfect-scrollbar/perfect-scrollbar.js"></script>
-<script src="${request.contextPath}/statics/plugins/My97DatePicker/WdatePicker.js"></script>
-<script src="${request.contextPath}/statics/plugins/My97DatePicker/WdatePicker.js"></script>
-<script src="${request.contextPath}/statics/plugins/daterangepicker/moment.min.js"></script>
-<script src="${request.contextPath}/statics/plugins/daterangepicker/daterangepicker.js"></script>
-<script src="${request.contextPath}/statics/plugins/pagination/pagination.js"></script>
-<script src="${request.contextPath}/statics/plugins/jquery-gridster/jquery-gridster.js"></script>
-<script src="${request.contextPath}/statics/plugins/switch/bootstrap-switch.js"></script>
-<script src="${request.contextPath}/statics/plugins/minicolors/jquery.minicolors.js"></script>
-<script src="${request.contextPath}/statics/plugins/echarts/echarts.min.js"></script>
-<!--fileinput-->
-<link href="${request.contextPath}/statics/plugins/fileinput/css/fileinput.css" media="all" rel="stylesheet" type="text/css" />
-<script type="text/javascript" src="${request.contextPath}/statics/plugins/fileinput/js/fileinput.js" ></script>
-<script type="text/javascript" src="${request.contextPath}/statics/plugins/fileinput/js/locales/zh.js"></script>
-<link rel="stylesheet" href="${request.contextPath}/statics/css/jobx.term.css" >
-
-<!--term-->
-<link type="text/css" rel="stylesheet" href="${request.contextPath}/statics/plugins/xterm/xterm.css">
-<link type="text/css" rel="stylesheet" href="${request.contextPath}/statics/plugins/xterm/addons/fullscreen/fullscreen.css" />
-
-<script src="${request.contextPath}/statics/plugins/xterm/xterm.js" type="text/javascript"></script>
-<script src="${request.contextPath}/statics/plugins/xterm/addons/attach/attach.js" type="text/javascript"></script>
-<script src="${request.contextPath}/statics/plugins/xterm/addons/fit/fit.js" type="text/javascript"></script>
-<script src="${request.contextPath}/statics/plugins/xterm/addons/fullscreen/fullscreen.js" type="text/javascript"></script>
-<script src="${request.contextPath}/statics/js/modules/romote/jobx.term.js" type="text/javascript" ></script>
-<script type="text/javascript" src="${request.contextPath}/statics/js/modules/romote/jobx.js"></script> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/index.html b/nz-admin/src/main/resources/templates/index.html
deleted file mode 100644
index cc57e8fe..00000000
--- a/nz-admin/src/main/resources/templates/index.html
+++ /dev/null
@@ -1,144 +0,0 @@
-<!DOCTYPE html>
-<#import "/spring.ftl" as spring>
-<html>
-<head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>NEZHA</title>
- <!-- Tell the browser to be responsive to screen width -->
- <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
- <link rel="stylesheet" href="${request.contextPath}/statics/css/font-awesome.min.css">
- <link rel="stylesheet" href="${request.contextPath}/statics/css/AdminLTE.min.css">
- <link rel="stylesheet" href="${request.contextPath}/statics/css/bootstrap.min.css">
- <!-- AdminLTE Skins. Choose a skin from the css/skins
- folder instead of downloading all of them to reduce the load. -->
- <link rel="stylesheet" href="${request.contextPath}/statics/css/all-skins.min.css">
- <link rel="stylesheet" href="${request.contextPath}/statics/css/main.css">
- <link rel="stylesheet" href="${request.contextPath}/statics/css/index.css">
- <link rel="stylesheet" href="${request.contextPath}/statics/libs/vue-multiselect.min.css">
- <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
- <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
- <!--[if lt IE 9]>
- <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
- <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
- <![endif]-->
-</head>
-<!-- ADD THE CLASS layout-boxed TO GET A BOXED LAYOUT -->
-<body class="hold-transition skin-blue sidebar-mini">
-<!-- Site wrapper -->
-<div class="wrapper" id="rrapp" v-cloak>
- <header class="main-header">
- <a href="javascript:void(0);" class="logo">
- <!-- mini logo for sidebar mini 50x50 pixels -->
- <span class="logo-mini"><b>NZ</b></span>
- <!-- logo for regular state and mobile devices -->
- <span class="logo-lg"><b>NEZHA</b></span>
- </a>
- <!-- Header Navbar: style can be found in header.less -->
- <nav class="navbar navbar-static-top" role="navigation">
- <!-- Sidebar toggle button-->
- <a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button">
- <span class="sr-only">Toggle navigation</span>
- </a>
- <div style="float:left;color:#fff;padding:15px 10px;"><@spring.message "common.welcome"/> {{user.username}}</div>
- <div class="navbar-custom-menu">
- <ul class="nav navbar-nav">
- <li><a href="javascript:;" @click="updatePassword"><i class="fa fa-lock"></i> &nbsp;<@spring.message "sys.updatePwd"/></a></li>
- <li>
- <a class="navbar-nav_lang" href="javascript:;" @click="toChangeLang"><i class="fa fa-globe"></i>&nbsp;{{currLang.name}}</a>
- <!-- 选择语言 -->
- <div class="banner-dropdown-items">
- <div class="banner-dropdown-item" @click="changeLang(lang.value)" v-show="changeLangShow" v-for="lang in langList">{{lang.name}}</div>
- </div>
- </li>
- <li><a href="javascript:;" @click="logout"><i class="fa fa-sign-out"></i> &nbsp;<@spring.message "sys.logout"/></a></li>
- </ul>
- </div>
- </nav>
- </header>
-
- <!-- =============================================== -->
-
- <!-- Left side column. contains the sidebar -->
- <aside class="main-sidebar">
- <!-- sidebar: style can be found in sidebar.less -->
- <section class="sidebar">
- <!-- /.search form -->
- <!-- sidebar menu: : style can be found in sidebar.less -->
- <ul class="sidebar-menu">
- <li class="header">导航菜单</li>
-
- <!-- vue生成的菜单 -->
- <menu-item :item="item" v-for="item in menuList"></menu-item>
- </ul>
- </section>
- <!-- /.sidebar -->
- </aside>
- <!-- =============================================== -->
- <!-- Content Wrapper. Contains page content -->
- <div class="content-wrapper">
- <!-- Content Header (Page header) -->
- <section class="content-header">
- <ol class="breadcrumb" id="nav_title" style="position:static;float:none;">
- <li class="active"><i class="fa fa-home" style="font-size:20px;position:relative;top:2px;left:-3px;"></i> &nbsp; <@spring.message "common.home"/></li>
- <li class="active">{{navTitle}}</li>
- </ol>
- </section>
-
- <!-- Main content -->
- <section class="content" style="background:#fff;">
- <iframe id="childIframe" scrolling="yes" frameborder="0" style="width:100%;min-height:200px;overflow:visible;background:#fff;" :src="main"></iframe>
- </section>
- <!-- /.content -->
- </div>
- <!-- /.content-wrapper -->
-<!--
- <footer class="main-footer">
- <div class="pull-right hidden-xs">
- Version 4.0.0
- </div>
- Copyright &copy; 2019 <a href="https://www.nezha.io" target="_blank">nezha.io</a> All Rights Reserved
- </footer> -->
-
- <!-- Add the sidebar's background. This div must be placed
- immediately after the control sidebar -->
- <div class="control-sidebar-bg"></div>
-
- <!-- 修改密码 -->
- <div id="passwordLayer" style="display: none;">
- <form class="form-horizontal">
- <div class="form-group">
- <div class="form-group">
- <div class="col-sm-2 control-label">账号</div>
- <span class="label label-success" style="vertical-align: bottom;">{{user.username}}</span>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label">原密码</div>
- <div class="col-sm-10">
- <input type="password" class="form-control" v-model="password" placeholder="原密码"/>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label">新密码</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="newPassword" placeholder="新密码"/>
- </div>
- </div>
- </div>
- </form>
- </div>
-</div>
-<!-- ./wrapper -->
-
-
-
-<script src="${request.contextPath}/statics/libs/jquery.min.js"></script>
-<script src="${request.contextPath}/statics/libs/vue.min.js"></script>
-<script src="${request.contextPath}/statics/libs/vue-multiselect.min.js"></script>
-<script src="${request.contextPath}/statics/libs/router.js"></script>
-<script src="${request.contextPath}/statics/libs/bootstrap.min.js"></script>
-<script src="${request.contextPath}/statics/libs/app.js"></script>
-<script src="${request.contextPath}/statics/plugins/layer/layer.js"></script>
-<#include "/js/index.js">
-</body>
-</html>
diff --git a/nz-admin/src/main/resources/templates/index1.html b/nz-admin/src/main/resources/templates/index1.html
deleted file mode 100644
index 0cbeef51..00000000
--- a/nz-admin/src/main/resources/templates/index1.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8">
- <title>人人权限系统</title>
- <meta name="renderer" content="webkit">
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
- <meta name="apple-mobile-web-app-status-bar-style" content="black">
- <meta name="apple-mobile-web-app-capable" content="yes">
- <meta name="format-detection" content="telephone=no">
- <link rel="stylesheet" type="text/css" href="${request.contextPath}/statics/plugins/layui/css/layui.css">
- <link rel="stylesheet" type="text/css" href="${request.contextPath}/statics/css/font-awesome.min.css">
- <link rel="stylesheet" type="text/css" href="${request.contextPath}/statics/css/index1.css">
-</head>
-<body>
-<div class="layui-layout layui-layout-admin" id="layui_layout">
- <!-- 顶部区域 -->
- <div class="layui-header header header-demo">
- <div class="layui-main">
- <!-- logo区域 -->
- <div class="admin-logo-box">
- <a class="logo" href="javascript:;">人人权限系统</a>
- <div class="larry-side-menu">
- <i class="fa fa-bars" aria-hidden="true"></i>
- </div>
- </div>
- <!-- 顶级菜单区域 -->
- <!-- <div class="layui-larry-menu">
- <ul class="layui-nav clearfix">
- <li class="layui-nav-item layui-this">
- <a href="javascirpt:;"><i class="iconfont icon-wangzhanguanli"></i>内容管理</a>
- </li>
- <li class="layui-nav-item">
- <a href="javascirpt:;"><i class="iconfont icon-weixin3"></i>微信公众</a>
- </li>
- <li class="layui-nav-item">
- <a href="javascirpt:;"><i class="iconfont icon-ht_expand"></i>扩展模块</a>
- </li>
- </ul>
- </div> -->
- <!-- 右侧导航 -->
- <ul class="layui-nav larry-header-item">
- <li class="layui-nav-item"><a href="javascript:;" @click="donate"><i class="fa fa-jpy"></i> &nbsp;捐赠作者</a></li>
- <li class="layui-nav-item"><a href="http://www.nezha.io" target="_blank"><i class="fa fa-home"></i> &nbsp;人人开源</a></li>
- <li class="layui-nav-item"><a href="javascript:;" @click="updatePassword"><i class="fa fa-lock"></i> &nbsp;修改密码</a></li>
- <li class="layui-nav-item"><a href="logout"><i class="fa fa-sign-out"></i> &nbsp;退出系统</a></li>
- </ul>
- </div>
- </div>
- <!-- 左侧侧边导航开始 -->
- <div class="layui-side layui-side-bg layui-larry-side" id="larry-side">
- <div class="layui-side-scroll" id="larry-nav-side" lay-filter="side">
- <!-- 左侧菜单 -->
- <ul class="layui-nav layui-nav-tree">
- <menu-item :item="item" v-for="item in menuList"></menu-item>
- </ul>
- </div>
- </div>
-
- <!-- 左侧侧边导航结束 -->
- <!-- 右侧主体内容 -->
- <div class="layui-body" id="larry-body" style="bottom: 0;border-left: solid 2px #1AA094;">
- <div class="layui-tab layui-tab-card larry-tab-box" id="larry-tab" lay-filter="main-tab" lay-allowclose="true">
- <ul class="layui-tab-title">
- <li class="layui-this" id="admin-home"><i class="fa fa-home"></i><em>控制台</em></li>
- </ul>
- <div class="layui-tab-content" style="min-height: 150px; overflow: hidden">
- <div class="layui-tab-item layui-show">
- <iframe class="larry-iframe" data-id='0' src="main.html"></iframe>
- </div>
- </div>
- </div>
-
-
- </div>
- <!-- 底部区域 -->
- <div class="layui-footer layui-larry-foot" id="larry-footer">
- <div class="layui-mian">
- Copyright &copy; 2019 <a href="https://www.nezha.io" target="_blank">nezha.io</a> All Rights Reserved
- </div>
- </div>
-
- <!-- 修改密码 -->
- <div id="passwordLayer" style="display: none;">
-
- <form class="layui-form" action="">
- <div class="layui-form-item">
- <label class="layui-form-label">账号</label>
- <label class="layui-form-label laber-account">{{user.username}}</label>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">原密码</label>
- <div class="layui-input-inline">
- <input type="password" v-model="password" placeholder="原密码" autocomplete="off" class="layui-input">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">新密码</label>
- <div class="layui-input-inline">
- <input type="text" v-model="newPassword" placeholder="新密码" autocomplete="off" class="layui-input">
- </div>
- </div>
- </form>
- </div>
-</div>
-
-<script type="text/javascript" src="${request.contextPath}/statics/libs/jquery.min.js"></script>
-<script type="text/javascript" src="${request.contextPath}/statics/plugins/layui/layui.js"></script>
-<script type="text/javascript" src="${request.contextPath}/statics/libs/vue.min.js"></script>
-<script type="text/javascript" src="${request.contextPath}/statics/js/index1.js"></script>
-</body>
-</html> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/js/index.js b/nz-admin/src/main/resources/templates/js/index.js
deleted file mode 100644
index 3c433745..00000000
--- a/nz-admin/src/main/resources/templates/js/index.js
+++ /dev/null
@@ -1,171 +0,0 @@
-<script>
-//生成菜单
-var menuItem = Vue.extend({
- name: 'menu-item',
- props:{item:{}},
- template:[
- '<li>',
- ' <a v-if="item.type === 0" href="javascript:;">',
- ' <i v-if="item.icon != null" :class="item.icon"></i>',
- ' <span>{{item.name}}</span>',
- ' <i class="fa fa-angle-left pull-right"></i>',
- ' </a>',
- ' <ul v-if="item.type === 0" class="treeview-menu">',
- ' <menu-item :item="item" v-for="item in item.list"></menu-item>',
- ' </ul>',
-
- ' <a v-if="item.type === 1 && item.parentId === 0" :href="\'#\'+item.url">',
- ' <i v-if="item.icon != null" :class="item.icon"></i>',
- ' <span>{{item.name}}</span>',
- ' </a>',
-
- ' <a v-if="item.type === 1 && item.parentId != 0" :href="\'#\'+item.url"><i v-if="item.icon != null && item.icon.length > 0" :class="item.icon"></i><i v-else class="fa fa-circle-o"></i> {{item.name}}</a>',
- '</li>'
- ].join('')
-});
-
-//iframe自适应
-$(window).on('resize', function() {
- var $content = $('.content');
- $content.height($(this).height() - 154);
- $content.find('iframe').each(function() {
- $(this).height($content.height());
- $(this).contents().find('.ui-jqgrid-bdiv').height($content.height()-130);
- });
-}).resize();
-
-//注册菜单组件
-Vue.component('menuItem',menuItem);
-
-var vm = new Vue({
- el:'#rrapp',
- data:{
- user:{},
- menuList:{},
- main:"main.html",
- password:'',
- newPassword:'',
- navTitle:"控制台",
- changeLangShow: false, //是否显示语言列表
- langList: [],
- currLang: {}
- },
- methods: {
- getMenuList: function (event) {
- $.getJSON("sys/menu/nav?_"+$.now(), function(r){
- vm.menuList = r.menuList;
- });
- },
- getUser: function(){
- $.getJSON("sys/user/info?_"+$.now(), function(r){
- vm.user = r.user;
- });
- },
- updatePassword: function(){
- layer.open({
- type: 1,
- skin: 'layui-layer-molv',
- title: "修改密码",
- area: ['550px', '270px'],
- shadeClose: false,
- content: jQuery("#passwordLayer"),
- btn: ['修改','取消'],
- btn1: function (index) {
- var data = "password="+vm.password+"&newPassword="+vm.newPassword;
- $.ajax({
- type: "POST",
- url: "sys/user/password",
- data: data,
- dataType: "json",
- success: function(result){
- if(result.code == 200){
- layer.close(index);
- layer.alert('修改成功', function(index){
- location.reload();
- });
- }else{
- layer.alert(result.msg);
- }
- }
- });
- }
- });
- },
- toChangeLang: function() {
- vm.changeLangShow = !(vm.changeLangShow);
- },
- getLangList: function(event) { //查字典获取语言种类
- $.getJSON("sys/i18n/getLangList2", function(r){
- vm.langList = r.data;
- });
- },
- changeLang: function(lang) {
- location.href = "?_lang=" + lang;
- },
- getCurrLang: function() {
- $.getJSON("sys/i18n/getCurrLang", function(r){
- if (r.code == '200') {
- vm.currLang = r.data;
- }
- });
- },
- donate: function() {
- layer.open({
- type: 2,
- title: false,
- area: ['806px', '467px'],
- closeBtn: 1,
- shadeClose: false,
- content: ['http://cdn.nezha.io/donate.jpg', 'no']
- });
- },
- logout: function() {
- $.get("${request.contextPath}/logout");
- location.reload();
- }
- },
- created: function(){
- this.getMenuList();
- this.getUser();
- this.getLangList();
- this.getCurrLang();
- },
- updated: function(){
- //路由
- var router = new Router();
- routerList(router, vm.menuList);
- router.start();
- }
-});
-
-
-
-function routerList(router, menuList){
- for(var key in menuList){
- var menu = menuList[key];
- if(menu.type == 0){
- routerList(router, menu.list);
- }else if(menu.type == 1){
- router.add('#'+menu.url, function() {
- var url = window.location.hash;
- //替换iframe的url
- //vm.main = url.replace('#', '');
- goNext(url.replace('#', ''));
-
- //导航菜单展开
- $(".treeview-menu li").removeClass("active");
- $("a[href='"+url+"']").parents("li").addClass("active");
-
- vm.navTitle = $("a[href='"+url+"']").text();
-
- window.location.hash = url + "?_" + new Date().getTime();
- });
- }
- }
-}
-
-function goNext(url) {
- vm.main = url;
- $("#childIframe")[0].contentWindow.location.reload(true);
-}
-</script> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/js/modules/romote/console.js b/nz-admin/src/main/resources/templates/js/modules/romote/console.js
deleted file mode 100644
index 5be3dfe5..00000000
--- a/nz-admin/src/main/resources/templates/js/modules/romote/console.js
+++ /dev/null
@@ -1,242 +0,0 @@
-<script>
- var terminal=Vue.extend({
- template:"#nzConsole",
- components: {
-
- },
- props: {
- accountId:{
- type:Number,
- required:true
- },
- token:{
- type:String,
- required:true
- },
- isNew:{
- type:Boolean,
- required:true
- },
- name:{
- type:String,
- required:true
- },
- index:{
- type:Number
- },
- hideAlldom:{
- type:Function,
- required:true
- }
- },
- data: function () {
- return {
- terminalWin:null,
- domContainerSelector:"",
- domheadSelector:"",
-
- }
- },
- validations:{
-
- },
- created:function(){
-
- },
- methods: {
- init:function(){
- var temp=this;
- temp.domContainerSelector="#terminal-container-"+temp.accountId+"-"+temp.token;
- temp.domheadSelector="#terminal-head-"+temp.accountId+"-"+temp.token;
- temp.terminalWin=new JobXTerm(temp.token,null,temp.domContainerSelector);
- $(temp.domContainerSelector).appendTo($("#terminal-context"));
- $(temp.domheadSelector).unbind("click").bind("click",temp.activeSelf)
-
- if(typeof temp.isNew != "undefined"&&temp.isNew){
- // $(temp.domContainerSelector).get(0).style.display="none";
- temp.activeSelf();
- }
-
-
- },
- activeSelf:function(){
- var temp=this;
- $(".terminal-head").removeClass("active");
- temp.hideAlldom();
- $(temp.domheadSelector).addClass("active");
- $(temp.domContainerSelector).get(0).style.display="block";
- temp.$emit("sign-current-win",temp.token);
- },
- hideSelf:function(){
- var temp=this;
- try{
- $(temp.domheadSelector).removeClass("active");
- $(temp.domContainerSelector).get(0).style.display="none";
- }catch(e){
- console.log("errorID-->"+temp.domheadSelector)
- }
-
- },
- closeSelf:function(event){
- event.stopPropagation();
- this.terminalWin.socket.onclose();
- // $(this.domContainerSelector).remove();
- // $(this.domheadSelector).remove();
-
- this.$emit("close-win",this.index,this.token);
- }
-
- },
- computed: {
-
- },
- watch: {
- },
- mounted: function () {
- this.init();
- }
- })
- Vue.component("nz-terminal",terminal)
- var vm=new Vue({
- el:"#terminalwin",
- data:{
- terminals:[],
- sendAllCmd:"",
- curToken:''
- },
- created:function(){
- var temp=this;
- window.addEventListener("storage", function (e) {
- if(e.key == 'terminals'){
- temp.terminals=JSON.parse(e.newValue);
- }
- });
- window.onbeforeunload = function (e){
- localStorage.setItem("pageCreated",false);
- for (var i in temp.terminals){
- var terminal=temp.terminals;
- temp.closeWinWithToken(i,terminal.token);
- }
- temp.terminals=[]; //会导致刷新页面 控制台也丢失
- localStorage.setItem("terminals",JSON.stringify(temp.terminals))
- return true;
- }
- temp.terminals=JSON.parse(localStorage.getItem("terminals"));
-
- },
- methods:{
- init:function(){
- var temp=this;
- $('#file').fileinput({
- language: 'zh',
- showPreview : true,
- browseOnZoneClick:false,
- uploadUrl : baseURL+'/account/upload.do',
- removeLabel : "删除",
- showCaption: true, //是否显示标题,
- dropZoneEnabled:true,
- dropZoneTitle:"拖拽文件到这里来上传...",
- resizeImage: false,
- previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",
- initialCaption: "请选择要上传的文件",
- maxFileSize:1024*1024*100,//文件最大100M
- allowedFileExtensions : null,
- elErrorContainer: '#errorBlock',
- uploadExtraData: function() {
- var obj = {};
- obj.token=temp.curToken;
- obj.path = $("#path").val();
- return obj;
- }
- }).on("fileuploaded", function(event, data) {
- if (!data.response) {
- alert('文件格式类型不正确');
- }else if (data.response.success == "false") {
- window.setTimeout(function () {
- $("#upload_push").find(".progress-bar-success").addClass("progress-bar-danger").removeClass("progress-bar-success");
- $(".file-actions").find(".glyphicon-ok-sign").addClass("text-danger glyphicon-remove-sign").removeClass("glyphicon-ok-sign text-success");
- var uperrorhtml =
- '<span class="close kv-error-close" onclick="colseUpError()">×</span>' +
- '<ul>' +
- '<li><b>上传失败: (可能有以下原因)</b></li>' +
- '<li><b>1): </b>文件大小太大,上传失败</li>' +
- '<li><b>2): </b>上传路径是当前路径,且控制台正在实时输出日志(无法获取当前路径)</li>' +
- '</ul>';
- $(".file-error-message").css({"margin":"8px 0px"});
- $("#errorBlock").html(uperrorhtml).show();
- },300);
- }
- });
- },
- upload:function(){
- $("#upload_push").modal('show');
- $(".fileinput-remove-button").click();
- $("#path").val('');
- },
- hideAllDom:function(){
- var temp=this;
- var componets=temp.$refs.nzTerminal;
- for (var i in componets){
- var componet=componets[i];
- componet.hideSelf();
- }
- },
- signCurrentWin:function(token){
- this.curToken=token;
- },
- closeWinWithToken:function(index,token){
- var temp=this;
- var len=temp.terminals.length;
- if(len>1){ //避免弹两次询问窗口
- // confirm("确定关闭窗口吗?",function(){
- // temp.closeAjax(index,token);
- // layer.closeAll("dialog");
- // })
- temp.terminals.splice(index,1);
- localStorage.setItem("terminals",JSON.stringify(temp.terminals));
- }else{
- // temp.closeAjax(index,token);
- window.close();
- }
-
- },
- reopen:function(){
- var temp=this;
- $.ajax({
- url:baseURL+"/account/reopen.do",
- type:"post",
- data:{"token":temp.curToken},
- success:function(){
-
- }
- })
- },
- closeAjax:function(index,token){
- var temp=this;
- $.ajax({
- url:baseURL+"/terminal/close.do",
- type:"POST",
- data:{"tokens":token},
- success:function(r){
- console.log("close result")
- console.log(r);
- if(r.code == "200"){
- var len=temp.terminals.length;
-
- temp.terminals.splice(index,1);
- localStorage.setItem("terminals",JSON.stringify(temp.terminals));
- if(len<=1){
- window.close();
- }
- }else{
- alert("关闭失败")
- }
- }
- })
- }
- },
- mounted:function(){
- this.init();
- }
- })
-</script> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/js/modules/romote/main.js b/nz-admin/src/main/resources/templates/js/modules/romote/main.js
deleted file mode 100644
index 98838b65..00000000
--- a/nz-admin/src/main/resources/templates/js/modules/romote/main.js
+++ /dev/null
@@ -1,10 +0,0 @@
-<script>
-var orignalSetItem = localStorage.setItem;
-localStorage.setItem = function(key,newValue){
- var setItemEvent = new Event("setItemEvent");
- setItemEvent.key=key;
- setItemEvent.newValue = newValue;
- window.dispatchEvent(setItemEvent);
- orignalSetItem.apply(this,arguments);
-}
-</script>
diff --git a/nz-admin/src/main/resources/templates/js/modules/romote/romote.js b/nz-admin/src/main/resources/templates/js/modules/romote/romote.js
deleted file mode 100644
index b9d8b152..00000000
--- a/nz-admin/src/main/resources/templates/js/modules/romote/romote.js
+++ /dev/null
@@ -1,75 +0,0 @@
-<script>
- var vm = new Vue({
- el:"#terminalWindow",
- data:{
- terminals:[],
- pageCreated:false
- },
- created:function(){
- var temp=this;
- window.addEventListener("setItemEvent", function(e) {
- if(e.key == "pageCreated"){
- console.log("pageCreated1-->"+e.newValue)
- temp.pageCreated=e.newValue;
- }
- });
- window.addEventListener("storage", function (e) {
- if(e.key == 'pageCreated'){
- console.log("pageCreated2-->"+e.newValue)
- temp.pageCreated=e.newValue;
- }
- if(e.key == 'terminals'){
- temp.terminals=JSON.parse(e.newValue)
- }
- // localStorage.clear();
- });
- },
- methods:{
- openTerminal:function(id){
- var temp=this;
- $.ajax({
- url:baseURL+"/account/ssh.do",
- type: "post",
- data: {"id":id},
- success:function(json){
-
- if(json&&json.toString().indexOf("login")>-1){
- window.location.href=baseURL;
- }
- console.log(json)
- if ( json.data.status != "success" ) {
- if (json.data.status == "authfail" || json.data.status == "keyauthfail") {
- alert("用户名密码错误,登录失败");
- } else if (json.data.status == "hostfail") {
- alert("DNS解析失败");
- } else if (json.data.status == "genericfail") {
- alert("连接失败请重试");
- }
- } else {
- confirm("登录成功,确定打开终端吗?",function(index){
- // temp.showTerminal=true;
- for (var i in temp.terminals){
- var terminal=temp.terminals[i];
- terminal.isNew=false;
- }
- temp.terminals.push({"token":json.data.token,"name":json.data.name,"accountId":id,"isNew":true})
- localStorage.clear();
- localStorage.setItem("terminals",JSON.stringify(temp.terminals))
- if(!temp.pageCreated||"false"==temp.pageCreated){
- console.log('open')
- window.open("./console.html","_blank")
- localStorage.setItem("pageCreated",true);
- }
- layer.closeAll("dialog");
- })
- }
- }
- })
-
- },
-
- }
-
-
- })
-</script> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/js/modules/sys/i18n.js b/nz-admin/src/main/resources/templates/js/modules/sys/i18n.js
deleted file mode 100644
index b8c2bb5a..00000000
--- a/nz-admin/src/main/resources/templates/js/modules/sys/i18n.js
+++ /dev/null
@@ -1,217 +0,0 @@
-<script>
-$(function () {
- $("#jqGrid").jqGrid({
- url: baseURL + 'sys/i18n/list',
- datatype: "json",
- colModel: [
- { label: 'ID', name: 'id', width: 30, key: true, hidden: true },
- { label: 'Code', name: 'code', width: 60 },
- { label: '<@spring.message "common.language"/>', name: 'lang', sortable: false, width: 60 },
- { label: 'Value', name: 'value', width: 100, sortable: false },
- { label: '<@spring.message "common.remark"/>', name: 'remark', width: 80, sortable: false }
- ],
- viewrecords: true,
- height: top.$(".content").height()-130,
- rowNum: 15,
- rowList : [15,30,50],
- rownumbers: true,
- rownumWidth: 25,
- autowidth:true,
- multiselect: true,
- pager: "#jqGridPager",
- jsonReader : {
- root: "data.list",
- page: "data.currPage",
- total: "data.totalPage",
- records: "data.totalCount"
- },
- prmNames : {
- page:"page",
- rows:"limit",
- order: "order"
- },
- gridComplete:function(){
- //隐藏grid底部滚动条
- $("#jqGrid").closest(".ui-jqgrid-bdiv").css({ "overflow-x" : "hidden" });
- },
- onSelectAll: function(rowids, status) {
- if (status) {
- toolsBtnHandle();
- }
- },
- onSelectRow: function(rowid,status) {
- toolsBtnHandle();
- }
- });
-});
-//注册select组件
-Vue.component('multiselect', window.VueMultiselect.default);
-//引用vuelidate组件
-Vue.use(window.vuelidate.default);
-//引用校验规则 所有校验规则见 https://vuelidate.netlify.com/#sub-builtin-validators
-var required = window.validators.required;
-var helpers = window.validators.helpers;//引入自定义校验规则助手 helpers
-//自定义规则,校验i18n的lang+code组合不能重复;第一个参数是当前字段值,第二个参数是当前校验的整个对象(此处是vm.data.i18n)
-var checkI18n = function(value, i18n) {
- if (helpers.req(i18n.lang) && helpers.req(value)) {
- var params = "?lang=" + i18n.lang + "&code=" + value;
- if (i18n.id) {
- params = params + "&id=" + i18n.id;
- }
- var flag = true;
- $.ajax({
- type: "get",
- url: baseURL + "sys/i18n/check" + params,
- async: false, //关闭异步,否则会在执行完ajax前就跳到下一段代码
- dataType: "json",
- success: function(r){
- if (r.code != 200) {
- flag = false;
- }
- }
- });
- return flag;
- } else {
- return true;
- }
-}
-
-var vm = new Vue({
- el:'#rrapp',
- data:{
- //single和multi分别控制工具栏的单选、多选按钮的可点击状态
- single: true,
- multi: true,
-
- q:{
- code: null,
- lang: null,
- value: null
- },
- showList: true,
- title: null,
- i18n: {
- code: "",
- lang: "",
- value: "",
- remark: "",
- id: null
- },
- langList: []
- },
- validations: { //定义校验规则
- i18n: {
- code: {
- required,
- checkI18n
- },
- lang: {
- required
- },
- value: {
- required
- }
- }
- },
- methods: {
- query: function () {
- vm.reload();
- },
- getLangList: function(event) { //查字典获取语言种类
- $.getJSON(baseURL + "sys/i18n/getLangList", function(r){
- var langList = [];
- for (var i = 0; i < r.data.length; i++) {
- langList.push(r.data[i]);
- }
- vm.langList = langList;
- });
- },
- add: function(){
- vm.$v.i18n.$reset(); //进入新增页面时,将校验的触发状态清空($dirty=true -> false)
- vm.showList = false;
- vm.title = "<@spring.message 'common.add'/>";
- vm.i18n = {code:null,lang:null,value:null,remark:null,id:null};
- },
- update: function () {
- vm.$v.i18n.$reset(); //进入新增页面时,将校验触发状态清空($dirty=true -> false)
- var id = getSelectedRow();
- if(id == null){
- return ;
- }
- vm.showList = false;
- vm.title = "<@spring.message 'common.edit'/>";
- vm.getInfo(id);
- },
- getInfo: function(id){
- $.get(baseURL + "sys/i18n/detail?id="+id, function(r){
- vm.i18n = r.data;
- });
- },
- del: function (event) {
- var ids = getSelectedRows();
- if(ids == null){
- return ;
- }
- confirm("<@spring.message 'common.confirmDelete'/>", function(){
- $.ajax({
- type: "DELETE",
- url: baseURL + "sys/i18n/delete",
- contentType: "application/json",
- data: JSON.stringify(ids),
- success: function(r){
- if(r.code == 200){
- alert("<@spring.message 'common.success'/>", function(index){
- vm.reload();
- });
- }else{
- alert(r.msg);
- }
- }
- });
- });
- },
- saveOrUpdate: function (event) {
- if (!vm.validate()) { //在下方定义的validate方法
- return;
- }
- var url = vm.i18n.id == null ? "sys/i18n/save" : "sys/i18n/update";
- $.ajax({
- type: vm.i18n.id == null ? "POST" : "PUT",
- url: baseURL + url,
- contentType: "application/json",
- data: JSON.stringify(vm.i18n),
- success: function(r){
- if(r.code === 200){
- alert("<@spring.message 'common.success'/>", function(index){
- vm.reload();
- });
- }else{
- alert(r.msg);
- }
- }
- });
- },
- reload: function (event) {
- vm.single = vm.multi = true;
- vm.showList = true;
- var page = $("#jqGrid").jqGrid('getGridParam','page');
- $("#jqGrid").jqGrid('setGridParam',{
- postData:{'code': vm.q.code, 'lang': vm.q.lang, 'value': vm.q.value},
- page:1
- }).trigger("reloadGrid");
- },
- refresh: function () {
- $.get(baseURL + "sys/i18n/clearCache", function(r){
- parent.location.reload();
- });
- },
- validate: function () {//提交时的校验
- vm.$v.i18n.$touch(); //提交时,不论是否已触发校验,都触发一下($dirty=false -> true)
- return !vm.$v.i18n.$error;
- }
- },
- created: function(){
- this.getLangList();
- }
-});
-</script> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/js/modules/sys/icon.js b/nz-admin/src/main/resources/templates/js/modules/sys/icon.js
deleted file mode 100644
index 3b79db06..00000000
--- a/nz-admin/src/main/resources/templates/js/modules/sys/icon.js
+++ /dev/null
@@ -1,86 +0,0 @@
-<script>
-var data = {
- q: {
- iconName: null // 搜索的名称
- },
- icons: [], // 全部的图标
- selectedIcon: null // 选中的图标
-};
-
-var iconVm = new Vue({
- el: '#wrap',
- data: this.data,
- methods: {
- searchIcons: function () {
- // 搜索之前先展开所有
- $("section").css('display','block');
- $(".fontawesome-icon-list div").css('display','block');
-
- // 如果没有搜索条件则展开所有后直接返回
- if (iconVm.q.iconName == null || iconVm.q.iconName == "") {
- return;
- }
-
- // 查到的集合 (要展示的集合)
- var searchedIcons = [];
- iconVm.icons.forEach(function (item) {
- if (item.indexOf(iconVm.q.iconName) == 0) {
- searchedIcons.push(item);
- }
- })
-
- // 没有查到的集合 (要隐藏的集合)
- var otherIcons = iconVm.icons.filter(function (item) {
- if (searchedIcons.indexOf(item) == -1) {
- $(".fa-"+item).parent().parent().hide();
- return item;
- }
- });
-
- var allIconList = $(".fontawesome-icon-list");
- for (var i = 0; i < allIconList.length; i++) {
- var count = 0;
- var childrens = $(allIconList[i]).children();
- var allLenght = childrens.length;
- for (var j = 0; j < allLenght ; j++) {
- if ($(childrens[j]).is(":hidden")) {
- count++;
- }
- }
- // 如果下方都没有 则隐藏整体
- if (count == allLenght) {
- $(allIconList[i]).parent().hide();
- }
- }
- },
- handleClick: function(event) {
- var paths = event.path;
- for (var i = 0; i < paths.length; i++) {
- if ($(paths[i]).hasClass('fa-hover')) {
- iconVm.selectedIcon = $(paths[i]).text().trim();
- var thatIcon = window.parent.document.getElementById("icon");
- thatIcon.setAttribute('class','fa fa-' + iconVm.selectedIcon + '');
- // window.localStorage.setItem("icon", 'fa fa-'+iconVm.selectedIcon);
- break;
- }
- }
- }
- },
- created: function() {
- var iconStr = $("#icons section div div a").text();
- data.icons = iconStr.split(" ");
-
- data.icons = data.icons.filter(function (item) {
- if (item.length > 0 && item.indexOf("/r") == -1 && item.indexOf("/n") == -1) {
- return item;
- }
- });
- },
- mounted () {
- window.addEventListener('click',this.handleClick)
- },
- destroyed () {
- window.removeEventListener('click',this.handleClick)
- }
-});
-</script> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/js/modules/sys/menu.js b/nz-admin/src/main/resources/templates/js/modules/sys/menu.js
deleted file mode 100644
index 8dcf8719..00000000
--- a/nz-admin/src/main/resources/templates/js/modules/sys/menu.js
+++ /dev/null
@@ -1,273 +0,0 @@
-<script>
-
-var setting = {
- data: {
- simpleData: {
- enable: true,
- idKey: "menuId",
- pIdKey: "parentId",
- rootPId: -1
- },
- key: {
- url:"nourl"
- }
- }
-};
-var ztree;
-
-
-var data = {
- showList: true,
- title: null,
- menu: {
- parentName: null,
- parentId: 0,
- type: 1,
- orderNum: 0,
- icon: null,
- name: null,
- url: null
- }
-}
-
-Vue.use(window.vuelidate.default);
-var required = window.validators.required;
-
-var urlRequired = function (value, menu) {
- if (menu.type === 1) {
- var flag = true;
- if (isBlank(value)) {
- flag = false;
- }
- return flag;
- } else {
- return true;
- }
-}
-
-var vm = new Vue({
- el:'#rrapp',
- data: this.data,
- validations: {
- menu: {
- name: {
- required
- },
- url: {
- urlRequired
- }
- }
- },
- methods: {
- getMenu: function(menuId){
- //加载菜单树
- $.get(baseURL + "sys/menu/select", function(r){
- ztree = $.fn.zTree.init($("#menuTree"), setting, r.menuList);
- var node = ztree.getNodeByParam("menuId", vm.menu.parentId);
- ztree.selectNode(node);
-
- vm.menu.parentName = node.name;
- })
- },
- add: function(){
- vm.$v.menu.$reset();
- vm.showList = false;
- vm.title = "<@spring.message 'common.add'/>";
- vm.menu = {
- parentName: null,
- parentId: 0,
- type: 1,
- orderNum: 0,
- icon: null,
- name: null,
- url: null
- };
- vm.getMenu();
- },
- update: function () {
- vm.$v.menu.$reset();
- var menuId = getMenuId();
- if(menuId == null){
- return ;
- }
- $.get(baseURL + "sys/menu/info/"+menuId, function(r){
- vm.showList = false;
- vm.title = "<@spring.message 'common.edit'/>";
- vm.menu = r.menu;
-
- // 处理图标
- if (vm.menu.icon != null && vm.menu.icon != '') {
- $("#icon").attr('class', vm.menu.icon);
- } else {
- $("#icon").attr('class', null);
- }
-
- vm.getMenu();
- });
- },
- del: function () {
- var menuId = getMenuId();
- if(menuId == null){
- return ;
- }
-
- confirm("<@spring.message 'common.confirmDelete'/>", function(){
- $.ajax({
- type: "POST",
- url: baseURL + "sys/menu/delete",
- data: "menuId=" + menuId,
- success: function(r){
- if(r.code === 200){
- alert("<@spring.message 'common.success'/>", function(){
- vm.reload();
- });
- }else{
- alert(r.msg);
- }
- }
- });
- });
- },
- saveOrUpdate: function () {
- if (!this.validator()) {
- return;
- }
-
- if ($("#icon").attr('class') != undefined) {
- vm.menu.icon = $("#icon").attr('class').trim();
- } else {
- vm.menu.icon = null;
- }
-
- var url = vm.menu.menuId == null ? "sys/menu/save" : "sys/menu/update";
- $.ajax({
- type: "POST",
- url: baseURL + url,
- contentType: "application/json",
- data: JSON.stringify(vm.menu),
- success: function(r){
- if(r.code === 200){
- alert("<@spring.message 'common.success'/>", function(){
- vm.reload();
- });
- }else{
- alert(r.msg);
- }
- }
- });
- },
- menuTree: function(){
- layer.open({
- type: 1,
- offset: '50px',
- skin: 'layui-layer-molv',
- title: "<@spring.message 'common.pleaseSelect'/><@spring.message 'menu.menu'/>",
- area: ['300px', '450px'],
- shade: 0,
- shadeClose: false,
- content: jQuery("#menuLayer"),
- btn: ["<@spring.message 'common.submit'/>", "<@spring.message 'common.back'/>"],
- btn1: function (index) {
- var node = ztree.getSelectedNodes();
- //选择上级菜单
- vm.menu.parentId = node[0].menuId;
- vm.menu.parentName = node[0].name;
-
- layer.close(index);
- }
- });
- },
- reload: function () {
- vm.showList = true;
- Menu.table.refresh();
- $("#icon").attr('class', '');
- },
- validator: function () {
- vm.$v.menu.$touch();
- return !vm.$v.menu.$error;
- },
- getIcon: function() { // 获取图标
- var currentUrl = window.location.href;
- var a = currentUrl.split('/');
- currentUrl = currentUrl.substring(0,currentUrl.indexOf(a[a.length-1]));
- var index = layer.open({
- area: ['75%', '100%'],
- shade: 0.01,
- title: "<@spring.message 'menu.getIcon'/>", // 获取图标
- type: 2,
- fixed: false,
- maxmin: false,
- scrollbar: false,
- offset: 'r',
- closeBtn: 1,
- move: false,
- content: currentUrl+"icons.html"
- });
- },
- cancelIcon: function () {
- vm.menu.icon = '';
- $("#icon").attr('class', '');
- }
- }
-});
-
-
-var Menu = {
- id: "menuTable",
- table: null,
- layerIndex: -1
-};
-
-/**
- * 初始化表格的列
- */
-Menu.initColumn = function () {
- var columns = [
- {field: 'selectItem', radio: true},
- {title: 'ID', field: 'menuId', visible: false, align: 'center', valign: 'middle', width: '80px'},
- {title: "<@spring.message 'common.name'/>", field: 'name', align: 'center', valign: 'middle', sortable: true, width: '180px'},
- {title: "<@spring.message 'menu.parent'/>", field: 'parentName', align: 'center', valign: 'middle', sortable: true, width: '100px'},
- {title: "<@spring.message 'menu.icon'/>", field: 'icon', align: 'center', valign: 'middle', sortable: true, width: '80px', formatter: function(item, index){
- return item.icon == null ? '' : '<i class="'+item.icon+' fa-lg"></i>';
- }},
- {title: "<@spring.message 'menu.type'/>", field: 'type', align: 'center', valign: 'middle', sortable: true, width: '100px', formatter: function(item, index){
- if(item.type === 0){
- return "<span class='label label-primary'><@spring.message 'menu.directory'/></span>";
- }
- if(item.type === 1){
- return "<span class='label label-success'><@spring.message 'menu.menu'/></span>";
- }
- if(item.type === 2){
- return "<span class='label label-warning'><@spring.message 'common.button'/></span>";
- }
- }},
- {title: "<@spring.message 'menu.sortNumber'/>", field: 'orderNum', align: 'center', valign: 'middle', sortable: true, width: '100px'},
- {title: "URL", field: 'URL', align: 'center', valign: 'middle', sortable: true, width: '160px'},
- {title: "<@spring.message 'menu.authority.flag'/>", field: 'perms', align: 'center', valign: 'middle', sortable: true}]
- return columns;
-};
-
-
-function getMenuId () {
- var selected = $('#menuTable').bootstrapTreeTable('getSelections');
- if (selected.length == 0) {
- alert("<@spring.message 'common.selectOne'/>"); // 请选择一条记录
- return null;
- } else {
- return selected[0].id;
- }
-}
-
-
-$(function () {
- var colunms = Menu.initColumn();
- var table = new TreeTable(Menu.id, baseURL + "sys/menu/list", colunms);
- table.setExpandColumn(2);
- table.setIdField("menuId");
- table.setCodeField("menuId");
- table.setParentCodeField("parentId");
- table.setExpandAll(false);
- table.init();
- Menu.table = table;
-});
-</script>
diff --git a/nz-admin/src/main/resources/templates/js/modules/sys/user.js b/nz-admin/src/main/resources/templates/js/modules/sys/user.js
deleted file mode 100644
index 7ff82f70..00000000
--- a/nz-admin/src/main/resources/templates/js/modules/sys/user.js
+++ /dev/null
@@ -1,235 +0,0 @@
-<script>
-$(function () {
- $("#jqGrid").jqGrid({
- url: baseURL + 'sys/user/list',
- datatype: "json",
- colModel: [
- { label: 'ID', name: 'userId', index: "user_id", width: 45, key: true, hidden: true },
- { label: '<@spring.message "user.username"/>', name: 'username', width: 75 },
- { label: '<@spring.message "user.email"/>', name: 'email', width: 90 },
- { label: '<@spring.message "common.status"/>', name: 'status', width: 60, formatter: function(value, options, row){
- return value === 0 ?
- '<span class="label label-danger"><@spring.message "common.disabled"/></span>' :
- '<span class="label label-success"><@spring.message "common.normal"/></span>';
- }},
- { label: '<@spring.message "common.createTime"/>', name: 'createTime', index: "create_time", width: 85}
- ],
- viewrecords: true,
- height: 385,
- rowNum: 10,
- rowList : [10,30,50],
- rownumbers: true,
- rownumWidth: 25,
- autowidth:true,
- multiselect: true,
- pager: "#jqGridPager",
- jsonReader : {
- root: "page.list",
- page: "page.currPage",
- total: "page.totalPage",
- records: "page.totalCount"
- },
- prmNames : {
- page:"page",
- rows:"limit",
- order: "order"
- },
- gridComplete:function(){
- //隐藏grid底部滚动条
- $("#jqGrid").closest(".ui-jqgrid-bdiv").css({ "overflow-x" : "hidden" });
- }
- });
-});
-var setting = {
- data: {
- simpleData: {
- enable: true,
- idKey: "deptId",
- pIdKey: "parentId",
- rootPId: -1
- },
- key: {
- url:"nourl"
- }
- }
-};
-var ztree;
-//引用vuelidate组件
-Vue.use(window.vuelidate.default);
-//引用校验规则 所有校验规则见 https://vuelidate.netlify.com/#sub-builtin-validators
-var required = window.validators.required;
-var email = window.validators.email;
-var helpers = window.validators.helpers;//引入自定义校验规则助手 helpers
-//自定义规则,校验业务系统名称不能重复;
-var checkName = function(value, user) {
- if (helpers.req(user.username) && helpers.req(value)) {
- var params = "?name=" + user.username;
- if (user.userId) {
- params = params + "&id=" + user.userId;
- }
- var flag = true;
- $.ajax({
- type: "get",
- url: baseURL + "sys/user/nameCheck" + params,
- async: false, //关闭异步,否则会在执行完ajax前就跳到下一段代码
- dataType: "json",
- success: function(r){
- console.info(r)
- if (r.code != 200) {
- flag = false;
- }
- }
- });
- return flag;
- } else {
- return true;
- }
-}
-var vm = new Vue({
- el:'#rrapp',
- data:{
- q:{
- username: null
- },
- showList: true,
- title:null,
- roleList:{},
- user:{
- status:1,
- deptId:null,
- deptName:null,
- roleIdList:[],
- username: '',
- userId: null,
- password: '',
- email: ''
- }
- },
- validations: function() { //定义校验规则
- var valid = {
- user: {
- username: {
- required,
- checkName
- },
- email: {
- required,
- email
- },
- password: {required}
- }
- };
- /*if (!this.user.userId) {
- valid.user.password = {required};
- }
- console.info(valid)*/
- return valid;
- },
- methods: {
- query: function () {
- vm.reload();
- },
- add: function(){
- vm.showList = false;
- vm.title = "<@spring.message 'common.add'/>";
- vm.roleList = {};
- vm.user = {deptName:null, deptId:null, status:1, roleIdList:[], usergroupIds: [], username: '', userId: null, password: '', email: ''};
-
- //获取角色信息
- this.getRoleList();
-
- //vm.getDept();
- },
- update: function () {
- var userId = getSelectedRow();
- if(userId == null){
- return ;
- }
-
- vm.showList = false;
- vm.title = "<@spring.message 'common.edit'/>";
-
- vm.getUser(userId);
- //获取角色信息
- this.getRoleList();
- },
- permissions: function () {
- var userId = getSelectedRow();
- if(userId == null){
- return ;
- }
-
- window.location.href=baseURL+"sys/permissions/index/"+userId;
- },
- del: function () {
- var userIds = getSelectedRows();
- if(userIds == null){
- return ;
- }
-
- confirm("<@spring.message 'common.confirmDelete'/>", function(){
- $.ajax({
- type: "POST",
- url: baseURL + "sys/user/delete",
- contentType: "application/json",
- data: JSON.stringify(userIds),
- success: function(r){
- if(r.code == 200){
- alert("<@spring.message 'common.success'/>", function(){
- vm.reload();
- });
- }else{
- alert(r.msg);
- }
- }
- });
- });
- },
- saveOrUpdate: function () {
- if (!vm.validate()) { //在下方定义的validate方法
- return;
- }
- var url = vm.user.userId == null ? "sys/user/save" : "sys/user/update";
- $.ajax({
- type: "POST",
- url: baseURL + url,
- contentType: "application/json",
- data: JSON.stringify(vm.user),
- success: function(r){
- if(r.code === 200){
- alert("<@spring.message 'common.success'/>", function(){
- vm.reload();
- });
- }else{
- alert(r.msg);
- }
- }
- });
- },
- getUser: function(userId){
- $.get(baseURL + "sys/user/info/"+userId, function(r){
- vm.user = r.user;
-
- //vm.getDept();
- });
- },
- getRoleList: function(){
- $.get(baseURL + "sys/role/select", function(r){
- vm.roleList = r.list;
- });
- },
- reload: function () {
- vm.showList = true;
- var page = $("#jqGrid").jqGrid('getGridParam','page');
- $("#jqGrid").jqGrid('setGridParam',{
- postData:{'username': vm.q.username},
- page:1
- }).trigger("reloadGrid");
- },
- validate: function () {//提交时的校验
- vm.$v.user.$touch(); //提交时,不论是否已触发校验,都触发一下($dirty=false -> true)
- return !vm.$v.user.$error;
- }
- }
-});
-</script> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/login.html b/nz-admin/src/main/resources/templates/login.html
deleted file mode 100644
index a2f450bd..00000000
--- a/nz-admin/src/main/resources/templates/login.html
+++ /dev/null
@@ -1,173 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>NEZHA</title>
- <!-- Tell the browser to be responsive to screen width -->
- <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
- <link rel="stylesheet" href="${request.contextPath}/statics/css/bootstrap.min.css">
- <link rel="stylesheet" href="${request.contextPath}/statics/css/font-awesome.min.css">
- <link rel="stylesheet" href="${request.contextPath}/statics/css/AdminLTE.min.css">
- <link rel="stylesheet" href="${request.contextPath}/statics/libs/vue-multiselect.min.css">
- <!-- AdminLTE Skins. Choose a skin from the css/skins
- folder instead of downloading all of them to reduce the load. -->
- <link rel="stylesheet" href="${request.contextPath}/statics/css/all-skins.min.css">
- <link rel="stylesheet" href="${request.contextPath}/statics/css/main.css">
- <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
- <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
- <!--[if lt IE 9]>
- <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
- <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
- <![endif]-->
- <style>
- .select2-container--default .select2-selection--single .select2-selection__arrow {
- top: 4px;
- }
- .select2-container--default .select2-selection--single .select2-selection__rendered {
- line-height: 28px;
- }
- </style>
-</head>
-<body class="hold-transition login-page">
-<div class="login-box" id="rrapp" style="min-height: 500px;" v-cloak>
- <div class="login-logo">
- <b>NEZHA</b>
- </div>
- <!-- /.login-logo -->
- <div class="login-box-body" v-show="showLogin">
- <p class="login-box-msg">Login</p>
- <div v-if="error" class="alert alert-danger alert-dismissible">
- <h4 style="margin-bottom: 0px;"><i class="fa fa-exclamation-triangle"></i> {{errorMsg}}</h4>
- </div>
- <div class="form-group has-feedback">
- <input type="text" class="form-control" v-model="username" placeholder="账号" @keyup.enter="login">
- <span class="glyphicon glyphicon-user form-control-feedback"></span>
- </div>
- <div class="form-group has-feedback">
- <input type="password" class="form-control" v-model="password" placeholder="密码" @keyup.enter="login">
- <span class="glyphicon glyphicon-lock form-control-feedback"></span>
- </div>
- <!-- <div class="form-group has-feedback">
- <input type="text" class="form-control" v-model="captcha" @keyup.enter="login" placeholder="验证码">
- <span class="glyphicon glyphicon-warning-sign form-control-feedback"></span>
- </div>
- <div class="form-group has-feedback">
- <img alt="如果看不清楚,请单击图片刷新!" class="pointer" :src="src" @click="refreshCode">
- &nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:;" @click="refreshCode">点击刷新</a>
- </div> -->
-
-
- <div class="row">
- <div class="col-xs-10">
- <div class="checkbox icheck">
- </div>
- </div>
- <!-- /.col -->
- <div class="col-xs-2 btn-login">
- <button type="button" class="btn btn-primary btn-block btn-flat" @click="login"><i class="fa fa-sign-in"></i></button>
- </div>
- <!-- /.col -->
- </div>
- <!-- /.social-auth-links -->
-
- </div>
- <!-- /.login-box-body -->
-
-
-</div>
-<!-- /.login-box -->
-
-<script src="${request.contextPath}/statics/libs/jquery.min.js"></script>
-<script src="${request.contextPath}/statics/libs/vue.min.js"></script>
-<script src="${request.contextPath}/statics/libs/vue-multiselect.min.js"></script>
-<script src="${request.contextPath}/statics/libs/vuelidate.min.js"></script>
-<script src="${request.contextPath}/statics/libs/validators.min.js"></script>
-<script src="${request.contextPath}/statics/libs/bootstrap.min.js"></script>
-<script src="${request.contextPath}/statics/libs/jquery.slimscroll.min.js"></script>
-<script src="${request.contextPath}/statics/libs/fastclick.min.js"></script>
-<script src="${request.contextPath}/statics/plugins/layer/layer.js"></script>
-<script src="${request.contextPath}/statics/libs/app.js"></script>
-<script type="text/javascript">
-//注册select组件
-Vue.component('multiselect', window.VueMultiselect.default);
-//引用vuelidate组件
-Vue.use(window.vuelidate.default);
-//引用校验规则
-var required = window.validators.required;
-
-var vm = new Vue({
- el:'#rrapp',
- data:{
- username: '',
- password: '',
- captcha: '',
- error: false,
- errorMsg: '',
- src: 'captcha.jpg',
- showLogin: true
- },
- validations: {
- username: {
- required
- },
- password: {
- required
- }/* ,
- captcha: {
- required
- } */
- },
- beforeCreate: function(){
- if(self != top){
- top.location.href = self.location.href;
- }
- },
- methods: {
- refreshCode: function(){
- this.src = "captcha.jpg?t=" + $.now();
- },
- login: function (event) {
- var flag = true;
- var errMsg = "";
- if (!vm.$v.username.required) {
- errMsg = errMsg + "Username "
- flag = false;
- }
- if (!vm.$v.password.required) {
- errMsg = errMsg + "Password "
- flag = false;
- }
- /* if (!vm.$v.captcha.required) {
- errMsg = errMsg + "验证码 ";
- flag = false;
- } */
- if (!flag) {
- errMsg = errMsg + "is/are required.";
- vm.errorMsg = errMsg;
- vm.error = true;
- return;
- }
- var data = "username="+vm.username+"&password="+vm.password/* +"&captcha="+vm.captcha */;
- $.ajax({
- type: "POST",
- url: "sys/login",
- data: data,
- dataType: "json",
- success: function(result){
- if(result.code == 200){//登录成功
- location.href = 'index.html';
- }else{
- vm.error = true;
- vm.errorMsg = result.msg;
- vm.captcha = "";
- //vm.refreshCode();
- }
- }
- });
- }
- }
-});
-</script>
-</body>
-</html>
diff --git a/nz-admin/src/main/resources/templates/main.html b/nz-admin/src/main/resources/templates/main.html
deleted file mode 100644
index 53d40516..00000000
--- a/nz-admin/src/main/resources/templates/main.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>欢迎页</title>
- <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
- <link rel="stylesheet" href="${request.contextPath}/statics/css/bootstrap.min.css">
-</head>
-<body>
-<div class="panel panel-default">
- <div class="panel-heading">基本信息</div>
- <div style="padding: 10px 0 20px 10px;">
- <h3>&nbsp;&nbsp;&nbsp;项目介绍</h3>
- <ul>
- <li>采用Spring、MyBatis、Shiro框架,开发的一套权限系统,极低门槛,拿来即用。</li>
- <li>设计之初,就非常注重安全性,为企业系统保驾护航,让一切都变得如此简单。</li>
- <li>提供了代码生成器,只需编写30%左右代码,其余的代码交给系统自动生成,可快速完成开发任务</li>
- <li>推荐使用阿里云服务器部署项目,免费领取阿里云优惠券,请点击【<a href="https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=y93lfwbg&amp;productCode=dmspre&amp;utm_source=y93lfwbg" target="_blank">免费领取</a>】</li>
- </ul>
-
- <h3>&nbsp;&nbsp;&nbsp;获取帮助</h3>
- <ul>
- <li>Git地址:<a href="https://gitee.com/nezhaio/nezha-web" target="_blank">https://gitee.com/nezhaio/nezha-web</a></li>
- <li>官方社区:<a href="https://www.nezha.io/community" target="_blank">https://www.nezha.io/community</a></li>
- <li>如需关注项目最新动态,请Watch、Star项目,同时也是对项目最好的支持</li>
- </ul>
-
- <h3>&nbsp;&nbsp;&nbsp;官方QQ群</h3>
- <ul>
- <li>高级群:324780204(大牛云集,跟大牛学习新技能)</li>
- <li>普通群:145799952(学习交流,互相解答各种疑问)</li>
- </ul>
- </div>
-</div>
-</body>
-</html> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/modules/job/schedule.html b/nz-admin/src/main/resources/templates/modules/job/schedule.html
deleted file mode 100644
index 8d88de11..00000000
--- a/nz-admin/src/main/resources/templates/modules/job/schedule.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>定时任务</title>
-<#include "/header.html">
-</head>
-<body>
-<div id="rrapp" v-cloak>
- <div v-show="showList">
- <div class="grid-btn" style="height:34px;">
- <div class="form-group col-sm-2">
- <input type="text" class="form-control" v-model="q.beanName" @keyup.enter="query" placeholder="bean名称">
- </div>
- <a class="btn btn-default" @click="query">查询</a>
-
- <#if shiro.hasPermission("sys:schedule:save")>
- <a class="btn btn-primary" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</a>
- </#if>
- <#if shiro.hasPermission("sys:schedule:update")>
- <a class="btn btn-primary" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</a>
- </#if>
- <#if shiro.hasPermission("sys:schedule:delete")>
- <a class="btn btn-primary" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</a>
- </#if>
- <#if shiro.hasPermission("sys:schedule:pause")>
- <a class="btn btn-primary" @click="pause"><i class="fa fa-pause"></i>&nbsp;暂停</a>
- </#if>
- <#if shiro.hasPermission("sys:schedule:resume")>
- <a class="btn btn-primary" @click="resume"><i class="fa fa-play"></i>&nbsp;恢复</a>
- </#if>
- <#if shiro.hasPermission("sys:schedule:run")>
- <a class="btn btn-primary" @click="runOnce"><i class="fa fa-arrow-circle-right"></i>&nbsp;立即执行</a>
- </#if>
- <#if shiro.hasPermission("sys:schedule:log")>
- <a class="btn btn-danger" style="float:right;" href="schedule_log.html">日志列表</a>
- </#if>
- </div>
- <table id="jqGrid"></table>
- <div id="jqGridPager"></div>
- </div>
-
- <div v-show="!showList" class="panel panel-default">
- <div class="panel-heading">{{title}}</div>
- <form class="form-horizontal">
- <div class="form-group">
- <div class="col-sm-2 control-label">bean名称</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="schedule.beanName" placeholder="spring bean名称,如:testTask"/>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label">参数</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="schedule.params" placeholder="参数"/>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label">cron表达式</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="schedule.cronExpression" placeholder="如:0 0 12 * * ?"/>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label">备注</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="schedule.remark" placeholder="备注"/>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label"></div>
- <input type="button" class="btn btn-primary" @click="saveOrUpdate" value="确定"/>
- &nbsp;&nbsp;<input type="button" class="btn btn-warning" @click="reload" value="返回"/>
- </div>
- </form>
- </div>
-</div>
-
-<script src="${request.contextPath}/statics/js/modules/job/schedule.js?_${.now?long}"></script>
-</body>
-</html> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/modules/job/schedule_log.html b/nz-admin/src/main/resources/templates/modules/job/schedule_log.html
deleted file mode 100644
index b1f12523..00000000
--- a/nz-admin/src/main/resources/templates/modules/job/schedule_log.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>定时任务日志</title>
-<#include "/header.html">
-</head>
-<body>
-<div id="rrapp">
- <div class="grid-btn">
- <div class="form-group col-sm-2">
- <input type="text" class="form-control" v-model="q.jobId" @keyup.enter="query" placeholder="任务ID">
- </div>
- <a class="btn btn-default" @click="query">查询</a>
- &nbsp;&nbsp;<input type="button" class="btn btn-warning" @click="back" value="返回"/>
- </div>
- <table id="jqGrid"></table>
- <div id="jqGridPager"></div>
-</div>
-
-<script src="${request.contextPath}/statics/js/modules/job/schedule_log.js?_${.now?long}"></script>
-</body>
-</html> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/modules/romote/console.html b/nz-admin/src/main/resources/templates/modules/romote/console.html
deleted file mode 100644
index 084fa2b3..00000000
--- a/nz-admin/src/main/resources/templates/modules/romote/console.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <title>Terminal</title>
- <#include "/header.html">
- <style type="text/css">
- html {
- /*overflow: hidden;*/
- }
- .navbar {
- position: unset;
- margin-bottom: 0px;
- border-radius: 0px;
- float: unset;
- width: 100%;
- left: 0px;
- min-height: 45px;
- font-size: 15px;
- }
- </style>
-</head>
-<body style="background-color: #F8F8F8;" >
-<div id="terminalwin">
- <div id="appbar" class="navbar navbar-default" role="navigation">
- <div class="container">
- <div>
- <ul class="nav navbar-nav">
-
- <li class="dropdown">
- <a href="javascript:void(0)" class="dropdown-toggle" data-toggle="dropdown" title="常用操作"><i aria-hidden="true" class="fa fa-server"></i>&nbsp;操作<b class="caret"></b></a>
- <ul class="dropdown-menu" >
- <li><a href="" target="_blank" title="克隆会话">&nbsp;克隆会话</a></li>
- <li><a href="javascript:void(0)" @click="upload" title="上传文件">&nbsp;上传文件</a></li>
- </ul>
- <input id="tokenSpace" type="hidden" v-model="curToken" value=""/>
- </li>
-
- <li class="dropdown">
- <a href="javascript:void(0)" class="dropdown-toggle" data-toggle="dropdown" title="主题"><i aria-hidden="true" class="fa fa-gear"></i>&nbsp;主题<b class="caret"></b></a>
- <ul class="dropdown-menu theme" >
- <li><a theme="default" href="javascript:void(0)"><span class="circle" style="background-color:#dddddd"></span>&nbsp;默认</a></li>
- <li><a theme="gray" href="javascript:void(0)"><span class="circle" style="background-color:gray"></span>&nbsp;灰色</a></li>
- <li><a theme="green" href="javascript:void(0)"><span class="circle" style="background-color:green"></span>&nbsp;绿色</a></li>
- <li><a theme="black" href="javascript:void(0)"><span class="circle" style="background-color:black"></span>&nbsp;黑色</a></li>
- </ul>
- </li>
-
- <li><a href="" title="退出终端" data-toggle="tooltip"><i aria-hidden="true" class="fa fa-power-off"></i>&nbsp;退出</a></li>
-
- <li id="sendNode" style="padding-top: 11px;margin-left: 18px;">
- <label style="color:#777;font-weight: normal; "><i aria-hidden="true" class="fa fa-send"></i>&nbsp;<span id="sendLabel">命令</span></label>&nbsp;&nbsp;<input id="sendInput" class="send-input" v-model="sendAllCmd" size="30" placeholder="发送到所有终端会话请在这里输入" type="text">
- &nbsp;<div class="btn btn-success btn-sm" id="sendBtn">发送</div>
- </li>
- </ul>
- </div>
- </div>
- </div>
- <div>
- <ul class="nav nav-tabs" id="apphead">
- <template v-for="(terminal,index) in terminals" >
- <nz-terminal
- :token="terminal.token"
- :account-id="terminal.accountId"
- :name="terminal.name"
- :is-new="terminal.isNew"
- :index="index"
- ref="nzTerminal"
- :hide-alldom="hideAllDom"
- @sign-current-win="signCurrentWin"
- @close-win="closeWinWithToken"
- ></nz-terminal>
- </template>
- </ul>
- <div id="terminal-context"></div>
- </div>
- <div id="upload_push" class="modal fade" >
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
- <h4 class="modal-title">文件上传</h4>
- </div>
- <div class="modal-body">
- <form enctype="multipart/form-data">
- <div class="input-group" style="padding-bottom:12px">
- <span class="input-group-addon">上传路径</span>
- <input type="text" id="path" class="form-control col-lg-13" placeholder="请输入文件上传路径,默认在当前终端所在的路径下">
- </div>
- <input id="file" name="file" type="file">
- <div id="errorBlock" class="help-block"></div>
- </form>
- </div>
- </div>
- </div>
- </div>
-</div>
-<script type="text/x-template" id="nzConsole">
- <li role="presentation" class="terminal-head" :id="'terminal-head-'+accountId+'-'+token">
- <a href="#">{{name}}<i class="fa fa-remove tab-close" @click="closeSelf"></i></a>
-
- <div :id="'terminal-container-'+accountId+'-'+token"></div>
- </li>
-</script>
-<#include "/js/modules/romote/main.js">
-<#include "/js/modules/romote/console.js">
-</body>
-</html> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/modules/romote/romote.html b/nz-admin/src/main/resources/templates/modules/romote/romote.html
deleted file mode 100644
index 747af124..00000000
--- a/nz-admin/src/main/resources/templates/modules/romote/romote.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <title>Terminal</title>
- <#include "/header.html">
-
-</head>
-<body style="background-color: #F8F8F8;">
-<div id="terminalWindow">
- <div ><input type="button" @click="openTerminal(1)" value="open"></div>
-
-</div>
-<#include "/js/modules/romote/main.js">
-<#include "/js/modules/romote/romote.js">
-</body>
-
-</html> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/modules/sys/config.html b/nz-admin/src/main/resources/templates/modules/sys/config.html
deleted file mode 100644
index d5c0fcbb..00000000
--- a/nz-admin/src/main/resources/templates/modules/sys/config.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>参数管理</title>
-<#include "/header.html">
-</head>
-<body>
-<div id="rrapp" v-cloak>
- <div v-show="showList">
- <div class="grid-btn">
- <div class="form-group col-sm-2">
- <input type="text" class="form-control" v-model="q.paramKey" @keyup.enter="query" placeholder="参数名">
- </div>
- <a class="btn btn-default" @click="query">查询</a>
-
- <a class="btn btn-primary" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</a>
- <a class="btn btn-primary" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</a>
- <a class="btn btn-primary" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</a>
- </div>
- <table id="jqGrid"></table>
- <div id="jqGridPager"></div>
- </div>
-
- <div v-show="!showList" class="panel panel-default">
- <div class="panel-heading">{{title}}</div>
- <form class="form-horizontal">
- <div class="form-group">
- <div class="col-sm-2 control-label">参数名</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="config.paramKey" placeholder="参数名"/>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label">参数值</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="config.paramValue" placeholder="参数值"/>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label">备注</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="config.remark" placeholder="备注"/>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label"></div>
- <input type="button" class="btn btn-primary" @click="saveOrUpdate" value="确定"/>
- &nbsp;&nbsp;<input type="button" class="btn btn-warning" @click="reload" value="返回"/>
- </div>
- </form>
- </div>
-</div>
-
-<script src="${request.contextPath}/statics/js/modules/sys/config.js?_${.now?long}"></script>
-</body>
-</html> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/modules/sys/dict.html b/nz-admin/src/main/resources/templates/modules/sys/dict.html
deleted file mode 100644
index e5501657..00000000
--- a/nz-admin/src/main/resources/templates/modules/sys/dict.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <title>字典管理</title>
- <#include "/header.html">
-</head>
-<body>
-<div id="rrapp" v-cloak>
- <div v-show="showList">
- <div class="grid-btn">
- <div class="form-group col-sm-2">
- <input type="text" class="form-control" v-model="q.name" @keyup.enter="query" placeholder="字典名称">
- </div>
- <a class="btn btn-default" @click="query">查询</a>
- <#if shiro.hasPermission("sys:dict:save")>
- <a class="btn btn-primary" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</a>
- </#if>
- <#if shiro.hasPermission("sys:dict:update")>
- <a class="btn btn-primary" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</a>
- </#if>
- <#if shiro.hasPermission("sys:dict:delete")>
- <a class="btn btn-primary" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</a>
- </#if>
- </div>
- <table id="jqGrid"></table>
- <div id="jqGridPager"></div>
- </div>
-
- <div v-show="!showList" class="panel panel-default">
- <div class="panel-heading">{{title}}</div>
- <form class="form-horizontal">
- <div class="form-group">
- <div class="col-sm-2 control-label">字典名称</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="dict.name" placeholder="字典名称"/>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label">字典类型</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="dict.type" placeholder="字典类型"/>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label">字典码</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="dict.code" placeholder="字典码"/>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label">字典值</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="dict.value" placeholder="字典值"/>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label">排序</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="dict.orderNum" placeholder="排序"/>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label">备注</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="dict.remark" placeholder="备注"/>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label"></div>
- <input type="button" class="btn btn-primary" @click="saveOrUpdate" value="确定"/>
- &nbsp;&nbsp;<input type="button" class="btn btn-warning" @click="reload" value="返回"/>
- </div>
- </form>
- </div>
-</div>
-
-<script src="${request.contextPath}/statics/js/modules/sys/dict.js?_${.now?long}"></script>
-</body>
-</html> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/modules/sys/i18n.html b/nz-admin/src/main/resources/templates/modules/sys/i18n.html
deleted file mode 100644
index 2341e7a3..00000000
--- a/nz-admin/src/main/resources/templates/modules/sys/i18n.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html>
-<#import "/spring.ftl" as spring>
-<html>
-<head>
-<title>国际化管理</title>
-<#include "/header.html">
-</head>
-<body>
-<div id="rrapp" v-cloak>
- <div v-show="showList">
- <div class="tools">
- <div class="form-group">
- <input type="text" class="form-control input-medium" v-model="q.code" @keyup.enter="query" placeholder="Code">
- </div>
- <div class="form-group">
- <input type="text" class="form-control input-medium" v-model="q.value" @keyup.enter="query" placeholder="Value">
- </div>
- <div class="form-group">
- <multiselect class="input-medium" v-model="q.lang" :options="langList" placeholder="<@spring.message 'common.language'/>" :show-labels="false"></multiselect>
- </div>
- <a class="btn btn-default btn-search" @click="query" title="<@spring.message 'common.search'/>"><i class="fa fa-search"></i></a>
- <a class="btn btn-primary" @click="add" title="<@spring.message 'common.add'/>"><i class="fa fa-plus"></i></a>
- <a :disabled="single" class="btn btn-primary" @click="update" title="<@spring.message 'common.edit'/>"><i class="fa fa-pencil"></i></a>
- <a :disabled="multi" class="btn btn-primary" @click="del" title="<@spring.message 'common.delete'/>"><i class="fa fa-trash-o"></i></a>
- <a class="btn btn-success" @click="refresh" title="<@spring.message 'sys.i18n.refresh'/>"><i class="fa fa-refresh"></i></a>
- </div>
- <table id="jqGrid"></table>
- <div id="jqGridPager"></div>
- </div>
-
- <div v-show="!showList" class="panel panel-default">
- <div class="panel-heading">{{title}}</div>
- <form class="form-horizontal">
- <div class="form-group">
- <div class="col-sm-2 control-label">Code</div>
- <div class="col-sm-9">
- <input type="text" class="form-control" :class="{'form-control--error': $v.i18n.code.$dirty && $v.i18n.code.$error}" v-model.trim="$v.i18n.code.$model"/>
- <span class="required-symbol">*</span>
- <div class="form-control_error-msg" v-if="$v.i18n.code.$dirty && !$v.i18n.code.required"><@spring.message 'validate.common.required'/></div>
- <div class="form-control_error-msg" v-if="$v.i18n.code.$dirty && !$v.i18n.code.checkI18n"><@spring.message 'validate.common.duplicate'/></div>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label"><@spring.message "common.language"/></div>
- <div class="col-sm-9">
- <multiselect v-model="$v.i18n.lang.$model" :options="langList" placeholder="<@spring.message 'common.pleaseSelect'/>" :class="{'form-control--error': $v.i18n.lang.$dirty && $v.i18n.lang.$error}" :show-labels="false"></multiselect>
- <span class="required-symbol">*</span>
- <div class="form-control_error-msg" v-if="$v.i18n.lang.$dirty && !$v.i18n.lang.required"><@spring.message 'validate.common.required'/></div>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label">Value</div>
- <div class="col-sm-9">
- <input type="text" class="form-control" :class="{'form-control--error': $v.i18n.value.$dirty && $v.i18n.value.$error}" v-model.trim="$v.i18n.value.$model"/>
- <span class="required-symbol">*</span>
- <div class="form-control_error-msg" v-if="$v.i18n.value.$dirty && !$v.i18n.value.required"><@spring.message 'validate.common.required'/></div>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label"><@spring.message "common.remark"/></div>
- <div class="col-sm-9">
- <input type="text" class="form-control" v-model="i18n.remark"/>
- </div>
- </div>
- <div class="form-group form-group_opbox">
- <div>
- <button title="<@spring.message 'common.submit'/>" type="button" class="btn btn-primary" style="width: 55px" @click="saveOrUpdate"><i class="fa fa-check"></i></button>
- <div style="display:inline-block;width:10px;"></div>
- <button title="<@spring.message 'common.back'/>" type="button" class="btn btn-warning" style="width: 55px" @click="reload"><i class="fa fa-reply"></i></button>
- </div>
- </div>
- </form>
- </div>
-</div>
-<#include "/js/modules/sys/i18n.js">
-</body>
-</html> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/modules/sys/icons.html b/nz-admin/src/main/resources/templates/modules/sys/icons.html
deleted file mode 100644
index 5047f75f..00000000
--- a/nz-admin/src/main/resources/templates/modules/sys/icons.html
+++ /dev/null
@@ -1,1037 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <title>Font Awesome</title>
-
- <style>
- .row {
- border: 0 !important;
- }
-
- h3 {
- border-bottom: 2px solid #ddd !important;
- }
-
- .fancybox-margin {
- margin-right: 17px;
- }
-
- .fontawesome-icon-list .fa-hover a {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- display: block;
- color: #222;
- line-height: 32px;
- height: 32px;
- padding-left: 10px;
- border-radius: 4px;
- }
-
- .fontawesome-icon-list .fa-hover a .fa {
- width: 32px;
- font-size: 14px;
- display: inline-block;
- text-align: right;
- margin-right: 10px;
- }
- </style>
-
- <#include "/header.html">
-</head>
-<body class="font-awesome">
-<div id="wrap">
- <div class="container" data-view="search">
- <div class="row">
- <div class="col-md-10 col-sm-9">
- <section id="search">
- <input id="search-input" class="form-control input-lg" placeholder="Search icons" autocomplete="off"
- spellcheck="false" autocorrect="off" tabindex="1" v-model="q.iconName" @keyup="searchIcons">
- </section>
- </div>
- </div>
- <div id="icons">
- <section id="web-application">
- <h3 class="page-header">Web Application Icons</h3>
- <div class="row fontawesome-icon-list">
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;">
- <i class="fa fa-address-book" aria-hidden="true"></i> address-book</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i class="fa fa-address-book-o" aria-hidden="true"></i> address-book-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i class="fa fa-address-card" aria-hidden="true"></i> address-card</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i class="fa fa-address-card-o" aria-hidden="true"></i> address-card-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i class="fa fa-archive" aria-hidden="true"></i> archive</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i class="fa fa-area-chart" aria-hidden="true"></i> area-chart</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i class="fa fa-arrows" aria-hidden="true"></i> arrows</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i class="fa fa-arrows-h" aria-hidden="true"></i> arrows-h</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i class="fa fa-arrows-v" aria-hidden="true"></i> arrows-v</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i class="fa fa-at" aria-hidden="true"></i> at</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i class="fa fa-ban" aria-hidden="true"></i> ban</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i class="fa fa-bar-chart" aria-hidden="true"></i> bar-chart</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i class="fa fa-bar-chart-o" aria-hidden="true"></i> bar-chart-o
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-bars" aria-hidden="true"></i> bars</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-bell" aria-hidden="true"></i> bell</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-bell-o" aria-hidden="true"></i> bell-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-bell-slash" aria-hidden="true"></i> bell-slash</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-bell-slash-o" aria-hidden="true"></i> bell-slash-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-bluetooth-b" aria-hidden="true"></i> bluetooth-b</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-bolt" aria-hidden="true"></i> bolt</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-book" aria-hidden="true"></i> book</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-bookmark" aria-hidden="true"></i> bookmark</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-bookmark-o" aria-hidden="true"></i> bookmark-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-briefcase" aria-hidden="true"></i> briefcase</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-bug" aria-hidden="true"></i> bug</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-bullhorn" aria-hidden="true"></i> bullhorn</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-calculator" aria-hidden="true"></i> calculator</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-calendar" aria-hidden="true"></i> calendar</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-calendar-check-o"
- aria-hidden="true"></i> calendar-check-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-calendar-minus-o"
- aria-hidden="true"></i> calendar-minus-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-calendar-o" aria-hidden="true"></i> calendar-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-calendar-plus-o"
- aria-hidden="true"></i> calendar-plus-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-calendar-times-o"
- aria-hidden="true"></i> calendar-times-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-cc" aria-hidden="true"></i> cc</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-certificate" aria-hidden="true"></i> certificate</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-check" aria-hidden="true"></i> check</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-check-circle" aria-hidden="true"></i> check-circle</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-check-circle-o" aria-hidden="true"></i> check-circle-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-circle" aria-hidden="true"></i> circle</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-circle-o" aria-hidden="true"></i> circle-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-circle-o-notch" aria-hidden="true"></i> circle-o-notch</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-circle-thin" aria-hidden="true"></i> circle-thin</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-clock-o" aria-hidden="true"></i> clock-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-clone" aria-hidden="true"></i> clone</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-close" aria-hidden="true"></i> close
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-cloud" aria-hidden="true"></i> cloud</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-cloud-download" aria-hidden="true"></i> cloud-download</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-cloud-upload" aria-hidden="true"></i> cloud-upload</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-code" aria-hidden="true"></i> code</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-cube" aria-hidden="true"></i> cube</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-cubes" aria-hidden="true"></i> cubes</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-database" aria-hidden="true"></i> database</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-desktop" aria-hidden="true"></i> desktop</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-dot-circle-o" aria-hidden="true"></i> dot-circle-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-download" aria-hidden="true"></i> download</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-edit"
- aria-hidden="true"></i> edit</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-envelope" aria-hidden="true"></i> envelope</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-envelope-o" aria-hidden="true"></i> envelope-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-envelope-open"
- aria-hidden="true"></i> envelope-open</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-envelope-open-o"
- aria-hidden="true"></i> envelope-open-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-envelope-square"
- aria-hidden="true"></i> envelope-square</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-eraser" aria-hidden="true"></i> eraser</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-exchange" aria-hidden="true"></i> exchange</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-exclamation" aria-hidden="true"></i> exclamation</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i
- class="fa fa-exclamation-circle" aria-hidden="true"></i> exclamation-circle</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i
- class="fa fa-exclamation-triangle" aria-hidden="true"></i> exclamation-triangle</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-external-link"
- aria-hidden="true"></i> external-link</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i
- class="fa fa-external-link-square" aria-hidden="true"></i> external-link-square</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-eye" aria-hidden="true"></i> eye</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-eye-slash" aria-hidden="true"></i> eye-slash</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-eyedropper" aria-hidden="true"></i> eyedropper</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-film" aria-hidden="true"></i> film</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-flag" aria-hidden="true"></i> flag</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-flash" aria-hidden="true"></i> flash
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-gear" aria-hidden="true"></i> gear
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-gears" aria-hidden="true"></i> gears
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-globe" aria-hidden="true"></i> globe</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-group" aria-hidden="true"></i> group
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-hashtag" aria-hidden="true"></i> hashtag</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-hdd-o" aria-hidden="true"></i> hdd-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-history" aria-hidden="true"></i> history</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-home" aria-hidden="true"></i> home</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-i-cursor" aria-hidden="true"></i> i-cursor</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-id-badge" aria-hidden="true"></i> id-badge</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-id-card" aria-hidden="true"></i> id-card</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-id-card-o" aria-hidden="true"></i> id-card-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-image" aria-hidden="true"></i> image
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-inbox" aria-hidden="true"></i> inbox</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-industry" aria-hidden="true"></i> industry</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-info" aria-hidden="true"></i> info</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-info-circle" aria-hidden="true"></i> info-circle</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-key" aria-hidden="true"></i> key</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-keyboard-o" aria-hidden="true"></i> keyboard-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-language" aria-hidden="true"></i> language</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-laptop" aria-hidden="true"></i> laptop</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-leaf" aria-hidden="true"></i> leaf</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-life-bouy" aria-hidden="true"></i> life-bouy
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-life-buoy" aria-hidden="true"></i> life-buoy
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-life-ring" aria-hidden="true"></i> life-ring</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-life-saver" aria-hidden="true"></i> life-saver
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-lightbulb-o" aria-hidden="true"></i> lightbulb-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-location-arrow" aria-hidden="true"></i> location-arrow</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-lock" aria-hidden="true"></i> lock</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-low-vision" aria-hidden="true"></i> low-vision</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-mail-forward" aria-hidden="true"></i> mail-forward
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-mail-reply" aria-hidden="true"></i> mail-reply
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-mail-reply-all" aria-hidden="true"></i> mail-reply-all</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-male" aria-hidden="true"></i> male</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-map" aria-hidden="true"></i> map</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-map-marker" aria-hidden="true"></i> map-marker</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-map-o" aria-hidden="true"></i> map-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-map-pin" aria-hidden="true"></i> map-pin</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-microchip" aria-hidden="true"></i> microchip</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-microphone" aria-hidden="true"></i> microphone</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-microphone-slash"
- aria-hidden="true"></i> microphone-slash</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-minus" aria-hidden="true"></i> minus</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-minus-circle" aria-hidden="true"></i> minus-circle</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-minus-square" aria-hidden="true"></i> minus-square</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-minus-square-o" aria-hidden="true"></i> minus-square-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-mouse-pointer"
- aria-hidden="true"></i> mouse-pointer</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-navicon" aria-hidden="true"></i> navicon
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-newspaper-o" aria-hidden="true"></i> newspaper-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-object-group" aria-hidden="true"></i> object-group</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-object-ungroup" aria-hidden="true"></i> object-ungroup</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-paper-plane-o"
- aria-hidden="true"></i> paper-plane-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-pencil" aria-hidden="true"></i> pencil</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-pencil-square"
- aria-hidden="true"></i> pencil-square</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-pencil-square-o"
- aria-hidden="true"></i> pencil-square-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-phone-square" aria-hidden="true"></i> phone-square</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-photo" aria-hidden="true"></i> photo
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-picture-o" aria-hidden="true"></i> picture-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-plus" aria-hidden="true"></i> plus</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-plus-circle" aria-hidden="true"></i> plus-circle</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-podcast" aria-hidden="true"></i> podcast</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-power-off" aria-hidden="true"></i> power-off</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-print" aria-hidden="true"></i> print</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-qrcode" aria-hidden="true"></i> qrcode</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-question" aria-hidden="true"></i> question</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-question-circle"
- aria-hidden="true"></i> question-circle</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i
- class="fa fa-question-circle-o" aria-hidden="true"></i> question-circle-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-random" aria-hidden="true"></i> random</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-recycle" aria-hidden="true"></i> recycle</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-registered" aria-hidden="true"></i> registered</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-remove" aria-hidden="true"></i> remove
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-reorder" aria-hidden="true"></i> reorder
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-reply" aria-hidden="true"></i> reply</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-reply-all" aria-hidden="true"></i> reply-all</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-retweet" aria-hidden="true"></i> retweet</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-road" aria-hidden="true"></i> road</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-rocket" aria-hidden="true"></i> rocket</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-rss" aria-hidden="true"></i> rss</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-rss-square" aria-hidden="true"></i> rss-square</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-search" aria-hidden="true"></i> search</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-search-minus" aria-hidden="true"></i> search-minus</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-search-plus" aria-hidden="true"></i> search-plus</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-send" aria-hidden="true"></i> send
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-send-o"
- aria-hidden="true"></i> send-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-server" aria-hidden="true"></i> server</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-share" aria-hidden="true"></i> share</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-share-alt" aria-hidden="true"></i> share-alt</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-share-alt-square"
- aria-hidden="true"></i> share-alt-square</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-share-square" aria-hidden="true"></i> share-square</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-share-square-o" aria-hidden="true"></i> share-square-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-sign-in" aria-hidden="true"></i> sign-in</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-sign-out" aria-hidden="true"></i> sign-out</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-signing"
- aria-hidden="true"></i> signing</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-sitemap" aria-hidden="true"></i> sitemap</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-sliders" aria-hidden="true"></i> sliders</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-smile-o" aria-hidden="true"></i> smile-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-soccer-ball-o" aria-hidden="true"></i> soccer-ball-o
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-sort" aria-hidden="true"></i> sort</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-sort-alpha-asc" aria-hidden="true"></i> sort-alpha-asc</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-sort-alpha-desc"
- aria-hidden="true"></i> sort-alpha-desc</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-sort-amount-asc"
- aria-hidden="true"></i> sort-amount-asc</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-sort-amount-desc"
- aria-hidden="true"></i> sort-amount-desc</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-sort-asc" aria-hidden="true"></i> sort-asc</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-sort-desc" aria-hidden="true"></i> sort-desc</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-sort-down" aria-hidden="true"></i> sort-down
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-sort-numeric-asc"
- aria-hidden="true"></i> sort-numeric-asc</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i
- class="fa fa-sort-numeric-desc" aria-hidden="true"></i> sort-numeric-desc</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-sort-up" aria-hidden="true"></i> sort-up
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-sticky-note" aria-hidden="true"></i> sticky-note</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-sticky-note-o"
- aria-hidden="true"></i> sticky-note-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-sun-o" aria-hidden="true"></i> sun-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-support" aria-hidden="true"></i> support
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-tablet" aria-hidden="true"></i> tablet</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-tachometer" aria-hidden="true"></i> tachometer</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-tag" aria-hidden="true"></i> tag</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-tags" aria-hidden="true"></i> tags</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-tasks" aria-hidden="true"></i> tasks</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-times" aria-hidden="true"></i> times</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-times-circle" aria-hidden="true"></i> times-circle</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-times-circle-o" aria-hidden="true"></i> times-circle-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-times-rectangle" aria-hidden="true"></i> times-rectangle</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-times-rectangle-o" aria-hidden="true"></i> times-rectangle-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-trash-o" aria-hidden="true"></i> trash-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-unlock" aria-hidden="true"></i> unlock</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-unlock-alt" aria-hidden="true"></i> unlock-alt</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-unsorted" aria-hidden="true"></i> unsorted
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-upload" aria-hidden="true"></i> upload</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-user" aria-hidden="true"></i> user</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-user-circle" aria-hidden="true"></i> user-circle</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-user-circle-o"
- aria-hidden="true"></i> user-circle-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-user-o" aria-hidden="true"></i> user-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-vcard" aria-hidden="true"></i> vcard
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-vcard-o" aria-hidden="true"></i> vcard-o
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-warning"
- aria-hidden="true"></i>
- warning</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-wrench" aria-hidden="true"></i> wrench</a>
- </div>
- </div>
- </section>
- <section id="file-type">
- <h3 class="page-header">File Type Icons</h3>
- <div class="row fontawesome-icon-list">
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-file" aria-hidden="true"></i> file</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-file-excel-o" aria-hidden="true"></i> file-excel-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-file-o" aria-hidden="true"></i> file-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i
- class="fa fa-file-powerpoint-o" aria-hidden="true"></i> file-powerpoint-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-file-sound-o" aria-hidden="true"></i> file-sound-o
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-cut" aria-hidden="true"></i> cut</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-files-o" aria-hidden="true"></i> files-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-file-text" aria-hidden="true"></i> file-text</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-file-text-o" aria-hidden="true"></i> file-text-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-file-video-o" aria-hidden="true"></i> file-video-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-file-word-o" aria-hidden="true"></i> file-word-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-file-zip-o" aria-hidden="true"></i> file-zip-o
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-folder" aria-hidden="true"></i> folder</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-folder-o" aria-hidden="true"></i> folder-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-folder-open" aria-hidden="true"></i> folder-open</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-folder-open-o"
- aria-hidden="true"></i> folder-open-o</a></div>
- </div>
- </section>
- <section id="spinner">
- <h3 class="page-header">Spinner Icons</h3>
- <div class="row fontawesome-icon-list">
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-circle-o-notch" aria-hidden="true"></i> circle-o-notch</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-spinner" aria-hidden="true"></i> spinner</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-cog" aria-hidden="true"></i> cog</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-cogs" aria-hidden="true"></i> cogs</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-refresh" aria-hidden="true"></i> refresh</a>
- </div>
- </div>
- </section>
- <section id="form-control">
- <h3 class="page-header">Form Control Icons</h3>
- <div class="row fontawesome-icon-list">
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-check-square" aria-hidden="true"></i> check-square</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-check-square-o" aria-hidden="true"></i> check-square-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-circle" aria-hidden="true"></i> circle</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-circle-o" aria-hidden="true"></i> circle-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-dot-circle-o" aria-hidden="true"></i> dot-circle-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-minus-square" aria-hidden="true"></i> minus-square</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-minus-square-o" aria-hidden="true"></i> minus-square-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-plus-square" aria-hidden="true"></i> plus-square</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-plus-square-o"
- aria-hidden="true"></i> plus-square-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-square" aria-hidden="true"></i> square</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-square-o" aria-hidden="true"></i> square-o</a>
- </div>
- </div>
- </section>
- <section id="chart">
- <h3 class="page-header">Chart Icons</h3>
- <div class="row fontawesome-icon-list">
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-dashboard" aria-hidden="true"></i> dashboard
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-area-chart" aria-hidden="true"></i> area-chart</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-bar-chart" aria-hidden="true"></i> bar-chart</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-bar-chart-o" aria-hidden="true"></i> bar-chart-o
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-line-chart" aria-hidden="true"></i> line-chart</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-pie-chart" aria-hidden="true"></i> pie-chart</a>
- </div>
- </div>
- </section>
- <section id="text-editor">
- <h3 class="page-header">Text Editor Icons</h3>
- <div class="row fontawesome-icon-list">
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-dedent" aria-hidden="true"></i> dedent
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-eraser" aria-hidden="true"></i> eraser</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-floppy-o" aria-hidden="true"></i> floppy-o</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-font" aria-hidden="true"></i> font</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-header" aria-hidden="true"></i> header</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-indent" aria-hidden="true"></i> indent</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-link" aria-hidden="true"></i> link</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-list" aria-hidden="true"></i> list</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-list-alt" aria-hidden="true"></i> list-alt</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-list-ol" aria-hidden="true"></i> list-ol</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-list-ul" aria-hidden="true"></i> list-ul</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-paste" aria-hidden="true"></i> paste
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-repeat" aria-hidden="true"></i> repeat</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-rotate-left" aria-hidden="true"></i> rotate-left
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-rotate-right" aria-hidden="true"></i> rotate-right
- </a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-text-width" aria-hidden="true"></i> text-width</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-th" aria-hidden="true"></i> th</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-th-large" aria-hidden="true"></i> th-large</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-th-list" aria-hidden="true"></i> th-list</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-underline" aria-hidden="true"></i> underline</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-undo" aria-hidden="true"></i> undo</a>
- </div>
- </div>
- </section>
- <section id="directional">
- <h3 class="page-header">Directional Icons</h3>
- <div class="row fontawesome-icon-list">
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i
- class="fa fa-angle-double-down" aria-hidden="true"></i> angle-double-down</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i
- class="fa fa-angle-double-left" aria-hidden="true"></i> angle-double-left</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i
- class="fa fa-angle-double-right" aria-hidden="true"></i> angle-double-right</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-angle-double-up"
- aria-hidden="true"></i> angle-double-up</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-angle-down" aria-hidden="true"></i> angle-down</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-angle-left" aria-hidden="true"></i> angle-left</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-angle-right" aria-hidden="true"></i> angle-right</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-angle-up" aria-hidden="true"></i> angle-up</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-arrow-down" aria-hidden="true"></i> arrow-down</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-arrow-left" aria-hidden="true"></i> arrow-left</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-arrow-right" aria-hidden="true"></i> arrow-right</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-arrow-up" aria-hidden="true"></i> arrow-up</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-arrows" aria-hidden="true"></i> arrows</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-arrows-h" aria-hidden="true"></i> arrows-h</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-arrows-v" aria-hidden="true"></i> arrows-v</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-caret-down" aria-hidden="true"></i> caret-down</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-caret-left" aria-hidden="true"></i> caret-left</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-caret-right" aria-hidden="true"></i> caret-right</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-caret-up" aria-hidden="true"></i> caret-up</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i
- class="fa fa-chevron-circle-down" aria-hidden="true"></i> chevron-circle-down</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i
- class="fa fa-chevron-circle-left" aria-hidden="true"></i> chevron-circle-left</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i
- class="fa fa-chevron-circle-right" aria-hidden="true"></i> chevron-circle-right</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i
- class="fa fa-chevron-circle-up" aria-hidden="true"></i> chevron-circle-up</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-chevron-down" aria-hidden="true"></i> chevron-down</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-chevron-left" aria-hidden="true"></i> chevron-left</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-chevron-right"
- aria-hidden="true"></i> chevron-right</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-chevron-up" aria-hidden="true"></i> chevron-up</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-exchange" aria-hidden="true"></i> exchange</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-hand-o-down" aria-hidden="true"></i> hand-o-down</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-hand-o-left" aria-hidden="true"></i> hand-o-left</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-hand-o-right" aria-hidden="true"></i> hand-o-right</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-hand-o-up" aria-hidden="true"></i> hand-o-up</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-long-arrow-down"
- aria-hidden="true"></i> long-arrow-down</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-long-arrow-left"
- aria-hidden="true"></i> long-arrow-left</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-long-arrow-right"
- aria-hidden="true"></i> long-arrow-right</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-long-arrow-up"
- aria-hidden="true"></i> long-arrow-up</a></div>
- </div>
- </section>
- <section id="video-player">
- <h3 class="page-header">Video Player Icons</h3>
- <div class="row fontawesome-icon-list">
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;">
- <i class="fa fa-arrows-alt" aria-hidden="true"></i> arrows-alt</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-backward" aria-hidden="true"></i> backward</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-compress" aria-hidden="true"></i> compress</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-expand" aria-hidden="true"></i> expand</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-fast-backward"
- aria-hidden="true"></i> fast-backward</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-fast-forward" aria-hidden="true"></i> fast-forward</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-forward" aria-hidden="true"></i> forward</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-pause" aria-hidden="true"></i> pause</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-pause-circle" aria-hidden="true"></i> pause-circle</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-pause-circle-o" aria-hidden="true"></i> pause-circle-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-play" aria-hidden="true"></i> play</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-play-circle" aria-hidden="true"></i> play-circle</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-play-circle-o"
- aria-hidden="true"></i> play-circle-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-random" aria-hidden="true"></i> random</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-step-backward"
- aria-hidden="true"></i> step-backward</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-step-forward" aria-hidden="true"></i> step-forward</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-stop" aria-hidden="true"></i> stop</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-stop-circle" aria-hidden="true"></i> stop-circle</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a
- href="javascript:;"><i class="fa fa-stop-circle-o"
- aria-hidden="true"></i> stop-circle-o</a></div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-youtube-play" aria-hidden="true"></i> youtube-play</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-video-camera" aria-hidden="true"></i> video-camera</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-volume-down" aria-hidden="true"></i> volume-down</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-volume-off" aria-hidden="true"></i> volume-off</a>
- </div>
- <div class="fa-hover col-md-3 col-sm-4"><a href="javascript:;"><i
- class="fa fa-volume-up" aria-hidden="true"></i> volume-up</a>
- </div>
- </div>
- </section>
- </div>
- </div>
-</div>
-<#include "/js/modules/sys/icon.js">
-</body>
-</html> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/modules/sys/log.html b/nz-admin/src/main/resources/templates/modules/sys/log.html
deleted file mode 100644
index 9d27d824..00000000
--- a/nz-admin/src/main/resources/templates/modules/sys/log.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>系统日志</title>
-<#include "/header.html">
-</head>
-<body>
-<div id="rrapp" v-cloak>
- <div>
- <div class="grid-btn">
- <div class="form-group col-sm-2">
- <input type="text" class="form-control" v-model="q.key" @keyup.enter="query" placeholder="用户名、用户操作">
- </div>
- <a class="btn btn-default" @click="query">查询</a>
- </div>
- <table id="jqGrid"></table>
- <div id="jqGridPager"></div>
- </div>
-
-</div>
-
-<script src="${request.contextPath}/statics/js/modules/sys/log.js?_${.now?long}"></script>
-</body>
-</html> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/modules/sys/menu.html b/nz-admin/src/main/resources/templates/modules/sys/menu.html
deleted file mode 100644
index dbe8c416..00000000
--- a/nz-admin/src/main/resources/templates/modules/sys/menu.html
+++ /dev/null
@@ -1,158 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>菜单管理</title>
- <#include "/header.html">
- <#import "/spring.ftl" as spring>
-<link rel="stylesheet" href="${request.contextPath}/statics/css/bootstrap-table.min.css">
-<link rel="stylesheet" href="${request.contextPath}/statics/plugins/treegrid/jquery.treegrid.css">
-<script src="${request.contextPath}/statics/libs/bootstrap-table.min.js"></script>
-<script src="${request.contextPath}/statics/plugins/treegrid/jquery.treegrid.min.js"></script>
-<script src="${request.contextPath}/statics/plugins/treegrid/jquery.treegrid.bootstrap3.js"></script>
-<script src="${request.contextPath}/statics/plugins/treegrid/jquery.treegrid.extension.js"></script>
-<script src="${request.contextPath}/statics/plugins/treegrid/tree.table.js"></script>
-</head>
-<body>
-<div id="rrapp" v-cloak>
-
- <!-- 列表 查询 -->
- <div v-show="showList">
-
- <div class="tools">
- <#if shiro.hasPermission("sys:menu:save")>
- <a class="btn btn-primary" @click="add" title="<@spring.message 'common.add'/>">
- <i class="fa fa-plus"></i></a>
- </#if>
- <#if shiro.hasPermission("sys:menu:update")>
- <a class="btn btn-primary" @click="update" title="<@spring.message 'common.edit'/>">
- <i class="fa fa-pencil"></i></a>
- </#if>
- <#if shiro.hasPermission("sys:menu:delete")>
- <a class="btn btn-primary" @click="del" title="<@spring.message 'common.delete'/>">
- <i class="fa fa-trash-o"></i></a>
- </#if>
- </div>
-
- <!-- 列表数据 -->
- <table id="menuTable" data-mobile-responsive="true" data-click-to-select="true">
- <thead>
- <tr>
- <th data-field="selectItem" data-checkbox="true"></th>
- </tr>
- </thead>
- </table>
- </div>
-
-
- <!--表单-->
- <div v-show="!showList" class="panel panel-default">
- <div class="panel-heading">{{title}}</div>
- <form class="form-horizontal">
-
- <!--类型-->
- <div class="form-group">
- <div class="col-sm-2 control-label"><@spring.message 'menu.type'/></div>
- <div class="col-sm-9">
- <label class="radio-inline"><!--目录-->
- <input type="radio" name="type" value="0" v-model="menu.type"/> <@spring.message 'menu.directory'/>
- </label>
- <label class="radio-inline"><!--菜单-->
- <input type="radio" name="type" value="1" v-model="menu.type"/> <@spring.message 'menu.menu'/>
- </label>
- <label class="radio-inline"><!--按钮-->
- <input type="radio" name="type" value="2" v-model="menu.type"/> <@spring.message 'common.button'/>
- </label>
- </div>
- </div>
-
- <!--菜单名称-->
- <div class="form-group">
- <div class="col-sm-2 control-label"><@spring.message 'common.name'/></div>
- <div class="col-sm-9">
- <input type="text" class="form-control"
- :class="{'form-control--error': $v.menu.name.$dirty && !$v.menu.name.required }"
- v-model="$v.menu.name.$model"
- placeholder="<@spring.message 'common.name'/>"/>
- <span class="required-symbol">*</span>
- <div class="form-control_error-msg" v-if="$v.menu.name.$dirty && !$v.menu.name.required">
- <@spring.message 'validate.common.required'/>
- </div>
- </div>
- </div>
-
- <!--上级菜单-->
- <div class="form-group">
- <div class="col-sm-2 control-label"><@spring.message 'menu.parent'/></div>
- <div class="col-sm-9">
- <input type="text" class="form-control" style="cursor:pointer;" v-model="menu.parentName" @click="menuTree" readonly="readonly" placeholder="<@spring.message 'menu.firstOrder'/>"/>
- </div>
- </div>
-
- <!--菜单URL-->
- <div v-if="menu.type == 1" class="form-group">
- <div class="col-sm-2 control-label">URL</div>
- <div class="col-sm-9">
- <input type="text" class="form-control"
- :class="{'form-control--error': $v.menu.url.$dirty && !$v.menu.url.urlRequired }"
- v-model="$v.menu.url.$model"
- placeholder="URL"/>
- <span class="required-symbol" v-show="menu.type == 1">*</span>
- <div class="form-control_error-msg" v-if="$v.menu.url.$dirty && !$v.menu.url.urlRequired">
- <@spring.message 'validate.common.required'/>
- </div>
- </div>
- </div>
-
- <!--授权标识-->
- <div v-if="menu.type == 1 || menu.type == 2" class="form-group">
- <div class="col-sm-2 control-label"><@spring.message 'menu.authority.flag'/></div>
- <div class="col-sm-9">
- <input type="text" class="form-control" v-model="menu.perms" placeholder="多个用逗号分隔,如:user:list,user:create"/>
- </div>
- </div>
-
- <!--排序号-->
- <div v-if="menu.type != 2" class="form-group">
- <div class="col-sm-2 control-label"><@spring.message 'menu.sortNumber'/></div>
- <div class="col-sm-9">
- <input type="number" class="form-control" v-model="menu.orderNum" placeholder="<@spring.message 'menu.sortNumber'/>"/>
- </div>
- </div>
-
- <div v-if="menu.type != 2" class="form-group">
- <div class="col-sm-2 control-label"><@spring.message 'menu.icon'/></div>
- <div class="col-sm-9">
- <!--<input type="text" class="form-control" v-model="menu.icon" placeholder="菜单图标"/>-->
- <template>
- <i id="icon" aria-hidden="true"></i>
- <button type="button" class="btn btn-default" style="margin-left: 20px" @click="getIcon">获取图标</button>
- <button type="button" class="btn btn-default" @click="cancelIcon">取消图标</button>
- </template>
- </div>
- </div>
-
-
-
- <!-- 保存 / 返回 -->
- <div class="form-group form-group_opbox">
- <div>
- <button title="<@spring.message 'common.submit'/>" type="button" class="btn btn-primary"
- style="width: 55px" @click="saveOrUpdate"><i class="fa fa-check"></i></button>
- <div style="display:inline-block;width:10px;"></div>
- <button title="<@spring.message 'common.back'/>" type="button" class="btn btn-warning"
- style="width: 55px" @click="reload"><i class="fa fa-reply"></i></button>
- </div>
- </div>
- </form>
- </div>
-</div>
-
-<!-- 选择菜单 -->
-<div id="menuLayer" style="display: none;padding:10px;">
- <ul id="menuTree" class="ztree"></ul>
-</div>
-
-<!--<script src="${request.contextPath}/statics/js/modules/sys/menu.js?_${.now?long}"></script>-->
-<#include "/js/modules/sys/menu.js">
-</body>
-</html> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/modules/sys/role.html b/nz-admin/src/main/resources/templates/modules/sys/role.html
deleted file mode 100644
index 4a16944a..00000000
--- a/nz-admin/src/main/resources/templates/modules/sys/role.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>角色管理</title>
-<#include "/header.html">
-</head>
-<body>
-<div id="rrapp" v-cloak>
- <div v-show="showList">
- <div class="grid-btn">
- <div class="form-group col-sm-2">
- <input type="text" class="form-control" v-model="q.roleName" @keyup.enter="query" placeholder="角色名称">
- </div>
- <a class="btn btn-default" @click="query">查询</a>
-
- <#if shiro.hasPermission("sys:role:save")>
- <a class="btn btn-primary" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</a>
- </#if>
- <#if shiro.hasPermission("sys:role:update")>
- <a class="btn btn-primary" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</a>
- </#if>
- <#if shiro.hasPermission("sys:role:delete")>
- <a class="btn btn-primary" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</a>
- </#if>
- </div>
- <table id="jqGrid"></table>
- <div id="jqGridPager"></div>
- </div>
-
- <div v-show="!showList" class="panel panel-default">
- <div class="panel-heading">{{title}}</div>
- <form class="form-horizontal">
- <div class="form-group">
- <div class="col-sm-2 control-label">角色名称</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="role.roleName" placeholder="角色名称"/>
- </div>
- </div>
- <!--<div class="form-group">
- <div class="col-sm-2 control-label">所属部门</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" style="cursor:pointer;" v-model="role.deptName" @click="deptTree" readonly="readonly" placeholder="所属部门"/>
- </div>
- </div>-->
- <div class="form-group">
- <div class="col-sm-2 control-label">备注</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" v-model="role.remark" placeholder="备注"/>
- </div>
- </div>
- <div class="form-inline clearfix" style="margin-top:30px;margin-left:26px;">
- <div class="form-group col-md-6">
- <strong class="col-sm-5 control-label">功能权限</strong>
- <div class="col-sm-10">
- <ul id="menuTree" class="ztree"></ul>
- </div>
- </div>
- <!-- <div class="form-group col-md-6">
- <strong class="col-sm-5 control-label">数据权限</strong>
- <div class="col-sm-10">
- <ul id="dataTree" class="ztree"></ul>
- </div>
- </div> -->
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label"></div>
- <input type="button" class="btn btn-primary" @click="saveOrUpdate" value="确定"/>
- &nbsp;&nbsp;<input type="button" class="btn btn-warning" @click="reload" value="返回"/>
- </div>
- </form>
- </div>
-</div>
-
-<!-- 选择部门 -->
-<!--<div id="deptLayer" style="display: none;padding:10px;">
- <ul id="deptTree" class="ztree"></ul>
-</div>-->
-
-<script src="${request.contextPath}/statics/js/modules/sys/role.js?_${.now?long}"></script>
-</body>
-</html> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/modules/sys/user.html b/nz-admin/src/main/resources/templates/modules/sys/user.html
deleted file mode 100644
index 4909ac6d..00000000
--- a/nz-admin/src/main/resources/templates/modules/sys/user.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html>
-<#import "/spring.ftl" as spring>
-<html>
-<head>
-<title>管理员列表</title>
-<#include "/header.html">
-</head>
-<body>
-<div id="rrapp" v-cloak>
- <div v-show="showList">
- <div class="grid-btn">
- <div class="form-group col-sm-2">
- <input type="text" class="form-control" v-model="q.username" @keyup.enter="query" placeholder="<@spring.message 'user.username'/>">
- </div>
- <a class="btn btn-default" @click="query" title="<@spring.message 'common.search'/>"><i class="fa fa-search"></i></a>
- <#if shiro.hasPermission("sys:user:save")>
- <a class="btn btn-primary" @click="add" title="<@spring.message 'common.add'/>"><i class="fa fa-plus"></i></a>
- </#if>
- <#if shiro.hasPermission("sys:user:update")>
- <a class="btn btn-primary" @click="update" title="<@spring.message 'common.edit'/>"><i class="fa fa-pencil-square-o"></i></a>
- </#if>
- <#if shiro.hasPermission("sys:user:delete")>
- <a class="btn btn-primary" @click="del" title="<@spring.message 'common.delete'/>"><i class="fa fa-trash-o"></i></a>
- </#if>
- </div>
- <table id="jqGrid"></table>
- <div id="jqGridPager"></div>
- </div>
-
- <div v-show="!showList" class="panel panel-default">
- <div class="panel-heading">{{title}}</div>
- <form class="form-horizontal">
- <div class="form-group">
- <div class="col-sm-2 control-label"><@spring.message 'user.username'/></div>
- <div class="col-sm-9">
- <input type="text" class="form-control" :class="{'form-control--error': $v.user.username.$dirty && $v.user.username.$error}" v-model.trim="$v.user.username.$model"/>
- <span class="required-symbol">*</span>
- <div class="form-control_error-msg" v-if="$v.user.username.$dirty && !$v.user.username.required"><@spring.message 'validate.common.required'/></div>
- <div class="form-control_error-msg" v-if="$v.user.username.$dirty && !$v.user.username.checkName"><@spring.message 'validate.common.duplicate'/></div>
- </div>
- </div>
- <!--<div class="form-group">
- <div class="col-sm-2 control-label">所属部门</div>
- <div class="col-sm-10">
- <input type="text" class="form-control" style="cursor:pointer;" v-model="user.deptName" @click="deptTree" readonly="readonly" placeholder="所属部门"/>
- </div>
- </div>-->
- <div class="form-group">
- <div class="col-sm-2 control-label"><@spring.message 'user.password'/></div>
- <div class="col-sm-9">
- <input type="text" class="form-control" :class="{'form-control--error': user.userId == null && $v.user.password.$dirty && $v.user.password.$error}" v-model="$v.user.password.$model"/>
- <span v-if="user.userId == null" class="required-symbol">*</span>
- <div class="form-control_error-msg" v-if="user.userId == null && $v.user.password.$dirty && !$v.user.password.required"><@spring.message 'validate.common.required'/></div>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label"><@spring.message 'user.email'/></div>
- <div class="col-sm-9">
- <input type="text" class="form-control" v-model="user.email"/>
- <span class="required-symbol">*</span>
- <div class="form-control_error-msg" v-if="$v.user.email.$dirty && !$v.user.email.required"><@spring.message 'validate.common.required'/></div>
- <div class="form-control_error-msg" v-if="$v.user.email.$dirty && !$v.user.email.email"><@spring.message 'validate.common.formaterror'/></div>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label"><@spring.message 'user.role'/></div>
- <div class="col-sm-9">
- <template v-for="role in roleList">
- <span class="form-cbx">
- <input v-model="user.roleIdList" type="checkbox" :value="role.roleId"/>
- <span :title="role.roleName">{{role.roleName}}</span>
- </span>
- </template>
- </div>
- </div>
- <div class="form-group">
- <div class="col-sm-2 control-label"><@spring.message 'common.status'/></div>
- <label class="radio-inline">
- <input type="radio" name="status" value="0" v-model="user.status"/><@spring.message 'common.disabled'/>
- </label>
- <label class="radio-inline">
- <input type="radio" name="status" value="1" v-model="user.status"/><@spring.message 'common.normal'/>
- </label>
- </div>
- <div class="form-group form-group_opbox">
- <div>
- <button title="<@spring.message 'common.submit'/>" type="button" class="btn btn-primary" style="width: 55px" @click="saveOrUpdate"><i class="fa fa-check"></i></button>
- <div style="display:inline-block;width:10px;"></div>
- <button title="<@spring.message 'common.back'/>" type="button" class="btn btn-warning" style="width: 55px" @click="reload"><i class="fa fa-reply"></i></button>
- </div>
- </div>
- </form>
- </div>
-</div>
-
-<!-- 选择部门 -->
-<!--<div id="deptLayer" style="display: none;padding:10px;">
- <ul id="deptTree" class="ztree"></ul>
-</div>-->
-<#include "/js/modules/sys/user.js">
-</body>
-</html> \ No newline at end of file
diff --git a/nz-admin/src/main/resources/templates/spring.ftl b/nz-admin/src/main/resources/templates/spring.ftl
deleted file mode 100644
index ec93e722..00000000
--- a/nz-admin/src/main/resources/templates/spring.ftl
+++ /dev/null
@@ -1,384 +0,0 @@
-<#ftl output_format="HTML" strip_whitespace=true>
-<#--
- * spring.ftl
- *
- * This file consists of a collection of FreeMarker macros aimed at easing
- * some of the common requirements of web applications - in particular
- * handling of forms.
- *
- * Spring's FreeMarker support will automatically make this file and therefore
- * all macros within it available to any application using Spring's
- * FreeMarkerConfigurer.
- *
- * To take advantage of these macros, the "exposeSpringMacroHelpers" property
- * of the FreeMarker class needs to be set to "true". This will expose a
- * RequestContext under the name "springMacroRequestContext", as needed by
- * the macros in this library.
- *
- * @author Darren Davison
- * @author Juergen Hoeller
- * @since 1.1
- -->
-
-<#--
- * message
- *
- * Macro to translate a message code into a message.
- -->
-<#macro message code>${springMacroRequestContext.getMessage(code)?no_esc}</#macro>
-
-<#--
- * messageText
- *
- * Macro to translate a message code into a message,
- * using the given default text if no message found.
- -->
-<#macro messageText code, text>${springMacroRequestContext.getMessage(code, text)?no_esc}</#macro>
-
-<#--
- * messageArgs
- *
- * Macro to translate a message code with arguments into a message.
- -->
-<#macro messageArgs code, args>${springMacroRequestContext.getMessage(code, args)?no_esc}</#macro>
-
-<#--
- * messageArgsText
- *
- * Macro to translate a message code with arguments into a message,
- * using the given default text if no message found.
- -->
-<#macro messageArgsText code, args, text>${springMacroRequestContext.getMessage(code, args, text)?no_esc}</#macro>
-
-<#--
- * theme
- *
- * Macro to translate a theme message code into a message.
- -->
-<#macro theme code>${springMacroRequestContext.getThemeMessage(code)?no_esc}</#macro>
-
-<#--
- * themeText
- *
- * Macro to translate a theme message code into a message,
- * using the given default text if no message found.
- -->
-<#macro themeText code, text>${springMacroRequestContext.getThemeMessage(code, text)?no_esc}</#macro>
-
-<#--
- * themeArgs
- *
- * Macro to translate a theme message code with arguments into a message.
- -->
-<#macro themeArgs code, args>${springMacroRequestContext.getThemeMessage(code, args)?no_esc}</#macro>
-
-<#--
- * themeArgsText
- *
- * Macro to translate a theme message code with arguments into a message,
- * using the given default text if no message found.
- -->
-<#macro themeArgsText code, args, text>${springMacroRequestContext.getThemeMessage(code, args, text)?no_esc}</#macro>
-
-<#--
- * url
- *
- * Takes a relative URL and makes it absolute from the server root by
- * adding the context root for the web application.
- -->
-<#macro url relativeUrl extra...><#if extra?? && extra?size!=0>${springMacroRequestContext.getContextUrl(relativeUrl,extra)?no_esc}<#else>${springMacroRequestContext.getContextUrl(relativeUrl)?no_esc}</#if></#macro>
-
-<#--
- * bind
- *
- * Exposes a BindStatus object for the given bind path, which can be
- * a bean (e.g. "person") to get global errors, or a bean property
- * (e.g. "person.name") to get field errors. Can be called multiple times
- * within a form to bind to multiple command objects and/or field names.
- *
- * This macro will participate in the default HTML escape setting for the given
- * RequestContext. This can be customized by calling "setDefaultHtmlEscape"
- * on the "springMacroRequestContext" context variable, or via the
- * "defaultHtmlEscape" context-param in web.xml (same as for the JSP bind tag).
- * Also regards a "htmlEscape" variable in the namespace of this library.
- *
- * Producing no output, the following context variable will be available
- * each time this macro is referenced (assuming you import this library in
- * your templates with the namespace 'spring'):
- *
- * spring.status : a BindStatus instance holding the command object name,
- * expression, value, and error messages and codes for the path supplied
- *
- * @param path the path (string value) of the value required to bind to.
- * Spring defaults to a command name of "command" but this can be
- * overridden by user configuration.
- -->
-<#macro bind path>
- <#if htmlEscape?exists>
- <#assign status = springMacroRequestContext.getBindStatus(path, htmlEscape)>
- <#else>
- <#assign status = springMacroRequestContext.getBindStatus(path)>
- </#if>
- <#-- assign a temporary value, forcing a string representation for any
- kind of variable. This temp value is only used in this macro lib -->
- <#if status.value?exists && status.value?is_boolean>
- <#assign stringStatusValue=status.value?string>
- <#else>
- <#assign stringStatusValue=status.value?default("")>
- </#if>
-</#macro>
-
-<#--
- * bindEscaped
- *
- * Similar to spring:bind, but takes an explicit HTML escape flag rather
- * than relying on the default HTML escape setting.
- -->
-<#macro bindEscaped path, htmlEscape>
- <#assign status = springMacroRequestContext.getBindStatus(path, htmlEscape)>
- <#-- assign a temporary value, forcing a string representation for any
- kind of variable. This temp value is only used in this macro lib -->
- <#if status.value?exists && status.value?is_boolean>
- <#assign stringStatusValue=status.value?string>
- <#else>
- <#assign stringStatusValue=status.value?default("")>
- </#if>
-</#macro>
-
-<#--
- * formInput
- *
- * Display a form input field of type 'text' and bind it to an attribute
- * of a command or bean.
- *
- * @param path the name of the field to bind to
- * @param attributes any additional attributes for the element
- * (such as class or CSS styles or size)
- -->
-<#macro formInput path attributes="" fieldType="text">
- <@bind path/>
- <input type="${fieldType}" id="${status.expression?replace('[','')?replace(']','')}" name="${status.expression}" value="<#if fieldType!="password">${stringStatusValue}</#if>" ${attributes?no_esc}<@closeTag/>
-</#macro>
-
-<#--
- * formPasswordInput
- *
- * Display a form input field of type 'password' and bind it to an attribute
- * of a command or bean. No value will ever be displayed. This functionality
- * can also be obtained by calling the formInput macro with a 'type' parameter
- * of 'password'.
- *
- * @param path the name of the field to bind to
- * @param attributes any additional attributes for the element
- * (such as class or CSS styles or size)
- -->
-<#macro formPasswordInput path attributes="">
- <@formInput path, attributes, "password"/>
-</#macro>
-
-<#--
- * formHiddenInput
- *
- * Generate a form input field of type 'hidden' and bind it to an attribute
- * of a command or bean. This functionality can also be obtained by calling
- * the formInput macro with a 'type' parameter of 'hidden'.
- *
- * @param path the name of the field to bind to
- * @param attributes any additional attributes for the element
- * (such as class or CSS styles or size)
- -->
-<#macro formHiddenInput path attributes="">
- <@formInput path, attributes, "hidden"/>
-</#macro>
-
-<#--
- * formTextarea
- *
- * Display a text area and bind it to an attribute of a command or bean.
- *
- * @param path the name of the field to bind to
- * @param attributes any additional attributes for the element
- * (such as class or CSS styles or size)
- -->
-<#macro formTextarea path attributes="">
- <@bind path/>
- <textarea id="${status.expression?replace('[','')?replace(']','')}" name="${status.expression}" ${attributes?no_esc}>
-${stringStatusValue}</textarea>
-</#macro>
-
-<#--
- * formSingleSelect
- *
- * Show a selectbox (dropdown) input element allowing a single value to be chosen
- * from a list of options.
- *
- * @param path the name of the field to bind to
- * @param options a map (value=label) of all the available options
- * @param attributes any additional attributes for the element
- * (such as class or CSS styles or size)
--->
-<#macro formSingleSelect path options attributes="">
- <@bind path/>
- <select id="${status.expression?replace('[','')?replace(']','')}" name="${status.expression}" ${attributes?no_esc}>
- <#if options?is_hash>
- <#list options?keys as value>
- <option value="${value}"<@checkSelected value/>>${options[value]}</option>
- </#list>
- <#else>
- <#list options as value>
- <option value="${value}"<@checkSelected value/>>${value}</option>
- </#list>
- </#if>
- </select>
-</#macro>
-
-<#--
- * formMultiSelect
- *
- * Show a listbox of options allowing the user to make 0 or more choices from
- * the list of options.
- *
- * @param path the name of the field to bind to
- * @param options a map (value=label) of all the available options
- * @param attributes any additional attributes for the element
- * (such as class or CSS styles or size)
--->
-<#macro formMultiSelect path options attributes="">
- <@bind path/>
- <select multiple="multiple" id="${status.expression?replace('[','')?replace(']','')}" name="${status.expression}" ${attributes?no_esc}>
- <#list options?keys as value>
- <#assign isSelected = contains(status.actualValue?default([""]), value)>
- <option value="${value}"<#if isSelected> selected="selected"</#if>>${options[value]}</option>
- </#list>
- </select>
-</#macro>
-
-<#--
- * formRadioButtons
- *
- * Show radio buttons.
- *
- * @param path the name of the field to bind to
- * @param options a map (value=label) of all the available options
- * @param separator the HTML tag or other character list that should be used to
- * separate each option (typically '&nbsp;' or '<br>')
- * @param attributes any additional attributes for the element
- * (such as class or CSS styles or size)
--->
-<#macro formRadioButtons path options separator attributes="">
- <@bind path/>
- <#list options?keys as value>
- <#assign id="${status.expression?replace('[','')?replace(']','')}${value_index}">
- <input type="radio" id="${id}" name="${status.expression}" value="${value}"<#if stringStatusValue == value> checked="checked"</#if> ${attributes?no_esc}<@closeTag/>
- <label for="${id}">${options[value]}</label>${separator?no_esc}
- </#list>
-</#macro>
-
-<#--
- * formCheckboxes
- *
- * Show checkboxes.
- *
- * @param path the name of the field to bind to
- * @param options a map (value=label) of all the available options
- * @param separator the HTML tag or other character list that should be used to
- * separate each option (typically '&nbsp;' or '<br>')
- * @param attributes any additional attributes for the element
- * (such as class or CSS styles or size)
--->
-<#macro formCheckboxes path options separator attributes="">
- <@bind path/>
- <#list options?keys as value>
- <#assign id="${status.expression?replace('[','')?replace(']','')}${value_index}">
- <#assign isSelected = contains(status.actualValue?default([""]), value)>
- <input type="checkbox" id="${id}" name="${status.expression}" value="${value}"<#if isSelected> checked="checked"</#if> ${attributes?no_esc}<@closeTag/>
- <label for="${id}">${options[value]}</label>${separator?no_esc}
- </#list>
- <input type="hidden" name="_${status.expression}" value="on"/>
-</#macro>
-
-<#--
- * formCheckbox
- *
- * Show a single checkbox.
- *
- * @param path the name of the field to bind to
- * @param attributes any additional attributes for the element
- * (such as class or CSS styles or size)
--->
-<#macro formCheckbox path attributes="">
- <@bind path />
- <#assign id="${status.expression?replace('[','')?replace(']','')}">
- <#assign isSelected = status.value?? && status.value?string=="true">
- <input type="hidden" name="_${status.expression}" value="on"/>
- <input type="checkbox" id="${id}" name="${status.expression}"<#if isSelected> checked="checked"</#if> ${attributes?no_esc}/>
-</#macro>
-
-<#--
- * showErrors
- *
- * Show validation errors for the currently bound field, with
- * optional style attributes.
- *
- * @param separator the HTML tag or other character list that should be used to
- * separate each option (typically '&nbsp;' or '<br>')
- * @param classOrStyle either the name of a CSS class element (which is defined in
- * the template or an external CSS file) or an inline style. If the value passed
- * in here contains a colon (:) then a 'style=' attribute will be used,
- * otherwise a 'class=' attribute will be used.
--->
-<#macro showErrors separator classOrStyle="">
- <#list status.errorMessages as error>
- <#if classOrStyle == "">
- <b>${error}</b>
- <#else>
- <#if classOrStyle?index_of(":") == -1><#assign attr="class"><#else><#assign attr="style"></#if>
- <span ${attr}="${classOrStyle}">${error}</span>
- </#if>
- <#if error_has_next>${separator?no_esc}</#if>
- </#list>
-</#macro>
-
-<#--
- * checkSelected
- *
- * Check a value in a list to see if it is the currently selected value.
- * If so, add the 'selected="selected"' text to the output.
- * Handles values of numeric and string types.
- * This function is used internally but can be accessed by user code if required.
- *
- * @param value the current value in a list iteration
--->
-<#macro checkSelected value>
- <#if stringStatusValue?is_number && stringStatusValue == value?number>selected="selected"</#if>
- <#if stringStatusValue?is_string && stringStatusValue == value>selected="selected"</#if>
-</#macro>
-
-<#--
- * contains
- *
- * Macro to return true if the list contains the scalar, false if not.
- * Surprisingly not a FreeMarker builtin.
- * This function is used internally but can be accessed by user code if required.
- *
- * @param list the list to search for the item
- * @param item the item to search for in the list
- * @return true if item is found in the list, false otherwise
--->
-<#function contains list item>
- <#list list as nextInList>
- <#if nextInList == item><#return true></#if>
- </#list>
- <#return false>
-</#function>
-
-<#--
- * closeTag
- *
- * Simple macro to close an HTML tag that has no body with '>' or '/>',
- * depending on the value of a 'xhtmlCompliant' variable in the namespace
- * of this library.
--->
-<#macro closeTag>
- <#if xhtmlCompliant?exists && xhtmlCompliant>/><#else>></#if>
-</#macro>