Procházet zdrojové kódy

Signed-off-by: a123456 <1209165801@qq.com>

a123456 před 6 roky
rodič
revize
7fb6775dba

+ 70 - 83
src/main/webapp/WEB-INF/manager/mweixin/keyword/form.ftl

@@ -1,91 +1,78 @@
 <!-- 关键词回复 -->
-<!DOCTYPE html>
-<html lang="">
+<link rel="stylesheet" href="../../../../static/mweixin/css/keyword-reply.css">
 
-<head>
-    <title></title>
-    <!-- <#include "/include/head-file.ftl"/> -->
-    <!--#include virtual="../../include/head-file.ftl" -->
-    <link rel="stylesheet" href="../../../../static/mweixin/css/keyword-reply.css">
-    <!-- <link rel="stylesheet" href="${base}/static/mweixin/css/keyword-reply.css"> -->
-</head>
+<div id="keyword-reply" class="keyword-reply ms-container" v-if="menuVue.menuActive == '关键词表单'">
+   <el-form :model="keywordReplyForm" status-icon :rules="keywordReplyFormRules" ref="keywordReplyForm" label-width="100px">
+      <el-form-item label="关键词" prop="keyword" class="ms-keyword-input">
+         <el-row type='flex' justify='space-between' align='center'>
+            <el-col :span='12'>
+               <el-input placeholder="请输入内容" v-model="keywordReplyForm.keyword" class="input-with-select" size='mini' maxlength='30' @input='resetWord'>
+                  <el-select v-model="keywordReplyForm.select" slot="prepend" placeholder="请选择">
+                     <el-option label="模糊匹配" value="1"></el-option>
+                     <el-option label="全匹配" value="2"></el-option>
+                  </el-select>
+                  <span slot='suffix' v-text="wordNumber+'/30'"></span>
+               </el-input>
+            </el-col>
+            <el-col>
+               <i class="el-icon-plus" @click='addKeyWord'></i>
+            </el-col>
+         </el-row>
+      </el-form-item>
+      <el-form-item class="ms-keyword-reply-content" label="回复内容">
+         <el-tabs v-model="activeName" @tab-click="" class="keyword-reply-tabs">
+            <el-tab-pane label="文字" name="text">
+               <el-input type="textarea" v-model="keywordReplyForm.reply" :autosize="{ minRows: 4, maxRows: 4}" resize='none'>
+               </el-input>
+               <i class="el-icon-delete" @click="keywordReplyForm.reply = ''"></i>
+               <div class="footer">
+                  <i class="el-icon-star-off"></i>
+                  <a>插入超链接</a>
+               </div>
+            </el-tab-pane>
+            <el-tab-pane label="图片" name="picture">
+            </el-tab-pane>
+            <el-tab-pane label="图文" name="article">
+            </el-tab-pane>
+         </el-tabs>
+      </el-form-item>
+   </el-form>
+</div>
 
-<body>
-    <div id="keyword-reply" class="keyword-reply ms-container">
-        <el-form :model="keywordReplyForm" status-icon :rules="keywordReplyFormRules" ref="keywordReplyForm"
-            label-width="100px">
-            <el-form-item label="关键词" prop="keyword" class="ms-keyword-input">
-                <el-row type='flex' justify='space-between' align='center'>
-                    <el-col :span='12'>
-                        <el-input placeholder="请输入内容" v-model="keywordReplyForm.keyword" class="input-with-select" size='mini'
-                            maxlength='30' @input='resetWord'>
-                            <el-select v-model="keywordReplyForm.select" slot="prepend" placeholder="请选择">
-                                <el-option label="模糊匹配" value="1"></el-option>
-                                <el-option label="全匹配" value="2"></el-option>
-                            </el-select>
-                            <span slot='suffix' v-text="wordNumber+'/30'"></span>
-                        </el-input>
-                    </el-col>
-                    <el-col><i class="el-icon-plus" @click='addKeyWord'></i></el-col>
-                </el-row>
-            </el-form-item>
-            <el-form-item class="ms-keyword-reply-content" label="回复内容">
-                <el-tabs v-model="activeName" @tab-click="" class="keyword-reply-tabs">
-                    <el-tab-pane label="文字" name="text">
-                        <el-input type="textarea" v-model="keywordReplyForm.reply" :autosize="{ minRows: 4, maxRows: 4}"
-                            resize='none'>
-                        </el-input>
-                        <i class="el-icon-delete" @click="keywordReplyForm.reply = ''"></i>
-                        <div class="footer">
-                            <i class="el-icon-star-off"></i>
-                            <a>插入超链接</a>
-                        </div>
-                    </el-tab-pane>
-                    <el-tab-pane label="图片" name="picture">
-                    </el-tab-pane>
-                    <el-tab-pane label="图文" name="article">
-                    </el-tab-pane>
-                </el-tabs>
-            </el-form-item>
-        </el-form>
-    </div>
-</body>
-
-</html>
 <script>
-    var keywordReplyVue = new Vue({
-        el: '#keyword-reply',
-        data: {
-            keywordReplyForm: {
-                keyword: "",//关键词
-                select: '',
-                reply: "",
-            },
-            keywordReplyFormRules: {
+   var keywordReplyVue = new Vue({
+      el: '#keyword-reply',
+      data: {
+         keywordReplyForm: {
+            keyword: "", //关键词
+            select: '',
+            reply: "",
+         },
+         keywordReplyFormRules: {
 
-            },
-            activeName: 'text',
-           wordNumber:30,//剩余字数
-        },
-        methods: {
-            // 添加关键词
-            addKeyWord:function(){
+         },
+         activeName: 'text',
+         wordNumber: 30, //剩余字数
+      },
+      methods: {
+         // 添加关键词
+         addKeyWord: function() {
 
-            },
-            // 计算剩余字数
-            resetWord: function (value) {
-                if(!value)return 30;
-                if (value.length >= 30) {
-                    this.$message.error('任务名称不得超过30个字');
-                    // 这里涉及到获取数据更新之后的DOM,需要用$nextTick
-                    this.$nextTick(function () {
-                        this.keywordReplyForm.keyword = event.target.value = value.slice(0, 30);
-                    })
-                    this.wordNumber = 0
-                }else{
-                    this.wordNumber = 30 - value.length
-                }
+         },
+         // 计算剩余字数
+         resetWord: function(value) {
+            if(!value) return 30;
+            if(value.length >= 30) {
+               this.$message.error('任务名称不得超过30个字');
+               // 这里涉及到获取数据更新之后的DOM,需要用$nextTick
+               this.$nextTick(function() {
+                  this.keywordReplyForm.keyword = event.target.value = value.slice(0, 30);
+               })
+               this.wordNumber = 0
+            } else {
+               this.wordNumber = 30 - value.length
             }
-        }
-    })
+         }
+      }
+   })
 </script>

+ 43 - 54
src/main/webapp/WEB-INF/manager/mweixin/keyword/index.ftl

@@ -1,59 +1,48 @@
 <!-- 关键字列表 -->
-<!DOCTYPE html>
-<html lang="">
-<head>
-    <title></title>
-    <!-- <#include "/include/head-file.ftl"/> -->
-    <!--#include virtual="../../include/head-file.ftl" -->
-    <link rel="stylesheet" href="../../../../static/mweixin/css/keyword-list.css">
-    <!-- <link rel="stylesheet" href="${base}/static/mweixin/css/keyword-list.css"> -->
-</head>
+<link rel="stylesheet" href="../../../../static/mweixin/css/keyword-list.css">
 
-<body>
-    <div id="keyword-list" class="keyword-list ms-container">
-        <el-table :data="tableData" border style="width: 100%">
-            <el-table-column prop="date" label="规则名" width="180" align='center'>
-            </el-table-column>
-            <el-table-column prop="name" label="关键词" width="180" align='center'>
-            </el-table-column>
-            <el-table-column prop="address" label="消息回复类型" align='center'>
-            </el-table-column>
-            <el-table-column prop="address" label="发送对象" align='center'>
-            </el-table-column>
-            <el-table-column prop="address" label="回复方式" align='center'>
-            </el-table-column>
-        </el-table>
-    </div>
-</body>
+<div id="keyword-list" class="keyword-list ms-container" v-if="menuVue.menuActive == '关键词回复'">
+   <el-table :data="tableData" border style="width: 100%">
+      <el-table-column prop="date" label="规则名" width="180" align='center'>
+      </el-table-column>
+      <el-table-column prop="name" label="关键词" width="180" align='center'>
+      </el-table-column>
+      <el-table-column prop="address" label="消息回复类型" align='center'>
+      </el-table-column>
+      <el-table-column prop="address" label="发送对象" align='center'>
+      </el-table-column>
+      <el-table-column prop="address" label="回复方式" align='center'>
+      </el-table-column>
+   </el-table>
+</div>
 
-</html>
 <script>
-    var keywordListVue = new Vue({
-        el: '#keyword-list',
-        data: {
-            tableData: [{
-                date: '2016-05-02',
-                name: '王小虎',
-                address: '上海市普陀区金沙江路 1518 弄'
-            }, {
-                date: '2016-05-04',
-                name: '王小虎',
-                address: '上海市普陀区金沙江路 1517 弄'
-            }, {
-                date: '2016-05-01',
-                name: '王小虎',
-                address: '上海市普陀区金沙江路 1519 弄'
-            }, {
-                date: '2016-05-03',
-                name: '王小虎',
-                address: '上海市普陀区金沙江路 1516 弄'
-            }]
-        },
-        methods:{
-            // 获取关键词列表
-            list:function(){
-                
-            }
-        }
-    })
+   var keywordListVue = new Vue({
+      el: '#keyword-list',
+      data: {
+         tableData: [{
+            date: '2016-05-02',
+            name: '王小虎',
+            address: '上海市普陀区金沙江路 1518 弄'
+         }, {
+            date: '2016-05-04',
+            name: '王小虎',
+            address: '上海市普陀区金沙江路 1517 弄'
+         }, {
+            date: '2016-05-01',
+            name: '王小虎',
+            address: '上海市普陀区金沙江路 1519 弄'
+         }, {
+            date: '2016-05-03',
+            name: '王小虎',
+            address: '上海市普陀区金沙江路 1516 弄'
+         }]
+      },
+      methods: {
+         // 获取关键词列表
+         list: function() {
+
+         }
+      }
+   })
 </script>

+ 16 - 15
src/main/webapp/WEB-INF/manager/mweixin/menu.ftl

@@ -10,15 +10,20 @@
          </div>
       </el-header>
       <el-main>
-         <el-menu class="ms-weixin-menu" default-active="0">
-            <el-submenu :index="i+''" v-for="(menu,i) in menuList" @click="menuActive = menu">
-               <template slot="title">
-                  <span v-text="menu.title"></span>
-               </template>
-               <el-menu-item-group>
-                  <el-menu-item class="ms-weixin-menu-item" :index="i+'-'+index" v-for="(sub,index) in menu.sub" v-text="sub.title"></el-menu-item>
-               </el-menu-item-group>
-            </el-submenu>
+         <el-menu class="ms-weixin-menu" default-active="0-0">
+            <template v-for="(menu,i) in menuList">
+               <!--单个选项-->
+               <el-menu-item :index="i" @click="menuActive = menu.title" v-if="!menu.sub" v-text="menu.title"></el-menu-item>
+               <!--多个选项-->
+               <el-submenu :index="i+''" v-if="menu.sub">
+                  <template slot="title">
+                     <span v-text="menu.title"></span>
+                  </template>
+                  <el-menu-item-group>
+                     <el-menu-item class="ms-weixin-menu-item" @click="menuActive = sub.title" :index="i+'-'+index" v-for="(sub,index) in menu.sub" v-text="sub.title"></el-menu-item>
+                  </el-menu-item-group>
+               </el-submenu>
+            </template>
          </el-menu>
       </el-main>
    </el-container>
@@ -37,11 +42,6 @@
             }],
          }, {
             title: '自定义菜单',
-            sub: [{
-               title: '文章管理'
-            }, {
-               title: '栏目管理'
-            }]
          }, {
             title: '自动回复',
             sub: [{
@@ -49,9 +49,10 @@
             }, {
                title: '消息回复'
             }, {
-               title: '关键回复'
+               title: '关键回复'
             }]
          }, ], //左侧导航列表
+         menuActive: '图文', //选中
       }
    })
 </script>

+ 85 - 88
src/main/webapp/WEB-INF/manager/mweixin/menu/index.ftl

@@ -1,94 +1,91 @@
 <!-- 自定义菜单 -->
-<!DOCTYPE html>
-<html lang="">
-<head>
-    <title></title>
-    <!-- <#include "/include/head-file.ftl"/> -->
-    <!--#include virtual="../../include/head-file.ftl" --> 
-    <!-- <link rel="stylesheet" href="${base}/static/mweixin/css/custom-menu.css"> -->
-    <link rel="stylesheet" href="../../../../static/mweixin/css/custom-menu.css">
-</head>
-<body>
-    <div id="custom-menu" class="ms-custom-menu">
-        <el-container class="ms-custom-container">
-            <el-aside>
-                <el-container>
-                    <el-header>公众号</el-header>
-                    <el-main></el-main>
-                    <el-footer>
-                        <el-button icon="el-icon-date"></el-button>
-                        <div class="ms-create-menu">
-                            <div class="ms-create-sub-menu">
-                                <el-button type="primary" @click='addSubMenuShow = !addSubMenuShow'>新建菜单</el-button>
-                                <el-button icon="el-icon-plus" v-show='addSubMenuShow'></el-button>
-                            </div>
-                            <el-button icon="el-icon-plus"></el-button>
+<link rel="stylesheet" href="../../../../static/mweixin/css/custom-menu.css">
+<div id="custom-menu" class="ms-custom-menu" v-if="menuVue.menuActive == '自定义菜单'">
+   <el-container class="ms-custom-container">
+      <el-aside>
+         <el-container>
+            <el-header>公众号</el-header>
+            <el-main></el-main>
+            <el-footer>
+               <el-button icon="el-icon-date"></el-button>
+               <div class="ms-create-menu">
+                  <div class="ms-create-sub-menu">
+                     <el-button type="primary" @click='addSubMenuShow = !addSubMenuShow'>新建菜单</el-button>
+                     <el-button icon="el-icon-plus" v-show='addSubMenuShow'></el-button>
+                  </div>
+                  <el-button icon="el-icon-plus"></el-button>
+               </div>
+            </el-footer>
+         </el-container>
+      </el-aside>
+      <el-main>
+         <el-card class="custom-menu-card" shadow="never">
+            <div slot="header" class="clearfix">
+               <span>新建菜单</span>
+            </div>
+            <el-form ref="customMenuForm" :rule='customMenuFormRules' :model="customMenuForm" label-width="80px">
+               <el-form-item label="菜单名称" prop='name' class="ms-custom-menu-name">
+                  <el-input v-model="customMenuForm.name" size='mini'></el-input>
+                  <span>菜单名称字数不多于5个汉字或10个字母</span>
+               </el-form-item>
+               <el-form-item label="菜单内容" class="ms-custom-menu-content">
+                  <el-tabs v-model="activeName" @tab-click="">
+                     <el-tab-pane label="图片" name="picture">
+                        <span slot="label">
+                           <i class="el-icon-picture"></i>图片</span>
+                        <div @click="open('store')">
+                           <i class="el-icon-picture-outline"></i>
+                           <span>从素材库选择</span>
                         </div>
-                    </el-footer>
-            </el-aside>
-            <el-main>
-                <el-card class="custom-menu-card" shadow="never">
-                    <div slot="header" class="clearfix">
-                        <span>新建菜单</span>
-                    </div>
-                    <el-form ref="customMenuForm" :rule='customMenuFormRules' :model="customMenuForm" label-width="80px">
-                        <el-form-item label="菜单名称" prop='name' class="ms-custom-menu-name">
-                            <el-input v-model="customMenuForm.name" size='mini'></el-input>
-                            <span>菜单名称字数不多于5个汉字或10个字母</span>
-                        </el-form-item>
-                        <el-form-item label="菜单内容"  class="ms-custom-menu-content">
-                            <el-tabs v-model="activeName" @tab-click="">
-                                <el-tab-pane label="图片" name="picture">
-                                    <span slot="label"><i class="el-icon-picture"></i>图片</span>
-                                    <div @click="open('store')"><i class="el-icon-picture-outline"></i><span>从素材库选择</span></div>
-                                    <div @click="open('new')"><i class="el-icon-plus"></i><span>新建图片</span></div>
-                                </el-tab-pane>
-                                <el-tab-pane label="图文管理" name="article">
-                                    <span slot="label"><i class="el-icon-picture"></i>图文管理</span>
-                                </el-tab-pane>
-                            </el-tabs>
-                        </el-form-item>
-                    </el-form>
-                </el-card>
-            </el-main>
-        </el-container>
-    </div>
-</body>
-
-</html>
+                        <div @click="open('new')">
+                           <i class="el-icon-plus"></i>
+                           <span>新建图片</span>
+                        </div>
+                     </el-tab-pane>
+                     <el-tab-pane label="图文管理" name="article">
+                        <span slot="label">
+                           <i class="el-icon-picture"></i>图文管理</span>
+                     </el-tab-pane>
+                  </el-tabs>
+               </el-form-item>
+            </el-form>
+         </el-card>
+      </el-main>
+   </el-container>
+</div>
 <script>
-    var customMenuVue = new Vue({
-        el: "#custom-menu",
-        data: {
-            customMenuForm: {
-                name: '',
-            },
-            customMenuFormRules: {
-                name: [{
-                        required: true,
-                        message: '请输入菜单名称',
-                        trigger: ['blur','change']
-                    },
-                    {
-                        min: 1,
-                        max: 5,
-                        message: '长度在 1 到 5 个字符',
-                        trigger: ['blur','change']
-                    }
-                ],
-            },
-            addSubMenuShow:false,//子菜单添加弹窗
-            activeName: 'picture'
-        },
-        methods: {
-            open:function(type){
-                if(type == 'store'){
-                    // 素材库
-                }else{
-                    // 新建图片
-                }
+   var customMenuVue = new Vue({
+      el: "#custom-menu",
+      data: {
+         customMenuForm: {
+            name: '',
+         },
+         customMenuFormRules: {
+            name: [{
+                  required: true,
+                  message: '请输入菜单名称',
+                  trigger: ['blur', 'change']
+               },
+               {
+                  min: 1,
+                  max: 5,
+                  message: '长度在 1 到 5 个字符',
+                  trigger: ['blur', 'change']
+               }
+            ],
+         },
+         addSubMenuShow: false, //子菜单添加弹窗
+         activeName: 'picture'
+      },
+      methods: {
+         open: function(type) {
+            if(type == 'store') {
+               // 素材库
+            } else {
+               // 新建图片
             }
-        }
+         }
+      }
 
-    })
+   })
 </script>

+ 49 - 71
src/main/webapp/WEB-INF/manager/mweixin/message/index.ftl

@@ -1,76 +1,54 @@
 <!-- 消息回复 && 关注回复 -->
-<!DOCTYPE html>
-<html lang="">
-
-<head>
-    <title></title>
-    <!-- <#include "/include/head-file.ftl"/> -->
-    <!-- <link rel="stylesheet" href="${base}/static/mweixin/css/message-reply.css"> -->
-    
-    <!--#include virtual="../../include/head-file.ftl" -->
-    <link rel="stylesheet" href="../../../../static/mweixin/css/message-reply.css">
-
-</head>
-
-<body>
-    <div id="message-reply" class="ms-message-reply ms-container">
-        <div>回复内容</div>
-        <el-tabs v-model="activeName" @tab-click="" class="message-reply-tabs">
-            <el-tab-pane label="文字" name="text">
-                <el-form ref="messageReplyForm" :rules='messageReplyFormRules' :model="messageReplyForm">
-                    <el-form-item class="ms-message-reply-content">
-                        <el-input 
-                            type="textarea" 
-                            v-model="messageReplyForm.reply"
-                            :autosize="{ minRows: 4, maxRows: 4}"
-                            resize='none'
-                            >
-                        </el-input>
-                        <i class="el-icon-delete" @click="messageReplyForm.reply = ''"></i>
-                        <div class="footer">
-                            <i class="el-icon-star-off"></i>
-                            <a>插入超链接</a>
-                        </div>
-                    </el-form-item>
-                </el-form>
-                </el-form>
-            </el-tab-pane>
-            <el-tab-pane label="图片" name="picture">
-            </el-tab-pane>
-            <el-tab-pane label="图文" name="article">
-            </el-tab-pane>
-        </el-tabs>
-
-    </div>
-</body>
-
-</html>
+<link rel="stylesheet" href="../../../../static/mweixin/css/message-reply.css">
+<div id="message-reply" class="ms-message-reply ms-container" v-if="menuVue.menuActive == '消息回复'||menuVue.menuActive == '关注时回复'">
+   <div>回复内容</div>
+   <el-tabs v-model="activeName" @tab-click="" class="message-reply-tabs">
+      <el-tab-pane label="文字" name="text">
+         <el-form ref="messageReplyForm" :rules='messageReplyFormRules' :model="messageReplyForm">
+            <el-form-item class="ms-message-reply-content">
+               <el-input type="textarea" v-model="messageReplyForm.reply" :autosize="{ minRows: 4, maxRows: 4}" resize='none'>
+               </el-input>
+               <i class="el-icon-delete" @click="messageReplyForm.reply = ''"></i>
+               <div class="footer">
+                  <i class="el-icon-star-off"></i>
+                  <a>插入超链接</a>
+               </div>
+            </el-form-item>
+         </el-form>
+         </el-form>
+      </el-tab-pane>
+      <el-tab-pane label="图片" name="picture">
+      </el-tab-pane>
+      <el-tab-pane label="图文" name="article">
+      </el-tab-pane>
+   </el-tabs>
+</div>
 <script>
-    var messageReplyVue = new Vue({
-        el: "#message-reply",
-        data: {
-            messageReplyForm: {
-                reply: '',
-            },
-            messageReplyFormRules: {
-                name: [{
-                        required: true,
-                        message: '请输入菜单名称',
-                        trigger: ['blur', 'change']
-                    },
-                    {
-                        min: 1,
-                        max: 5,
-                        message: '长度在 1 到 5 个字符',
-                        trigger: ['blur', 'change']
-                    }
-                ],
-            },
-            activeName: 'text',
-        },
-        methods: {
+   var messageReplyVue = new Vue({
+      el: "#message-reply",
+      data: {
+         messageReplyForm: {
+            reply: '',
+         },
+         messageReplyFormRules: {
+            name: [{
+                  required: true,
+                  message: '请输入菜单名称',
+                  trigger: ['blur', 'change']
+               },
+               {
+                  min: 1,
+                  max: 5,
+                  message: '长度在 1 到 5 个字符',
+                  trigger: ['blur', 'change']
+               }
+            ],
+         },
+         activeName: 'text',
+      },
+      methods: {
 
-        }
+      }
 
-    })
+   })
 </script>

+ 21 - 27
src/main/webapp/WEB-INF/manager/mweixin/metarial/index.ftl

@@ -1,35 +1,29 @@
 <!--图文素材页-->
 <link rel="stylesheet" href="../../../static/mweixin/css/material-list.css">
-<div id="material-list-vue">
+<div id="material-list-vue" v-if="menuVue.menuActive == '图文'">
    <el-container>
-      <!--左侧meun-->
-      <el-aside width="140px">
-         <!--#include virtual="../include/menu.ftl" -->
-      </el-aside>
-      <el-container>
-         <!--右侧头部-->
-         <el-header height="50px">
-            <el-row class="ms-fr">
-               <el-button type="success">保存</el-button>
-               <el-button>更新</el-button>
-               <el-button>返回</el-button>
-            </el-row>
-         </el-header>
-         <el-main>
-            <!--内容同步-->
-            <el-container>
-               <el-header height="50px">
+      <!--右侧头部-->
+      <el-header height="50px">
+         <el-row class="ms-fr">
+            <el-button type="success">保存</el-button>
+            <el-button>更新</el-button>
+            <el-button>返回</el-button>
+         </el-row>
+      </el-header>
+      <el-main>
+         <!--内容同步-->
+         <el-container>
+            <el-header height="50px">
 
-               </el-header>
-               <!--素材列表-->
-               <el-main class="ms-admin-material-list">
-                  <div class="ms-admin-material-item">
+            </el-header>
+            <!--素材列表-->
+            <el-main class="ms-admin-material-list">
+               <div class="ms-admin-material-item">
 
-                  </div>
-               </el-main>
-            </el-container>
-         </el-main>
-      </el-container>
+               </div>
+            </el-main>
+         </el-container>
+      </el-main>
    </el-container>
 </div>
 

+ 6 - 2
src/main/webapp/WEB-INF/manager/mweixin/weixin.ftl

@@ -8,7 +8,11 @@
    </head>
    <body>
       <!--#include virtual="menu.ftl" -->
-      <!--#include virtual="material/index.ftl" --> 
-      <!--#include virtual="article/index.ftl" --> 
+      <!--#include virtual="metarial/index.ftl" -->
+      <!--#include virtual="keyword/index.ftl" -->
+      <!--#include virtual="keyword/form.ftl" -->
+      <!--#include virtual="menu/index.ftl" -->
+      <!--#include virtual="message/index.ftl" -->
+      <!--#include virtual="article/index.ftl" -->
    </body>
 </html>