keyword_link addon 추가

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@5144 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ngleader 2008-12-22 02:35:38 +00:00
parent b875745d8b
commit 9086bae05a
3 changed files with 118 additions and 0 deletions

View file

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">키워드 링크 애드온</title>
<description xml:lang="ko">
게시글과 댓글의 내용중 등록된 키워드에 링크를 걸어주는 애드온입니다.
키워드는 콤마(,)로 구분하여 여러개 등록할 수 있습니다.
먼저 등록된 키워드가 우선순위를 갖습니다.
</description>
<version>0.1</version>
<date>2008-12-20</date>
<author email_address="sol@ngleader.com" link="http://ngleader.tistory.com">
<name xml:lang="ko">SOL</name>
<name xml:lang="jp">SOL</name>
<name xml:lang="en">SOL</name>
<name xml:lang="zh-CN">SOL</name>
<name xml:lang="es">SOL</name>
<name xml:lang="ru">SOL</name>
<name xml:lang="ge">SOL</name>
<name xml:lang="zh-TW">SOL</name>
</author>
<extra_vars>
<var name="cssquery">
<title xml:lang="ko">cssquery</title>
<description xml:lang="ko">치환할 부분의 jQuery cssquery입니다.
xe_board 게시판 스킨이면 공백으로 두면 됩니다.</description>
</var>
<var name="reg_type" type="select">
<title xml:lang="ko">링크 방법</title>
<description xml:lang="ko"> 키워드가 여러개 있을때 "첫번째 키워드"에만 링크를 걸 것인지 "모든 키워드"에 걸 것인지 선택합니다.
</description>
<options value="">
<title xml:lang="ko">첫번째 키워드</title>
</options>
<options value="g">
<title xml:lang="ko">모든 키워드</title>
</options>
</var>
<var name="keyword01">
<title xml:lang="ko">키워드</title>
</var>
<var name="url01">
<title xml:lang="ko">링크</title>
</var>
<var name="keyword02">
<title xml:lang="ko">키워드</title>
</var>
<var name="url02">
<title xml:lang="ko">링크</title>
</var>
<var name="keyword03">
<title xml:lang="ko">키워드</title>
</var>
<var name="url03">
<title xml:lang="ko">링크</title>
</var>
<var name="keyword04">
<title xml:lang="ko">키워드</title>
</var>
<var name="url04">
<title xml:lang="ko">링크</title>
</var>
<var name="keyword05">
<title xml:lang="ko">키워드</title>
</var>
<var name="url05">
<title xml:lang="ko">링크</title>
</var>
</extra_vars>
</addon>

View file

@ -0,0 +1,32 @@
<?php
if(!defined("__ZBXE__")) exit();
/**
* @file keyword_link.addon.php
* @author sol (sol@ngleader.com)
* @brief 키워드 링크 애드온
**/
if($called_position == 'after_module_proc' && Context::getResponseMethod()!="XMLRPC" && Context::getResponseMethod()!="JSON" ) {
$json = array();
for($i=1;$i<=5;$i++){
$ii = sprintf("%02d",$i);
$keyword = $addon_info->{"keyword".$ii};
$url = $addon_info->{"url".$ii};
if($keyword && $url){
$arg->url = $url;
$keyword = explode(",",$keyword);
for($j=0,$c=count($keyword);$j<$c;$j++){
if(trim($keyword[$j]) == "") continue;
$arg->keyword = trim($keyword[$j]);
$json[] = $arg;
}
}
}
if(count($json) > 0){
$addon_keyword_link = json_encode2($json);
Context::addHtmlHeader("<script type=\"text/javascript\">//<![CDATA[\nvar addon_keyword_link={$addon_keyword_link};\nvar addon_keyword_link_cssquery='{$addon_info->cssquery}';\nvar addon_keyword_link_reg_type='{$addon_info->reg_type}';\n//]]></script>");
Context::addJsFile('./addons/keyword_link/keyword_link.js');
}
}
?>

View file

@ -0,0 +1,15 @@
(function($){
$(function(){
if(addon_keyword_link.length > 0){
if(!addon_keyword_link_cssquery) addon_keyword_link_cssquery= 'div.contentBody > div, div.replyContent > div';
$(addon_keyword_link_cssquery).each(function(){
var content = $(this).html();
for(var i=0,c=addon_keyword_link.length;i<c;i++){
var re = new RegExp(addon_keyword_link[i].keyword + '(?! *<\/a)',addon_keyword_link_reg_type);
content = content.replace(re,'<a href="'+addon_keyword_link[i].url+'">' + addon_keyword_link[i].keyword + '</a>');
}
$(this).html(content);
});
}
});
})(jQuery);