rs.toolbar.js 3.4 KB
/**
 * rs_toolbar - Runsa Plugin
 * 
 * $('<div></div>').rs_toolbar({
 * 		title:null, //标题  
 * 		content:null,
 * 		authz:getAuthzUtils('msgChannel'),
 * 		buttons:[{
 * 				text:'查询',
 * 				iconCls:'btn-select',
 * 				width:80,  //可以使用默认值
 * 				height:25, //可以使用默认值
 * 				handler:function(){alert('');}
 * 			},{
 * 				code:'add', //menuAction code对应
 * 				text:'添加', 
 * 				handler:function(){alert('');}
 * 			}],
 * 		tools:[{
 * 				text:'刷新',
 * 				handler:panelRefreshUtils
 * 			},{
 * 				code:'print', //menuAction code对应
 * 				text:'打引', 
 * 				handler:function(){alert('');}
 * 			}]
 * });
 * 
 * Dependencies:
 * easyui-linkbutton
 *   
 */
(function (factory) {
	if (typeof define === 'function' && define.amd) {
		// AMD
		define(['jquery'], factory);
	} else if (typeof exports === 'object') {
		// CommonJS
		factory(require('jquery'));
	} else {
		// Browser globals
		factory(jQuery);
	}
}(function ($) {
	function initWrap(container){
		var c=$(container);
		var opts=$.data(container, 'rs_toolbar');
		c.addClass("rs-toolbar");
		var title;
		var content;
		var buttons=$('<div class="buttons clearfix"></div>').appendTo(c);
		var left=$('<div class="left fl"></div>').appendTo(buttons);
		var right=$('<div class="right fr"></div>').appendTo(buttons);
		if(opts.content){
			content=$('<div class="content clearfix"></div>').appendTo(c)
			content.append(opts.content);
		}
		if(opts.title){
			title=$('<div class="title">'+opts.title+'</div>').appendTo(c);
		}
		if(opts.buttons){
			appendButton(left,opts.buttons);
		}
		if(opts.tools){
			appendButton(right,opts.tools);
		}
		function appendButton(panel,items){
			$.each(items,function(i,item){
				var btn=$('<a href="javascript:void(0);" class="button"></a>').appendTo(panel);
				if(item.width){
					btn.width(item.width);
				}
				if(item.height){
					btn.height(item.height);
				}
				if($.fn.linkbutton){
					var enabled=checkAuthz(item.code);
					btn.linkbutton({
						id:item.id,
						code:item.code,
						text:item.text,
						disabled:!enabled,
						iconCls:item.iconCls				
					});
					if(enabled){
						btn.bind('click.rs_toolbar',item.handler);
					}
				}else{
					btn.html(item.text);
					if(checkAuthz(item.code)){
						btn.bind('click.rs_toolbar',item.handler);
					}else{
						btn.addClass("disable");
					}
				}
			});
		}
		function checkAuthz(menuActionCode){
			var check=false;
			if(!menuActionCode){
				check=true;
			}else if(menuActionCode&&opts.authz&&opts.authz.actions){
				for (var i = 0; i < opts.authz.actions.length; i++) {
					var t=opts.authz.actions[i];
					if(t.code==menuActionCode){
						check=true;
						break;
					}
				}
			}
			return check;
		}
	}
	function initEvent(container){
		
	}
	$.fn.rs_toolbar = function(options, param){
		if (typeof options == 'string') {
			return $.fn.rs_toolbar.methods[options](this, param);
		}
		options = options || {};
		return this.each(function(){
			var state = $.data(this, 'rs_toolbar');
			if (state) {
				$.extend(state, options);
			} else {
				var opts=$.extend({},$.fn.rs_toolbar.defaults,options);
				$.data(this, 'rs_toolbar', opts);
			}
			initWrap(this);
			initEvent(this);
		});
	};
	$.fn.rs_toolbar.methods={
		parent:function(jq){
			return jq.parent().closest(".rs-size");
		}
	};
	$.fn.rs_toolbar.defaults={
		title:null,
		authz:[],
		code:null,
		buttons:null,
		tools:null,
		content:null
	};
}));