git-svn-id: http://xe-core.googlecode.com/svn/trunk@789 201d5d3c-b55e-5fd7-737f-ddc643e51545

This commit is contained in:
zero 2007-03-30 03:27:11 +00:00
parent fdffc30fec
commit 810f30cf6b
21 changed files with 99 additions and 94 deletions

View file

@ -4,7 +4,7 @@
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
<name xml:lang="ko">제로</name>
<description xml:lang="ko">
사용자의 이름을 이미지로 대체하거나 마크이미지를 나타내는 애드온
사용자의 이름을 이미지로 대체하거나 마크이미지를 나타내는 애드온입니다.
회원 관리에서 이미지이름이나 마크이미지를 설정하여야 한다.
</description>
</author>

View file

@ -6,13 +6,19 @@
* @author zero (zero@nzeo.com)
* @brief 사용자의 이름을 이미지로 바꾸거나 아이콘을 추가하는 애드온
*
* addOn은 화면을 출력하는 바로 단계에서 요청이 올때 작동하도록 한다.
* addOn은 모든 처리가 끝나고 화면에 출력하기 바로 전에 요청이 되어서
* 사용자의 이름으로 등록된 부분을 찾아서 정규표현식으로 변환을 합니다.
* 사용자의 이름은 <div class="member_회원번호">....</div> 정의가 되어야 합니다.
* 이렇게 정의된 부분의 회원번호를 구해서 이미지이름, 이미지마크가 있는지를 확인하여 있으면
* 내용을 변경해버립니다.
*
* 내용 변경은 MemberController::transImageName method를 이용해서 변경합니다.
**/
// 출력 되기 바로 직전이 아니라면 모두 무시
if($called_position != "before_display_content") return;
// 출력문서중에서 <div class="member_번호">content</div>를 찾아서 변경
// 출력문서중에서 <div class="member_번호">content</div>를 찾아 MemberController::transImageName() 를 이용하여 변경
$oMemberController = &getController('member');
$output = preg_replace_callback('!<div([^\>]*)member_([0-9]*)([^\>]*)>(.*?)\<\/div\>!is', array($oMemberController, 'transImageName'), $output);
?>

View file

@ -4,9 +4,8 @@
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
<name xml:lang="ko">제로</name>
<description xml:lang="ko">
1. 새쪽지가 올 경우 팝업으로 알려줍니다.
2. 다른 회원의 아이디 클릭시 나타나는 팝업메뉴에 쪽지 보내기를 추가합니다.
3. 로그인 플러그인이나 게시판 상단에 쪽지의 갯수를 표시합니다.
1. 다른 회원의 아이디 클릭시 나타나는 팝업메뉴에 쪽지 보내기를 추가합니다.
2. 새쪽지가 올 경우 팝업으로 알려줍니다.
</description>
</author>
</addon>

View file

@ -2,15 +2,18 @@
if(!__ZBXE__) exit();
/**
* @file message.addon.php
* @author zero (zero@nzeo.com)
* @brief 쪽지기능을 사이트내에 연결
*
* 1. MemberModel::getMemberMenu 다음 -> menu_list에 쪽지 보내기 기능 추가
* 2. before
**/
* @file message.addon.php
* @author zero (zero@nzeo.com)
* @brief 쪽지기능을 사이트내에 연결
*
* 1. 게시판등의 페이지에서 사용자 이름을 클릭시 요청되는 MemberModel::getMemberMenu 후에 $menu_list에 쪽지 발송 링크 추가
* 2. 새로운 쪽지가 왔을 경우 팝업으로 띄움
**/
// MemberModel::getMemberMenu의 결과값인 menu_list에 쪽지 관련 기능 추가 (아이디 클릭시 팝업메뉴)
/**
* 1. 게시판등의 페이지에서 사용자 이름을 클릭시 요청되는 MemberModel::getMemberMenu 후에 $menu_list에 쪽지 발송 링크 추가
* 조건 : called_position == 'after_module_proc', module = 'member', act = 'getMemberMenu'
**/
if($called_position == 'after_module_proc' && $this->module == 'member' && $this->act == 'getMemberMenu') {
// 비로그인 사용자라면 패스
@ -26,18 +29,26 @@
// 언어파일 읽음
Context::loadLang($addon_path."lang");
// 템플릿에서 사용되기 전의 menu_list
// 템플릿에서 사용되기 전의 menu_list를 가져옴
$menu_list = $this->get('menu_list');
$menu_list .= sprintf("\n%s,winopen('%s','messageBox','width=10,height=10,left=10,top=10,resizable=no,scrollbars=no,toolbars=no')", Context::getLang('cmd_send_message'), './?module=message&amp;act=dispSendMessage&amp;target_member_srl='.$member_srl);
// 쪽지 발송 메뉴를 만듬
$menu_str = Context::getLang('cmd_send_message');
$menu_link = sprintf('./?module=message&amp;act=dispSendMessage&amp;target_member_srl=%s',$member_srl);
// 메뉴에 새로 만든 쪽지 발송 메뉴를 추가
$menu_list .= sprintf("\n%s,%s", $menu_str, $menu_link);
// 템플릿에 적용되게 하기 위해 module의 variables에 재등록
$this->add('menu_list', $menu_list);
// 출력 되기 바로 직전일 경우
} else if($called_position == "before_display_content") {
/**
* 2. 새로운 쪽지가 왔을 경우 팝업으로 띄움
* 조건 : called_position = 'before_display_content'
**/
} else if($called_position == 'before_display_content') {
}
?>

View file

@ -1,15 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<addon version="0.1">
<title xml:lang="ko">네이버 검색 연동 애드온</title>
<title xml:lang="en">naver search addon</title>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
<name xml:lang="ko">제로</name>
<name xml:lang="en">zero</name>
<description xml:lang="ko">
글을 작성시 네이버의 검색서버에 해당 글의 상황을 보냅니다.
내용을 보내는 것이 아니라 글의 url만 보내고 글에서 선택한 공개옵션에 따라서 크롤링을 하게 됩니다.
네이버 검색서버 연동을 하시면 사이트의 검색 기능을 네이버의 검색서버를 이용하실 수 있게 됩니다.
</description>
<description xml:lang="en">naver search addon</description>
</author>
</addon>

View file

@ -6,24 +6,17 @@
* @author zero (zero@nzeo.com)
* @brief 네이버 검색 연동 애드온
*
* addOn은 ModuleObject 에서 모듈이 불러지기 /후에 include되는 것으로 실행한다.
* 별도의 interface가 필요한 것이 아니고 모듈의 일부라고 판단하여 코드를 작성하면 .
* 네이버 검색 연동 애드온은 모듈이 실행된 후에 동작한다.
* board 모듈의 procInsertDocument, procDeleteDocument action일 때만 특정 서버로 발송을 .
**/
// called_position이 before일때만 실행
if($called_position != 'after_module_proc') return;
// 이 애드온이 동작할 대상 (이 부분은 특별히 정해진 규약이 없다)
$effecived_target = array(
'board' => array('procInsertDocument', 'procDeleteDocument'),
);
if($this->module != 'board' && ($this->act != 'procInsertDocument' || $this->act != 'procDeleteDocument')) return;
// spam filter모듈이 적용될 module+act를 체크
if(!in_array($this->act, $effecived_target[$this->module])) return;
// 해당 글의 URL을 구함
// 검색 서버로 발송할 url을 구함
$url = sprintf('%s?document_srl=%s',Context::getRequestUri(), Context::get('document_srl'));
// URL을 네이버 검색 서버로 발송
//@todo 차후 개발
?>

View file

@ -1,14 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<addon version="0.1">
<title xml:lang="ko">레인보우 링크 애드온</title>
<title xml:lang="en">rainbow link addon</title>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
<name xml:lang="ko">제로</name>
<name xml:lang="en">zero</name>
<description xml:lang="ko">
링크가 걸린 글의 색을 무지개색으로 나타냅니다.
rainbow.js를 header에 추가하여 링크가 걸린 글의 색을 무지개색으로 나타냅니다.
이 애드온의 rainbow.js는 &lt;a href=&quot;http://www.dynamicdrive.com&quot; target=&quot;_blank&quot;&gt;Dynamicdrive.com&lt;/a&gt;에 저작권이 있습니다.
</description>
<description xml:lang="en">rainbow link</description>
</author>
</addon>

View file

@ -2,25 +2,17 @@
if(!__ZBXE__) exit();
/**
* @file spamfilter.addon.php
* @author zero (zero@nzeo.com)
* @brief Rainbow link addon
*
* 링크가 걸린 텍스트에 마우스 오버를 하면 무지개색으로 변하게 하는 애드온입니다.
* rainbow.js는 http://www.dynamicdrive.com에서 제작하였으며 저작권을 가지고 있습니다.
**/
* @file rainbow.addon.php
* @author zero (zero@nzeo.com)
* @brief Rainbow link addon
*
* 링크가 걸린 텍스트에 마우스 오버를 하면 무지개색으로 변하게 하는 애드온입니다.
* rainbow.js 파일만 추가하는 것으로 끝납니다.
* rainbow.js는 http://www.dynamicdrive.com에서 제작하였으며 저작권을 가지고 있습니다.
* before_display_content 에서만 요청이 됩니다.
**/
// admin 모듈의 경우 무조건 패스
/*
if(Context::get('module') == 'admin') {
$this->rainbow_link_is_called = true;
return;
}
*/
// 한번이라도 요청이 되었다면 패스
if($GLOBALS['_rainbow_link_is_called']) return;
$GLOBALS['_rainbow_link_is_called'] = true;
if($called_position != 'before_display_content') return;
// 현재 애드온의 위치를 구함
$oAddOnModel = &getModel('addon');

View file

@ -1,14 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<addon version="0.1">
<title xml:lang="ko">스팸필터 애드온</title>
<title xml:lang="en">spamfilter addon</title>
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
<name xml:lang="ko">제로</name>
<name xml:lang="en">zero</name>
<description xml:lang="ko">
스팸 필터링을 담당합니다.
SpamFilter 모듈을 이용하여 글/코멘트/트랙백 등록 이전에 스팸 필터링 및 도배 방지를 합니다.
자세한 설정은 &quot; 스팸필터 모듈&quot; 에서 해주세요.
</description>
<description xml:lang="en">do spam filtering</description>
</author>
</addon>

View file

@ -2,15 +2,15 @@
if(!__ZBXE__) exit();
/**
* @file spamfilter.addon.php
* @author zero (zero@nzeo.com)
* @brief 스팸필터링 애드온
*
* addOn은 ModuleObject 에서 모듈이 불러지기 /후에 include되는 것으로 실행을 .
* 별도의 interface가 필요한 것이 아니고 모듈의 일부라고 판단하여 코드를 작성하면 .
**/
* @file spamfilter.addon.php
* @author zero (zero@nzeo.com)
* @brief 스팸필터링 애드온
*
* 스팸필터 애드온은 SpamFilter 모듈을 이용합니.
* /코멘트/트랙백 등록 이전에만 실행이 됩니.
**/
// called_position가 before일때만 실행
// called_position가 before_module_proc 일때만 실행
if($this->called_position != 'before_module_proc') return;
// 이 애드온이 동작할 대상 (이 부분은 특별히 정해진 규약이 없다)
@ -43,10 +43,10 @@
break;
}
// 현재 모듈의 관리자이거나 그에 준하는 manager권한이면 그냥 패스~
// 현재 모듈의 관리자이거나 그에 준하는 manager권한이면 그냥 패스
if($this->grant->is_admin || $this->grant->manager) return;
// 현 접속자의 ip address를 변수화
// 현 접속자의 ip address를 구함
$ipaddress = $_SERVER['REMOTE_ADDR'];
// spamfilter 모듈 객체 생성

View file

@ -54,6 +54,14 @@
return getModule($module_name, 'class');
}
/**
* @brief DB::executeQuery() alias
**/
function executeQuery($query_id, $args) {
$oDB = &DB::getInstance();
return $oDB->executeQuery($query_id, $args);
}
/**
* @brief Context::getUrl($args_list) 쓰기 쉽게 함수로 선언
* @param args_list 제한없는 args

View file

@ -88,7 +88,7 @@
$addon_info->author->email_address = $xml_obj->author->attrs->email_address;
$addon_info->author->homepage = $xml_obj->author->attrs->link;
$addon_info->author->date = $xml_obj->author->attrs->date;
$addon_info->author->description = $xml_obj->author->description->body;
$addon_info->author->description = trim($xml_obj->author->description->body);
// history
if(!is_array($xml_obj->history->author)) $history[] = $xml_obj->history->author;

View file

@ -3,6 +3,6 @@
<actions>
<action name="dispIndex" type="view" standalone="true" admin_index="true" />
<action name="dispAddonInfo" type="view" standalone="true" />
<action name="procToggleActivateAddon" type="controller" standalone="true" />
<action name="procAddonToggleActivate" type="controller" standalone="true" />
</actions>
</module>

View file

@ -4,6 +4,7 @@
</tables>
<columns>
<column name="module" default="module" notnull="notnull" />
<column name="type" default="type" notnull="notnull" />
<column name="action" default="action" notnull="notnull" />
</columns>
</query>

View file

@ -1,4 +1,5 @@
<table name="action_foward">
<column name="module" type="varchar" size="80" notnull="notnull" unique="idx_foward" />
<column name="type" type="varchar" size="15" notnull="notnull" unique="idx_foward"/>
<column name="action" type="varchar" size="255" notnull="notnull" unique="idx_foward"/>
</table>

View file

@ -1,5 +1,4 @@
<?php
/**
* @class login_info
* @author zero (zero@nzeo.com)
@ -14,7 +13,7 @@
/**
* @brief 플러그인의 실행 부분
* ./plugins/플러그인/conf/info.xml에 선언한 extra_vars를 args로 받는다
* 결과를 만든후 return 해주어야 한다
* 결과를 만든후 print가 아니라 return 해주어야 한다
**/
function proc($args) {
// 변수 설정

View file

@ -1,8 +1,9 @@
<!-- colorset의 값에 따라 css 파일을 import 한다 -->
<!--@if($colorset=="normal"||!$colorset)-->
<!--%import("normal/style.css")-->
<!--@end-->
<!-- 로그인 사용자일 경우 -->
<!-- 로그인 사용자일 경우 로그인 정보를 출력 -->
<!--@if($logged_info)-->
<!--%import("./filter/logout.xml")-->
@ -38,7 +39,7 @@
</div>
</div>
<!-- 비로그인 사용자일 경우 -->
<!-- 비로그인 사용자일 경우 로그인 폼을 출력 -->
<!--@else-->
<!--%import("./filter/login.xml")-->

View file

@ -9,25 +9,25 @@
<var id="title">
<name xml:lang="ko">제목</name>
<type>text</type>
<description xml:lang="ko">설명</description>
<description xml:lang="ko">최근 게시물의 제목으로 출력됩니다.</description>
</var>
<var id="order_target">
<name xml:lang="ko">정렬 대상</name>
<type>select</type>
<description xml:lang="ko">설명</description>
<description xml:lang="ko">등록된 순서 또는 변경된 순서로 정렬을 할 수 있습니다.</description>
<options>
<name xml:lang="ko">시간</name>
<name xml:lang="ko">최신 등록</name>
<value>list_order</value>
</options>
<options>
<name xml:lang="ko">업데이트</name>
<name xml:lang="ko">최근 변경</name>
<value>update_order</value>
</options>
</var>
<var id="order_type">
<name xml:lang="ko">정렬 방법</name>
<type>select</type>
<description xml:lang="ko">설명</description>
<description xml:lang="ko">정렬대상을 내림차순 또는 올림차순으로 정렬할 수 있습니다.</description>
<options>
<name xml:lang="ko">내림차순</name>
<value>desc</value>
@ -40,12 +40,12 @@
<var id="list_count">
<name xml:lang="ko">목록수</name>
<type>text</type>
<description xml:lang="ko">설명</description>
<description xml:lang="ko">출력될 목록의 수를 정하실 수 있습니다. (기본 5개)</description>
</var>
<var id="mid_list">
<name xml:lang="ko">대상 모듈</name>
<type>mid_list</type>
<description xml:lang="ko">설명</description>
<description xml:lang="ko">선택하신 모듈에 등록된 글을 대상으로 합니다.</description>
</var>
</extra_vars>
</plugin>

View file

@ -1,5 +1,4 @@
<?php
/**
* @class newest_document
* @author zero (zero@nzeo.com)
@ -11,8 +10,9 @@
/**
* @brief 플러그인의 실행 부분
* ./plugins/플러그인/conf/info.xml에 선언한 extra_vars를 args로 받는다
* 결과를 만든후 return 해주어야 한다
*
* ./plugins/플러그인/conf/info.xml 선언한 extra_vars를 args로 받는다
* 결과를 만든후 print가 아니라 return 해주어야 한다
**/
function proc($args) {
// 플러그인 자체적으로 설정한 변수들을 체크
@ -28,6 +28,7 @@
$obj->sort_index = $order_target;
$obj->list_count = $list_count;
// document 모듈의 model 객체를 받아서 getDocumentList() method를 실행
$oDocumentModel = &getModel('document');
$output = $oDocumentModel->getDocumentList($obj);
@ -48,7 +49,5 @@
$oTemplate = new TemplateHandler();
return $oTemplate->compile($tpl_path, $tpl_file);
}
}
?>

View file

@ -1,7 +1,11 @@
<!-- 설정된 컬러셋의 종류에 따라서 css파일을 import 합니다 -->
<!--@if($colorset=="normal"||!$colorset)-->
<!--%import("normal/style.css")-->
<!--@elseif($colorset=="blue")-->
<!--%import("blue/style.css")-->
<!--@end-->
<div class="newest_document_default_{$colorset}">

View file

@ -3,14 +3,14 @@
<title xml:lang="ko">최신글 목록 기본 스킨</title>
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
<name xml:lang="ko">제로</name>
<description xml:lang="ko">newest_document의 기본 스킨</description>
<description xml:lang="ko">최신글 목록 플러그인의 기본 스킨</description>
</maker>
<colorset>
<color name="normal">
<title xml:lang="ko">기본</title>
<title xml:lang="ko">기본 컬러</title>
</color>
<color name="blue">
<title xml:lang="ko">푸른</title>
<title xml:lang="ko">푸른계통의 컬러</title>
</color>
</colorset>
<skin>