condición dentro del extjs
Perdonen la ignorancia pero como agrego una condición para que por ejemplo aparezcan o no algunos botones en una ventana. Digamos que el usuario no tiene permisos para agregar por lo que no quiero que le aparezca el botón para ello. actualmente lo controlo desde el lado del php regresandole un mensaje de error del tipo "Ud no tiene permisos para realizar esta operación" pero me gustaría hacerlo condicionalmente desde la interface ocultando los botones de lo que no puede hacer como agregar, modificar o eliminar. Alguna idea? <!-- s:? --><!-- s:? -->
lo que puedes hacer es que en el momento del logueo envíes desde php el nivel de acceso del usuario (admin, editor, moderador, etc), has un extend del panel o toolbar donde están los botones y le pasas como dato el nivel de acceso del usuario y dependiendo del nivel decidir que botones quieres o no mostrar!!
podría funcionar mas o menos así (no seas muy estricto al mirar el código, cambie o quite algunas cosas para hacerlo fácil de entender ) :
xToolBar = function(role) { if(this.role == "Reader" || this.role == "collaborator"){ this.disabledDelete = true; this.desabledAddPhoto = false; this.disabledEdit = false; this.disabledAdd = false; }else if(this.guide.role == "writter"){ this.desabledAddPhoto = false; this.disabledDelete = false; this.disabledEdit = false; this.disabledAdd = false; }else if(this.guide.role == "viewer"){ this.desabledAddPhoto = true; this.disabledDelete = true; this.disabledEdit = true; this.disabledAdd = true; } else{ this.disabledDelete = false; this.disabledEdit = false; this.desabledAddPhoto = false; } PartToolBar.superclass.constructor.call(this, { id : 'xToolBar'+this.guide.id, // width: 900, items : [ { id :'deletePart', text :translate('Delete this part'), handler : this.onDeletePart, scope : this, iconCls : 'deletePart', disabled : this.disabledDelete }, { id :'addContent', text :translate('Editer la Page'), menu : { xtype: 'menu', plain: true, items : [ { id :'editPart', text :translate('Introduction'), handler : this.onEditPart, scope : this, // iconCls : 'editPart', disabled : this.disabledEdit }, { text : translate('Article'), width : 'auto', tooltip : 'Add Article', id : 'menuArticle'+this.guide.id, handler : this.onAddContent, scope : this }, { text : translate('Itinéraire'), width : 'auto', tooltip : 'Add Itinéraire', id : 'menuItinéraire'+this.guide.id, handler : this.onAddContent, scope : this }, { text : 'Adresses', id : 'menuAdresses'+this.guide.id, menu : { items : [{ text : translate('Hotel'), scale : 'small', id : 'menuHotel'+this.guide.id, handler : this.onAddContent, scope : this }, { text : translate('Restaurant'), scale : 'small', handler : this.onAddContent, id : 'menuRestaurant'+this.guide.id, scope : this }, { text : 'Activites', scale : 'small', id : 'menuActivites'+this.guide.id, scope : this, handler : this.onAddContent }, { text : translate('Place to Visit'), scale : 'small', handler : this.onAddContent, id : 'menuPlace'+this.guide.id, scope : this }] } }, { text : 'Other', scale : 'small', scope : this, handler : this.onAddContent }, { text : 'Post-it', scale : 'small', id : 'menuPost'+this.guide.id, scope : this, handler : this.onAddContent }, { text : 'Encadré', scale : 'small', id : 'menuEncadre'+this.guide.id, scope : this, handler : this.onAddContent }, { text : 'Tao liste', scale : 'small', id : 'taoList'+this.guide.id, scope : this, handler : this.onAddContent } ] }, // handler : this.onAddContent, scope : this, iconCls : 'addGuide', disabled : this.disabledAdd } ], margins : '-1 -1 -1 -1', cmargins : '-1 -1 -1 -1' }); }; Ext.extend(PartToolBar, Ext.Toolbar, { setParId : function(part,bloc){ // scope : this, this.part = part; this.bloc = bloc; onEditPart: function(part){ if(!Ext.isDefined(this.part)) return; Viatao.bus.fireEvent('editPart',{part: this.part, guide: this.guide}); }, onDeletePart: function(tbar){ if(!Ext.isDefined(this.part)) return; part = this.part; guide = this.guide; Ext.MessageBox.confirm('Confirm','do you want to remove it?', function(btn){ if(btn=='yes') { Viatao.bus.fireEvent('delPart',{ part: this.part, guide: this.guide }); } }) }, onCleanPart : function(item){ if(!Ext.isDefined(this.part)) return; Viatao.bus.fireEvent('clearPart',{partId : this.part.id, guide : this.guide,bloc:this.bloc}); }, onAddPhoto : function(){ if(!Ext.isDefined(this.part)) return; Viatao.bus.fireEvent('showContentPhotoPanel',{onCreate:'',part:{id : this.part.id}, guide :{id:this.guide.id},content:{id:''},type:"part"}); } });
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.