后台UI完善,体验优化
前端用户中心功能初始化
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -9,8 +9,21 @@ define(['jquery', 'layer', 'message'], function ($, layer) {
|
||||
form.api.bindevent($("form[role=form]"));
|
||||
})
|
||||
}
|
||||
sent.api.bindGet(); //绑定get请求
|
||||
sent.api.bindPost(); //绑定post请求
|
||||
sent.api.bindButtonAction(); //绑定元素get/post请求操作
|
||||
|
||||
//全选的实现
|
||||
$(".check-all").click(function() {
|
||||
$(this).parents('table').find('tbody td input[type=checkbox]').prop("checked", this.checked);
|
||||
});
|
||||
$("table tbody td input[type=checkbox]").click(function() {
|
||||
var checked = true;
|
||||
$("table tbody td input[type=checkbox]").each(function(i) {
|
||||
if (!this.checked) {
|
||||
checked = false;
|
||||
}
|
||||
});
|
||||
$(".check-all").prop("checked", checked);
|
||||
});
|
||||
},
|
||||
msg: function (text, type) {
|
||||
text = (type == 'success') ? text + ' 页面即将自动跳转~' : text;
|
||||
@@ -202,6 +215,11 @@ define(['jquery', 'layer', 'message'], function ($, layer) {
|
||||
ret = sent.events.onAjaxResponse(ret);
|
||||
if (ret.code === 1) {
|
||||
sent.events.onAjaxSuccess(ret, success);
|
||||
if (ret.url) {
|
||||
setTimeout(function() {
|
||||
location.href = ret.url;
|
||||
}, 1500);
|
||||
}
|
||||
} else {
|
||||
sent.events.onAjaxError(ret, error);
|
||||
}
|
||||
@@ -218,11 +236,45 @@ define(['jquery', 'layer', 'message'], function ($, layer) {
|
||||
}, options);
|
||||
return $.ajax(options);
|
||||
},
|
||||
bindGet: function(){
|
||||
|
||||
},
|
||||
bindPost: function(){
|
||||
|
||||
bindButtonAction: function(){
|
||||
if($('a.ajax-get, button.ajax-get, a.ajax-post, button.ajax-post').length > 0){
|
||||
$('a.ajax-get, button.ajax-get, a.ajax-post, button.ajax-post').click(function(e){
|
||||
e.preventDefault();
|
||||
var target, type, form, query;
|
||||
var nead_confirm = false;
|
||||
if ($(this).hasClass('confirm')) {
|
||||
if (!confirm('确认要执行该操作吗?')) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if ($(this).hasClass('ajax-post')) {
|
||||
type = "post";
|
||||
form = $('.' + $(this).data('form'));
|
||||
if ($(this).attr('hide-data') === 'true') { //无数据时也可以使用的功能
|
||||
form = $('.hide-data');
|
||||
query = form.serialize();
|
||||
} else if (form.get(0) == undefined) {
|
||||
return false;
|
||||
} else if (form.get(0).nodeName == 'FORM') {
|
||||
if ($(this).attr('url') !== undefined) {
|
||||
target = $(this).attr('url');
|
||||
} else {
|
||||
target = form.get(0).action;
|
||||
}
|
||||
query = form.serialize();
|
||||
} else if (form.get(0).nodeName == 'INPUT' || form.get(0).nodeName == 'SELECT' || form.get(0).nodeName == 'TEXTAREA') {
|
||||
query = form.serialize();
|
||||
} else {
|
||||
query = form.find('input,select,textarea').serialize();
|
||||
}
|
||||
}else{
|
||||
type = "get";
|
||||
}
|
||||
if ((target = $(this).attr('href')) || (target = $(this).attr('url'))) {
|
||||
sent.api.ajax({url: target, type: type, data: query})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
utils: {
|
||||
|
||||
143
public/template/default/static/js/main.js
Normal file
143
public/template/default/static/js/main.js
Normal file
@@ -0,0 +1,143 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
// 当前资源URL目录
|
||||
var baseRoot = (function () {
|
||||
var scripts = document.scripts, src = scripts[0].src;
|
||||
return src.substring(0, src.lastIndexOf("template")) + 'static/';
|
||||
})();
|
||||
var skinRoot = (function () {
|
||||
var scripts = document.scripts, src = scripts[0].src;
|
||||
return src.substring(0, src.lastIndexOf("/") - 2);
|
||||
})();
|
||||
|
||||
// 配置参数
|
||||
require.config({
|
||||
waitSeconds: 60,
|
||||
packages: [{
|
||||
name: 'moment',
|
||||
location: 'plugins/moment',
|
||||
main: 'moment'
|
||||
}
|
||||
],
|
||||
baseUrl: baseRoot,
|
||||
map: {'*': {css: baseRoot + 'plugins/require/require.css.js'}},
|
||||
paths: {
|
||||
'sent': ['common/js/sent'],
|
||||
'form': ['common/js/require-form'],
|
||||
'upload': 'common/js/require-upload',
|
||||
'validator': 'common/js/require-validator',
|
||||
'message': ['plugins/messager/messager'],
|
||||
'template': ['plugins/art-template/template'],
|
||||
'webupload': ['plugins/webuploader/webuploader.min'],
|
||||
|
||||
//表单组件
|
||||
'board': ['plugins/board/board.min'],
|
||||
'droppable': ['plugins/droppable/droppable'],
|
||||
'tagsinput': ['plugins/tagsinput/bootstrap-tagsinput'],
|
||||
'select2': ['plugins/select2/select2.full'],
|
||||
'iconpicker': ['plugins/bootstrap-iconpicker/dist/js/bootstrap-iconpicker.bundle.min'],
|
||||
|
||||
// openSource
|
||||
'layer': ['plugins/layer/layer'],
|
||||
'base64': ['plugins/jquery/base64.min'],
|
||||
'cxselect': ['plugins/cxselect/jquery.cxselect.min'],
|
||||
// jQuery
|
||||
'jquery': ['plugins/jquery/jquery.min'],
|
||||
'json': ['plugins/jquery/json2.min'],
|
||||
'jquery.ztree': ['plugins/ztree/jquery.ztree.all.min'],
|
||||
'jquery.masonry': ['plugins/jquery/masonry.min'],
|
||||
'jquery.cookies': ['plugins/jquery/jquery.cookie'],
|
||||
// bootstrap
|
||||
'bootstrap': ['plugins/bootstrap/js/bootstrap.min'],
|
||||
'bootstrap.typeahead': ['plugins/bootstrap/js/bootstrap3-typeahead.min'],
|
||||
'bootstrap.multiselect': ['plugins/bootstrap-multiselect/bootstrap-multiselect'],
|
||||
'bootstrap-editable': 'plugins/bootstrap-editable/js/bootstrap-editable.min',
|
||||
'bootstrap-datetimepicker': 'plugins/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min',
|
||||
'bootstrap-daterangepicker': 'plugins/bootstrap-daterangepicker/daterangepicker',
|
||||
|
||||
'validator-core': 'plugins/nice-validator/jquery.validator',
|
||||
'validator-lang': 'plugins/nice-validator/local/zh-CN',
|
||||
|
||||
'NKeditor': 'plugins/NKeditor/NKeditor-all-min',
|
||||
|
||||
//adminlte
|
||||
'adminlte': ['plugins/adminlte/js/adminlte.min'],
|
||||
|
||||
// nanoscroller
|
||||
'slimscroll': 'plugins/jquery-slimscroll/jquery.slimscroll',
|
||||
},
|
||||
shim: {
|
||||
'message': {deps: ['jquery', 'css!'+'plugins/messager/css/style.css']},
|
||||
'board': {deps: ['css!'+'plugins/board/board.min.css']},
|
||||
// open-source
|
||||
'websocket': {deps: [baseRoot + 'plugins/socket/swfobject.min.js']},
|
||||
// jquery
|
||||
'jquery.ztree': {deps: ['css!' + baseRoot + 'plugins/ztree/zTreeStyle/zTreeStyle.css']},
|
||||
// bootstrap
|
||||
'bootstrap':{deps: ['jquery']},
|
||||
'bootstrap.typeahead': {deps: ['bootstrap']},
|
||||
'bootstrap.multiselect': {deps: ['bootstrap', 'css!' + baseRoot + 'plugins/bootstrap-multiselect/bootstrap-multiselect.css']},
|
||||
'bootstrap-editable': {deps:['bootstrap', 'css!'+baseRoot+'plugins/bootstrap-editable/css/bootstrap-editable.css'], exports:'$.fn.editable'},
|
||||
'distpicker': {deps: [baseRoot + 'plugins/distpicker/distpicker.data.js']},
|
||||
'bootstrap-daterangepicker': ['moment/locale/zh-cn'],
|
||||
'bootstrap-datetimepicker': ['moment/locale/zh-cn','css!'+baseRoot+'plugins/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css'],
|
||||
'select2': {deps: ['jquery', 'bootstrap', 'css!'+baseRoot+'plugins/select2/select2.css', 'css!'+baseRoot+'plugins/select2/sent_diy.css']},
|
||||
|
||||
'board': {deps:['jquery', 'droppable', 'css!'+baseRoot+'plugins/board/board.min.css'], exports: '$.fn.board'},
|
||||
'droppable': {deps:['jquery'], exports: '$.fn.droppable'},
|
||||
'tagsinput':{deps: ['jquery', 'bootstrap', 'css!'+baseRoot+'plugins/tagsinput/bootstrap-tagsinput.css'], exports: '$.fn.tagsinput'},
|
||||
'iconpicker':{deps: ['jquery', 'bootstrap', 'css!'+baseRoot+'plugins/bootstrap-iconpicker/dist/css/bootstrap-iconpicker.min.css'], exports: '$.fn.iconpicker'},
|
||||
|
||||
'validator-lang': ['validator-core'],
|
||||
|
||||
'slimscroll': {deps: ['jquery'],exports: '$.fn.extend'},
|
||||
'adminlte': {deps: ['bootstrap', 'slimscroll'],exports: '$.AdminLTE'},
|
||||
|
||||
'form': {deps: ['css!'+baseRoot+'common/css/form.css']},
|
||||
'webupload': {deps: ['jquery', 'css!'+baseRoot+'plugins/webuploader/theme/webuploader.css', 'css!'+baseRoot+'/plugins/webuploader/theme/app.css']},
|
||||
|
||||
'layer': {deps: ['jquery', 'css!'+baseRoot+'plugins/layer/theme/default/layer.css']},
|
||||
'layui':{exports: "layui"}
|
||||
},
|
||||
deps: ['json'],
|
||||
// 开启debug模式,不缓存资源
|
||||
urlArgs: "ver=" + (new Date()).getTime()
|
||||
});
|
||||
|
||||
// 注册jquery到require模块
|
||||
require(['jquery', 'bootstrap', 'message', 'adminlte'], function ($) {
|
||||
//初始配置
|
||||
var Config = requirejs.s.contexts._.config.config;
|
||||
//将Config渲染到全局
|
||||
window.Config = Config;
|
||||
// 配置语言包的路径
|
||||
var paths = {}; // 避免目录冲突
|
||||
require.config({paths: paths});
|
||||
$(function(){
|
||||
require(['sent'], function(sent){
|
||||
require([skinRoot + 'js/user.js'], function(backend){
|
||||
//加载相应模块
|
||||
if (Config.jsname) {
|
||||
require([Config.jsname], function (Controller) {
|
||||
if (Controller.hasOwnProperty(Config.actionname)) {
|
||||
Controller[Config.actionname]();
|
||||
} else {
|
||||
if (Controller.hasOwnProperty("_empty")) {
|
||||
Controller._empty();
|
||||
}
|
||||
}
|
||||
}, function (e) {
|
||||
console.error(e);
|
||||
// 这里可捕获模块加载的错误
|
||||
});
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
});
|
||||
0
public/template/default/static/js/user.js
Normal file
0
public/template/default/static/js/user.js
Normal file
186
public/template/default/user/base.html
Normal file
186
public/template/default/user/base.html
Normal file
@@ -0,0 +1,186 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<!-- 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">
|
||||
<title>用户中心</title>
|
||||
<link rel="stylesheet" type="text/css" href="__static__/common/css/main.css?time={:time()}">
|
||||
<!-- 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="__static__/common/js/html5shiv.js"></script>
|
||||
<script src="__static__/common/js/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body class="hold-transition skin-blue sidebar-mini layout-top-nav">
|
||||
<div class="wrapper">
|
||||
<header class="main-header">
|
||||
<nav class="navbar navbar-static-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<a href="{:url('/user/index/index')}" class="navbar-brand"><b>用户中心</b></a>
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse">
|
||||
<i class="fa fa-bars"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse pull-left" id="navbar-collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="active"><a href="{:url('front.Index/index')}">网站首页</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">我的内容 <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="#">文章列表</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#">图片列表</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- /.navbar-collapse -->
|
||||
<!-- Navbar Right Menu -->
|
||||
<div class="navbar-custom-menu">
|
||||
<ul class="nav navbar-nav">
|
||||
<!-- Messages: style can be found in dropdown.less-->
|
||||
<li class="dropdown messages-menu">
|
||||
<!-- Menu toggle button -->
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
<i class="fa fa-envelope-o"></i>
|
||||
<span class="label label-success">4</span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li class="header">You have 4 messages</li>
|
||||
<li>
|
||||
<!-- inner menu: contains the messages -->
|
||||
<ul class="menu">
|
||||
<li><!-- start message -->
|
||||
<a href="#">
|
||||
<div class="pull-left">
|
||||
<!-- User Image -->
|
||||
<img src="__plugins__/adminlte/img/user2-160x160.jpg" class="img-circle" alt="User Image">
|
||||
</div>
|
||||
<!-- Message title and timestamp -->
|
||||
<h4>
|
||||
Support Team
|
||||
<small><i class="fa fa-clock-o"></i> 5 mins</small>
|
||||
</h4>
|
||||
<!-- The message -->
|
||||
<p>Why not buy a new awesome theme?</p>
|
||||
</a>
|
||||
</li>
|
||||
<!-- end message -->
|
||||
</ul>
|
||||
<!-- /.menu -->
|
||||
</li>
|
||||
<li class="footer"><a href="#">See All Messages</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<!-- /.messages-menu -->
|
||||
<!-- User Account Menu -->
|
||||
<li class="dropdown user user-menu">
|
||||
<!-- Menu Toggle Button -->
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
<!-- The user image in the navbar-->
|
||||
<img src="__plugins__/adminlte/img/user2-160x160.jpg" class="user-image" alt="User Image">
|
||||
<!-- hidden-xs hides the username on small devices so only the image appears. -->
|
||||
<span class="hidden-xs">{:session('userInfo.nickname')}</span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<!-- The user image in the menu -->
|
||||
<li class="user-header">
|
||||
<img src="__plugins__/adminlte/img/user2-160x160.jpg" class="img-circle" alt="User Image">
|
||||
|
||||
<p>
|
||||
{:session('userInfo.nickname')}
|
||||
<small>Member since Nov. 2012</small>
|
||||
</p>
|
||||
</li>
|
||||
<!-- Menu Footer-->
|
||||
<li class="user-footer">
|
||||
<div class="pull-left">
|
||||
<a href="{:url('/user/index/profile')}" class="btn btn-default btn-flat">个人资料</a>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<a href="{:url('/user/login/logout')}" class="btn btn-default btn-flat">退出</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- /.navbar-custom-menu -->
|
||||
</div>
|
||||
<!-- /.container-fluid -->
|
||||
</nav>
|
||||
</header>
|
||||
<!-- Full Width Column -->
|
||||
<div class="content-wrapper">
|
||||
<div class="container">
|
||||
<!-- Content Header (Page header) -->
|
||||
<section class="content-header">
|
||||
<h1> </h1>
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="#"><i class="fa fa-dashboard"></i> 用户中心</a></li>
|
||||
<li><a href="#">首页</a></li>
|
||||
<li class="active">我的</li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<!-- Main content -->
|
||||
<section class="content">
|
||||
<div class="row">
|
||||
<div class="col-sm-2" style="background: #222d32; padding: 0;">
|
||||
<section class="sidebar">
|
||||
<!-- Sidebar user panel -->
|
||||
<div class="user-panel">
|
||||
<div class="pull-left image">
|
||||
<img src="__plugins__/adminlte/img/user2-160x160.jpg" class="img-circle" alt="User Image">
|
||||
</div>
|
||||
<div class="pull-left info">
|
||||
<p>{:session('userInfo.nickname')}</p>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="sidebar-menu">
|
||||
<li class="header">基础信息</li>
|
||||
<li><a href="{:url('/user/index/profile')}"><i class="fa fa-book"></i> <span>个人资料</span></a></li>
|
||||
<li><a href="{:url('/user/index/repasswd')}"><i class="fa fa-book"></i> <span>修改密码</span></a></li>
|
||||
<li class="header">我的内容</li>
|
||||
<li><a href="#"><i class="fa fa-book"></i> <span>我的内容</span></a></li>
|
||||
<li class="header">我的表单</li>
|
||||
<li><a href="#"><i class="fa fa-book"></i> <span>我的内容</span></a></li>
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-10" style="padding-left: 15px;">
|
||||
{block name="body"}
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title"></h3>
|
||||
</div>
|
||||
<div class="box-body"></div>
|
||||
</div>
|
||||
{/block}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.content-wrapper -->
|
||||
<footer class="main-footer">
|
||||
<div class="pull-right hidden-xs">
|
||||
<b>Version</b> 4.x
|
||||
</div>
|
||||
<strong>Copyright © 2013-2020 <a href="https://www.tensent.cn">SentCMS</a>.</strong> All rights
|
||||
reserved.
|
||||
</footer>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var require = {
|
||||
config: {"site": {$config|json_encode|raw}, 'module': 'admin', 'jsname': "{$require['jsname']|default=''}", 'actionname': "{$require['actionname']|default=''}", }
|
||||
}
|
||||
</script>
|
||||
<script src="__plugins__/require/require.js" data-main="__js__/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
1
public/template/default/user/index_index.html
Normal file
1
public/template/default/user/index_index.html
Normal file
@@ -0,0 +1 @@
|
||||
{extend name="base" /}
|
||||
1
public/template/default/user/index_profile.html
Normal file
1
public/template/default/user/index_profile.html
Normal file
@@ -0,0 +1 @@
|
||||
{extend name="base" /}
|
||||
1
public/template/default/user/index_repasswd.html
Normal file
1
public/template/default/user/index_repasswd.html
Normal file
@@ -0,0 +1 @@
|
||||
{extend name="base" /}
|
||||
Reference in New Issue
Block a user