| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- (function(){
- var utils = UM.utils;
- function hrefStartWith(href, arr) {
- href = href.replace(/^\s+|\s+$/g, '');
- for (var i = 0, ai; ai = arr[i++];) {
- if (href.indexOf(ai) == 0) {
- return true;
- }
- }
- return false;
- }
- UM.registerWidget('link', {
- tpl: "<style type=\"text/css\">" +
- ".edui-dialog-link .edui-link-table{font-size: 12px;margin: 10px;line-height: 30px}" +
- ".edui-dialog-link .edui-link-txt{width:300px;height:21px;line-height:21px;border:1px solid #d7d7d7;}" +
- "</style>" +
- "<table class=\"edui-link-table\">" +
- "<tr>" +
- "<td><label for=\"href\"><%=lang_input_url%></label></td>" +
- "<td><input class=\"edui-link-txt\" id=\"edui-link-Jhref\" type=\"text\" /></td>" +
- "</tr>" +
- "<tr>" +
- "<td><label for=\"title\"><%=lang_input_title%></label></td>" +
- "<td><input class=\"edui-link-txt\" id=\"edui-link-Jtitle\" type=\"text\"/></td>" +
- "</tr>" +
- "<tr>" +
- "<td colspan=\"2\">" +
- "<label for=\"target\"><%=lang_input_target%></label>" +
- "<input id=\"edui-link-Jtarget\" type=\"checkbox\" style=display:block>" +
- "</td>" +
- "</tr>" +
- // "<tr>" +
- // "<td colspan=\"2\" id=\"edui-link-Jmsg\"></td>" +
- // "</tr>" +
- "</table>",
- initContent: function (editor) {
- var lang = editor.getLang('link');
- if (lang) {
- var html = $.parseTmpl(this.tpl, lang.static);
- }
- this.root().html(html);
- },
- initEvent: function (editor, $w) {
- var link = editor.queryCommandValue('link');
- if(link){
- $('#edui-link-Jhref',$w).val(utils.html($(link).attr('href')));
- $('#edui-link-Jtitle',$w).val($(link).attr('title'));
- $(link).attr('target') == '_blank' && $('#edui-link-Jtarget').attr('checked',true)
- }
- $('#edui-link-Jhref',$w).focus();
- },
- buttons: {
- 'ok': {
- exec: function (editor, $w) {
- console.log($("#edui-link-Jtarget:checked").length);
- var href = $('#edui-link-Jhref').val().replace(/^\s+|\s+$/g, '');
- if (href) {
- editor.execCommand('link', {
- 'href': href,
- 'target': $("#edui-link-Jtarget:checked").length ? "_blank" : '_self',
- 'title': $("#edui-link-Jtitle").val().replace(/^\s+|\s+$/g, ''),
- '_href': href
- });
- }
- }
- },
- 'cancel':{}
- },
- width: 400
- })
- })();
- (function ($) {
- //对jquery的扩展
- $.parseTmpl = function parse(str, data) {
- var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' + 'with(obj||{}){__p.push(\'' + str.replace(/\\/g, '\\\\').replace(/'/g, "\\'").replace(/<%=([\s\S]+?)%>/g,function (match, code) {
- return "',obj." + code.replace(/\\'/g, "'") + ",'";
- }).replace(/<%([\s\S]+?)%>/g,function (match, code) {
- return "');" + code.replace(/\\'/g, "'").replace(/[\r\n\t]/g, ' ') + "__p.push('";
- }).replace(/\r/g, '\\r').replace(/\n/g, '\\n').replace(/\t/g, '\\t') + "');}return __p.join('');";
- var func = new Function('obj', tmpl);
- return data ? func(data) : func;
- };
- $.extend2 = function (t, s) {
- var a = arguments,
- notCover = $.type(a[a.length - 1]) == 'boolean' ? a[a.length - 1] : false,
- len = $.type(a[a.length - 1]) == 'boolean' ? a.length - 1 : a.length;
- for (var i = 1; i < len; i++) {
- var x = a[i];
- for (var k in x) {
- if (!notCover || !t.hasOwnProperty(k)) {
- t[k] = x[k];
- }
- }
- }
- return t;
- };
- $.IE6 = !!window.ActiveXObject && parseFloat(navigator.userAgent.match(/msie (\d+)/i)[1]) == 6;
- //所有ui的基类
- var _eventHandler = [];
- var _widget = function () {
- };
- var _prefix = 'edui';
- _widget.prototype = {
- on: function (ev, cb) {
- this.root().on(ev, $.proxy(cb, this));
- return this;
- },
- off: function (ev, cb) {
- this.root().off(ev, $.proxy(cb, this));
- return this;
- },
- trigger: function (ev, data) {
- return this.root().trigger(ev, data) === false ? false : this;
- },
- root: function ($el) {
- return this._$el || (this._$el = $el);
- },
- destroy: function () {
- },
- data: function (key, val) {
- if (val !== undefined) {
- this.root().data(_prefix + key, val);
- return this;
- } else {
- return this.root().data(_prefix + key)
- }
- },
- register: function (eventName, $el, fn) {
- _eventHandler.push({
- 'evtname': eventName,
- '$els': $.isArray($el) ? $el : [$el],
- handler: $.proxy(fn, $el)
- })
- }
- };
- //从jq实例上拿到绑定的widget实例
- $.fn.edui = function (obj) {
- return obj ? this.data('eduiwidget', obj) : this.data('eduiwidget');
- };
- function _createClass(ClassObj, properties, supperClass) {
- ClassObj.prototype = $.extend2(
- $.extend({}, properties),
- (UM.ui[supperClass] || _widget).prototype,
- true
- );
- ClassObj.prototype.supper = (UM.ui[supperClass] || _widget).prototype;
- //父class的defaultOpt 合并
- if( UM.ui[supperClass] && UM.ui[supperClass].prototype.defaultOpt ) {
- var parentDefaultOptions = UM.ui[supperClass].prototype.defaultOpt,
- subDefaultOptions = ClassObj.prototype.defaultOpt;
- ClassObj.prototype.defaultOpt = $.extend( {}, parentDefaultOptions, subDefaultOptions || {} );
- }
- return ClassObj
- }
- var _guid = 1;
- function mergeToJQ(ClassObj, className) {
- $[_prefix + className] = ClassObj;
- $.fn[_prefix + className] = function (opt) {
- var result, args = Array.prototype.slice.call(arguments, 1);
- this.each(function (i, el) {
- var $this = $(el);
- var obj = $this.edui();
- if (!obj) {
- ClassObj(!opt || !$.isPlainObject(opt) ? {} : opt, $this);
- $this.edui(obj)
- }
- if ($.type(opt) == 'string') {
- if (opt == 'this') {
- result = obj;
- } else {
- result = obj[opt].apply(obj, args);
- if (result !== obj && result !== undefined) {
- return false;
- }
- result = null;
- }
- }
- });
- return result !== null ? result : this;
- }
- }
- UM.ui = {
- define: function (className, properties, supperClass) {
- var ClassObj = UM.ui[className] = _createClass(function (options, $el) {
- var _obj = function () {
- };
- $.extend(_obj.prototype, ClassObj.prototype, {
- guid: className + _guid++,
- widgetName: className
- }
- );
- var obj = new _obj;
- if ($.type(options) == 'string') {
- obj.init && obj.init({});
- obj.root().edui(obj);
- obj.root().find('a').click(function (evt) {
- evt.preventDefault()
- });
- return obj.root()[_prefix + className].apply(obj.root(), arguments)
- } else {
- $el && obj.root($el);
- obj.init && obj.init(!options || $.isPlainObject(options) ? $.extend2(options || {}, obj.defaultOpt || {}, true) : options);
- try{
- obj.root().find('a').click(function (evt) {
- evt.preventDefault()
- });
- }catch(e){
- }
- return obj.root().edui(obj);
- }
- },properties, supperClass);
- mergeToJQ(ClassObj, className);
- }
- };
- $(function () {
- $(document).on('click mouseup mousedown dblclick mouseover', function (evt) {
- $.each(_eventHandler, function (i, obj) {
- if (obj.evtname == evt.type) {
- $.each(obj.$els, function (i, $el) {
- if ($el[0] !== evt.target && !$.contains($el[0], evt.target)) {
- obj.handler(evt);
- }
- })
- }
- })
- })
- })
- })(jQuery);
|