mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-05-10 20:44:28 +09:00
1. JS App Framework을 기본 스크립트로 추가
2. autolink 애드온을 JS-App에 맞게 수정 git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6892 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
2ccd275fb5
commit
d4f35bb906
3 changed files with 42 additions and 30 deletions
|
|
@ -1,36 +1,47 @@
|
||||||
|
(function($){
|
||||||
|
var url_regex = /((http|https|ftp|news|telnet|irc):\/\/(([0-9a-z\-._~!$&'\(\)*+,;=:]|(%[0-9a-f]{2}))*\@)?((\[(((([0-9a-f]{1,4}:){6}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|(::([0-9a-f]{1,4}:){5}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|(([0-9a-f]{1,4})?::([0-9a-f]{1,4}:){4}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})?::([0-9a-f]{1,4}:){3}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::([0-9a-f]{1,4}:){2}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4})|((([0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::))|(v[0-9a-f]+.[0-9a-z\-._~!$&'\(\)*+,;=:]+))\])|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))|(([0-9a-z\-._~!$&'\(\)*+,;=]|(%[0-9a-f]{2}))+))(:[0-9]*)?(\/([0-9a-z\-._~!$&'\(\)*+,;=:@]|(%[0-9a-f]{2}))*)*(\?([0-9a-z\-._~!$&'\(\)*+,;=:@\/\?]|(%[0-9a-f]{2}))*)?(#([0-9a-z\-._~!$&'\(\)*+,;=:@\/\?]|(%[0-9a-f]{2}))*)?)/i;
|
||||||
|
|
||||||
jQuery(function($) {
|
var AutoLink = xe.createPlugin("autolink", {
|
||||||
var url_regx = /((http|https|ftp|news|telnet|irc):\/\/(([0-9a-z\-._~!$&'\(\)*+,;=:]|(%[0-9a-f]{2}))*\@)?((\[(((([0-9a-f]{1,4}:){6}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|(::([0-9a-f]{1,4}:){5}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|(([0-9a-f]{1,4})?::([0-9a-f]{1,4}:){4}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:)?[0-9a-f]{1,4})?::([0-9a-f]{1,4}:){3}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::([0-9a-f]{1,4}:){2}([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])))|((([0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4})|((([0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::))|(v[0-9a-f]+.[0-9a-z\-._~!$&'\(\)*+,;=:]+))\])|(([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])){3}[0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))|(([0-9a-z\-._~!$&'\(\)*+,;=]|(%[0-9a-f]{2}))+))(:[0-9]*)?(\/([0-9a-z\-._~!$&'\(\)*+,;=:@]|(%[0-9a-f]{2}))*)*(\?([0-9a-z\-._~!$&'\(\)*+,;=:@\/\?]|(%[0-9a-f]{2}))*)?(#([0-9a-z\-._~!$&'\(\)*+,;=:@\/\?]|(%[0-9a-f]{2}))*)?)/i;
|
targets : [],
|
||||||
|
init : function() {
|
||||||
|
this.targets = [];
|
||||||
|
},
|
||||||
|
API_ONREADY : function() {
|
||||||
|
var thisPlugin = this;
|
||||||
|
|
||||||
function replaceHrefLink(obj) {
|
// extract target text nodes
|
||||||
var obj_list = obj.childNodes;
|
this.extractTargets($('.xe_content'));
|
||||||
|
|
||||||
for(var i = 0; i < obj_list.length; ++i) {
|
$(this.targets).each(function(){
|
||||||
var obj = obj_list[i];
|
if (!url_regex.test(this.nodeValue)) return true;
|
||||||
var pObj = obj.parentNode;
|
thisPlugin.cast('AUTOLINK', [this]);
|
||||||
if(!pObj) continue;
|
|
||||||
|
|
||||||
var pN = pObj.nodeName.toLowerCase();
|
|
||||||
if($.inArray(pN, ['a', 'pre', 'xml', 'textarea', 'input', 'select', 'option', 'code', 'script', 'style']) != -1) continue;
|
|
||||||
|
|
||||||
if(obj.nodeType == 3 && obj.length >= 10) {
|
|
||||||
var content = obj.nodeValue;
|
|
||||||
if(!/(http|https|ftp|news|telnet|irc):\/\//i.test(content)) continue;
|
|
||||||
|
|
||||||
content = content.replace(/</g, '<');
|
|
||||||
content = content.replace(/>/g, '>');
|
|
||||||
content = content.replace(url_regx, '<a href="$1" onclick="window.open(this.href); return false;">$1</a>');
|
|
||||||
|
|
||||||
$(obj).replaceWith(content);
|
|
||||||
delete(content);
|
|
||||||
|
|
||||||
} else if(obj.nodeType == 1 && obj.childNodes.length) {
|
|
||||||
replaceHrefLink(obj);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$('.xe_content').each(function() {
|
|
||||||
replaceHrefLink(this);
|
|
||||||
});
|
});
|
||||||
});
|
},
|
||||||
|
API_AUTOLINK : function(oSender, params) {
|
||||||
|
var textNode = params[0];
|
||||||
|
var content = textNode.nodeValue;
|
||||||
|
|
||||||
|
content = content.replace(/</g, '<').replace(/>/g, '>');
|
||||||
|
content = content.replace(url_regex, '<a href="$1" target="_blank">$1</a>');
|
||||||
|
|
||||||
|
$(textNode).replaceWith(params[0] = $(content));
|
||||||
|
},
|
||||||
|
extractTargets : function(obj) {
|
||||||
|
var thisPlugin = this;
|
||||||
|
|
||||||
|
$(obj)
|
||||||
|
.contents()
|
||||||
|
.each(function(){
|
||||||
|
if (!$(this).is('a,pre,xml,code,script,style,:input')) {
|
||||||
|
if (this.nodeType == 3) { // text node
|
||||||
|
thisPlugin.targets.push(this);
|
||||||
|
} else {
|
||||||
|
thisPlugin.extractTargets(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
xe.registerPlugin(new AutoLink());
|
||||||
|
})(jQuery);
|
||||||
|
|
@ -163,6 +163,7 @@
|
||||||
$this->addJsFile("./common/js/jquery.js");
|
$this->addJsFile("./common/js/jquery.js");
|
||||||
$this->addJsFile("./common/js/x.js");
|
$this->addJsFile("./common/js/x.js");
|
||||||
$this->addJsFile("./common/js/common.js");
|
$this->addJsFile("./common/js/common.js");
|
||||||
|
$this->addJsFile("./common/js/js_app.js");
|
||||||
$this->addJsFile("./common/js/xml_handler.js");
|
$this->addJsFile("./common/js/xml_handler.js");
|
||||||
$this->addJsFile("./common/js/xml_js_filter.js");
|
$this->addJsFile("./common/js/xml_js_filter.js");
|
||||||
$this->addCSSFile("./common/css/default.css");
|
$this->addCSSFile("./common/css/default.css");
|
||||||
|
|
|
||||||
|
|
@ -279,7 +279,7 @@ function getTypeBase() {
|
||||||
if ($.isArray(this._binded_fn)) this._binded_fn = [];
|
if ($.isArray(this._binded_fn)) this._binded_fn = [];
|
||||||
|
|
||||||
if ($.isFunction(this.init)) {
|
if ($.isFunction(this.init)) {
|
||||||
this.$init.apply(this, arguments);
|
this.init.apply(this, arguments);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue