上篇文章介绍了如何实现菜单功能(点击查看),但是有个问题,就是管理系统必须是登录后才会显示菜单,而且菜单还要实现不同权限有不同的菜单项,本文将实现这个功能。
首先,将server/MenuLoader.asp修改,增加管理员验证功能。即
If Session("Manage") <> "" Then '显示菜单项 End If
这时,重新打开页面,由于有了基本的管理员验证,菜单不显示了。
接下来,开始制作登录,在view文件夹下建立Login.js,checkcode.js,其中Login.js实现登录功能,有用户名、密码和验证码,验证码的实现,就是checkcode.js,由于篇幅问题,checkcode.js请查看本站另一篇文章, ExtJS4学习笔记(十)---ExtJS4图片验证码的实现。
主要是Login.js:
Ext.define(SMS.view.Login',{ extend:'Ext.window.Window', alias: 'widget.loginForm', requires: ['Ext.form.*','SMS.view.CheckCode'], initComponent:function(){ var checkcode = Ext.create('SMS.view.CheckCode',{ cls : 'key', fieldLabel : '验证码', name : 'CheckCode', id : 'CheckCode', allowBlank : false, isLoader:true, blankText : '验证码不能为空', codeUrl: '/include/checkCode.asp', width : 160 }) var form = Ext.widget('form',{ border: false, bodyPadding: 10, fieldDefaults: { labelAlign: 'left', labelWidth: 55, labelStyle: 'font-weight:bold' }, defaults: { margins: '0 0 10 0' }, items:[{ xtype: 'textfield', fieldLabel: '用户名', blankText : '用户名不能为空', name:'UserName', id:'UserName', allowBlank: false, width:240 },{ xtype: 'textfield', fieldLabel: '密 码', allowBlank: false, blankText : '密码不能为空', name:'PassWord', id:'PassWord', width:240, inputType : 'password' },checkcode], buttons:[{ text:'登录', handler:function(){ var form = this.up('form').getForm(); var win = this.up('window'); if(form.isValid()){ form.submit({ clientValidation: true, waitMsg:'请稍后', waitTitle:'正在验证登录', url:'/server/checklogin.asp', success: function(form, action) { //登录成功后。 //隐藏登录窗口,并重新加载菜单 win.hide(); Ext.getCmp('SystemMenus').store.load(); }, failure: function(form, action) { Ext.MessageBox.show({ width:150, title:"登录失败", buttons: Ext.MessageBox.OK, msg:action.result.msg }) } }); } } }] }) Ext.apply(this,{ height: 160, width: 280, title: '用户登陆', closeAction: 'hide', closable : false, iconCls: 'win', layout: 'fit', modal : true, plain : true, resizable: false, items:form }); this.callParent(arguments); } });
最终效果:
修改controller目录下的Main.js:
Ext.define(SMS.controller.Main',{ extend: 'Ext.app.Controller', requires:['SMS.view.Login'], onLaunch : function(){ var win; if(!win){ win = Ext.create('SMS.view.Login').show(); } } })
这时,当页面加载的时候,会显示登录窗口,而登录成功后, 会隐藏登录窗口并加载菜单。最后附上登录成功后页面效果。