文章管理页面布局


表单页

HTML

<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring4-4.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<!-- begin::Head -->
<head>
    <title>
        后台管理 | 文章管理
    </title>

    <th:block th:include="includes/header :: header"></th:block>
</head>
<body class="m-page--fluid m--skin- m-content--skin-light2 m-header--fixed m-header--fixed-mobile m-aside-left--enabled m-aside-left--skin-dark m-aside-left--offcanvas m-footer--push m-aside--offcanvas-default"  >

<div class="m-portlet">
    <div class="m-portlet__head">
        <div class="m-portlet__head-caption">
            <div class="m-portlet__head-title">
                <span class="m-portlet__head-icon m--hide"> <i class="la la-gear"></i> </span>
                <h3 class="m-portlet__head-text"> 文章管理 </h3>
            </div>
        </div>
    </div>
    <!--begin::Form-->
    <form class="m-form" action="/article/save" method="post">
        <div class="m-portlet__body">
            <div class="form-group m-form__group row">
                <label class="col-lg-3 col-form-label"> 所属频道 </label>
                <div class="col-lg-6">
                    <input id="channelId" name="channelId" type="hidden" />
                    <input id="channelText" type="text" class="form-control m-input" placeholder="请选择" readonly data-toggle="modal" data-target="#m_modal_1" />
                </div>
            </div>

            <div class="form-group m-form__group row">
                <label class="col-lg-3 col-form-label"> 文章标题 </label>
                <div class="col-lg-6">
                    <input name="title" type="text" class="form-control m-input" placeholder="文章标题" />
                </div>
            </div>

            <div class="form-group m-form__group row">
                <label class="col-lg-3 col-form-label"> 文章链接 </label>
                <div class="col-lg-6">
                    <input name="url" type="text" class="form-control m-input" placeholder="文章链接" />
                </div>
            </div>

            <div class="form-group m-form__group row">
                <label class="col-lg-3 col-form-label"> 文件简介 </label>
                <div class="col-lg-6">
                    <input name="introduction" type="text" class="form-control m-input" placeholder="文件简介" />
                </div>
            </div>

            <div class="form-group m-form__group row">
                <label class="col-lg-3 col-form-label"> 相册 </label>
                <div class="col-lg-6">
                    <input name="cover" type="text" class="form-control m-input" placeholder="相册" />
                </div>
            </div>
        </div>
        <div class="m-portlet__foot m-portlet__foot--fit">
            <div class="m-form__actions m-form__actions">
                <div class="row">
                    <div class="col-lg-3"></div>
                    <div class="col-lg-6">
                        <button type="submit" class="btn btn-success"> 提交 </button>
                        <button type="reset" class="btn btn-secondary" onclick="history.go(-1);"> 返回 </button>
                    </div>
                </div>
            </div>
        </div>
    </form>
    <!--end::Form-->
</div>

<div class="modal fade" id="m_modal_1" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="exampleModalLabel"> 所属频道 </h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true"> &times; </span> </button>
            </div>
            <div class="modal-body">
                <div id="m_tree_1" class="tree-demo"></div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal"> 关闭 </button>
                <button type="button" class="btn btn-primary" data-dismiss="modal"> 选择 </button>
            </div>
        </div>
    </div>
</div>

<th:block th:include="includes/footer :: footer"></th:block>
<script src="/assets/app/js/treeview.js" type="text/javascript"></script>
<script>
    $(function () {
        TreeView.initTree("m_tree_1", "/channel/tree", function (obj, e) {
            var currentNode = e.node;
            $("#channelId").val(currentNode.id);
            $("#channelText").val(currentNode.text);
        });
    });
</script>
</body>
</html>

改造后的 treeview.js

var TreeView = function () {

    /**
     * 初始化树控件
     * @param id 树控件的元素 ID
     * @param url Ajax 请求地址
     * @param callback 回调函数,用于绑定树节点的点击事件
     */
    var handlerInitTree = function (id, url, callback) {
        $("#" + id).jstree({
            "core": {
                "themes": {
                    "responsive": false
                },
                // so that create works
                "check_callback": true,
                'data': {
                    'url': function (node) {
                        return url;
                    },
                    'data': function (node) {
                        return {'pid': node.id};
                    }
                }
            },
            "types": {
                "default": {
                    "icon": "fa fa-folder m--font-brand"
                },
                "file": {
                    "icon": "fa fa-file  m--font-brand"
                }
            },
            "state": {"key": "demo3"},
            "plugins": ["dnd", "state", "types"]
        });


        $('#' + id).bind("activate_node.jstree", function (obj, e) {
            callback(obj, e);
        });
    };

    return {
        initTree: function (id, url, callback) {
            handlerInitTree(id, url, callback);
        }
    }
}();

列表页

HTML

<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring4-4.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<!-- begin::Head -->
<head>
    <title>
        后台管理 | 文章管理
    </title>

    <th:block th:include="includes/header :: header"></th:block>
    <link href="/assets/plugins/treeTable/themes/vsStyle/treeTable.css" rel="stylesheet" type="text/css"/>
</head>
<body class="m-page--fluid m--skin- m-content--skin-light2 m-header--fixed m-header--fixed-mobile m-aside-left--enabled m-aside-left--skin-dark m-aside-left--offcanvas m-footer--push m-aside--offcanvas-default">

<div class="m-portlet m-portlet--mobile">
    <div class="m-portlet__head">
        <div class="m-portlet__head-caption">
            <div class="m-portlet__head-title">
                <h3 class="m-portlet__head-text">
                    文章管理
                </h3>
            </div>
        </div>

        <div class="m-portlet__head-tools">
            <a href="/article/form" class="btn btn-accent m-btn m-btn--custom m-btn--icon m-btn--air m-btn--pill">
                <span>
                    <i class="la la-plus"></i>
                    <span>
                        新增
                    </span>
                </span>
            </a>
        </div>
    </div>
    <div class="m-portlet__body">
        <div class="m_datatable" id="ajax_data"></div>
    </div>
</div>

<th:block th:include="includes/footer :: footer"></th:block>
<script src="/assets/app/js/datatable.js" type="text/javascript"></script>
<script>
    $(function () {
        var columns = [{
            field: 'title',
            title: '文章标题',
            sortable: false,
            selector: false,
            textAlign: 'center'
        }, {
            field: 'url',
            title: '链接地址',
            sortable: false,
            selector: false,
            textAlign: 'center'
        }];

       DataTable.initAjaxTable("ajax_data", "/article/data", columns);
    });
</script>
</body>
</html>

改造后的 datatable.js

var DataTable = function () {

    /**
     * 初始化 HTML 表格
     * @param id 元素 ID
     */
    var handlerInitHtmlTable = function (id) {
        var datatable = $('#' + id).mDatatable({
            data: {
                saveState: {cookie: false}
            },
            pagination: false,
            sortable: false
        });
    };

    /**
     * 初始化 Ajax 表格
     * @param id 元素 ID
     * @param url 数据请求地址
     * @param columns 自定义数据列
     */
    var handlerInitAjaxTable = function (id, url, columns) {
        var datatable = $('#' + id).mDatatable({
            // 国际化
            translate: {
                records: {
                    processing: '加载中,请稍候...',
                    noRecords: '还没有任何记录'
                },
                toolbar: {
                    pagination: {
                        items: {
                            default: {
                                first: '首页',
                                prev: '上一页',
                                next: '下一页',
                                last: '尾页',
                                more: '更多',
                                input: '页数',
                                select: '显示笔数'
                            },
                            info: '显示第 {{start}} - {{end}} 条记录,共 {{total}} 条记录'
                        }
                    }
                }
            },

            // 定义数据源
            data: {
                type: 'remote',
                source: {
                    read: {
                        method: 'POST',
                        url: url,
                        map: function (raw) {
                            var dataSet = raw;
                            if (typeof raw.data !== 'undefined') {
                                dataSet = raw.data;
                            }
                            return dataSet;
                        }
                    }
                },
                pageSize: 10,
                serverPaging: true,
                serverFiltering: true,
                serverSorting: true
            },

            // 开启分页功能
            pagination: true,

            toolbar: {
                // toolbar items
                items: {
                    // pagination
                    pagination: {
                        // page size select
                        pageSizeSelect: [10, 20, 50]
                    }
                }
            },

            // 定义数据列
            columns: columns
        });
    };

    return {
        initHtmlTable: function (id) {
            handlerInitHtmlTable(id);
        },

        initAjaxTable: function (id, url, columns) {
            handlerInitAjaxTable(id, url, columns);
        }
    }
}();

results matching ""

    No results matching ""