1.1.0 배포를 위해 trunk로 sandbox 복사
git-svn-id: http://xe-core.googlecode.com/svn/trunk@4939 201d5d3c-b55e-5fd7-737f-ddc643e51545
|
|
@ -1,14 +1,19 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<addon version="0.2">
|
<addon version="0.2">
|
||||||
<title xml:lang="ko">자동 링크 애드온</title>
|
<title xml:lang="ko">자동 링크 애드온</title>
|
||||||
|
<title xml:lang="jp">自動リンクアドオン</title>
|
||||||
<title xml:lang="en">Auto Link</title>
|
<title xml:lang="en">Auto Link</title>
|
||||||
<title xml:lang="zh-CN">自动链接插件</title>
|
<title xml:lang="zh-CN">自动链接插件</title>
|
||||||
<title xml:lang="es">auto vínculo addon</title>
|
<title xml:lang="es">auto vínculo addon</title>
|
||||||
<title xml:lang="ru">авто ссылка аддон</title>
|
<title xml:lang="ru">авто ссылка аддон</title>
|
||||||
<title xml:lang="ge">Auto-Link Addon</title>
|
<title xml:lang="ge">Auto-Link Addon</title>
|
||||||
|
<title xml:lang="zh-TW">自動連結</title>
|
||||||
<description xml:lang="ko">
|
<description xml:lang="ko">
|
||||||
게시글과 댓글의 내용중 http로 시작되는 일반 문자열에 자동으로 링크를 걸고 각 링크에 마우스 오버시 새창과 현재창 메뉴가 나타나도록 꾸미는 애드온입니다.
|
게시글과 댓글의 내용중 http로 시작되는 일반 문자열에 자동으로 링크를 걸고 각 링크에 마우스 오버시 새창과 현재창 메뉴가 나타나도록 꾸미는 애드온입니다.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="jp">
|
||||||
|
書き込み本文とコメントの内容にhttpで始まる一般文字列にリンクを貼り付け、そのリンクにマウスオーバする際、別ウィンドウと同一ウィンドウに表示させるメニュが現れるアドオンです。
|
||||||
|
</description>
|
||||||
<description xml:lang="en">
|
<description xml:lang="en">
|
||||||
This addon makes a link to a string that starts with http.
|
This addon makes a link to a string that starts with http.
|
||||||
</description>
|
</description>
|
||||||
|
|
@ -24,16 +29,20 @@
|
||||||
<description xml:lang="ge">
|
<description xml:lang="ge">
|
||||||
Kommentare beginnen mit http naeyongjung Thema der gemeinsamen String automatisch Link zu hängen Sie mit der Maus über die einzelnen Links und saechang Stadt und auf dem Menü des Add-On Dekoration.
|
Kommentare beginnen mit http naeyongjung Thema der gemeinsamen String automatisch Link zu hängen Sie mit der Maus über die einzelnen Links und saechang Stadt und auf dem Menü des Add-On Dekoration.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
主題及評論中以http開頭的字串,自動轉換成連結。當滑鼠移到連結上方時,會顯示(新視窗/本頁面)選擇框。
|
||||||
|
</description>
|
||||||
<version>0.1</version>
|
<version>0.1</version>
|
||||||
<date>2008-04-22</date>
|
<date>2008-04-22</date>
|
||||||
<link>http://www.zeroboard.com/</link>
|
|
||||||
|
|
||||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
|
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||||
<name xml:lang="ko">제로</name>
|
<name xml:lang="ko">zero</name>
|
||||||
|
<name xml:lang="jp">zero</name>
|
||||||
<name xml:lang="en">zero</name>
|
<name xml:lang="en">zero</name>
|
||||||
<name xml:lang="zh-CN">zero</name>
|
<name xml:lang="zh-CN">zero</name>
|
||||||
<name xml:lang="es">zero</name>
|
<name xml:lang="es">zero</name>
|
||||||
<name xml:lang="ru">zero</name>
|
<name xml:lang="ru">zero</name>
|
||||||
<name xml:lang="ge">zero</name>
|
<name xml:lang="ge">zero</name>
|
||||||
|
<name xml:lang="zh-TW">zero</name>
|
||||||
</author>
|
</author>
|
||||||
</addon>
|
</addon>
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
if($_REQUEST['act']!='api') return;
|
if($_REQUEST['act']!='api') return;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* blogapi의 경우 GET argument와 XML Content가 같이 오기에 제로보드XE의 경우 XML Content가 오면 이것만 처리하기에
|
* blogapi의 경우 GET argument와 XML Content가 같이 오기에 XE의 경우 XML Content가 오면 이것만 처리하기에
|
||||||
* GET argument중에 mid값을 강제 설정해야 모듈을 정상적으로 찾는다
|
* GET argument중에 mid값을 강제 설정해야 모듈을 정상적으로 찾는다
|
||||||
**/
|
**/
|
||||||
if($called_position == 'before_module_init') {
|
if($called_position == 'before_module_init') {
|
||||||
|
|
@ -447,7 +447,7 @@
|
||||||
<?xml version="1.0" ?>
|
<?xml version="1.0" ?>
|
||||||
<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd" >
|
<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd" >
|
||||||
<service>
|
<service>
|
||||||
<engineName>zeroboardXE</engineName>
|
<engineName>XpressEngine</engineName>
|
||||||
<engineLink>http://www.zeroboard.com/ </engineLink>
|
<engineLink>http://www.zeroboard.com/ </engineLink>
|
||||||
<homePageLink>{$homepagelink}</homePageLink>
|
<homePageLink>{$homepagelink}</homePageLink>
|
||||||
<apis>
|
<apis>
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
<title xml:lang="ge">Addon für BlogAPI</title>
|
<title xml:lang="ge">Addon für BlogAPI</title>
|
||||||
<title xml:lang="es">Addon para BlogAPI</title>
|
<title xml:lang="es">Addon para BlogAPI</title>
|
||||||
<title xml:lang="ru">Аддон для BlogAPI</title>
|
<title xml:lang="ru">Аддон для BlogAPI</title>
|
||||||
|
<title xml:lang="zh-TW">部落格 API</title>
|
||||||
<description xml:lang="ko">
|
<description xml:lang="ko">
|
||||||
metaWeblog를 지원하는 blogApi애드온입니다.
|
metaWeblog를 지원하는 blogApi애드온입니다.
|
||||||
사용으로 설정하시면 각 모듈마다 RSD 태그를 노출합니다.
|
사용으로 설정하시면 각 모듈마다 RSD 태그를 노출합니다.
|
||||||
|
|
@ -49,17 +50,23 @@
|
||||||
URL для api - http://setup_path/module_name/api.
|
URL для api - http://setup_path/module_name/api.
|
||||||
Только выбор опции использовать включает поведение RSD тега и api.
|
Только выбор опции использовать включает поведение RSD тега и api.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
支援 metaWeblog的部落格 API插件。
|
||||||
|
設置成"啟用"時,會使每個模組都顯示 RSD圖示。
|
||||||
|
API地址是http://安裝位置/模組名稱/api。
|
||||||
|
將狀態設置成"啟用"時,才可使用 RSD標籤及 API。
|
||||||
|
</description>
|
||||||
<version>0.1</version>
|
<version>0.1</version>
|
||||||
<date>2007-02-28</date>
|
<date>2007-02-28</date>
|
||||||
<link>http://www.zeroboard.com/</link>
|
|
||||||
|
|
||||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
|
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||||
<name xml:lang="ko">제로</name>
|
<name xml:lang="ko">zero</name>
|
||||||
<name xml:lang="jp">Zero</name>
|
<name xml:lang="jp">zero</name>
|
||||||
<name xml:lang="zh-CN">zero</name>
|
<name xml:lang="zh-CN">zero</name>
|
||||||
<name xml:lang="en">zero</name>
|
<name xml:lang="en">zero</name>
|
||||||
<name xml:lang="ge">zero</name>
|
<name xml:lang="ge">zero</name>
|
||||||
<name xml:lang="es">zero</name>
|
<name xml:lang="es">zero</name>
|
||||||
<name xml:lang="ru">zero</name>
|
<name xml:lang="ru">zero</name>
|
||||||
|
<name xml:lang="zh-TW">zero</name>
|
||||||
</author>
|
</author>
|
||||||
</addon>
|
</addon>
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,9 @@
|
||||||
<title xml:lang="ge">Counter Addon</title>
|
<title xml:lang="ge">Counter Addon</title>
|
||||||
<title xml:lang="es">Addon contador básico</title>
|
<title xml:lang="es">Addon contador básico</title>
|
||||||
<title xml:lang="ru">Аддон для базового счетчика</title>
|
<title xml:lang="ru">Аддон для базового счетчика</title>
|
||||||
|
<title xml:lang="zh-TW">網站訪問統計</title>
|
||||||
<description xml:lang="ko">
|
<description xml:lang="ko">
|
||||||
제로보드XE의 기본 카운터 모듈을 이용하여 접속 정보를 기록합니다.
|
XE의 기본 카운터 모듈을 이용하여 접속 정보를 기록합니다.
|
||||||
이 애드온을 켜셔야 접속 정보 수집이 됩니다.
|
이 애드온을 켜셔야 접속 정보 수집이 됩니다.
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="jp">
|
<description xml:lang="jp">
|
||||||
|
|
@ -16,36 +17,40 @@
|
||||||
このアドオンを「使用」に設定しておくと接続(アクセス)情報が記録されます。
|
このアドオンを「使用」に設定しておくと接続(アクセス)情報が記録されます。
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="zh-CN">
|
<description xml:lang="zh-CN">
|
||||||
利用ZeroboardXE的网站访问统计模块记录网站访问信息。
|
利用XE的网站访问统计模块记录网站访问信息。
|
||||||
把状态设置为"使用"时,才会记录网站访问信息.
|
把状态设置为"使用"时,才会记录网站访问信息.
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="en">
|
<description xml:lang="en">
|
||||||
This addon logs access information based on the basic counter module within Zeroboard XE.
|
This addon logs access information based on the basic counter module within XE.
|
||||||
The access information will be collected only if you turn on this addon.
|
The access information will be collected only if you turn on this addon.
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="ge">
|
<description xml:lang="ge">
|
||||||
Dieses Addon-Logs Zugriff auf Informationen basiert auf den grundlegenden Zähler-Modul innerhalb Zeroboard XE.
|
Dieses Addon-Logs Zugriff auf Informationen basiert auf den grundlegenden Zähler-Modul innerhalb XE.
|
||||||
Der Zugang zu Informationen wird nur erhoben, wenn Sie über dieses Addon.
|
Der Zugang zu Informationen wird nur erhoben, wenn Sie über dieses Addon.
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="es">
|
<description xml:lang="es">
|
||||||
Este addon contador básico de Zeroboard XE permite llevar la información de acceso a la página web de los visitantes.
|
Este addon contador básico de XE permite llevar la información de acceso a la página web de los visitantes.
|
||||||
Es necesario activar este addon para agregar la información de acceso.
|
Es necesario activar este addon para agregar la información de acceso.
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="ru">
|
<description xml:lang="ru">
|
||||||
Этот аддон пишет в лог информацию о доступе к сайту, основанную на базовом модуле счетчика в Zeroboard XE.
|
Этот аддон пишет в лог информацию о доступе к сайту, основанную на базовом модуле счетчика в XE.
|
||||||
Для сбора информации необходимо включить этот аддон.
|
Для сбора информации необходимо включить этот аддон.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
使用 XE的網站訪問統計模組記錄網站訪問資料。
|
||||||
|
將狀態設置成"使用"時,才會紀錄網站訪問資料。
|
||||||
|
</description>
|
||||||
<version>0.1</version>
|
<version>0.1</version>
|
||||||
<date>2007-02-28</date>
|
<date>2007-02-28</date>
|
||||||
<link>http://www.zeroboard.com/</link>
|
|
||||||
|
|
||||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
|
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||||
<name xml:lang="ko">제로</name>
|
<name xml:lang="ko">zero</name>
|
||||||
<name xml:lang="jp">Zero</name>
|
<name xml:lang="jp">zero</name>
|
||||||
<name xml:lang="zh-CN">zero</name>
|
<name xml:lang="zh-CN">zero</name>
|
||||||
<name xml:lang="en">zero</name>
|
<name xml:lang="en">zero</name>
|
||||||
<name xml:lang="ge">zero</name>
|
<name xml:lang="ge">zero</name>
|
||||||
<name xml:lang="es">zero</name>
|
<name xml:lang="es">zero</name>
|
||||||
<name xml:lang="ru">zero</name>
|
<name xml:lang="ru">zero</name>
|
||||||
|
<name xml:lang="zh-TW">zero</name>
|
||||||
</author>
|
</author>
|
||||||
</addon>
|
</addon>
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
* @author zero (zero@nzeo.com)
|
* @author zero (zero@nzeo.com)
|
||||||
* @brief 카운터 애드온
|
* @brief 카운터 애드온
|
||||||
*
|
*
|
||||||
* 카운터 애드온은 제로보드XE의 기본 카운터(counter)모듈을 이용하여 로그를 남깁니다.
|
* 카운터 애드온은 XE의 기본 카운터(counter)모듈을 이용하여 로그를 남깁니다.
|
||||||
* 검색 로봇이나 기타 툴의 접속을 방지하고 부하를 줄이기 위해서 페이지가 로드된 후에 javascript로 다시 로그를 남기도록 합니다.
|
* 검색 로봇이나 기타 툴의 접속을 방지하고 부하를 줄이기 위해서 페이지가 로드된 후에 javascript로 다시 로그를 남기도록 합니다.
|
||||||
* 따라서 이 카운터 애드온은 카운터를 수집하게 하는 javascript 파일을 추가하는 동작만 하며 기본 카운터 모듈의 호출은 해당 javascript
|
* 따라서 이 카운터 애드온은 카운터를 수집하게 하는 javascript 파일을 추가하는 동작만 하며 기본 카운터 모듈의 호출은 해당 javascript
|
||||||
* 파일내에서 이루어집니다.
|
* 파일내에서 이루어집니다.
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
<title xml:lang="es">LemonPen XE addon</title>
|
<title xml:lang="es">LemonPen XE addon</title>
|
||||||
<title xml:lang="ru">LemonPen XE Addon</title>
|
<title xml:lang="ru">LemonPen XE Addon</title>
|
||||||
<title xml:lang="jp">LemonPen XE アドオン</title>
|
<title xml:lang="jp">LemonPen XE アドオン</title>
|
||||||
|
<title xml:lang="zh-TW">LemonPen XE</title>
|
||||||
<description xml:lang="ko">활성화 하시면 레몬펜을 사이트에 달 수 있습니다.</description>
|
<description xml:lang="ko">활성화 하시면 레몬펜을 사이트에 달 수 있습니다.</description>
|
||||||
<description xml:lang="zh-CN">要想在网站使用LemonPen插件,请将此插件激活。</description>
|
<description xml:lang="zh-CN">要想在网站使用LemonPen插件,请将此插件激活。</description>
|
||||||
<description xml:lang="ge">Sie können LemonPen auf der Website, wenn Sie diese aktivieren.</description>
|
<description xml:lang="ge">Sie können LemonPen auf der Website, wenn Sie diese aktivieren.</description>
|
||||||
|
|
@ -14,11 +15,11 @@
|
||||||
<description xml:lang="es">Puede insertar LemonPen al sitio cuando este se activa.</description>
|
<description xml:lang="es">Puede insertar LemonPen al sitio cuando este se activa.</description>
|
||||||
<description xml:lang="ru">Вы можете вставить LemonPen к месту, когда вы позволили это.</description>
|
<description xml:lang="ru">Вы можете вставить LemonPen к месту, когда вы позволили это.</description>
|
||||||
<description xml:lang="jp">機能をオンにすると、レモンペンをサイト上で使うことが出来ます。 (LemonPen:Openmaru社提供)</description>
|
<description xml:lang="jp">機能をオンにすると、レモンペンをサイト上で使うことが出来ます。 (LemonPen:Openmaru社提供)</description>
|
||||||
|
<description xml:lang="zh-TW">想要在網站使用LemonPen,請將其啟用。</description>
|
||||||
<version>0.1</version>
|
<version>0.1</version>
|
||||||
<date>2007-12-10</date>
|
<date>2007-12-10</date>
|
||||||
<link>http://www.zeroboard.com/</link>
|
|
||||||
|
|
||||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
|
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||||
<name xml:lang="ko">zero</name>
|
<name xml:lang="ko">zero</name>
|
||||||
<name xml:lang="zh-CN">zero</name>
|
<name xml:lang="zh-CN">zero</name>
|
||||||
<name xml:lang="en">zero</name>
|
<name xml:lang="en">zero</name>
|
||||||
|
|
@ -26,6 +27,7 @@
|
||||||
<name xml:lang="es">zero</name>
|
<name xml:lang="es">zero</name>
|
||||||
<name xml:lang="ru">zero</name>
|
<name xml:lang="ru">zero</name>
|
||||||
<name xml:lang="jp">zero</name>
|
<name xml:lang="jp">zero</name>
|
||||||
|
<name xml:lang="zh-TW">zero</name>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<extra_vars>
|
<extra_vars>
|
||||||
|
|
@ -37,6 +39,7 @@
|
||||||
<title xml:lang="es">sid</title>
|
<title xml:lang="es">sid</title>
|
||||||
<title xml:lang="ru">sid</title>
|
<title xml:lang="ru">sid</title>
|
||||||
<title xml:lang="jp">sid</title>
|
<title xml:lang="jp">sid</title>
|
||||||
|
<title xml:lang="zh-TW">sid</title>
|
||||||
<description xml:lang="ko">레몬펜에서 사이트 등록시 발급받은 sid값을 입력해주세요.</description>
|
<description xml:lang="ko">레몬펜에서 사이트 등록시 발급받은 sid값을 입력해주세요.</description>
|
||||||
<description xml:lang="zh-CN">请输入注册LemonPen网站时,发放的sid值。</description>
|
<description xml:lang="zh-CN">请输入注册LemonPen网站时,发放的sid值。</description>
|
||||||
<description xml:lang="en">Please input sid value that you got after registering at the LemonPen website.</description>
|
<description xml:lang="en">Please input sid value that you got after registering at the LemonPen website.</description>
|
||||||
|
|
@ -44,6 +47,7 @@
|
||||||
<description xml:lang="es">Por favor, de entrada sid valor que había que hacer después de registrarse en el sitio web LemonPen.</description>
|
<description xml:lang="es">Por favor, de entrada sid valor que había que hacer después de registrarse en el sitio web LemonPen.</description>
|
||||||
<description xml:lang="ru">Введите замороженный ценности, которые вы получили после регистрации на сайте LemonPen.</description>
|
<description xml:lang="ru">Введите замороженный ценности, которые вы получили после регистрации на сайте LemonPen.</description>
|
||||||
<description xml:lang="jp">レモンペンのサイトで発行されたsidを入力してください。 (LemonPen:Openmaru社提供)</description>
|
<description xml:lang="jp">レモンペンのサイトで発行されたsidを入力してください。 (LemonPen:Openmaru社提供)</description>
|
||||||
|
<description xml:lang="zh-TW">請輸入註冊LemonPen網站時,所給予的sid值。</description>
|
||||||
</var>
|
</var>
|
||||||
</extra_vars>
|
</extra_vars>
|
||||||
</addon>
|
</addon>
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 제로보드XE의 문서와 permant link를 레몬펜의 규약에 맞춰서 출력
|
// XE의 문서와 permant link를 레몬펜의 규약에 맞춰서 출력
|
||||||
if($GLOBALS['__lemonpen_is_called__'] && $called_position == 'before_display_content') {
|
if($GLOBALS['__lemonpen_is_called__'] && $called_position == 'before_display_content') {
|
||||||
// 글 본문을 링크
|
// 글 본문을 링크
|
||||||
$output = preg_replace('/<div class="document_([0-9]+)_([0-9]+) xe_content">/is','<div class="document_$1_$2 xe_content hentry"><a href="'.getUrl('','document_srl',"$1").'" rel="bookmark" style="display:none;">'.getUrl('','document_srl',"$1").'</a>', $output);
|
$output = preg_replace('/<div class="document_([0-9]+)_([0-9]+) xe_content">/is','<div class="document_$1_$2 xe_content hentry"><a href="'.getUrl('','document_srl',"$1").'" rel="bookmark" style="display:none;">'.getUrl('','document_srl',"$1").'</a>', $output);
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,20 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<addon version="0.2">
|
<addon version="0.2">
|
||||||
<title xml:lang="ko">커뮤니케이션</title>
|
<title xml:lang="ko">커뮤니케이션</title>
|
||||||
<title xml:lang="jp">커뮤니케이션</title>
|
<title xml:lang="jp">コミュニケーション</title>
|
||||||
<title xml:lang="zh-CN">会员交流</title>
|
<title xml:lang="zh-CN">会员交流</title>
|
||||||
<title xml:lang="en">Communication</title>
|
<title xml:lang="en">Communication</title>
|
||||||
<title xml:lang="ge">커뮤니케이션</title>
|
<title xml:lang="ge">커뮤니케이션</title>
|
||||||
<title xml:lang="es">커뮤니케이션</title>
|
<title xml:lang="es">커뮤니케이션</title>
|
||||||
<title xml:lang="ru">커뮤니케이션</title>
|
<title xml:lang="ru">커뮤니케이션</title>
|
||||||
|
<title xml:lang="zh-TW">交流</title>
|
||||||
<description xml:lang="ko">
|
<description xml:lang="ko">
|
||||||
커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다.
|
커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다.
|
||||||
쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다.
|
쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다.
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="jp">
|
<description xml:lang="jp">
|
||||||
커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다.
|
コミュニケーションモジュールを活性化して、メッセージや友達機能を使えるようにします。
|
||||||
쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다.
|
メッセージ・友達機能を使うにはこのアドオンを「使用」にして下さい。
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="zh-CN">
|
<description xml:lang="zh-CN">
|
||||||
此插件可激活短信箱及添加好友功能。
|
此插件可激活短信箱及添加好友功能。
|
||||||
|
|
@ -34,17 +35,20 @@
|
||||||
커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다.
|
커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다.
|
||||||
쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다.
|
쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
此插件可啟用短訊和新增好友功能。
|
||||||
|
</description>
|
||||||
<version>0.1</version>
|
<version>0.1</version>
|
||||||
<date>2008-05-28</date>
|
<date>2008-05-28</date>
|
||||||
<link>http://www.zeroboard.com/</link>
|
|
||||||
|
|
||||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
|
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||||
<name xml:lang="ko">제로</name>
|
<name xml:lang="ko">zero</name>
|
||||||
<name xml:lang="jp">Zero</name>
|
<name xml:lang="jp">zero</name>
|
||||||
<name xml:lang="zh-CN">zero</name>
|
<name xml:lang="zh-CN">zero</name>
|
||||||
<name xml:lang="en">zero</name>
|
<name xml:lang="en">zero</name>
|
||||||
<name xml:lang="ge">zero</name>
|
<name xml:lang="ge">zero</name>
|
||||||
<name xml:lang="es">zero</name>
|
<name xml:lang="es">zero</name>
|
||||||
<name xml:lang="ru">zero</name>
|
<name xml:lang="ru">zero</name>
|
||||||
|
<name xml:lang="zh-TW">zero</name>
|
||||||
</author>
|
</author>
|
||||||
</addon>
|
</addon>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
/**
|
/**
|
||||||
* @file ru.lang.php
|
* @file ru.lang.php
|
||||||
* @author zero <zero@nzeo.com> | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467;
|
* @author zero <zero@nzeo.com> | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467;
|
||||||
* @brief Russian basic language pack for Zeroboard XE
|
* @brief Russian basic language pack
|
||||||
**/
|
**/
|
||||||
|
|
||||||
$lang->alert_new_message_arrived = 'У Вас есть новые сообщения. Хотите проверить сейчас?';
|
$lang->alert_new_message_arrived = 'У Вас есть новые сообщения. Хотите проверить сейчас?';
|
||||||
|
|
|
||||||
3
addons/member_communication/lang/zh-TW.lang.php
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
<?php
|
||||||
|
$lang->alert_new_message_arrived = '您有新訊息。要確認嗎?';
|
||||||
|
?>
|
||||||
|
|
@ -1,17 +1,18 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<addon version="0.2">
|
<addon version="0.2">
|
||||||
<title xml:lang="ko">회원 확장 정보 출력</title>
|
<title xml:lang="ko">회원 확장 정보 출력</title>
|
||||||
<title xml:lang="jp">회원 확장 정보 출력</title>
|
<title xml:lang="jp">拡張会員情報表示</title>
|
||||||
<title xml:lang="zh-CN">用户扩展信息</title>
|
<title xml:lang="zh-CN">用户扩展信息</title>
|
||||||
<title xml:lang="en">Extra Member Info</title>
|
<title xml:lang="en">Extra Member Info</title>
|
||||||
<title xml:lang="ge">회원 확장 정보 출력</title>
|
<title xml:lang="ge">회원 확장 정보 출력</title>
|
||||||
<title xml:lang="es">회원 확장 정보 출력</title>
|
<title xml:lang="es">회원 확장 정보 출력</title>
|
||||||
<title xml:lang="ru">회원 확장 정보 출력</title>
|
<title xml:lang="ru">회원 확장 정보 출력</title>
|
||||||
|
<title xml:lang="zh-TW">用戶延伸資料</title>
|
||||||
<description xml:lang="ko">
|
<description xml:lang="ko">
|
||||||
회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요.
|
회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요.
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="jp">
|
<description xml:lang="jp">
|
||||||
회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요.
|
会員が登録したイメージを使ったお名前、イメージマークを使うためにはこのアドオンを活性化して下さい。
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="zh-CN">
|
<description xml:lang="zh-CN">
|
||||||
此插件将把用户信息中的昵称图片,用户图标,签名等信息显示到页面当中。
|
此插件将把用户信息中的昵称图片,用户图标,签名等信息显示到页面当中。
|
||||||
|
|
@ -28,17 +29,20 @@
|
||||||
<description xml:lang="ru">
|
<description xml:lang="ru">
|
||||||
회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요.
|
회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
此插件將把用戶資料中的暱稱圖片、用戶圖示、簽名檔等資料顯示到頁面當中。
|
||||||
|
</description>
|
||||||
<version>0.2</version>
|
<version>0.2</version>
|
||||||
<date>2007-02-28</date>
|
<date>2007-02-28</date>
|
||||||
<link>http://www.zeroboard.com/</link>
|
|
||||||
|
|
||||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
|
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||||
<name xml:lang="ko">제로</name>
|
<name xml:lang="ko">zero</name>
|
||||||
<name xml:lang="jp">Zero</name>
|
<name xml:lang="jp">zero</name>
|
||||||
<name xml:lang="zh-CN">zero</name>
|
<name xml:lang="zh-CN">zero</name>
|
||||||
<name xml:lang="en">zero</name>
|
<name xml:lang="en">zero</name>
|
||||||
<name xml:lang="ge">zero</name>
|
<name xml:lang="ge">zero</name>
|
||||||
<name xml:lang="es">zero</name>
|
<name xml:lang="es">zero</name>
|
||||||
<name xml:lang="ru">zero</name>
|
<name xml:lang="ru">zero</name>
|
||||||
|
<name xml:lang="zh-TW">zero</name>
|
||||||
</author>
|
</author>
|
||||||
</addon>
|
</addon>
|
||||||
|
|
|
||||||
|
|
@ -13,13 +13,11 @@
|
||||||
/**
|
/**
|
||||||
* 출력되기 바로 직전일 경우에 이미지이름/이미지마크등을 변경
|
* 출력되기 바로 직전일 경우에 이미지이름/이미지마크등을 변경
|
||||||
**/
|
**/
|
||||||
if($called_position == "before_display_content") {
|
if($called_position != "before_display_content" || Context::get('act')=='dispPageAdminContentModify') return;
|
||||||
|
|
||||||
// 회원 이미지이름/ 마크/ 찾아서 대체할 함수를 담고 있는 파일을 include
|
// 회원 이미지이름/ 마크/ 찾아서 대체할 함수를 담고 있는 파일을 include
|
||||||
require_once('./addons/member_extra_info/member_extra_info.lib.php');
|
require_once('./addons/member_extra_info/member_extra_info.lib.php');
|
||||||
|
|
||||||
// 1. 출력문서중에서 <div class="member_번호">content</div>를 찾아 MemberController::transImageName() 를 이용하여 이미지이름/마크로 변경
|
// 1. 출력문서중에서 <div class="member_번호">content</div>를 찾아 MemberController::transImageName() 를 이용하여 이미지이름/마크로 변경
|
||||||
$output = preg_replace_callback('!<(div|span)([^\>]*)member_([0-9]+)([^\>]*)>(.*?)\<\/(div|span)\>!is', 'memberTransImageName', $output);
|
$output = preg_replace_callback('!<(div|span|a)([^\>]*)member_([0-9]+)([^\>]*)>(.*?)\<\/(div|span|a)\>!is', 'memberTransImageName', $output);
|
||||||
|
|
||||||
}
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -28,13 +28,10 @@
|
||||||
// 이미지이름이나 마크가 없으면 원본 정보를 세팅
|
// 이미지이름이나 마크가 없으면 원본 정보를 세팅
|
||||||
if(!$image_name_file && !$image_mark_file) return $matches[0];
|
if(!$image_name_file && !$image_mark_file) return $matches[0];
|
||||||
|
|
||||||
$text = $nick_name = htmlspecialchars(strip_tags($nick_name));
|
if($image_name_file) $nick_name = sprintf('<img src="%s" border="0" alt="id: %s" title="id: %s" style="vertical-align:middle;margin-right:3px" />', $image_name_file, strip_tags($nick_name), strip_tags($nick_name));
|
||||||
|
if($image_mark_file) $nick_name = sprintf('<img src="%s" border="0" alt="id: %s" title="id : %s" style="vertical-align:middle;margin-right:3px"/>%s', $image_mark_file, strip_tags($nick_name), strip_tags($nick_name), $nick_name);
|
||||||
|
|
||||||
// 이미지 이름이 있을 경우
|
$orig_text = preg_replace('/'.preg_quote($matches[5],'/').'<\/'.$matches[6].'>$/', '', $matches[0]);
|
||||||
if($image_name_file) $text = sprintf('<img src="%s" border="0" alt="id: %s" title="id: %s" style="vertical-align:middle;margin-right:3px" />', $image_name_file, $nick_name, $nick_name);
|
return $orig_text.$nick_name.'</'.$matches[6].'>';
|
||||||
|
|
||||||
if($image_mark_file) $text = sprintf('<img src="%s" border="0" alt="id: %s" title="id : %s" style="vertical-align:middle;margin-right:3px"/>%s', $image_mark_file, $nick_name, $nick_name, $text);
|
|
||||||
|
|
||||||
return sprintf('<span class="nowrap member_%d" style="cursor:pointer">%s</span>',$member_srl, $text);
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -1,38 +1,72 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<addon version="0.2">
|
<addon version="0.2">
|
||||||
<title xml:lang="ko">모바일XE 애드온</title>
|
<title xml:lang="ko">모바일XE 애드온</title>
|
||||||
|
<title xml:lang="jp">モバイルXEアドオン</title>
|
||||||
|
<title xml:lang="zh-CN">手机XE插件</title>
|
||||||
<title xml:lang="en">Mobile XE</title>
|
<title xml:lang="en">Mobile XE</title>
|
||||||
|
<title xml:lang="zh-TW">行動版 XE</title>
|
||||||
<description xml:lang="ko">
|
<description xml:lang="ko">
|
||||||
모바일에서 접속시 헤더 정보를 분석하여 메뉴 - 모듈의 관계를 이용하여 WAP 태그로 출력하는 애드온입니다.
|
모바일에서 접속시 헤더 정보를 분석하여 메뉴 - 모듈의 관계를 이용하여 WAP 태그로 출력하는 애드온입니다.
|
||||||
wml, hdml, mhtml를 지원하고 그 이외의 경우에는 동작하지 않습니다.
|
wml, hdml, mhtml를 지원하고 그 이외의 경우에는 동작하지 않습니다.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="jp">
|
||||||
|
モバイル端末機からアクセス時、ヘッダ情報を分析してメニュー - モジュールの関係を利用してWAPタグに変換して表示するアドオンです。
|
||||||
|
wml, hdml, mhtmlをサポートし、その以外は働きません。
|
||||||
|
</description>
|
||||||
|
<description xml:lang="zh-CN">
|
||||||
|
通过手机访问网站时将网页输出为WAP标签的插件。
|
||||||
|
支持语言:wml, hdml, mhtml
|
||||||
|
</description>
|
||||||
<description xml:lang="en">
|
<description xml:lang="en">
|
||||||
This addon displays WAP tag by analyzing header information on mobile connection.
|
This addon displays WAP tag by analyzing header information on mobile connection.
|
||||||
Only wml, hdml, mhtml formats are provided.
|
Only wml, hdml, mhtml formats are provided.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
透過行動工具連結時,會將網頁轉換為WAP標籤顯示。
|
||||||
|
只限於 wml, hdml, mhtml格式。
|
||||||
|
</description>
|
||||||
<version>0.1</version>
|
<version>0.1</version>
|
||||||
<date>2008-06-20</date>
|
<date>2008-06-20</date>
|
||||||
<link>http://www.zeroboard.com/</link>
|
|
||||||
|
|
||||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
|
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||||
<name xml:lang="ko">제로</name>
|
<name xml:lang="ko">zero</name>
|
||||||
|
<name xml:lang="jp">zero</name>
|
||||||
|
<name xml:lang="zh-CN">zero</name>
|
||||||
<name xml:lang="en">zero</name>
|
<name xml:lang="en">zero</name>
|
||||||
|
<name xml:lang="zh-TW">zero</name>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<extra_vars>
|
<extra_vars>
|
||||||
<var name="charset">
|
<var name="charset">
|
||||||
<title xml:lang="ko">문자셋</title>
|
<title xml:lang="ko">문자셋</title>
|
||||||
|
<title xml:lang="jp">文字コード</title>
|
||||||
|
<title xml:lang="zh-CN">编码</title>
|
||||||
<title xml:lang="en">Charset</title>
|
<title xml:lang="en">Charset</title>
|
||||||
|
<title xml:lang="zh-TW">編碼</title>
|
||||||
<description xml:lang="ko">
|
<description xml:lang="ko">
|
||||||
모바일 기기의 경우 utf-8 문자셋을 인식하지 못할 수 있습니다.
|
모바일 기기의 경우 utf-8 문자셋을 인식하지 못할 수 있습니다.
|
||||||
문자셋에 원하시는 문자셋을 입력하면 자동으로 변환하여 출력하여 모바일에서 이상없이 출력하도록 합니다.
|
문자셋에 원하시는 문자셋을 입력하면 자동으로 변환하여 출력하여 모바일에서 이상없이 출력하도록 합니다.
|
||||||
기본값은 euc-kr입니다.
|
기본값은 euc-kr입니다.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="jp">
|
||||||
|
ある特定のモバイル機器ではutf-8文字コードの認識が出来ない場合があります。
|
||||||
|
文字コードを設定すると、該当文字コードに自動変換して正常に表示できるようになります。
|
||||||
|
デフォルトはeuc-krです。
|
||||||
|
</description>
|
||||||
|
<description xml:lang="zh-CN">
|
||||||
|
手机有时无法识别utf-8编码,这时输入相应的编码值即可自动转换。
|
||||||
|
默认编码为euc-kr。
|
||||||
|
</description>
|
||||||
<description xml:lang="en">
|
<description xml:lang="en">
|
||||||
utf-8 cannot be read for mobile tools.
|
utf-8 cannot be read for mobile tools.
|
||||||
Mobile tools will display correct charset when you input charset you want.
|
Mobile tools will display correct charset when you input charset you want.
|
||||||
Default charset is euc-kr.
|
Default charset is euc-kr.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
行動工具無法讀取 utf-8編碼。
|
||||||
|
當您輸入您想要的編碼時,行動工具將會正確的顯示。
|
||||||
|
預設編碼是 euc-kr.
|
||||||
|
</description>
|
||||||
</var>
|
</var>
|
||||||
</extra_vars>
|
</extra_vars>
|
||||||
</addon>
|
</addon>
|
||||||
|
|
|
||||||
9
addons/mobile/lang/jp.lang.php
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @file addons/mobile/lang/jp.lang.php
|
||||||
|
* @author zero (zero@nzeo.com) 翻訳:ミニミ
|
||||||
|
* @brief 日本語言語パッケージ
|
||||||
|
**/
|
||||||
|
$lang->cmd_go_upper = '上位';
|
||||||
|
$lang->cmd_go_home = 'トップへ';
|
||||||
|
?>
|
||||||
10
addons/mobile/lang/zh-CN.lang.php
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @file addons/mobile/lang/zh-CN.lang.php
|
||||||
|
* @author zero (zero@nzeo.com)
|
||||||
|
* @brief 中文语言包
|
||||||
|
**/
|
||||||
|
|
||||||
|
$lang->cmd_go_upper = '上一级';
|
||||||
|
$lang->cmd_go_home = '首页';
|
||||||
|
?>
|
||||||
10
addons/mobile/lang/zh-TW.lang.php
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @file addons/mobile/lang/zh-TW.lang.php
|
||||||
|
* @author zero (zero@nzeo.com)
|
||||||
|
* @brief 正體中文語言包 (只有基本內容)
|
||||||
|
**/
|
||||||
|
|
||||||
|
$lang->cmd_go_upper = '回上頁';
|
||||||
|
$lang->cmd_go_home = '回首頁';
|
||||||
|
?>
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
<title xml:lang="es">Delegación ID para OpenID</title>
|
<title xml:lang="es">Delegación ID para OpenID</title>
|
||||||
<title xml:lang="jp">OpenIDアドオン</title>
|
<title xml:lang="jp">OpenIDアドオン</title>
|
||||||
<title xml:lang="ru">Аддон для делигирования доменного имени к OpenID</title>
|
<title xml:lang="ru">Аддон для делигирования доменного имени к OpenID</title>
|
||||||
|
<title xml:lang="zh-TW">OpenID</title>
|
||||||
<description xml:lang="ko">
|
<description xml:lang="ko">
|
||||||
본인의 도메인을 사용하여 오픈아이디로 활용할 수 있도록 합니다.
|
본인의 도메인을 사용하여 오픈아이디로 활용할 수 있도록 합니다.
|
||||||
꼭 설정을 통해서 openid provider관련 값을 입력후 사용해주세요.
|
꼭 설정을 통해서 openid provider관련 값을 입력후 사용해주세요.
|
||||||
|
|
@ -35,18 +36,22 @@
|
||||||
Этот аддон позволяет Вам использовать Вашу доменное имя как OpenID.
|
Этот аддон позволяет Вам использовать Вашу доменное имя как OpenID.
|
||||||
Прежде, чем использовать, просто убедитесь, что установлены значения, имеющие отношение к провайдеру openid.
|
Прежде, чем использовать, просто убедитесь, что установлены значения, имеющие отношение к провайдеру openid.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
可將原本的域名當做OpenID來使用。
|
||||||
|
必須在設置中輸入openid provider相關值後再使用。
|
||||||
|
</description>
|
||||||
<version>0.1</version>
|
<version>0.1</version>
|
||||||
<date>2007-02-28</date>
|
<date>2007-02-28</date>
|
||||||
<link>http://www.zeroboard.com/</link>
|
|
||||||
|
|
||||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
|
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||||
<name xml:lang="ko">제로</name>
|
<name xml:lang="ko">zero</name>
|
||||||
<name xml:lang="zh-CN">zero</name>
|
<name xml:lang="zh-CN">zero</name>
|
||||||
<name xml:lang="en">zero</name>
|
<name xml:lang="en">zero</name>
|
||||||
<name xml:lang="ge">zero</name>
|
<name xml:lang="ge">zero</name>
|
||||||
<name xml:lang="es">zero</name>
|
<name xml:lang="es">zero</name>
|
||||||
<name xml:lang="jp">Zero</name>
|
<name xml:lang="jp">zero</name>
|
||||||
<name xml:lang="ru">Zero</name>
|
<name xml:lang="ru">zero</name>
|
||||||
|
<name xml:lang="zh-TW">zero</name>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<extra_vars>
|
<extra_vars>
|
||||||
|
|
@ -58,6 +63,7 @@
|
||||||
<title xml:lang="es">Servidor</title>
|
<title xml:lang="es">Servidor</title>
|
||||||
<title xml:lang="jp">server</title>
|
<title xml:lang="jp">server</title>
|
||||||
<title xml:lang="ru">server</title>
|
<title xml:lang="ru">server</title>
|
||||||
|
<title xml:lang="zh-TW">server</title>
|
||||||
<description xml:lang="ko">openid.server 값을 입력해 주세요.</description>
|
<description xml:lang="ko">openid.server 값을 입력해 주세요.</description>
|
||||||
<description xml:lang="zh-CN">请输入 openid.server 值。</description>
|
<description xml:lang="zh-CN">请输入 openid.server 值。</description>
|
||||||
<description xml:lang="en">Please input your openid.server value.</description>
|
<description xml:lang="en">Please input your openid.server value.</description>
|
||||||
|
|
@ -65,6 +71,7 @@
|
||||||
<description xml:lang="es">Ingrese el valor del openid.server.</description>
|
<description xml:lang="es">Ingrese el valor del openid.server.</description>
|
||||||
<description xml:lang="jp">openid.server の値を入力してください。</description>
|
<description xml:lang="jp">openid.server の値を入力してください。</description>
|
||||||
<description xml:lang="ru">Пожалуйста, введите Ваше значение openid сервера.</description>
|
<description xml:lang="ru">Пожалуйста, введите Ваше значение openid сервера.</description>
|
||||||
|
<description xml:lang="zh-TW">請輸入 openid.server 值。</description>
|
||||||
</var>
|
</var>
|
||||||
<var name="delegate">
|
<var name="delegate">
|
||||||
<title xml:lang="ko">delegate</title>
|
<title xml:lang="ko">delegate</title>
|
||||||
|
|
@ -74,6 +81,7 @@
|
||||||
<title xml:lang="es">delegado</title>
|
<title xml:lang="es">delegado</title>
|
||||||
<title xml:lang="jp">delegate</title>
|
<title xml:lang="jp">delegate</title>
|
||||||
<title xml:lang="ru">delegate</title>
|
<title xml:lang="ru">delegate</title>
|
||||||
|
<title xml:lang="zh-TW">delegate</title>
|
||||||
<description xml:lang="ko">openid.delegate값을 입력해주세요.</description>
|
<description xml:lang="ko">openid.delegate값을 입력해주세요.</description>
|
||||||
<description xml:lang="zh-CN">请输入 openid.delegate 值。</description>
|
<description xml:lang="zh-CN">请输入 openid.delegate 值。</description>
|
||||||
<description xml:lang="en">Please input your openid.delegate value.</description>
|
<description xml:lang="en">Please input your openid.delegate value.</description>
|
||||||
|
|
@ -81,6 +89,7 @@
|
||||||
<description xml:lang="es">Ingresar el valor del openid.delegate</description>
|
<description xml:lang="es">Ingresar el valor del openid.delegate</description>
|
||||||
<description xml:lang="jp">openid.delegate の値を入力してください。</description>
|
<description xml:lang="jp">openid.delegate の値を入力してください。</description>
|
||||||
<description xml:lang="ru">Пожалуйста, введите Ваше значение openid делегата.</description>
|
<description xml:lang="ru">Пожалуйста, введите Ваше значение openid делегата.</description>
|
||||||
|
<description xml:lang="zh-TW">請輸入 openid.delegate 值。</description>
|
||||||
</var>
|
</var>
|
||||||
<var name="xrds">
|
<var name="xrds">
|
||||||
<title xml:lang="ko">xrds</title>
|
<title xml:lang="ko">xrds</title>
|
||||||
|
|
@ -90,6 +99,7 @@
|
||||||
<title xml:lang="es">xrds</title>
|
<title xml:lang="es">xrds</title>
|
||||||
<title xml:lang="jp">xrds</title>
|
<title xml:lang="jp">xrds</title>
|
||||||
<title xml:lang="ru">xrds</title>
|
<title xml:lang="ru">xrds</title>
|
||||||
|
<title xml:lang="zh-TW">xrds</title>
|
||||||
<description xml:lang="ko">X-XRDS-Location값을 입력해주세요.</description>
|
<description xml:lang="ko">X-XRDS-Location값을 입력해주세요.</description>
|
||||||
<description xml:lang="zh-CN">请输入 X-XRDS-Location 值。</description>
|
<description xml:lang="zh-CN">请输入 X-XRDS-Location 值。</description>
|
||||||
<description xml:lang="en">Please input your X-XRDS-Location value.</description>
|
<description xml:lang="en">Please input your X-XRDS-Location value.</description>
|
||||||
|
|
@ -97,6 +107,7 @@
|
||||||
<description xml:lang="es">Ingresar el valor de X-XRDS-Location</description>
|
<description xml:lang="es">Ingresar el valor de X-XRDS-Location</description>
|
||||||
<description xml:lang="jp">X-XRDS-Location の値を入力してください。</description>
|
<description xml:lang="jp">X-XRDS-Location の値を入力してください。</description>
|
||||||
<description xml:lang="ru">Пожалуйста, введите Ваше значение X-XRDS-Локации.</description>
|
<description xml:lang="ru">Пожалуйста, введите Ваше значение X-XRDS-Локации.</description>
|
||||||
|
<description xml:lang="zh-TW">請輸入 X-XRDS-Location 值。</description>
|
||||||
</var>
|
</var>
|
||||||
</extra_vars>
|
</extra_vars>
|
||||||
</addon>
|
</addon>
|
||||||
|
|
|
||||||
23
addons/planet_bookmark/conf/info.xml
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<addon version="0.2">
|
||||||
|
<title xml:lang="ko">플래닛 Bookmark 애드온</title>
|
||||||
|
<title xml:lang="zh-CN">微博收藏插件</title>
|
||||||
|
<title xml:lang="zh-TW">Planet 書籤</title>
|
||||||
|
<description xml:lang="ko">
|
||||||
|
플래닛 Bookmark 애드온
|
||||||
|
</description>
|
||||||
|
<description xml:lang="zh-CN">
|
||||||
|
XE微博收藏插件。
|
||||||
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
Planet 書籤插件
|
||||||
|
</description>
|
||||||
|
<version>0.1</version>
|
||||||
|
<date>2008-10-31</date>
|
||||||
|
|
||||||
|
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||||
|
<name xml:lang="ko">zero</name>
|
||||||
|
<name xml:lang="zh-CN">zero</name>
|
||||||
|
<name xml:lang="zh-TW">zero</name>
|
||||||
|
</author>
|
||||||
|
</addon>
|
||||||
24
addons/planet_bookmark/planet_bookmark.addon.php
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?php
|
||||||
|
if(!defined("__ZBXE__")) exit();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file planet_bookmark.addon.php
|
||||||
|
* @author zero (zero@zeroboard.com)
|
||||||
|
* @brief
|
||||||
|
**/
|
||||||
|
|
||||||
|
if($called_position == 'after_module_proc' && Context::getResponseMethod()!="XMLRPC" && Context::getResponseMethod()!="JSON") {
|
||||||
|
$config = Context::get('config');
|
||||||
|
if($config && $config->mid == 'planet'){
|
||||||
|
$oPlanet = Context::get('planet');
|
||||||
|
if(!is_object($oPlanet)) return;
|
||||||
|
if($oPlanet->isMyPlanet()){
|
||||||
|
$oPlanetModel = &getModel('planet');
|
||||||
|
$countBookmark = $oPlanetModel->getTagSearchResultCount($oPlanet->getModuleSrl(),'bookmark');
|
||||||
|
|
||||||
|
Context::addHtmlHeader("<script type=\"text/javascript\">//<![CDATA[\nvar planet_bookmark_count=".( (int)$countBookmark).";\n//]]></script>");
|
||||||
|
Context::addJsFile('./addons/planet_bookmark/planet_bookmark.js');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
96
addons/planet_bookmark/planet_bookmark.js
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
function planetBookmarkTab(){
|
||||||
|
if($('planet_tab')) $('planet_tab').innerHTML += '<ul id="planetBookmarkTab" class="exTab"><li><a href="#planet_tab" onclick="planetShowBookmarkList(this);">Bookmark<sup><span id="planet_bookmark_count">'+ planet_bookmark_count + '</span></a></li></ul>';
|
||||||
|
}
|
||||||
|
xAddEventListener(window,'load',planetBookmarkTab);
|
||||||
|
|
||||||
|
function planetShowBookmarkList(o){
|
||||||
|
$ElementList('#planetBookmarkTab li').removeClass('active');
|
||||||
|
$Element(o).parent().addClass('active');
|
||||||
|
$ElementList('#planet_myTab li').removeClass('active');
|
||||||
|
planetBookmarkReload();
|
||||||
|
}
|
||||||
|
|
||||||
|
function planetBookmarkReload(){
|
||||||
|
$('commentList').innerHTML = '<div class="commentHeader"><h3 class="exTitle">Bookmark</h3><span class="button strong black todoWrite"><button type="button" onclick="showWritePostBookmark()">Bookmark</button></span></div>\n<div id="bookmarkList" class="commentBody todoManager"></div>\n<div id="todoList_page" class="pagination a1"></div>\n\n<span class="tl"></span><span class="tr"></span><span class="bl"></span><span class="br"></span>\n';
|
||||||
|
planetGetBookmark(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
function planetGetBookmark(page){
|
||||||
|
$('bookmarkList').innerHTML ='';
|
||||||
|
var response_tags = new Array('error','message','contentList','pageNavigation');
|
||||||
|
exec_xml('planet','dispPlanetContentTagSearch',{keyword:'bookmark',page:page,mid:current_mid},completeGetBookmark,response_tags);
|
||||||
|
}
|
||||||
|
|
||||||
|
function completeGetBookmark(ret_obj,response_tags, params, fo_obj) {
|
||||||
|
if(ret_obj['error'] == 0 && ret_obj.contentList){
|
||||||
|
var o = new Array();
|
||||||
|
var it = new Array();
|
||||||
|
var items = ret_obj['contentList']['item'];
|
||||||
|
|
||||||
|
if(typeof(items[0]) == 'undefined') {
|
||||||
|
it[0] = items;
|
||||||
|
} else {
|
||||||
|
it = items;
|
||||||
|
}
|
||||||
|
|
||||||
|
o.push('<ul>');
|
||||||
|
for(var i=0,c=it.length;i<c;i++){
|
||||||
|
var tag = $A();
|
||||||
|
if(typeof(it[i]['tag_list']['item'])=='string'){
|
||||||
|
tag.push(it[i]['tag_list']['item']);
|
||||||
|
}else{
|
||||||
|
tag = $A(it[i]['tag_list']['item']);
|
||||||
|
}
|
||||||
|
|
||||||
|
tag = tag.filter(function(v){return !/bookmark/i.test(v);});
|
||||||
|
tag = tag.$value().join(',');
|
||||||
|
|
||||||
|
o.push('<li>');
|
||||||
|
o.push(it[i]['content']);
|
||||||
|
if(tag) {
|
||||||
|
o.push('<div class="tag">');
|
||||||
|
o.push('<img src="'+request_uri+'addons/planet_bookmark/tag.gif" title="tag" />');
|
||||||
|
o.push(tag);
|
||||||
|
o.push('</div>');
|
||||||
|
}
|
||||||
|
o.push("</li>\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
o.push('</ul>');
|
||||||
|
o.push('<span class="tl"></span><span class="tr"></span><span class="bl"></span><span class="br"></span>');
|
||||||
|
|
||||||
|
$('bookmarkList').innerHTML = o.join('');
|
||||||
|
|
||||||
|
var pageNavigation = ret_obj['pageNavigation'];
|
||||||
|
$('planet_bookmark_count').innerHTML = pageNavigation.total_count ? pageNavigation.total_count : 0;
|
||||||
|
|
||||||
|
if(pageNavigation.total_page > 1){
|
||||||
|
|
||||||
|
var str = "";
|
||||||
|
if(pageNavigation.first_page>1) str += '<a class="prev" href="#planet_tab" onclick="planetGetBookmark('+(pageNavigation.first_page-1)+');">Prev</a>';
|
||||||
|
|
||||||
|
for(var i=pageNavigation.first_page;i<=pageNavigation.page_count;i++){
|
||||||
|
if(i== pageNavigation.cur_page){
|
||||||
|
str += "<strong>"+i+"</strong>";
|
||||||
|
}else{
|
||||||
|
str += '<a href="#planet_tab" onclick="planetGetBookmark('+i+');">'+ i +'</a>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pageNavigation.total_page != pageNavigation.last_page) str += '<a class="next" href="#planet_tab" onclick="planetGetBookmark('+(pageNavigation.last_page+1)+');">next</a>';
|
||||||
|
$('bookmarkList_page').innerHTML = str;
|
||||||
|
}
|
||||||
|
window.location.href="#planet_tab";
|
||||||
|
}else{
|
||||||
|
$('planet_bookmark_count').innerHTML = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function showWritePostBookmark(tag){
|
||||||
|
tag = tag||'bookmark';
|
||||||
|
$Element($('writePostForm').about_tag).hide();
|
||||||
|
$Element($('writePostForm').content_tag).show();
|
||||||
|
$('writePostForm').content_tag.value = tag;
|
||||||
|
window.document.location.href="#writePost";
|
||||||
|
showWritePost();
|
||||||
|
}
|
||||||
28
addons/planet_bookmark/planet_todo.addon.php
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?php
|
||||||
|
if(!defined("__ZBXE__")) exit();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file planet_todo.addon.php
|
||||||
|
* @author SOL군 (sol@ngleader.com)
|
||||||
|
* @brief
|
||||||
|
**/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if($called_position == 'after_module_proc' && Context::getResponseMethod()!="XMLRPC" && Context::getResponseMethod()!="JSON") {
|
||||||
|
$config = Context::get('config');
|
||||||
|
|
||||||
|
//getTagSearchResultCount
|
||||||
|
if($config->mid == 'planet'){
|
||||||
|
$oPlanet = Context::get('planet');
|
||||||
|
if($oPlanet->isMyPlanet()){
|
||||||
|
$oPlanetModel = &getModel('planet');
|
||||||
|
$countTodo = $oPlanetModel->getTagSearchResultCount($oPlanet->getModuleSrl(),'todo');
|
||||||
|
$countDone = $oPlanetModel->getTagSearchResultCount($oPlanet->getModuleSrl(),'done');
|
||||||
|
|
||||||
|
Context::addHtmlHeader("<script type=\"text/javascript\">//<![CDATA[\nvar planet_todo_count={todo:".$countTodo.",done:".$countDone."};\n//]]></script>");
|
||||||
|
Context::addJsFile('./addons/planet_todo/planet_todo.js');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
BIN
addons/planet_bookmark/tag.gif
Normal file
|
After Width: | Height: | Size: 205 B |
29
addons/planet_todo/conf/info.xml
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<addon version="0.2">
|
||||||
|
<title xml:lang="ko">플래닛 TODO 애드온</title>
|
||||||
|
<title xml:lang="en">Planet TODO</title>
|
||||||
|
<title xml:lang="zh-CN">微博TODO插件</title>
|
||||||
|
<title xml:lang="zh-TW">Planet TODO 插件</title>
|
||||||
|
<description xml:lang="ko">
|
||||||
|
플래닛 TODO 애드온
|
||||||
|
</description>
|
||||||
|
<description xml:lang="en">
|
||||||
|
This is Planet TODO addon.
|
||||||
|
</description>
|
||||||
|
<description xml:lang="zh-CN">
|
||||||
|
XE微博TODO插件。
|
||||||
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
Planet TODO 插件
|
||||||
|
</description>
|
||||||
|
<version>0.1</version>
|
||||||
|
<date>2008-10-31</date>
|
||||||
|
|
||||||
|
<author email_address="sol@ngleader.com" link="http://ngleader.com">
|
||||||
|
<name xml:lang="ko">SOL군</name>
|
||||||
|
<name xml:lang="jp">SOLgun</name>
|
||||||
|
<name xml:lang="en">SOLgun</name>
|
||||||
|
<name xml:lang="zh-CN">SOLgun</name>
|
||||||
|
<name xml:lang="zh-TW">SOLgun</name>
|
||||||
|
</author>
|
||||||
|
</addon>
|
||||||
25
addons/planet_todo/planet_todo.addon.php
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
if(!defined("__ZBXE__")) exit();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file planet_todo.addon.php
|
||||||
|
* @author SOL군 (sol@ngleader.com)
|
||||||
|
* @brief
|
||||||
|
**/
|
||||||
|
if($called_position == 'after_module_proc' && Context::getResponseMethod()!="XMLRPC" && Context::getResponseMethod()!="JSON") {
|
||||||
|
$config = Context::get('config');
|
||||||
|
|
||||||
|
if($config && $config->mid == 'planet'){
|
||||||
|
$oPlanet = Context::get('planet');
|
||||||
|
if(!is_object($oPlanet)) return;
|
||||||
|
if($oPlanet->isMyPlanet()){
|
||||||
|
$oPlanetModel = &getModel('planet');
|
||||||
|
$countTodo = $oPlanetModel->getTagSearchResultCount($oPlanet->getModuleSrl(),'todo');
|
||||||
|
$countDone = $oPlanetModel->getTagSearchResultCount($oPlanet->getModuleSrl(),'done');
|
||||||
|
|
||||||
|
Context::addHtmlHeader("<script type=\"text/javascript\">//<![CDATA[\nvar planet_todo_count={todo:".$countTodo.",done:".$countDone."};\n//]]></script>");
|
||||||
|
Context::addJsFile('./addons/planet_todo/planet_todo.js');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
221
addons/planet_todo/planet_todo.js
Normal file
|
|
@ -0,0 +1,221 @@
|
||||||
|
function planetTab(){
|
||||||
|
planet_todo_count.todo = planet_todo_count.todo ? planet_todo_count.todo:0;
|
||||||
|
planet_todo_count.done = planet_todo_count.done ? planet_todo_count.done:0;
|
||||||
|
if($('planet_tab')) $('planet_tab').innerHTML += '<ul id="planetex_Tab" class="exTab"><li><a href="#planet_tab" onclick="planet_showTodoList(this);">ToDo<sup><span id="planet_todo_count">'+ planet_todo_count.todo + '</span>/<span id="planet_done_count">' + planet_todo_count.done + '</span></sup></a></li></ul>';
|
||||||
|
}
|
||||||
|
xAddEventListener(window,'load',planetTab);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function planetTabOff(){
|
||||||
|
$Element('planetex_Tab').leave();
|
||||||
|
}
|
||||||
|
|
||||||
|
function planet_showTodoList(o){
|
||||||
|
$ElementList('#planetex_Tab li').removeClass('active');
|
||||||
|
$Element(o).parent().addClass('active');
|
||||||
|
$ElementList('#planet_myTab li').removeClass('active');
|
||||||
|
|
||||||
|
planet_reload_todo();
|
||||||
|
}
|
||||||
|
|
||||||
|
function planet_reload_todo(){
|
||||||
|
$('commentList').innerHTML = '<div class="commentHeader"><h3 class="exTitle">TODO</h3><span class="button strong black todoWrite"><button type="button" onclick="showWritePostTodo()">TODO Post</button></span></div>\n<div id="todoList" class="commentBody todoManager"></div>\n<div id="todoList_page" class="pagination a1"></div>\n<div class="commentHeader"><h3 class="exTitle">DONE</h3></div>\n<div id="doneList" class="commentBody todoManager"></div>\n<div id="doneList_page" class="pagination a1"></div>\n<span class="tl"></span><span class="tr"></span><span class="bl"></span><span class="br"></span>\n';
|
||||||
|
planet_getTodo();
|
||||||
|
planet_getDone();
|
||||||
|
}
|
||||||
|
|
||||||
|
function planet_getTodo(page){
|
||||||
|
$('todoList').innerHTML ='';
|
||||||
|
_getPlanetTagSeachResult('todo',page,result_planet_getTodo);
|
||||||
|
}
|
||||||
|
|
||||||
|
function planet_getDone(page){
|
||||||
|
$('doneList').innerHTML ='';
|
||||||
|
_getPlanetTagSeachResult('done',page,result_planet_getDone);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _getPlanetTagSeachResult(tag,page,func){
|
||||||
|
var response_tags = new Array('error','message','contentList','pageNavigation');
|
||||||
|
exec_xml('planet','dispPlanetContentTagSearch',{keyword:tag,page:page,mid:current_mid},func,response_tags);
|
||||||
|
}
|
||||||
|
|
||||||
|
function result_planet_getTodo(ret_obj,response_tags, params, fo_obj) {
|
||||||
|
|
||||||
|
if(ret_obj['error'] == 0 && ret_obj.contentList){
|
||||||
|
var o = new Array();
|
||||||
|
var it = new Array();
|
||||||
|
var items = ret_obj['contentList']['item'];
|
||||||
|
|
||||||
|
if(typeof(items[0]) == 'undefined'){
|
||||||
|
it[0] = items;
|
||||||
|
}else{
|
||||||
|
it = items;
|
||||||
|
}
|
||||||
|
|
||||||
|
o.push('<ul>');
|
||||||
|
for(var i=0,c=it.length;i<c;i++){
|
||||||
|
|
||||||
|
it[i]['regdate'] += '';
|
||||||
|
it[i]['regdate'] = it[i]['regdate'].substr(0,4) + '/' + it[i]['regdate'].substr(4,2) + '/' + it[i]['regdate'].substr(6,2);
|
||||||
|
|
||||||
|
var tag = $A();
|
||||||
|
if(typeof(it[i]['tag_list']['item'])=='string'){
|
||||||
|
tag.push(it[i]['tag_list']['item']);
|
||||||
|
}else{
|
||||||
|
tag = $A(it[i]['tag_list']['item']);
|
||||||
|
}
|
||||||
|
|
||||||
|
tag = tag.filter(function(v){return !/todo/i.test(v);});
|
||||||
|
tag.push('done');
|
||||||
|
tag = tag.$value().join(',');
|
||||||
|
|
||||||
|
o.push('<input type="hidden" id="tag:'+it[i]['document_srl']+'" value="'+tag+'" /><li>');
|
||||||
|
o.push(it[i]['content']);
|
||||||
|
o.push('<span class="button small"><img src="./common/tpl/images/iconCheckGreen.gif" alt="" class="icon" /><button type="button" id="document_srl:'+it[i]['document_srl']+'" onclick="planet_todo_setDone(this)">DONE</button></span>');
|
||||||
|
o.push('<span class="time">');
|
||||||
|
o.push(it[i]['regdate']);
|
||||||
|
o.push('</span>');
|
||||||
|
o.push("</li>\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
o.push('</ul>');
|
||||||
|
o.push('<span class="tl"></span><span class="tr"></span><span class="bl"></span><span class="br"></span>');
|
||||||
|
|
||||||
|
$('todoList').innerHTML = o.join('');
|
||||||
|
|
||||||
|
|
||||||
|
var pageNavigation = ret_obj['pageNavigation'];
|
||||||
|
$('planet_todo_count').innerHTML = pageNavigation.total_count ? pageNavigation.total_count : 0;
|
||||||
|
|
||||||
|
if(pageNavigation.total_page > 1){
|
||||||
|
|
||||||
|
var str = "";
|
||||||
|
if(pageNavigation.first_page>1) str += '<a class="prev" href="#planet_tab" onclick="planet_getDone('+(pageNavigation.first_page-1)+');">Prev</a>';
|
||||||
|
|
||||||
|
for(var i=pageNavigation.first_page;i<=pageNavigation.page_count;i++){
|
||||||
|
if(i== pageNavigation.cur_page){
|
||||||
|
str += "<strong>"+i+"</strong>";
|
||||||
|
}else{
|
||||||
|
str += '<a href="#planet_tab" onclick="planet_getDone('+i+');">'+ i +'</a>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pageNavigation.total_page != pageNavigation.last_page) str += '<a class="next" href="#planet_tab" onclick="planet_getDone('+(pageNavigation.last_page+1)+');">next</a>';
|
||||||
|
$('todoList_page').innerHTML = str;
|
||||||
|
}
|
||||||
|
window.location.href="#planet_tab";
|
||||||
|
}else{
|
||||||
|
$('planet_todo_count').innerHTML = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function result_planet_getDone(ret_obj,response_tags, params, fo_obj) {
|
||||||
|
|
||||||
|
if(ret_obj['error'] == 0 && ret_obj.contentList){
|
||||||
|
var o = new Array();
|
||||||
|
var it = new Array();
|
||||||
|
var items = ret_obj['contentList']['item'];
|
||||||
|
|
||||||
|
|
||||||
|
if(typeof(items[0]) == 'undefined'){
|
||||||
|
it[0] = items;
|
||||||
|
}else{
|
||||||
|
it = items;
|
||||||
|
}
|
||||||
|
|
||||||
|
o.push('<ul>');
|
||||||
|
for(var i=0,c=it.length;i<c;i++){
|
||||||
|
|
||||||
|
it[i]['regdate'] += '';
|
||||||
|
it[i]['regdate'] = it[i]['regdate'].substr(0,4) + '/' + it[i]['regdate'].substr(4,2) + '/' + it[i]['regdate'].substr(6,2);
|
||||||
|
|
||||||
|
var tag = $A();
|
||||||
|
if(typeof(it[i]['tag_list']['item'])=='string'){
|
||||||
|
tag.push(it[i]['tag_list']['item']);
|
||||||
|
}else{
|
||||||
|
tag = $A(it[i]['tag_list']['item']);
|
||||||
|
}
|
||||||
|
|
||||||
|
tag = tag.filter(function(v){return !/done/i.test(v);});
|
||||||
|
tag.push('todo');
|
||||||
|
tag = tag.$value().join(',');
|
||||||
|
|
||||||
|
o.push('<input type="hidden" id="tag:'+it[i]['document_srl']+'" value="'+tag+'" /><li>');
|
||||||
|
o.push(it[i]['content']);
|
||||||
|
o.push('<span class="button small"><img src="./common/tpl/images/iconCheckGreen.gif" alt="" class="icon" /><button type="button" id="document_srl:'+it[i]['document_srl']+'" onclick="planet_todo_setDone(this)">REDO</button></span>');
|
||||||
|
o.push('<span class="button small"><img src="./common/tpl/images/iconX.gif" alt="" class="icon" /><button type="button" onclick="planet_todo_setDel('+it[i]['document_srl']+')">Delete</button></span>');
|
||||||
|
o.push("</li>\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
o.push('</ul>');
|
||||||
|
o.push('<span class="tl"></span><span class="tr"></span><span class="bl"></span><span class="br"></span>');
|
||||||
|
|
||||||
|
$('doneList').innerHTML = o.join('');
|
||||||
|
|
||||||
|
var pageNavigation = ret_obj['pageNavigation'];
|
||||||
|
$('planet_done_count').innerHTML = pageNavigation.total_count ? pageNavigation.total_count : 0;
|
||||||
|
|
||||||
|
if(pageNavigation.total_page > 1){
|
||||||
|
var str = "";
|
||||||
|
|
||||||
|
if(pageNavigation.first_page>1) str += '<a class="prev" href="#planet_tab" onclick="planet_getDone('+(pageNavigation.first_page-1)+');>Prev</a>';
|
||||||
|
|
||||||
|
for(var i=pageNavigation.first_page;i<=pageNavigation.page_count;i++){
|
||||||
|
if(i== pageNavigation.cur_page){
|
||||||
|
str += "<strong>"+i+"</strong>";
|
||||||
|
}else{
|
||||||
|
str += '<a href="#planet_tab" onclick="planet_getDone('+i+');">'+ i +'</a>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pageNavigation.total_page != pageNavigation.last_page) str += '<a class="next" href="#planet_tab" onclick="planet_getDone('+(pageNavigation.last_page+1)+');>next</a>';
|
||||||
|
$('doneList_page').innerHTML = str;
|
||||||
|
}
|
||||||
|
window.location.href="#planet_tab";
|
||||||
|
}else{
|
||||||
|
$('planet_done_count').innerHTML = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function planet_todo_setDone(o){
|
||||||
|
var document_srl = o.id.replace(/.*:/,'');
|
||||||
|
var tag = $('tag:'+document_srl).value;
|
||||||
|
var params = {};
|
||||||
|
params['document_srl'] = document_srl;
|
||||||
|
params['planet_content_tag'] = tag;
|
||||||
|
|
||||||
|
exec_xml('planet','procPlanetContentTagModify',params,planet_reload_todo);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function planet_todo_setDel(document_srl){
|
||||||
|
// var tag = $A($('document_srl:'+document_srl).value.split(','));
|
||||||
|
var tag = $A($('tag:'+document_srl).value.split(','));
|
||||||
|
|
||||||
|
tag = tag.filter(function(v){return !/todo/i.test(v);});
|
||||||
|
tag.push('hide');
|
||||||
|
tag = tag.$value().join(',');
|
||||||
|
|
||||||
|
var params = {};
|
||||||
|
params['document_srl'] = document_srl;
|
||||||
|
params['planet_content_tag'] = tag;
|
||||||
|
|
||||||
|
exec_xml('planet','procPlanetContentTagModify',params,planet_reload_todo);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function showWritePostTodo(tag){
|
||||||
|
tag = tag||'todo';
|
||||||
|
$Element($('writePostForm').about_tag).hide();
|
||||||
|
$Element($('writePostForm').content_tag).show();
|
||||||
|
$('writePostForm').content_tag.value = tag;
|
||||||
|
window.document.location.href="#writePost";
|
||||||
|
showWritePost();
|
||||||
|
}
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
<title xml:lang="ge">Point-Level-Symbol</title>
|
<title xml:lang="ge">Point-Level-Symbol</title>
|
||||||
<title xml:lang="es">Addon para mostar el nivel del ícono</title>
|
<title xml:lang="es">Addon para mostar el nivel del ícono</title>
|
||||||
<title xml:lang="ru">Аддон для отображения иконки уровня</title>
|
<title xml:lang="ru">Аддон для отображения иконки уровня</title>
|
||||||
|
<title xml:lang="zh-TW">點數等級圖案</title>
|
||||||
<description xml:lang="ko">
|
<description xml:lang="ko">
|
||||||
포인트 시스템을 사용중일 경우 사용자 이름 앞에 레벨 아이콘을 표시하도록 합니다.
|
포인트 시스템을 사용중일 경우 사용자 이름 앞에 레벨 아이콘을 표시하도록 합니다.
|
||||||
레벨 아이콘은 모듈 > 포인트시스템에서 선택 가능합니다.
|
레벨 아이콘은 모듈 > 포인트시스템에서 선택 가능합니다.
|
||||||
|
|
@ -35,17 +36,21 @@
|
||||||
Этот аддон отображает иконку уровня напротив имени пользователя, когда используется система поинтов.
|
Этот аддон отображает иконку уровня напротив имени пользователя, когда используется система поинтов.
|
||||||
Вы можете выбрать иконку уровня на Модуле Системы Поинтов.
|
Вы можете выбрать иконку уровня на Модуле Системы Поинтов.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
使用點數系統時,可以在用戶名前顯示等級圖案。
|
||||||
|
等級圖案可以在模組 > 點數系統中進行選擇。
|
||||||
|
</description>
|
||||||
<version>0.1</version>
|
<version>0.1</version>
|
||||||
<date>2007-07-26</date>
|
<date>2007-07-26</date>
|
||||||
<link>http://www.zeroboard.com/</link>
|
|
||||||
|
|
||||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
|
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||||
<name xml:lang="ko">제로</name>
|
<name xml:lang="ko">zero</name>
|
||||||
<name xml:lang="zh-CN">Zero</name>
|
<name xml:lang="zh-CN">zero</name>
|
||||||
<name xml:lang="jp">Zero</name>
|
<name xml:lang="jp">zero</name>
|
||||||
<name xml:lang="en">zero</name>
|
<name xml:lang="en">zero</name>
|
||||||
<name xml:lang="ge">zero</name>
|
<name xml:lang="ge">zero</name>
|
||||||
<name xml:lang="es">zero</name>
|
<name xml:lang="es">zero</name>
|
||||||
<name xml:lang="ru">zero</name>
|
<name xml:lang="ru">zero</name>
|
||||||
|
<name xml:lang="zh-TW">zero</name>
|
||||||
</author>
|
</author>
|
||||||
</addon>
|
</addon>
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,10 @@
|
||||||
**/
|
**/
|
||||||
|
|
||||||
// before_display_content 가 아니면 return
|
// before_display_content 가 아니면 return
|
||||||
if($called_position != "before_display_content") return;
|
if($called_position != "before_display_content" || Context::get('act')=='dispPageAdminContentModify') return;
|
||||||
|
|
||||||
require_once('./addons/point_level_icon/point_level_icon.lib.php');
|
require_once('./addons/point_level_icon/point_level_icon.lib.php');
|
||||||
|
|
||||||
$oPointController = &getController('point');
|
$oPointController = &getController('point');
|
||||||
$output = preg_replace_callback('!<(div|span)([^\>]*)member_([0-9\-]+)([^\>]*)>(.*?)\<\/(div|span)\>!is', 'pointLevelIconTrans', $output);
|
$output = preg_replace_callback('!<(div|span|a)([^\>]*)member_([0-9\-]+)([^\>]*)>(.*?)\<\/(div|span|a)\>!is', 'pointLevelIconTrans', $output);
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -37,11 +37,11 @@
|
||||||
$title = sprintf('%s:%s%s %s, %s:%s/%s', Context::getLang('point'), $point, $config->point_name, $per?'('.$per.'%)':'', Context::getLang('level'), $level, $config->max_level);
|
$title = sprintf('%s:%s%s %s, %s:%s/%s', Context::getLang('point'), $point, $config->point_name, $per?'('.$per.'%)':'', Context::getLang('level'), $level, $config->max_level);
|
||||||
$alt = sprintf('[%s:%s]', Context::getLang('level'), $level);
|
$alt = sprintf('[%s:%s]', Context::getLang('level'), $level);
|
||||||
|
|
||||||
$text = sprintf('<span class="nowrap member_%s" style="cursor:pointer"><img src="%s" alt="%s" title="%s" style="vertical-align:middle;margin-right:3px"/>%s</span>', $member_srl, $level_icon, $alt, $title, $text);
|
$GLOBALS['_pointLevelIcon'][$member_srl] = sprintf('<img src="%s" alt="%s" title="%s" style="vertical-align:middle; margin-right:3px;" />', $level_icon, $alt, $title);
|
||||||
|
|
||||||
$GLOBALS['_pointLevelIcon'][$member_srl] = $text;
|
|
||||||
}
|
}
|
||||||
|
$text = $GLOBALS['_pointLevelIcon'][$member_srl];
|
||||||
|
|
||||||
return $GLOBALS['_pointLevelIcon'][$member_srl];
|
$orig_text = preg_replace('/'.preg_quote($matches[5],'/').'<\/'.$matches[6].'>$/', '', $matches[0]);
|
||||||
|
return $orig_text.$text.$matches[5].'</'.$matches[6].'>';
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
<title xml:lang="es">Adición Enlace Arco Iris</title>
|
<title xml:lang="es">Adición Enlace Arco Iris</title>
|
||||||
<title xml:lang="jp">レインボーリンクアドオン</title>
|
<title xml:lang="jp">レインボーリンクアドオン</title>
|
||||||
<title xml:lang="ru">Аддон для радужных ссылок</title>
|
<title xml:lang="ru">Аддон для радужных ссылок</title>
|
||||||
|
<title xml:lang="zh-TW">彩虹連結</title>
|
||||||
<description xml:lang="ko">
|
<description xml:lang="ko">
|
||||||
rainbow.js를 header에 추가하여 링크가 걸린 글의 색을 무지개색으로 나타냅니다.
|
rainbow.js를 header에 추가하여 링크가 걸린 글의 색을 무지개색으로 나타냅니다.
|
||||||
이 애드온의 rainbow.js는 <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>에 저작권이 있습니다.
|
이 애드온의 rainbow.js는 <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>에 저작권이 있습니다.
|
||||||
|
|
@ -34,9 +35,12 @@
|
||||||
Этот аддон добавляет файл с именем "rainbow.js" в заголовки HTML, и тогда связанный текс приобретает эффект смены цвета, подобно радуге или хамелеону.
|
Этот аддон добавляет файл с именем "rainbow.js" в заголовки HTML, и тогда связанный текс приобретает эффект смены цвета, подобно радуге или хамелеону.
|
||||||
"rainbow.js" Copyrightⓒ2007 <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>.
|
"rainbow.js" Copyrightⓒ2007 <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
將rainbow.js新增到header,讓連結顯示成彩虹色。
|
||||||
|
此插件的rainbow.js檔案版權屬於 <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>
|
||||||
|
</description>
|
||||||
<version>0.1</version>
|
<version>0.1</version>
|
||||||
<date>2007-02-28</date>
|
<date>2007-02-28</date>
|
||||||
<link>http://www.zeroboard.com/</link>
|
|
||||||
|
|
||||||
<author email_address="webmaster@dynamicdrive.com" link="http://dynamicdrive.com">
|
<author email_address="webmaster@dynamicdrive.com" link="http://dynamicdrive.com">
|
||||||
<name xml:lang="ko">dynamicdrive.com</name>
|
<name xml:lang="ko">dynamicdrive.com</name>
|
||||||
|
|
@ -46,5 +50,6 @@
|
||||||
<name xml:lang="es">dynamicdrive.com</name>
|
<name xml:lang="es">dynamicdrive.com</name>
|
||||||
<name xml:lang="jp">dynamicdrive.com</name>
|
<name xml:lang="jp">dynamicdrive.com</name>
|
||||||
<name xml:lang="ru">dynamicdrive.com</name>
|
<name xml:lang="ru">dynamicdrive.com</name>
|
||||||
|
<name xml:lang="zh-TW">dynamicdrive.com</name>
|
||||||
</author>
|
</author>
|
||||||
</addon>
|
</addon>
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
<title xml:lang="ge">Referer Collector</title>
|
<title xml:lang="ge">Referer Collector</title>
|
||||||
<title xml:lang="es">Referer Collector</title>
|
<title xml:lang="es">Referer Collector</title>
|
||||||
<title xml:lang="ru">Сборщик рефералов</title>
|
<title xml:lang="ru">Сборщик рефералов</title>
|
||||||
|
<title xml:lang="zh-TW">反向連結統計</title>
|
||||||
<description xml:lang="ko">Referer log를 수집합니다.</description>
|
<description xml:lang="ko">Referer log를 수집합니다.</description>
|
||||||
<description xml:lang="jp">リファラーログを収集します。</description>
|
<description xml:lang="jp">リファラーログを収集します。</description>
|
||||||
<description xml:lang="zh-CN">记录反向链接统计数据。</description>
|
<description xml:lang="zh-CN">记录反向链接统计数据。</description>
|
||||||
|
|
@ -14,11 +15,11 @@
|
||||||
<description xml:lang="ge">Sammeln Sie Referer-Log und Statistik.</description>
|
<description xml:lang="ge">Sammeln Sie Referer-Log und Statistik.</description>
|
||||||
<description xml:lang="es">Recoger referer log y estadísticas.</description>
|
<description xml:lang="es">Recoger referer log y estadísticas.</description>
|
||||||
<description xml:lang="ru">Собирает лог рефералов и статистику.</description>
|
<description xml:lang="ru">Собирает лог рефералов и статистику.</description>
|
||||||
|
<description xml:lang="zh-TW">紀錄反向連結統計資料。</description>
|
||||||
<version>0.1</version>
|
<version>0.1</version>
|
||||||
<date>2007-11-26</date>
|
<date>2007-11-26</date>
|
||||||
<link>http://www.zeroboard.com/</link>
|
|
||||||
|
|
||||||
<author email_address="haneul0318@gmail.com" link="http://haneul.zetyx.net">
|
<author email_address="haneul0318@gmail.com" link="http://seungyeop.kr">
|
||||||
<name xml:lang="ko">haneul</name>
|
<name xml:lang="ko">haneul</name>
|
||||||
<name xml:lang="jp">Haneul</name>
|
<name xml:lang="jp">Haneul</name>
|
||||||
<name xml:lang="zn-CN">haneul</name>
|
<name xml:lang="zn-CN">haneul</name>
|
||||||
|
|
@ -26,5 +27,6 @@
|
||||||
<name xml:lang="ge">haneul</name>
|
<name xml:lang="ge">haneul</name>
|
||||||
<name xml:lang="es">haneul</name>
|
<name xml:lang="es">haneul</name>
|
||||||
<name xml:lang="ru">haneul</name>
|
<name xml:lang="ru">haneul</name>
|
||||||
|
<name xml:lang="zn-TW">haneul</name>
|
||||||
</author>
|
</author>
|
||||||
</addon>
|
</addon>
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,19 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<addon version="0.2">
|
<addon version="0.2">
|
||||||
<title xml:lang="ko">본문내 이미지 조절 애드온</title>
|
<title xml:lang="ko">본문내 이미지 조절 애드온</title>
|
||||||
|
<title xml:lang="jp">本文内イメージリーサイズアドオン</title>
|
||||||
<title xml:lang="zh-CN">内容区图片缩放插件</title>
|
<title xml:lang="zh-CN">内容区图片缩放插件</title>
|
||||||
<title xml:lang="en">Image Resizer</title>
|
<title xml:lang="en">Image Resizer</title>
|
||||||
<title xml:lang="es">Imagen de control add-on bonmunnae</title>
|
<title xml:lang="es">Imagen de control add-on bonmunnae</title>
|
||||||
<title xml:lang="ru">Image контроля добавить-на bonmunnae</title>
|
<title xml:lang="ru">Image контроля добавить-на bonmunnae</title>
|
||||||
<title xml:lang="ge">Image-Add-on bonmunnae</title>
|
<title xml:lang="ge">Image-Add-on bonmunnae</title>
|
||||||
|
<title xml:lang="zh-TW">圖片縮放</title>
|
||||||
<description xml:lang="ko">
|
<description xml:lang="ko">
|
||||||
본문내에 삽입된 이미지의 크기를 본문크기에 맞게 하고 클릭시 원본을 보여주는 애드온입니다.
|
본문내에 삽입된 이미지의 크기를 본문크기에 맞게 하고 클릭시 원본을 보여주는 애드온입니다.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="jp">
|
||||||
|
本文内に挿入されたイメージのサイズを本文サイズに合わせてリーサイズし、クリックした時、オリジナルイメージを表示させます。
|
||||||
|
</description>
|
||||||
<description xml:lang="zh-CN">
|
<description xml:lang="zh-CN">
|
||||||
自动调整主题内容区内的图片大小,点击将显示原始大小的插件。
|
自动调整主题内容区内的图片大小,点击将显示原始大小的插件。
|
||||||
</description>
|
</description>
|
||||||
|
|
@ -24,18 +29,21 @@
|
||||||
<description xml:lang="ge">
|
<description xml:lang="ge">
|
||||||
Body Bild eingefügt im Inneren des Körpers zu passen die Größe des Originals zeigen, wenn ich darauf klicke auf das Add-ons.
|
Body Bild eingefügt im Inneren des Körpers zu passen die Größe des Originals zeigen, wenn ich darauf klicke auf das Add-ons.
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
自動調整文章内的圖片大小,點擊會顯示原始大小的插件。
|
||||||
|
</description>
|
||||||
<version>0.1</version>
|
<version>0.1</version>
|
||||||
<date>2008-04-22</date>
|
<date>2008-04-22</date>
|
||||||
<link>http://www.zeroboard.com/</link>
|
|
||||||
|
|
||||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
|
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||||
<name xml:lang="ko">zero</name>
|
<name xml:lang="ko">zero</name>
|
||||||
|
<name xml:lang="jp">zero</name>
|
||||||
<name xml:lang="zh-CN">zero</name>
|
<name xml:lang="zh-CN">zero</name>
|
||||||
<name xml:lang="es">zero</name>
|
<name xml:lang="es">zero</name>
|
||||||
<name xml:lang="ge">zero</name>
|
<name xml:lang="ge">zero</name>
|
||||||
<name xml:lang="ru">zero</name>
|
<name xml:lang="ru">zero</name>
|
||||||
<name xml:lang="en">zero</name>
|
<name xml:lang="en">zero</name>
|
||||||
<name xml:lang="zh_cn">zero</name>
|
|
||||||
<name xml:lang="jp">zero</name>
|
<name xml:lang="jp">zero</name>
|
||||||
|
<name xml:lang="zh-TW">zero</name>
|
||||||
</author>
|
</author>
|
||||||
</addon>
|
</addon>
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ function resizeImageContents() {
|
||||||
for(var i=0;i<objs.length;i++) {
|
for(var i=0;i<objs.length;i++) {
|
||||||
var obj = objs[i];
|
var obj = objs[i];
|
||||||
|
|
||||||
// zbXE내부 프로그램 또는 스킨의 이미지라면 이미지 리사이즈를 하지 않음
|
// XE내부 프로그램 또는 스킨의 이미지라면 이미지 리사이즈를 하지 않음
|
||||||
if(!/\/(modules|addons|classes|common|layouts|libs|widgets)\//i.test(obj.src)) {
|
if(!/\/(modules|addons|classes|common|layouts|libs|widgets)\//i.test(obj.src)) {
|
||||||
var parent = obj.parentNode;
|
var parent = obj.parentNode;
|
||||||
while(parent) {
|
while(parent) {
|
||||||
|
|
@ -57,13 +57,13 @@ function resizeImageContents() {
|
||||||
// 만약 대상 이미지에 링크가 설정되어 있거나 onclick 이벤트가 부여되어 있으면 원본 보기를 하지 않음
|
// 만약 대상 이미지에 링크가 설정되어 있거나 onclick 이벤트가 부여되어 있으면 원본 보기를 하지 않음
|
||||||
if(obj.parentNode.nodeName.toLowerCase()!='a' && !obj.getAttribute('onclick')) xAddEventListener(obj,"click", showOriginalImage);
|
if(obj.parentNode.nodeName.toLowerCase()!='a' && !obj.getAttribute('onclick')) xAddEventListener(obj,"click", showOriginalImage);
|
||||||
|
|
||||||
imageGalleryIndex[j][i] = obj.src;
|
obj.setAttribute("rel", j+','+imageGalleryIndex[j].length);
|
||||||
obj.setAttribute("rel", j+','+i);
|
imageGalleryIndex[j][imageGalleryIndex[j].length] = obj.src;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
xAddEventListener(window, "load", resizeImageContents);
|
xAddEventListener(window, "load", function() { setTimeout(resizeImageContents,1500); });
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 본문내에서 컨텐츠 영역보다 큰 이미지의 경우 원본 크기를 보여줌
|
* @brief 본문내에서 컨텐츠 영역보다 큰 이미지의 경우 원본 크기를 보여줌
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,6 @@
|
||||||
**/
|
**/
|
||||||
|
|
||||||
if($called_position == 'after_module_proc' && Context::getResponseMethod()!="XMLRPC") {
|
if($called_position == 'after_module_proc' && Context::getResponseMethod()!="XMLRPC") {
|
||||||
Context::addJsFile('./addons/resize_image/js/resize_image.js');
|
Context::addJsFile('./addons/resize_image/js/resize_image.js',false);
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,23 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<addon version="0.2">
|
<addon version="0.2">
|
||||||
<title xml:lang="ko">댓글알리미 애드온</title>
|
<title xml:lang="ko">댓글알리미 애드온</title>
|
||||||
|
<title xml:lang="jp">コメントお知らせアラートアドオン</title>
|
||||||
|
<title xml:lang="zh-CN">评论通告</title>
|
||||||
<title xml:lang="en">Comment Notifier Addon</title>
|
<title xml:lang="en">Comment Notifier Addon</title>
|
||||||
|
<title xml:lang="zh-TW">評論通知</title>
|
||||||
<description xml:lang="ko">댓글알리미를 지원하는 애드온입니다.</description>
|
<description xml:lang="ko">댓글알리미를 지원하는 애드온입니다.</description>
|
||||||
|
<description xml:lang="jp">コメントお知らせアラートのアドオンです。</description>
|
||||||
|
<description xml:lang="zh-CN">联动评论通告模块的插件。</description>
|
||||||
<description xml:lang="en">This addon enables Comment Notifier module.</description>
|
<description xml:lang="en">This addon enables Comment Notifier module.</description>
|
||||||
|
<description xml:lang="zh-TW">此插件為評論通知模組。</description>
|
||||||
<version>0.2</version>
|
<version>0.2</version>
|
||||||
<date>2008-06-02</date>
|
<date>2008-06-02</date>
|
||||||
<link>http://www.zeroboard.com/</link>
|
|
||||||
|
|
||||||
<author email_address="haneul0318@seungyeop.kr" link="http://www.seungyeop.kr">
|
<author email_address="haneul0318@seungyeop.kr" link="http://www.seungyeop.kr">
|
||||||
<name xml:lang="ko">haneul</name>
|
<name xml:lang="ko">haneul</name>
|
||||||
|
<name xml:lang="jp">haneul</name>
|
||||||
|
<name xml:lang="zh-CN">haneul</name>
|
||||||
<name xml:lang="en">haneul</name>
|
<name xml:lang="en">haneul</name>
|
||||||
|
<name xml:lang="zh-TW">haneul</name>
|
||||||
</author>
|
</author>
|
||||||
</addon>
|
</addon>
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$oController = &getController('tccommentnotify');
|
$oController = &getController('tccommentnotify');
|
||||||
|
if(!$oController) return;
|
||||||
$oController->procNotifyReceived();
|
$oController->procNotifyReceived();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -20,6 +21,7 @@
|
||||||
if($called_position == "after_module_proc")
|
if($called_position == "after_module_proc")
|
||||||
{
|
{
|
||||||
$oModel = &getModel('tccommentnotify');
|
$oModel = &getModel('tccommentnotify');
|
||||||
|
if(!$oModel) return;
|
||||||
if($oModel->checkShouldNotify())
|
if($oModel->checkShouldNotify())
|
||||||
{
|
{
|
||||||
$scriptCode = <<<EndOfScript
|
$scriptCode = <<<EndOfScript
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,8 @@
|
||||||
* @class Context
|
* @class Context
|
||||||
* @author zero (zero@nzeo.com)
|
* @author zero (zero@nzeo.com)
|
||||||
* @brief Request Argument/환경변수등의 모든 Context를 관리
|
* @brief Request Argument/환경변수등의 모든 Context를 관리
|
||||||
*
|
|
||||||
* Context 클래스는 Context::methodname() 처럼 쉽게 사용하기 위해 만들어진 객체를 받아서
|
* Context 클래스는 Context::methodname() 처럼 쉽게 사용하기 위해 만들어진 객체를 받아서
|
||||||
* 호출하는 구조를 위해 이중 method 구조를 가지고 있다.
|
* 호출하는 구조를 위해 이중 method 구조를 가지고 있다.
|
||||||
* php5에서 static variables를 사용하게 된다면 불필요한 구조를 제거할 수 있다.
|
|
||||||
* php5 쓰고 싶당.. ㅡ.ㅜ
|
|
||||||
**/
|
**/
|
||||||
|
|
||||||
define('FOLLOW_REQUEST_SSL',0);
|
define('FOLLOW_REQUEST_SSL',0);
|
||||||
|
|
@ -35,7 +32,6 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 언어 정보
|
* @brief 언어 정보
|
||||||
*
|
|
||||||
* 기본으로 ko. HTTP_USER_AGENT나 사용자의 직접 세팅(쿠키이용)등을 통해 변경됨
|
* 기본으로 ko. HTTP_USER_AGENT나 사용자의 직접 세팅(쿠키이용)등을 통해 변경됨
|
||||||
**/
|
**/
|
||||||
var $lang_type = ''; ///< 언어 종류
|
var $lang_type = ''; ///< 언어 종류
|
||||||
|
|
@ -50,7 +46,6 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 유일한 Context 객체를 반환 (Singleton)
|
* @brief 유일한 Context 객체를 반환 (Singleton)
|
||||||
*
|
|
||||||
* Context는 어디서든 객체 선언없이 사용하기 위해서 static 하게 사용
|
* Context는 어디서든 객체 선언없이 사용하기 위해서 static 하게 사용
|
||||||
**/
|
**/
|
||||||
function &getInstance() {
|
function &getInstance() {
|
||||||
|
|
@ -61,9 +56,7 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief DB정보, Request Argument등을 세팅
|
* @brief DB정보, Request Argument등을 세팅
|
||||||
*
|
* Context::init()은 단 한번만 호출되어야 하며 init()시에 Request Argument, DB/언어/세션정보등의 모든 정보를 세팅한다
|
||||||
* Context::init()은 단 한번만 호출되어야 하며 init()시에
|
|
||||||
* Request Argument, DB/언어/세션정보등의 모든 정보를 세팅한다
|
|
||||||
**/
|
**/
|
||||||
function init() {
|
function init() {
|
||||||
// context 변수를 $GLOBALS의 변수로 지정
|
// context 변수를 $GLOBALS의 변수로 지정
|
||||||
|
|
@ -74,6 +67,9 @@
|
||||||
// 기본적인 DB정보 세팅
|
// 기본적인 DB정보 세팅
|
||||||
$this->_loadDBInfo();
|
$this->_loadDBInfo();
|
||||||
|
|
||||||
|
// 언어 파일 불러오기
|
||||||
|
$lang_supported = $this->loadLangSelected();
|
||||||
|
|
||||||
// 세션 핸들러 지정
|
// 세션 핸들러 지정
|
||||||
$oSessionModel = &getModel('session');
|
$oSessionModel = &getModel('session');
|
||||||
$oSessionController = &getController('session');
|
$oSessionController = &getController('session');
|
||||||
|
|
@ -90,25 +86,10 @@
|
||||||
// 쿠키로 설정된 언어타입 가져오기
|
// 쿠키로 설정된 언어타입 가져오기
|
||||||
if($_COOKIE['lang_type']) $this->lang_type = $_COOKIE['lang_type'];
|
if($_COOKIE['lang_type']) $this->lang_type = $_COOKIE['lang_type'];
|
||||||
else $this->lang_type = $this->db_info->lang_type;
|
else $this->lang_type = $this->db_info->lang_type;
|
||||||
|
|
||||||
// 등록된 기본 언어파일 찾기
|
|
||||||
$langs = file(_XE_PATH_.'common/lang/lang.info');
|
|
||||||
$accept_lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
|
||||||
foreach($langs as $val) {
|
|
||||||
list($lang_prefix, $lang_text) = explode(',',$val);
|
|
||||||
$lang_text = trim($lang_text);
|
|
||||||
$lang_supported[$lang_prefix] = $lang_text;
|
|
||||||
if(!$this->lang_type && preg_match('/'.$lang_prefix.'/i',$_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
|
|
||||||
$this->lang_type = $lang_prefix;
|
|
||||||
setcookie('lang_type', $this->lang_type, time()+60*60*24*365, '/');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!in_array($this->lang_type, array_keys($lang_supported))) $this->lang_type = $this->db_info->lang_type;
|
if(!in_array($this->lang_type, array_keys($lang_supported))) $this->lang_type = $this->db_info->lang_type;
|
||||||
if(!$this->lang_type) $this->lang_type = "en";
|
if(!$this->lang_type) $this->lang_type = "en";
|
||||||
|
|
||||||
Context::set('lang_supported', $lang_supported);
|
Context::set('lang_supported', $lang_supported);
|
||||||
|
|
||||||
$this->setLangType($this->lang_type);
|
$this->setLangType($this->lang_type);
|
||||||
|
|
||||||
// 기본 언어파일 로드
|
// 기본 언어파일 로드
|
||||||
|
|
@ -120,11 +101,17 @@
|
||||||
|
|
||||||
// Request Argument 설정
|
// Request Argument 설정
|
||||||
$this->_setXmlRpcArgument();
|
$this->_setXmlRpcArgument();
|
||||||
|
$this->_setJSONRequestArgument();
|
||||||
$this->_setRequestArgument();
|
$this->_setRequestArgument();
|
||||||
$this->_setUploadedArgument();
|
$this->_setUploadedArgument();
|
||||||
|
|
||||||
// 인증 관련 정보를 Context와 세션에 설정
|
// 인증 관련 정보를 Context와 세션에 설정
|
||||||
if(Context::isInstalled()) {
|
if(Context::isInstalled()) {
|
||||||
|
// site_module_info를 구함
|
||||||
|
$oModuleModel = &getModel('module');
|
||||||
|
$site_module_info = $oModuleModel->getDefaultMid();
|
||||||
|
Context::set('site_module_info', $site_module_info);
|
||||||
|
|
||||||
// 인증관련 데이터를 Context에 설정
|
// 인증관련 데이터를 Context에 설정
|
||||||
$oMemberModel = &getModel('member');
|
$oMemberModel = &getModel('member');
|
||||||
$oMemberController = &getController('member');
|
$oMemberController = &getController('member');
|
||||||
|
|
@ -152,7 +139,7 @@
|
||||||
$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");
|
||||||
$this->addCSSFile("./common/css/button.css");
|
$this->addCSSFile("./common/css/button.css",false);
|
||||||
|
|
||||||
// 관리자 페이지일 경우 관리자 공용 CSS 추가
|
// 관리자 페이지일 경우 관리자 공용 CSS 추가
|
||||||
if(Context::get('module')=='admin' || strpos(Context::get('act'),'Admin')>0) $this->addCssFile("./modules/admin/tpl/css/admin.css", false);
|
if(Context::get('module')=='admin' || strpos(Context::get('act'),'Admin')>0) $this->addCssFile("./modules/admin/tpl/css/admin.css", false);
|
||||||
|
|
@ -162,7 +149,13 @@
|
||||||
if($this->get_vars) {
|
if($this->get_vars) {
|
||||||
foreach($this->get_vars as $key => $val) {
|
foreach($this->get_vars as $key => $val) {
|
||||||
if(!$val) continue;
|
if(!$val) continue;
|
||||||
$url .= ($url?'&':'').$key.'='.$val;
|
if(is_array($val)&&count($val)) {
|
||||||
|
foreach($val as $k => $v) {
|
||||||
|
$url .= ($url?'&':'').$key.'['.$k.']='.urlencode($v);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$url .= ($url?'&':'').$key.'='.urlencode($val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Context::set('current_url',sprintf('%s?%s', $this->getRequestUri(), $url));
|
Context::set('current_url',sprintf('%s?%s', $this->getRequestUri(), $url));
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -261,6 +254,47 @@
|
||||||
return $this->db_info;
|
return $this->db_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 지원되는 언어 파일 찾기
|
||||||
|
**/
|
||||||
|
function loadLangSupported() {
|
||||||
|
static $lang_supported = null;
|
||||||
|
if(is_null($lang_supported)) {
|
||||||
|
$langs = file(_XE_PATH_.'common/lang/lang.info');
|
||||||
|
foreach($langs as $val) {
|
||||||
|
list($lang_prefix, $lang_text) = explode(',',$val);
|
||||||
|
$lang_text = trim($lang_text);
|
||||||
|
$lang_supported[$lang_prefix] = $lang_text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $lang_supported;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 설정한 언어 파일 찾기
|
||||||
|
**/
|
||||||
|
function loadLangSelected() {
|
||||||
|
static $lang_selected = null;
|
||||||
|
if(is_null($lang_selected)) {
|
||||||
|
$orig_lang_file = _XE_PATH_.'common/lang/lang.info';
|
||||||
|
$selected_lang_file = _XE_PATH_.'files/cache/lang_selected.info';
|
||||||
|
if(!file_exists($selected_lang_file) || !filesize($selected_lang_file)) {
|
||||||
|
$buff = FileHandler::readFile($orig_lang_file);
|
||||||
|
FileHandler::writeFile($selected_lang_file, $buff);
|
||||||
|
$lang_selected = Context::loadLangSupported();
|
||||||
|
} else {
|
||||||
|
$langs = file($selected_lang_file);
|
||||||
|
foreach($langs as $val) {
|
||||||
|
list($lang_prefix, $lang_text) = explode(',',$val);
|
||||||
|
$lang_text = trim($lang_text);
|
||||||
|
$lang_selected[$lang_prefix] = $lang_text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $lang_selected;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @biref FTP 정보가 등록되었는지 확인
|
* @biref FTP 정보가 등록되었는지 확인
|
||||||
**/
|
**/
|
||||||
|
|
@ -417,13 +451,13 @@
|
||||||
**/
|
**/
|
||||||
function convertEncoding($source_obj) {
|
function convertEncoding($source_obj) {
|
||||||
$charset_list = array(
|
$charset_list = array(
|
||||||
'UTF-8', 'EUC-KR', 'CP949', 'ISO-8859-1', 'EUC-JP', 'SHIFT_JIS', 'CP932',
|
'UTF-8', 'EUC-KR', 'CP949', 'ISO8859-1', 'EUC-JP', 'SHIFT_JIS', 'CP932',
|
||||||
'EUC-CN', 'HZ', 'GBK', 'GB18030', 'EUC-TW', 'BIG5', 'CP950', 'BIG5-HKSCS',
|
'EUC-CN', 'HZ', 'GBK', 'GB18030', 'EUC-TW', 'BIG5', 'CP950', 'BIG5-HKSCS',
|
||||||
'ISO-2022-CN', 'ISO-2022-CN-EXT', 'ISO-2022-JP', 'ISO-2022-JP-2', 'ISO-2022-JP-1',
|
'ISO2022-CN', 'ISO2022-CN-EXT', 'ISO2022-JP', 'ISO2022-JP-2', 'ISO2022-JP-1',
|
||||||
'ISO-8859-6', 'ISO-8859-8', 'JOHAB', 'ISO-2022-KR', 'CP1255', 'CP1256', 'CP862',
|
'ISO8859-6', 'ISO8859-8', 'JOHAB', 'ISO2022-KR', 'CP1255', 'CP1256', 'CP862',
|
||||||
'ASCII', 'ISO-8859-1', 'ISO-8850-2', 'ISO-8850-3', 'ISO-8850-4', 'ISO-8850-5',
|
'ASCII', 'ISO8859-1', 'ISO8850-2', 'ISO8850-3', 'ISO8850-4', 'ISO8850-5',
|
||||||
'ISO-8850-7', 'ISO-8850-9', 'ISO-8850-10', 'ISO-8850-13', 'ISO-8850-14',
|
'ISO8850-7', 'ISO8850-9', 'ISO8850-10', 'ISO8850-13', 'ISO8850-14',
|
||||||
'ISO-8850-15', 'ISO-8850-16', 'CP1250', 'CP1251', 'CP1252', 'CP1253', 'CP1254',
|
'ISO8850-15', 'ISO8850-16', 'CP1250', 'CP1251', 'CP1252', 'CP1253', 'CP1254',
|
||||||
'CP1257', 'CP850', 'CP866',
|
'CP1257', 'CP850', 'CP866',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -457,7 +491,7 @@
|
||||||
/**
|
/**
|
||||||
* @brief response method를 강제로 지정 (기본으로는 request method를 이용함)
|
* @brief response method를 강제로 지정 (기본으로는 request method를 이용함)
|
||||||
*
|
*
|
||||||
* method의 종류에는 HTML/ TEXT/ XMLRPC가 있음
|
* method의 종류에는 HTML/ TEXT/ XMLRPC/ JSON가 있음
|
||||||
**/
|
**/
|
||||||
function setResponseMethod($method = "HTML") {
|
function setResponseMethod($method = "HTML") {
|
||||||
$oContext = &Context::getInstance();
|
$oContext = &Context::getInstance();
|
||||||
|
|
@ -482,12 +516,14 @@
|
||||||
function _getResponseMethod() {
|
function _getResponseMethod() {
|
||||||
if($this->response_method) return $this->response_method;
|
if($this->response_method) return $this->response_method;
|
||||||
|
|
||||||
if($this->_getRequestMethod()=="XMLRPC") return "XMLRPC";
|
$RequestMethod = $this->_getRequestMethod();
|
||||||
|
if($RequestMethod=="XMLRPC") return "XMLRPC";
|
||||||
|
else if($RequestMethod=="JSON") return "JSON";
|
||||||
return "HTML";
|
return "HTML";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief request method가 어떤것인지 판단하여 저장 (GET/POST/XMLRPC)
|
* @brief request method가 어떤것인지 판단하여 저장 (GET/POST/XMLRPC/JSON)
|
||||||
**/
|
**/
|
||||||
function setRequestMethod($type) {
|
function setRequestMethod($type) {
|
||||||
$oContext = &Context::getInstance();
|
$oContext = &Context::getInstance();
|
||||||
|
|
@ -496,11 +532,12 @@
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief request method가 어떤것인지 판단하여 저장 (GET/POST/XMLRPC)
|
* @brief request method가 어떤것인지 판단하여 저장 (GET/POST/XMLRPC/JSON)
|
||||||
**/
|
**/
|
||||||
function _setRequestMethod($type = '') {
|
function _setRequestMethod($type = '') {
|
||||||
if($type) return $this->request_method = $type;
|
if($type) return $this->request_method = $type;
|
||||||
|
|
||||||
|
if(strpos($_SERVER['CONTENT_TYPE'],'json')) return $this->request_method = 'JSON';
|
||||||
if($GLOBALS['HTTP_RAW_POST_DATA']) return $this->request_method = "XMLRPC";
|
if($GLOBALS['HTTP_RAW_POST_DATA']) return $this->request_method = "XMLRPC";
|
||||||
|
|
||||||
$this->request_method = $_SERVER['REQUEST_METHOD'];
|
$this->request_method = $_SERVER['REQUEST_METHOD'];
|
||||||
|
|
@ -515,18 +552,7 @@
|
||||||
|
|
||||||
foreach($_REQUEST as $key => $val) {
|
foreach($_REQUEST as $key => $val) {
|
||||||
if($val === "") continue;
|
if($val === "") continue;
|
||||||
if($key == "page" || $key == "cpage" || substr($key,-3)=="srl") $val = (int)$val;
|
$val = $this->_filterRequestVar($key, $val);
|
||||||
else if(is_array($val) && count($val) ) {
|
|
||||||
foreach($val as $k => $v) {
|
|
||||||
if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $v = stripslashes($v);
|
|
||||||
$v = trim($v);
|
|
||||||
$val[$k] = $v;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $val = stripslashes($val);
|
|
||||||
$val = trim($val);
|
|
||||||
}
|
|
||||||
|
|
||||||
if($this->_getRequestMethod()=='GET'&&$_GET[$key]) $set_to_vars = true;
|
if($this->_getRequestMethod()=='GET'&&$_GET[$key]) $set_to_vars = true;
|
||||||
elseif($this->_getRequestMethod()=='POST'&&$_POST[$key]) $set_to_vars = true;
|
elseif($this->_getRequestMethod()=='POST'&&$_POST[$key]) $set_to_vars = true;
|
||||||
else $set_to_vars = false;
|
else $set_to_vars = false;
|
||||||
|
|
@ -534,6 +560,22 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief JSON 방식일 경우 처리
|
||||||
|
**/
|
||||||
|
function _setJSONRequestArgument() {
|
||||||
|
if($this->_getRequestMethod() != 'JSON') return;
|
||||||
|
// if(!$GLOBALS['HTTP_RAW_POST_DATA']) return;
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
parse_str($GLOBALS['HTTP_RAW_POST_DATA'],$params);
|
||||||
|
|
||||||
|
foreach($params as $key => $val) {
|
||||||
|
$val = $this->_filterRequestVar($key, $val);
|
||||||
|
$this->_set($key, $val, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief XML RPC일때
|
* @brief XML RPC일때
|
||||||
**/
|
**/
|
||||||
|
|
@ -547,13 +589,31 @@
|
||||||
|
|
||||||
unset($params->attrs);
|
unset($params->attrs);
|
||||||
if(!count($params)) return;
|
if(!count($params)) return;
|
||||||
|
|
||||||
foreach($params as $key => $obj) {
|
foreach($params as $key => $obj) {
|
||||||
$val = trim($obj->body);
|
$val = $this->_filterRequestVar($key, $obj->body);
|
||||||
$this->_set($key, $val, true);
|
$this->_set($key, $val, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 변수명에 따라서 필터링 처리
|
||||||
|
* _srl, page, cpage등의 변수는 integer로 형변환
|
||||||
|
**/
|
||||||
|
function _filterRequestVar($key, $val) {
|
||||||
|
if( ($key == "page" || $key == "cpage" || substr($key,-3)=="srl")) return !preg_match('/^[0-9,]+$/',$val)?(int)$val:$val;
|
||||||
|
if(is_array($val) && count($val) ) {
|
||||||
|
foreach($val as $k => $v) {
|
||||||
|
if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $v = stripslashes($v);
|
||||||
|
$v = trim($v);
|
||||||
|
$val[$k] = $v;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $val = stripslashes($val);
|
||||||
|
$val = trim($val);
|
||||||
|
}
|
||||||
|
return $val;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 업로드 되었을 경우 return true
|
* @brief 업로드 되었을 경우 return true
|
||||||
**/
|
**/
|
||||||
|
|
@ -586,7 +646,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Request Method값을 return (GET/POST/XMLRPC);
|
* @brief Request Method값을 return (GET/POST/XMLRPC/JSON);
|
||||||
**/
|
**/
|
||||||
function getRequestMethod() {
|
function getRequestMethod() {
|
||||||
$oContext = &Context::getInstance();
|
$oContext = &Context::getInstance();
|
||||||
|
|
@ -594,7 +654,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Request Method값을 return (GET/POST/XMLRPC);
|
* @brief Request Method값을 return (GET/POST/XMLRPC/JSON);
|
||||||
**/
|
**/
|
||||||
function _getRequestMethod() {
|
function _getRequestMethod() {
|
||||||
return $this->request_method;
|
return $this->request_method;
|
||||||
|
|
@ -603,15 +663,20 @@
|
||||||
/**
|
/**
|
||||||
* @brief 요청받은 url에 args_list를 적용하여 return
|
* @brief 요청받은 url에 args_list를 적용하여 return
|
||||||
**/
|
**/
|
||||||
function getUrl($num_args=0, $args_list=array()) {
|
function getUrl($num_args=0, $args_list=array(), $domain = null) {
|
||||||
$oContext = &Context::getInstance();
|
$oContext = &Context::getInstance();
|
||||||
return $oContext->_getUrl($num_args, $args_list);
|
return $oContext->_getUrl($num_args, $args_list, $domain);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 요청받은 url에 args_list를 적용하여 return
|
* @brief 요청받은 url에 args_list를 적용하여 return
|
||||||
**/
|
**/
|
||||||
function _getUrl($num_args=0, $args_list=array()) {
|
function _getUrl($num_args=0, $args_list=array(), $domain = null) {
|
||||||
|
if($domain) {
|
||||||
|
$domain = preg_replace('/^(http|https):\/\//i','', trim($domain));
|
||||||
|
if(substr($domain,-1) != '/') $domain .= '/';
|
||||||
|
}
|
||||||
|
|
||||||
if(!$this->get_vars || $args_list[0]=='') {
|
if(!$this->get_vars || $args_list[0]=='') {
|
||||||
$get_vars = null;
|
$get_vars = null;
|
||||||
if($args_list[0]=='') {
|
if($args_list[0]=='') {
|
||||||
|
|
@ -636,11 +701,16 @@
|
||||||
if($get_vars['act'] == 'dispMemberFriend') $get_vars['act'] = 'dispCommunicationFriend';
|
if($get_vars['act'] == 'dispMemberFriend') $get_vars['act'] = 'dispCommunicationFriend';
|
||||||
elseif($get_vars['act'] == 'dispMemberMessages') $get_vars['act'] = 'dispCommunicationMessages';
|
elseif($get_vars['act'] == 'dispMemberMessages') $get_vars['act'] = 'dispCommunicationMessages';
|
||||||
|
|
||||||
$var_count = count($get_vars);
|
if(!$domain) {
|
||||||
if(!$var_count) return '';
|
if($get_vars['act'] && $this->isExistsSSLAction($get_vars['act'])) $path = $this->getRequestUri(ENFORCE_SSL);
|
||||||
|
else $path = $this->getRequestUri(RELEASE_SSL);
|
||||||
|
} else {
|
||||||
|
if($get_vars['act'] && $this->isExistsSSLAction($get_vars['act'])) $path = 'https://'.$domain;
|
||||||
|
else $path = 'http://'.$domain;
|
||||||
|
}
|
||||||
|
|
||||||
if($get_vars['act'] && $this->isExistsSSLAction($get_vars['act'])) $path = $this->getRequestUri(ENFORCE_SSL);
|
$var_count = count($get_vars);
|
||||||
else $path = $this->getRequestUri(RELEASE_SSL);
|
if(!$var_count) return $path;
|
||||||
|
|
||||||
// rewrite모듈을 사용할때 getUrl()을 이용한 url 생성
|
// rewrite모듈을 사용할때 getUrl()을 이용한 url 생성
|
||||||
if($this->allow_rewrite) {
|
if($this->allow_rewrite) {
|
||||||
|
|
@ -674,9 +744,9 @@
|
||||||
case 'mid.search_keyword.search_target' :
|
case 'mid.search_keyword.search_target' :
|
||||||
switch($get_vars['search_target']) {
|
switch($get_vars['search_target']) {
|
||||||
case 'tag' :
|
case 'tag' :
|
||||||
return sprintf('%s%s/tag/%s',$path,$get_vars['mid'],str_replace(' ','-',$get_vars['search_keyword']));
|
return sprintf('%s%s/tag/%s',$path,$get_vars['mid'],str_replace(' ','+',$get_vars['search_keyword']));
|
||||||
case 'nick_name' :
|
case 'nick_name' :
|
||||||
return sprintf('%s%s/writer/%s',$path,$get_vars['mid'],str_replace(' ','-',$get_vars['search_keyword']));
|
return sprintf('%s%s/writer/%s',$path,$get_vars['mid'],str_replace(' ','+',$get_vars['search_keyword']));
|
||||||
case 'regdate' :
|
case 'regdate' :
|
||||||
if(strlen($get_vars['search_keyword'])==8) return sprintf('%s%s/%04d/%02d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2),substr($get_vars['search_keyword'],6,2));
|
if(strlen($get_vars['search_keyword'])==8) return sprintf('%s%s/%04d/%02d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2),substr($get_vars['search_keyword'],6,2));
|
||||||
elseif(strlen($get_vars['search_keyword'])==6) return sprintf('%s%s/%04d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2));
|
elseif(strlen($get_vars['search_keyword'])==6) return sprintf('%s%s/%04d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2));
|
||||||
|
|
@ -690,7 +760,13 @@
|
||||||
// rewrite 모듈을 사용하지 않고 인자의 값이 2개 이상이거나 rewrite모듈을 위한 인자로 적당하지 않을 경우
|
// rewrite 모듈을 사용하지 않고 인자의 값이 2개 이상이거나 rewrite모듈을 위한 인자로 적당하지 않을 경우
|
||||||
foreach($get_vars as $key => $val) {
|
foreach($get_vars as $key => $val) {
|
||||||
if(!isset($val)) continue;
|
if(!isset($val)) continue;
|
||||||
$url .= ($url?'&':'').$key.'='.urlencode($val);
|
if(is_array($val) && count($val)) {
|
||||||
|
foreach($val as $k => $v) {
|
||||||
|
$url .= ($url?'&':'').$key.'['.$k.']='.urlencode($v);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$url .= ($url?'&':'').$key.'='.urlencode($val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $path.'?'.htmlspecialchars($url);
|
return $path.'?'.htmlspecialchars($url);
|
||||||
|
|
@ -700,6 +776,10 @@
|
||||||
* @brief 요청이 들어온 URL에서 argument를 제거하여 return
|
* @brief 요청이 들어온 URL에서 argument를 제거하여 return
|
||||||
**/
|
**/
|
||||||
function getRequestUri($ssl_mode = FOLLOW_REQUEST_SSL) {
|
function getRequestUri($ssl_mode = FOLLOW_REQUEST_SSL) {
|
||||||
|
static $url = array();
|
||||||
|
|
||||||
|
if(isset($url[$ssl_mode])) return $url[$ssl_mode];
|
||||||
|
|
||||||
switch($ssl_mode) {
|
switch($ssl_mode) {
|
||||||
case FOLLOW_REQUEST_SSL :
|
case FOLLOW_REQUEST_SSL :
|
||||||
if($_SERVER['HTTPS']=='on') $use_ssl = true;
|
if($_SERVER['HTTPS']=='on') $use_ssl = true;
|
||||||
|
|
@ -713,7 +793,21 @@
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sprintf("%s://%s%s",$use_ssl?'https':'http',$_SERVER['HTTP_HOST'], getScriptPath());
|
$site_module_info = Context::get('site_module_info');
|
||||||
|
$domain = trim($site_module_info->domain);
|
||||||
|
if($domain) {
|
||||||
|
$domain = preg_replace('/^(http|https):\/\//i','', trim($domain));
|
||||||
|
if(substr($domain,-1) != '/') $domain .= '/';
|
||||||
|
} else {
|
||||||
|
$domain = preg_replace('/:'.$_SERVER['SERVER_PORT'].'$/','',$_SERVER['HTTP_HOST']).getScriptPath();
|
||||||
|
}
|
||||||
|
|
||||||
|
$domain = sprintf("%s://%s",$use_ssl?'https':'http',$domain);
|
||||||
|
|
||||||
|
$url_info = parse_url($domain);
|
||||||
|
$url[$ssl_mode] = sprintf("%s://%s%s%s",$url_info['scheme'], $url_info['host'], $_SERVER['SERVER_PORT']!=80?':'.$_SERVER['SERVER_PORT']:'',$url_info['path']);
|
||||||
|
|
||||||
|
return $url[$ssl_mode];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -849,10 +943,29 @@
|
||||||
**/
|
**/
|
||||||
function _addJsFile($file, $optimized, $targetie) {
|
function _addJsFile($file, $optimized, $targetie) {
|
||||||
if(in_array($file, $this->js_files)) return;
|
if(in_array($file, $this->js_files)) return;
|
||||||
//if(!preg_match('/^http:\/\//i',$file)) $file = str_replace(realpath("."), ".", realpath($file));
|
|
||||||
$this->js_files[] = array('file' => $file, 'optimized' => $optimized, 'targetie' => $targetie);
|
$this->js_files[] = array('file' => $file, 'optimized' => $optimized, 'targetie' => $targetie);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief js file을 제거
|
||||||
|
**/
|
||||||
|
function unloadJsFile($file, $optimized = true, $targetie = '') {
|
||||||
|
$oContext = &Context::getInstance();
|
||||||
|
return $oContext->_unloadJsFile($file, $optimized, $targetie);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief js file을 제거
|
||||||
|
**/
|
||||||
|
function _unloadJsFile($file, $optimized, $targetie) {
|
||||||
|
foreach($this->js_files as $key => $val) {
|
||||||
|
if(realpath($val['file'])==realpath($file) && $val['optimized'] == $optimized && $val['targetie'] == $targetie) {
|
||||||
|
unset($this->js_files[$key]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief array_unique와 동작은 동일하나 file 첨자에 대해서만 동작함
|
* @brief array_unique와 동작은 동일하나 file 첨자에 대해서만 동작함
|
||||||
**/
|
**/
|
||||||
|
|
@ -903,6 +1016,26 @@
|
||||||
$this->css_files[] = array('file' => $file, 'optimized' => $optimized, 'media' => $media, 'targetie' => $targetie);
|
$this->css_files[] = array('file' => $file, 'optimized' => $optimized, 'media' => $media, 'targetie' => $targetie);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief css file을 제거
|
||||||
|
**/
|
||||||
|
function unloadCSSFile($file, $optimized = true, $media = 'all', $targetie = '') {
|
||||||
|
$oContext = &Context::getInstance();
|
||||||
|
return $oContext->_unloadCSSFile($file, $optimized, $media, $targetie);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief css file을 제거
|
||||||
|
**/
|
||||||
|
function _unloadCSSFile($file, $optimized, $media, $targetie) {
|
||||||
|
foreach($this->css_files as $key => $val) {
|
||||||
|
if(realpath($val['file'])==realpath($file) && $val['optimized'] == $optimized && $val['media'] == $media && $val['targetie'] == $targetie) {
|
||||||
|
unset($this->css_files[$key]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief CSS file 목록 return
|
* @brief CSS file 목록 return
|
||||||
**/
|
**/
|
||||||
|
|
@ -1095,5 +1228,11 @@
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getFixUrl($url){
|
||||||
|
if(eregi("(http|https):\/\/",$url)) return $url;
|
||||||
|
if(ereg("^/",$url)) return $url;
|
||||||
|
return dirname($_SERVER['PHP_SELF']) . "/" . $url;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
* @brief DB*의 상위 클래스
|
* @brief DB*의 상위 클래스
|
||||||
* @version 0.1
|
* @version 0.1
|
||||||
*
|
*
|
||||||
* 제로보드의 DB 사용은 xml을 이용하여 이루어짐을 원칙으로 한다.
|
* XE의 DB 사용은 xml을 이용하여 이루어짐을 원칙으로 한다.
|
||||||
* xml의 종류에는 query xml, schema xml이 있다.
|
* xml의 종류에는 query xml, schema xml이 있다.
|
||||||
* query xml의 경우 DB::executeQuery() method를 이용하여 xml파일을 php code로 compile한 후에 실행이 된다.
|
* query xml의 경우 DB::executeQuery() method를 이용하여 xml파일을 php code로 compile한 후에 실행이 된다.
|
||||||
* query xml은 고유한 query id를 가지며 생성은 module에서 이루어진다.
|
* query xml은 고유한 query id를 가지며 생성은 module에서 이루어진다.
|
||||||
|
|
@ -307,7 +307,7 @@
|
||||||
break;
|
break;
|
||||||
case 'number' :
|
case 'number' :
|
||||||
case 'numbers' :
|
case 'numbers' :
|
||||||
if(!preg_match('/^[0-9,]+$/is', $val)) return new Object(-1, sprintf($lang->filter->invalid_number, $lang->{$key}?$lang->{$key}:$key));
|
if(!preg_match('/^(-?)[0-9,]+$/is', $val)) return new Object(-1, sprintf($lang->filter->invalid_number, $lang->{$key}?$lang->{$key}:$key));
|
||||||
break;
|
break;
|
||||||
case 'alpha' :
|
case 'alpha' :
|
||||||
if(!preg_match('/^[a-z]+$/is', $val)) return new Object(-1, sprintf($lang->filter->invalid_alpha, $lang->{$key}?$lang->{$key}:$key));
|
if(!preg_match('/^[a-z]+$/is', $val)) return new Object(-1, sprintf($lang->filter->invalid_alpha, $lang->{$key}?$lang->{$key}:$key));
|
||||||
|
|
@ -373,43 +373,52 @@
|
||||||
function getConditionPart($name, $value, $operation) {
|
function getConditionPart($name, $value, $operation) {
|
||||||
switch($operation) {
|
switch($operation) {
|
||||||
case 'equal' :
|
case 'equal' :
|
||||||
|
case 'more' :
|
||||||
|
case 'excess' :
|
||||||
|
case 'less' :
|
||||||
|
case 'below' :
|
||||||
|
case 'like_tail' :
|
||||||
|
case 'like_prefix' :
|
||||||
|
case 'like' :
|
||||||
|
case 'in' :
|
||||||
|
case 'notequal' :
|
||||||
|
// 변수가 세팅되지 않고, 문자열이나 숫자형이 아니면 리턴
|
||||||
if(!isset($value)) return;
|
if(!isset($value)) return;
|
||||||
|
if($value === '') return;
|
||||||
|
if(!in_array(gettype($value), array('string', 'integer'))) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch($operation) {
|
||||||
|
case 'equal' :
|
||||||
return $name.' = '.$value;
|
return $name.' = '.$value;
|
||||||
break;
|
break;
|
||||||
case 'more' :
|
case 'more' :
|
||||||
if(!isset($value)) return;
|
|
||||||
return $name.' >= '.$value;
|
return $name.' >= '.$value;
|
||||||
break;
|
break;
|
||||||
case 'excess' :
|
case 'excess' :
|
||||||
if(!isset($value)) return;
|
|
||||||
return $name.' > '.$value;
|
return $name.' > '.$value;
|
||||||
break;
|
break;
|
||||||
case 'less' :
|
case 'less' :
|
||||||
if(!isset($value)) return;
|
|
||||||
return $name.' <= '.$value;
|
return $name.' <= '.$value;
|
||||||
break;
|
break;
|
||||||
case 'below' :
|
case 'below' :
|
||||||
if(!isset($value)) return;
|
|
||||||
return $name.' < '.$value;
|
return $name.' < '.$value;
|
||||||
break;
|
break;
|
||||||
case 'like_tail' :
|
case 'like_tail' :
|
||||||
case 'like_prefix' :
|
case 'like_prefix' :
|
||||||
case 'like' :
|
case 'like' :
|
||||||
if(!isset($value)) return;
|
|
||||||
return $name.' like '.$value;
|
return $name.' like '.$value;
|
||||||
break;
|
break;
|
||||||
case 'in' :
|
case 'in' :
|
||||||
if(!isset($value)) return;
|
|
||||||
return $name.' in ('.$value.')';
|
return $name.' in ('.$value.')';
|
||||||
break;
|
break;
|
||||||
case 'notequal' :
|
case 'notequal' :
|
||||||
if(!isset($value)) return;
|
|
||||||
return $name.' <> '.$value;
|
return $name.' <> '.$value;
|
||||||
break;
|
break;
|
||||||
case 'notnull' :
|
case 'notnull' :
|
||||||
return $name.' is not null';
|
return $name.' is not null';
|
||||||
break;
|
break;
|
||||||
case 'null' :
|
case 'null' :
|
||||||
return $name.' is null';
|
return $name.' is null';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
var $password = NULL; ///< password
|
var $password = NULL; ///< password
|
||||||
var $database = NULL; ///< database
|
var $database = NULL; ///< database
|
||||||
var $port = 33000; ///< db server port
|
var $port = 33000; ///< db server port
|
||||||
var $prefix = 'xe'; ///< 제로보드에서 사용할 테이블들의 prefix (한 DB에서 여러개의 제로보드 설치 가능)
|
var $prefix = 'xe'; ///< XE에서 사용할 테이블들의 prefix (한 DB에서 여러개의 XE 설치 가능)
|
||||||
var $cutlen = 12000; ///< 큐브리드의 최대 상수 크기(스트링이 이보다 크면 '...'+'...' 방식을 사용해야 한다
|
var $cutlen = 12000; ///< 큐브리드의 최대 상수 크기(스트링이 이보다 크면 '...'+'...' 방식을 사용해야 한다
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -248,6 +248,15 @@
|
||||||
$this->_query($query);
|
$this->_query($query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 특정 테이블의 특정 인덱스 삭제
|
||||||
|
**/
|
||||||
|
function dropIndex($table_name, $index_name, $is_unique = false) {
|
||||||
|
$query = sprintf("drop %s index %s on %s%s", $is_unique?'unique':'', $index_name, $this->prefix, $table_name);
|
||||||
|
$this->_query($query);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 특정 테이블의 index 정보를 return
|
* @brief 특정 테이블의 index 정보를 return
|
||||||
**/
|
**/
|
||||||
|
|
@ -377,11 +386,13 @@
|
||||||
function getCondition($output) {
|
function getCondition($output) {
|
||||||
if(!$output->conditions) return;
|
if(!$output->conditions) return;
|
||||||
|
|
||||||
$condition = "";
|
$condition = '';
|
||||||
foreach($output->conditions as $key => $val) {
|
foreach($output->conditions as $val) {
|
||||||
$sub_condition = '';
|
$sub_condition = '';
|
||||||
foreach($val['condition'] as $k =>$v) {
|
foreach($val['condition'] as $v) {
|
||||||
if(!isset($v['value']) || $v['value'] === '') continue;
|
if(!isset($v['value'])) continue;
|
||||||
|
if($v['value'] === '') continue;
|
||||||
|
if(!in_array(gettype($v['value']), array('string', 'integer'))) continue;
|
||||||
|
|
||||||
$name = $v['column'];
|
$name = $v['column'];
|
||||||
$operation = $v['operation'];
|
$operation = $v['operation'];
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
var $userid = NULL; ///< user id
|
var $userid = NULL; ///< user id
|
||||||
var $password = NULL; ///< password
|
var $password = NULL; ///< password
|
||||||
var $database = NULL; ///< database
|
var $database = NULL; ///< database
|
||||||
var $prefix = 'xe'; ///< 제로보드에서 사용할 테이블들의 prefix (한 DB에서 여러개의 제로보드 설치 가능)
|
var $prefix = 'xe'; ///< XE에서 사용할 테이블들의 prefix (한 DB에서 여러개의 XE 설치 가능)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief firebird에서 사용될 column type
|
* @brief firebird에서 사용될 column type
|
||||||
|
|
@ -70,13 +70,13 @@
|
||||||
**/
|
**/
|
||||||
function _connect() {
|
function _connect() {
|
||||||
// db 정보가 없으면 무시
|
// db 정보가 없으면 무시
|
||||||
if(!$this->hostname || !$this->userid || !$this->password || !$this->database) return;
|
if(!$this->hostname || !$this->port || !$this->userid || !$this->password || !$this->database) return;
|
||||||
|
|
||||||
//if(strpos($this->hostname, ':')===false && $this->port) $this->hostname .= ':'.$this->port;
|
//if(strpos($this->hostname, ':')===false && $this->port) $this->hostname .= ':'.$this->port;
|
||||||
|
|
||||||
// 접속시도
|
// 접속시도
|
||||||
|
|
||||||
$host = $this->hostname.":".$this->database;
|
$host = $this->hostname."/".$this->port.":".$this->database;
|
||||||
|
|
||||||
$this->fd = @ibase_connect($host, $this->userid, $this->password);
|
$this->fd = @ibase_connect($host, $this->userid, $this->password);
|
||||||
if(ibase_errmsg()) {
|
if(ibase_errmsg()) {
|
||||||
|
|
@ -102,7 +102,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if($ver < "2.0") {
|
if($ver < "2.0") {
|
||||||
$this->setError(-1, "Zeroboard XE cannot be installed under the version of firebird 2.0. Current firebird version is ".$ver);
|
$this->setError(-1, "XE cannot be installed under the version of firebird 2.0. Current firebird version is ".$ver);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -418,6 +418,15 @@
|
||||||
@ibase_commit($this->fd);
|
@ibase_commit($this->fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 특정 테이블의 특정 인덱스 삭제
|
||||||
|
**/
|
||||||
|
function dropIndex($table_name, $index_name, $is_unique = false) {
|
||||||
|
$query = sprintf('DROP INDEX "%s" ON "%s%s"', $index_name, $this->prefix, $table_name);
|
||||||
|
$this->_query($query);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 특정 테이블의 index 정보를 return
|
* @brief 특정 테이블의 index 정보를 return
|
||||||
**/
|
**/
|
||||||
|
|
@ -567,7 +576,7 @@
|
||||||
// Firebird에서 auto increment는 generator를 만들어 insert 발생시 트리거를 실행시켜
|
// Firebird에서 auto increment는 generator를 만들어 insert 발생시 트리거를 실행시켜
|
||||||
// generator의 값을 증가시키고 그값을 테이블에 넣어주는 방식을 사용함.
|
// generator의 값을 증가시키고 그값을 테이블에 넣어주는 방식을 사용함.
|
||||||
// 아래 트리거가 auto increment 역할을 하지만 쿼리로 트리거 등록이 되지 않아 주석처리 하였음.
|
// 아래 트리거가 auto increment 역할을 하지만 쿼리로 트리거 등록이 되지 않아 주석처리 하였음.
|
||||||
// php 함수에서 generator 값을 증가시켜 주는 함수가 있어 제로보드에서는 굳이
|
// php 함수에서 generator 값을 증가시켜 주는 함수가 있어 XE에서는 굳이
|
||||||
// auto increment를 사용 할 필요가 없어보임.
|
// auto increment를 사용 할 필요가 없어보임.
|
||||||
/*
|
/*
|
||||||
$schema = 'SET TERM ^ ; ';
|
$schema = 'SET TERM ^ ; ';
|
||||||
|
|
@ -589,10 +598,12 @@
|
||||||
function getCondition($output) {
|
function getCondition($output) {
|
||||||
if(!$output->conditions) return;
|
if(!$output->conditions) return;
|
||||||
|
|
||||||
foreach($output->conditions as $key => $val) {
|
foreach($output->conditions as $val) {
|
||||||
$sub_condition = '';
|
$sub_condition = '';
|
||||||
foreach($val['condition'] as $k =>$v) {
|
foreach($val['condition'] as $v) {
|
||||||
if(!isset($v['value']) || $v['value'] === '') continue;
|
if(!isset($v['value'])) continue;
|
||||||
|
if($v['value'] === '') continue;
|
||||||
|
if(!in_array(gettype($v['value']), array('string', 'integer'))) continue;
|
||||||
|
|
||||||
$name = $v['column'];
|
$name = $v['column'];
|
||||||
$operation = $v['operation'];
|
$operation = $v['operation'];
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
var $userid = NULL; ///< user id
|
var $userid = NULL; ///< user id
|
||||||
var $password = NULL; ///< password
|
var $password = NULL; ///< password
|
||||||
var $database = NULL; ///< database
|
var $database = NULL; ///< database
|
||||||
var $prefix = 'xe'; ///< 제로보드에서 사용할 테이블들의 prefix (한 DB에서 여러개의 제로보드 설치 가능)
|
var $prefix = 'xe'; ///< XE에서 사용할 테이블들의 prefix (한 DB에서 여러개의 XE 설치 가능)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief mysql에서 사용될 column type
|
* @brief mysql에서 사용될 column type
|
||||||
|
|
@ -83,7 +83,7 @@
|
||||||
|
|
||||||
// 버전 확인후 4.1 이하면 오류 표시
|
// 버전 확인후 4.1 이하면 오류 표시
|
||||||
if(mysql_get_server_info($this->fd)<"4.1") {
|
if(mysql_get_server_info($this->fd)<"4.1") {
|
||||||
$this->setError(-1, "Zeroboard XE cannot be installed under the version of mysql 4.1. Current mysql version is ".mysql_get_server_info());
|
$this->setError(-1, "XE cannot be installed under the version of mysql 4.1. Current mysql version is ".mysql_get_server_info());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -260,6 +260,15 @@
|
||||||
$this->_query($query);
|
$this->_query($query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 특정 테이블의 특정 인덱스 삭제
|
||||||
|
**/
|
||||||
|
function dropIndex($table_name, $index_name, $is_unique = false) {
|
||||||
|
$query = sprintf("alter table %s%s drop index %s;", $this->prefix, $table_name, $index_name);
|
||||||
|
$this->_query($query);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 특정 테이블의 index 정보를 return
|
* @brief 특정 테이블의 index 정보를 return
|
||||||
**/
|
**/
|
||||||
|
|
@ -366,10 +375,12 @@
|
||||||
function getCondition($output) {
|
function getCondition($output) {
|
||||||
if(!$output->conditions) return;
|
if(!$output->conditions) return;
|
||||||
|
|
||||||
foreach($output->conditions as $key => $val) {
|
foreach($output->conditions as $val) {
|
||||||
$sub_condition = '';
|
$sub_condition = '';
|
||||||
foreach($val['condition'] as $k =>$v) {
|
foreach($val['condition'] as $v) {
|
||||||
if(!isset($v['value']) || $v['value'] === '') continue;
|
if(!isset($v['value'])) continue;
|
||||||
|
if($v['value'] === '') continue;
|
||||||
|
if(!in_array(gettype($v['value']), array('string', 'integer'))) continue;
|
||||||
|
|
||||||
$name = $v['column'];
|
$name = $v['column'];
|
||||||
$operation = $v['operation'];
|
$operation = $v['operation'];
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
var $userid = NULL; ///< user id
|
var $userid = NULL; ///< user id
|
||||||
var $password = NULL; ///< password
|
var $password = NULL; ///< password
|
||||||
var $database = NULL; ///< database
|
var $database = NULL; ///< database
|
||||||
var $prefix = 'xe'; ///< 제로보드에서 사용할 테이블들의 prefix (한 DB에서 여러개의 제로보드 설치 가능)
|
var $prefix = 'xe'; ///< XE에서 사용할 테이블들의 prefix (한 DB에서 여러개의 XE설치 가능)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief mysql에서 사용될 column type
|
* @brief mysql에서 사용될 column type
|
||||||
|
|
@ -83,7 +83,7 @@
|
||||||
|
|
||||||
// 버전 확인후 4.1 이하면 오류 표시
|
// 버전 확인후 4.1 이하면 오류 표시
|
||||||
if(mysql_get_server_info($this->fd)<"4.1") {
|
if(mysql_get_server_info($this->fd)<"4.1") {
|
||||||
$this->setError(-1, "zeroboard xe can not install under mysql 4.1. Current mysql version is ".mysql_get_server_info());
|
$this->setError(-1, "XE can not install under mysql 4.1. Current mysql version is ".mysql_get_server_info());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -270,6 +270,14 @@
|
||||||
$this->_query($query);
|
$this->_query($query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 특정 테이블의 특정 인덱스 삭제
|
||||||
|
**/
|
||||||
|
function dropIndex($table_name, $index_name, $is_unique = false) {
|
||||||
|
$query = sprintf("alter table %s%s drop index %s;", $this->prefix, $table_name, $index_name);
|
||||||
|
$this->_query($query);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 특정 테이블의 index 정보를 return
|
* @brief 특정 테이블의 index 정보를 return
|
||||||
**/
|
**/
|
||||||
|
|
@ -376,10 +384,12 @@
|
||||||
function getCondition($output) {
|
function getCondition($output) {
|
||||||
if(!$output->conditions) return;
|
if(!$output->conditions) return;
|
||||||
|
|
||||||
foreach($output->conditions as $key => $val) {
|
foreach($output->conditions as $val) {
|
||||||
$sub_condition = '';
|
$sub_condition = '';
|
||||||
foreach($val['condition'] as $k =>$v) {
|
foreach($val['condition'] as $v) {
|
||||||
if(!isset($v['value']) || $v['value'] === '') continue;
|
if(!isset($v['value'])) continue;
|
||||||
|
if($v['value'] === '') continue;
|
||||||
|
if(!in_array(gettype($v['value']), array('string', 'integer'))) continue;
|
||||||
|
|
||||||
$name = $v['column'];
|
$name = $v['column'];
|
||||||
$operation = $v['operation'];
|
$operation = $v['operation'];
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
var $userid = NULL; ///< user id
|
var $userid = NULL; ///< user id
|
||||||
var $password = NULL; ///< password
|
var $password = NULL; ///< password
|
||||||
var $database = NULL; ///< database
|
var $database = NULL; ///< database
|
||||||
var $prefix = 'xe'; ///< 제로보드에서 사용할 테이블들의 prefix (한 DB에서 여러개의 제로보드 설치 가능)
|
var $prefix = 'xe'; ///< XE에서 사용할 테이블들의 prefix (한 DB에서 여러개의 XE설치 가능)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief postgresql에서 사용될 column type
|
* @brief postgresql에서 사용될 column type
|
||||||
|
|
@ -249,6 +249,20 @@
|
||||||
$this->_query($query);
|
$this->_query($query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 특정 테이블의 특정 인덱스 삭제
|
||||||
|
**/
|
||||||
|
function dropIndex($table_name, $index_name, $is_unique = false) {
|
||||||
|
if(strpos($table_name,$this->prefix)===false) $table_name = $this->prefix.$table_name;
|
||||||
|
|
||||||
|
// index_name의 경우 앞에 table이름을 붙여줘서 중복을 피함
|
||||||
|
$index_name = $table_name.$index_name;
|
||||||
|
|
||||||
|
$query = sprintf("drop index %s", $index_name);
|
||||||
|
$this->_query($query);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 특정 테이블의 index 정보를 return
|
* @brief 특정 테이블의 index 정보를 return
|
||||||
**/
|
**/
|
||||||
|
|
@ -368,10 +382,12 @@
|
||||||
function getCondition($output) {
|
function getCondition($output) {
|
||||||
if(!$output->conditions) return;
|
if(!$output->conditions) return;
|
||||||
|
|
||||||
foreach($output->conditions as $key => $val) {
|
foreach($output->conditions as $val) {
|
||||||
$sub_condition = '';
|
$sub_condition = '';
|
||||||
foreach($val['condition'] as $k =>$v) {
|
foreach($val['condition'] as $v) {
|
||||||
if(!isset($v['value']) || $v['value'] === '') continue;
|
if(!isset($v['value'])) continue;
|
||||||
|
if($v['value'] === '') continue;
|
||||||
|
if(!in_array(gettype($v['value']), array('string', 'integer'))) continue;
|
||||||
|
|
||||||
$name = $v['column'];
|
$name = $v['column'];
|
||||||
$operation = $v['operation'];
|
$operation = $v['operation'];
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
* DB를 이용하기 위한 정보
|
* DB를 이용하기 위한 정보
|
||||||
**/
|
**/
|
||||||
var $database = NULL; ///< database
|
var $database = NULL; ///< database
|
||||||
var $prefix = 'xe'; ///< 제로보드에서 사용할 테이블들의 prefix (한 DB에서 여러개의 제로보드 설치 가능)
|
var $prefix = 'xe'; ///< XE에서 사용할 테이블들의 prefix (한 DB에서 여러개의 XE설치 가능)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief sqlite 에서 사용될 column type
|
* @brief sqlite 에서 사용될 column type
|
||||||
|
|
@ -242,6 +242,15 @@
|
||||||
return $this->_query($query);
|
return $this->_query($query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 특정 테이블의 특정 인덱스 삭제
|
||||||
|
**/
|
||||||
|
function dropIndex($table_name, $index_name, $is_unique = false) {
|
||||||
|
$key_name = sprintf('%s%s_%s', $this->prefix, $table_name, $index_name);
|
||||||
|
$query = sprintf("DROP INDEX %s", $this->prefix, $table_name, $key_name);
|
||||||
|
$this->_query($query);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 특정 테이블의 index 정보를 return
|
* @brief 특정 테이블의 index 정보를 return
|
||||||
**/
|
**/
|
||||||
|
|
@ -349,10 +358,12 @@
|
||||||
function getCondition($output) {
|
function getCondition($output) {
|
||||||
if(!$output->conditions) return;
|
if(!$output->conditions) return;
|
||||||
|
|
||||||
foreach($output->conditions as $key => $val) {
|
foreach($output->conditions as $val) {
|
||||||
$sub_condition = '';
|
$sub_condition = '';
|
||||||
foreach($val['condition'] as $k =>$v) {
|
foreach($val['condition'] as $v) {
|
||||||
if(!isset($v['value']) || $v['value'] === '') continue;
|
if(!isset($v['value'])) continue;
|
||||||
|
if($v['value'] === '') continue;
|
||||||
|
if(!in_array(gettype($v['value']), array('string', 'integer'))) continue;
|
||||||
|
|
||||||
$name = $v['column'];
|
$name = $v['column'];
|
||||||
$operation = $v['operation'];
|
$operation = $v['operation'];
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
* DB를 이용하기 위한 정보
|
* DB를 이용하기 위한 정보
|
||||||
**/
|
**/
|
||||||
var $database = NULL; ///< database
|
var $database = NULL; ///< database
|
||||||
var $prefix = 'xe'; ///< 제로보드에서 사용할 테이블들의 prefix (한 DB에서 여러개의 제로보드 설치 가능)
|
var $prefix = 'xe'; ///< XE에서 사용할 테이블들의 prefix (한 DB에서 여러개의 XE 설치 가능)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PDO 사용시 필요한 변수들
|
* PDO 사용시 필요한 변수들
|
||||||
|
|
@ -265,6 +265,15 @@
|
||||||
$this->_execute();
|
$this->_execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 특정 테이블의 특정 인덱스 삭제
|
||||||
|
**/
|
||||||
|
function dropIndex($table_name, $index_name, $is_unique = false) {
|
||||||
|
$key_name = sprintf('%s%s_%s', $this->prefix, $table_name, $index_name);
|
||||||
|
$query = sprintf("DROP INDEX %s", $this->prefix, $table_name, $key_name);
|
||||||
|
$this->_query($query);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 특정 테이블의 index 정보를 return
|
* @brief 특정 테이블의 index 정보를 return
|
||||||
**/
|
**/
|
||||||
|
|
@ -378,10 +387,12 @@
|
||||||
function getCondition($output) {
|
function getCondition($output) {
|
||||||
if(!$output->conditions) return;
|
if(!$output->conditions) return;
|
||||||
|
|
||||||
foreach($output->conditions as $key => $val) {
|
foreach($output->conditions as $val) {
|
||||||
$sub_condition = '';
|
$sub_condition = '';
|
||||||
foreach($val['condition'] as $k =>$v) {
|
foreach($val['condition'] as $v) {
|
||||||
if(!isset($v['value']) || $v['value'] === '') continue;
|
if(!isset($v['value'])) continue;
|
||||||
|
if($v['value'] === '') continue;
|
||||||
|
if(!in_array(gettype($v['value']), array('string', 'integer'))) continue;
|
||||||
|
|
||||||
$name = $v['column'];
|
$name = $v['column'];
|
||||||
$operation = $v['operation'];
|
$operation = $v['operation'];
|
||||||
|
|
|
||||||
|
|
@ -26,13 +26,13 @@
|
||||||
|
|
||||||
// header 출력
|
// header 출력
|
||||||
$this->_printHeader();
|
$this->_printHeader();
|
||||||
|
|
||||||
// request method에 따른 처리
|
// request method에 따른 처리
|
||||||
if(Context::getRequestMethod() == 'XMLRPC') $content = $this->_toXmlDoc($oModule);
|
if(Context::getRequestMethod() == 'XMLRPC') $content = $this->_toXmlDoc($oModule);
|
||||||
|
else if(Context::getRequestMethod() == 'JSON') $content = $this->_toJSON($oModule);
|
||||||
else $content = $this->_toHTMLDoc($oModule);
|
else $content = $this->_toHTMLDoc($oModule);
|
||||||
|
|
||||||
// 요청방식에 따라 출력을 별도로
|
// 요청방식에 따라 출력을 별도로
|
||||||
if(Context::getResponseMethod()!="XMLRPC") {
|
if(Context::getResponseMethod()=="HTML") {
|
||||||
|
|
||||||
Context::set('content', $content);
|
Context::set('content', $content);
|
||||||
|
|
||||||
|
|
@ -93,6 +93,18 @@
|
||||||
else print $content;
|
else print $content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief RequestMethod가 JSON이면 JSON 데이터로 컨텐츠 생성
|
||||||
|
**/
|
||||||
|
function _toJSON(&$oModule) {
|
||||||
|
$variables = $oModule->getVariables();
|
||||||
|
//if(function_exists('json_encode')) return json_encode($variables);
|
||||||
|
//else return json_encode2($variables);
|
||||||
|
$json = str_replace("\r\n",'\n',json_encode2($variables));
|
||||||
|
return $json;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief RequestMethod가 XML이면 XML 데이터로 컨텐츠 생성
|
* @brief RequestMethod가 XML이면 XML 데이터로 컨텐츠 생성
|
||||||
**/
|
**/
|
||||||
|
|
@ -209,7 +221,8 @@
|
||||||
***/
|
***/
|
||||||
function _printHeader() {
|
function _printHeader() {
|
||||||
if($this->gz_enabled) header("Content-Encoding: gzip");
|
if($this->gz_enabled) header("Content-Encoding: gzip");
|
||||||
if(Context::getResponseMethod() != 'HTML') return $this->_printXMLHeader();
|
if(Context::getResponseMethod() == 'JSON') return $this->_printJSONHeader();
|
||||||
|
else if(Context::getResponseMethod() != 'HTML') return $this->_printXMLHeader();
|
||||||
else return $this->_printHTMLHeader();
|
else return $this->_printHTMLHeader();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -236,5 +249,17 @@
|
||||||
header("Cache-Control: post-check=0, pre-check=0", false);
|
header("Cache-Control: post-check=0, pre-check=0", false);
|
||||||
header("Pragma: no-cache");
|
header("Pragma: no-cache");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief JSON header 출력 (utf8 고정)
|
||||||
|
**/
|
||||||
|
function _printJSONHeader() {
|
||||||
|
header("Content-Type: text/html; charset=UTF-8");
|
||||||
|
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
|
||||||
|
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
|
||||||
|
header("Cache-Control: no-store, no-cache, must-revalidate");
|
||||||
|
header("Cache-Control: post-check=0, pre-check=0", false);
|
||||||
|
header("Pragma: no-cache");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,9 @@
|
||||||
// ModuleModel 객체 생성
|
// ModuleModel 객체 생성
|
||||||
$oModuleModel = &getModel('module');
|
$oModuleModel = &getModel('module');
|
||||||
|
|
||||||
|
$site_module_info = Context::get('site_module_info');
|
||||||
|
$site_srl = $site_module_info->site_srl;
|
||||||
|
|
||||||
// document_srl만 있을 경우 document_srl로 모듈과 모듈 정보를 구함
|
// document_srl만 있을 경우 document_srl로 모듈과 모듈 정보를 구함
|
||||||
if($this->document_srl && !$this->mid && !$this->module_srl) {
|
if($this->document_srl && !$this->mid && !$this->module_srl) {
|
||||||
$module_info = $oModuleModel->getModuleInfoByDocumentSrl($this->document_srl);
|
$module_info = $oModuleModel->getModuleInfoByDocumentSrl($this->document_srl);
|
||||||
|
|
@ -81,10 +84,18 @@
|
||||||
|
|
||||||
// 아직 모듈을 못 찾았고 $mid값이 있으면 $mid로 모듈을 구함
|
// 아직 모듈을 못 찾았고 $mid값이 있으면 $mid로 모듈을 구함
|
||||||
if(!$module_info && $this->mid) {
|
if(!$module_info && $this->mid) {
|
||||||
$module_info = $oModuleModel->getModuleInfoByMid($this->mid);
|
$module_info = $oModuleModel->getModuleInfoByMid($this->mid, $site_srl);
|
||||||
if($this->module && $module_info->module != $this->module) unset($module_info);
|
if($this->module && $module_info->module != $this->module) unset($module_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 모듈정보와 사이트 모듈정보가 다르면(다른 사이트이면) 페이지 리다이렉트
|
||||||
|
if($module_info && $site_module_info && $module_info->site_srl != $site_module_info->site_srl) {
|
||||||
|
$site_info = $oModuleModel->getSiteInfo($module_info->site_srl);
|
||||||
|
$redirect_url = getSiteUrl($site_info->domain, 'mid',Context::get('mid'),'document_srl',Context::get('document_srl'),'module_srl',Context::get('module_srl'));
|
||||||
|
header("location:".$redirect_url);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// 모듈을 여전히(;;) 못 찾고 $module_srl이 있으면 해당 모듈을 구함
|
// 모듈을 여전히(;;) 못 찾고 $module_srl이 있으면 해당 모듈을 구함
|
||||||
if(!$module_info && $this->module_srl) {
|
if(!$module_info && $this->module_srl) {
|
||||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($this->module_srl);
|
$module_info = $oModuleModel->getModuleInfoByModuleSrl($this->module_srl);
|
||||||
|
|
@ -92,7 +103,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// 역시 모듈을 못 찾았고 $module이 없다면 기본 모듈을 찾아봄
|
// 역시 모듈을 못 찾았고 $module이 없다면 기본 모듈을 찾아봄
|
||||||
if(!$module_info && !$this->module) $module_info = $oModuleModel->getModuleInfoByMid();
|
if(!$module_info && !$this->module) $module_info = $site_module_info;
|
||||||
|
|
||||||
|
if($module_info && $site_module_info && $site_module_info->site_srl != $module_info->site_srl) {
|
||||||
|
unset($site_module_info);
|
||||||
|
$site_module_info = $oModuleModel->getSiteInfo($module_info->site_srl);
|
||||||
|
}
|
||||||
|
Context::set('site_module_info', $site_module_info);
|
||||||
|
|
||||||
// 모듈 정보가 찾아졌을 경우 모듈 정보에서 기본 변수들을 구함, 모듈 정보에서 module 이름을 구해움
|
// 모듈 정보가 찾아졌을 경우 모듈 정보에서 기본 변수들을 구함, 모듈 정보에서 module 이름을 구해움
|
||||||
if($module_info) {
|
if($module_info) {
|
||||||
|
|
@ -117,7 +134,12 @@
|
||||||
|
|
||||||
// 실제 동작을 하기 전에 trigger 호출
|
// 실제 동작을 하기 전에 trigger 호출
|
||||||
$output = ModuleHandler::triggerCall('display', 'before', $content);
|
$output = ModuleHandler::triggerCall('display', 'before', $content);
|
||||||
if(!$output->toBool()) die($output->getMessage());
|
if(!$output->toBool()) {
|
||||||
|
$this->error = $output->getMessage();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -164,6 +186,7 @@
|
||||||
$oModule->setAct($this->act);
|
$oModule->setAct($this->act);
|
||||||
|
|
||||||
// 모듈 정보 세팅
|
// 모듈 정보 세팅
|
||||||
|
$this->module_info->module_type = $type;
|
||||||
$oModule->setModuleInfo($this->module_info, $xml_info);
|
$oModule->setModuleInfo($this->module_info, $xml_info);
|
||||||
|
|
||||||
// 모듈을 수행하고 결과가 false이면 message 모듈 호출 지정
|
// 모듈을 수행하고 결과가 false이면 message 모듈 호출 지정
|
||||||
|
|
@ -181,8 +204,13 @@
|
||||||
$this->error = 'msg_module_is_not_exists';
|
$this->error = 'msg_module_is_not_exists';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// install 모듈이 아닐 때 DB 접속에 문제가 있으면 오류
|
||||||
|
if($this->module != 'install' && $GLOBALS['__DB__'][Context::getDBType()]->is_connected == false) {
|
||||||
|
$this->error = 'msg_dbconnect_failed';
|
||||||
|
}
|
||||||
|
|
||||||
// XMLRPC call 이 아니면 message view 객체 이용하도록
|
// XMLRPC call 이 아니면 message view 객체 이용하도록
|
||||||
if(Context::getRequestMethod() != 'XMLRPC') {
|
if(Context::getRequestMethod() != 'XMLRPC' && Context::getRequestMethod() != 'JSON') {
|
||||||
// 에러가 발생하였을시 처리
|
// 에러가 발생하였을시 처리
|
||||||
if($this->error) {
|
if($this->error) {
|
||||||
// message 모듈 객체를 생성해서 컨텐츠 생성
|
// message 모듈 객체를 생성해서 컨텐츠 생성
|
||||||
|
|
@ -245,9 +273,6 @@
|
||||||
// 컨텐츠 출력
|
// 컨텐츠 출력
|
||||||
$oDisplayHandler = new DisplayHandler();
|
$oDisplayHandler = new DisplayHandler();
|
||||||
$oDisplayHandler->printContent($oModule);
|
$oDisplayHandler->printContent($oModule);
|
||||||
|
|
||||||
// DB 및 기타 자원의 종결 처리
|
|
||||||
Context::close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -302,6 +327,10 @@
|
||||||
$class_file = sprintf('%s%s%s.%s.php', _XE_PATH_, $class_path, $module, $type);
|
$class_file = sprintf('%s%s%s.%s.php', _XE_PATH_, $class_path, $module, $type);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'api' :
|
||||||
|
$instance_name = sprintf("%s%s",$module,"API");
|
||||||
|
$class_file = sprintf('%s%s%s.api.php', _XE_PATH_, $class_path, $module);
|
||||||
|
break;
|
||||||
case 'class' :
|
case 'class' :
|
||||||
$instance_name = $module;
|
$instance_name = $module;
|
||||||
$class_file = sprintf('%s%s%s.class.php', _XE_PATH_, $class_path, $module);
|
$class_file = sprintf('%s%s%s.class.php', _XE_PATH_, $class_path, $module);
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,8 @@
|
||||||
$user_group = $logged_info->group_list;
|
$user_group = $logged_info->group_list;
|
||||||
$grant->is_admin = false;
|
$grant->is_admin = false;
|
||||||
|
|
||||||
|
$oModuleModel = &getModel('module');
|
||||||
|
|
||||||
// 로그인되어 있다면 관리자 여부를 확인
|
// 로그인되어 있다면 관리자 여부를 확인
|
||||||
if($is_logged) {
|
if($is_logged) {
|
||||||
/* 로그인 사용자에 대한 관리자 여부는 다양한 방법으로 체크가 됨 */
|
/* 로그인 사용자에 대한 관리자 여부는 다양한 방법으로 체크가 됨 */
|
||||||
|
|
@ -93,11 +95,16 @@
|
||||||
if($logged_info->is_admin == 'Y') {
|
if($logged_info->is_admin == 'Y') {
|
||||||
$grant->is_admin = true;
|
$grant->is_admin = true;
|
||||||
|
|
||||||
// 2. 최고 관리자는 아니지만 모듈 object가 있고 admin_id 컬럼에 로그인 사용자의 아이디가 있을 경우
|
// 2. 사이트 관리자일 경우 사이트 관리 권한을 줌
|
||||||
|
} elseif($oModuleModel->isSiteAdmin()) {
|
||||||
|
$grant->is_admin = true;
|
||||||
|
|
||||||
|
|
||||||
|
// 3. 최고 관리자는 아니지만 모듈 object가 있고 admin_id 컬럼에 로그인 사용자의 아이디가 있을 경우
|
||||||
} elseif($this->module_info->admin_id) {
|
} elseif($this->module_info->admin_id) {
|
||||||
if(is_array($this->module_info->admin_id) && in_array($user_id, $this->module_info->admin_id)) $grant->is_admin = true;
|
if(is_array($this->module_info->admin_id) && in_array($user_id, $this->module_info->admin_id)) $grant->is_admin = true;
|
||||||
|
|
||||||
// 4. 1/2번이 아닐 경우 그룹을 체크하고 직접 모듈에 요청을 하여 체크를 함. (모듈.class.php에 정의)
|
// 4. 1/2/3번이 아닐 경우 그룹을 체크하고 직접 모듈에 요청을 하여 체크를 함. (모듈.class.php에 정의)
|
||||||
} else {
|
} else {
|
||||||
$manager_group = $this->module_info->grants['manager'];
|
$manager_group = $this->module_info->grants['manager'];
|
||||||
if(count($user_group) && count($manager_group)) {
|
if(count($user_group) && count($manager_group)) {
|
||||||
|
|
@ -123,7 +130,7 @@
|
||||||
$title = $grant_item->title;
|
$title = $grant_item->title;
|
||||||
$default = $grant_item->default;
|
$default = $grant_item->default;
|
||||||
|
|
||||||
// 관리자이면 모든 권한에 대해 true 설정
|
// 최고 관리자이면 모든 권한에 대해 true 설정
|
||||||
if($grant->is_admin) {
|
if($grant->is_admin) {
|
||||||
$grant->{$grant_name} = true;
|
$grant->{$grant_name} = true;
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -153,7 +160,7 @@
|
||||||
if($is_logged) $grant->{$grant_name} = true;
|
if($is_logged) $grant->{$grant_name} = true;
|
||||||
break;
|
break;
|
||||||
case 'root' :
|
case 'root' :
|
||||||
if($grant->is_admin) $grant->{$grant_name} = true;
|
if($logged_info->is_admin == 'Y') $grant->{$grant_name} = true;
|
||||||
break;
|
break;
|
||||||
default :
|
default :
|
||||||
$grant->{$grant_name} = true;
|
$grant->{$grant_name} = true;
|
||||||
|
|
@ -172,11 +179,12 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// act값에 admin이 들어 있는데 관리자가 아닌 경우 오류 표시
|
// act값에 admin이 들어 있는데 관리자가 아닌 경우 해당 모듈의 관리자 체크
|
||||||
if(substr_count($this->act, 'Admin')) {
|
if(substr_count($this->act, 'Admin')) {
|
||||||
// 로그인 되어 있지 않다면 무조건 금지
|
|
||||||
if(!$is_logged) $this->setAct("dispMemberLoginForm");
|
if(!$is_logged) $this->setAct("dispMemberLoginForm");
|
||||||
elseif(!$grant->is_admin) $this->stop('msg_not_permitted_act');
|
else if($logged_info->is_admin != 'Y' && (!method_exists($this, 'checkAdminActionGrant') || !$this->checkAdminActionGrant())) {
|
||||||
|
$this->stop('msg_not_permitted_act');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 권한변수 설정
|
// 권한변수 설정
|
||||||
|
|
@ -303,8 +311,6 @@
|
||||||
if(!$this->stop_proc) {
|
if(!$this->stop_proc) {
|
||||||
// 현재 모듈에 act값이 있으면 해당 act를 실행
|
// 현재 모듈에 act값이 있으면 해당 act를 실행
|
||||||
if(method_exists($this, $this->act)) {
|
if(method_exists($this, $this->act)) {
|
||||||
//$output = call_user_method($this->act, $this);
|
|
||||||
//$output = call_user_func(array($this, $this->act));
|
|
||||||
$output = $this->{$this->act}();
|
$output = $this->{$this->act}();
|
||||||
|
|
||||||
// act가 없으면 action_forward에서 해당하는 act가 있는지 찾아서 대신 실행
|
// act가 없으면 action_forward에서 해당하는 act가 있는지 찾아서 대신 실행
|
||||||
|
|
@ -321,8 +327,6 @@
|
||||||
$oModule->init();
|
$oModule->init();
|
||||||
$oModule->setModuleInfo($this->module_info, $xml_info);
|
$oModule->setModuleInfo($this->module_info, $xml_info);
|
||||||
|
|
||||||
//$output = call_user_method($forward->act, $oModule);
|
|
||||||
//$output = call_user_func(array($oModule, $forward->act));
|
|
||||||
$output = $oModule->{$forward->act}();
|
$output = $oModule->{$forward->act}();
|
||||||
|
|
||||||
$this->setTemplatePath($oModule->getTemplatePath());
|
$this->setTemplatePath($oModule->getTemplatePath());
|
||||||
|
|
@ -330,8 +334,6 @@
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if($this->xml_info->default_index_act) {
|
if($this->xml_info->default_index_act) {
|
||||||
//$output = call_user_method($this->xml_info->default_index_act, $this);
|
|
||||||
//$output = call_user_func(array($this, $this->xml_info->default_index_act));
|
|
||||||
if(method_exists($this, $this->xml_info->default_index_act)) {
|
if(method_exists($this, $this->xml_info->default_index_act)) {
|
||||||
$output = $this->{$this->xml_info->default_index_act}();
|
$output = $this->{$this->xml_info->default_index_act}();
|
||||||
}
|
}
|
||||||
|
|
@ -355,6 +357,14 @@
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// view action이고 결과 출력이 XMLRPC일 경우 해당 모듈의 api method를 실행
|
||||||
|
if((Context::getResponseMethod() == 'XMLRPC' || Context::getResponseMethod() == 'JSON') && $this->module_info->module_type == 'view') {
|
||||||
|
$oAPI = getAPI($this->module_info->module, 'api');
|
||||||
|
if(method_exists($oAPI, $this->act)) {
|
||||||
|
$oAPI->{$this->act}($this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,10 +46,12 @@
|
||||||
// 캐시 디렉토리가 없으면 실행하지 않음
|
// 캐시 디렉토리가 없으면 실행하지 않음
|
||||||
if(!is_dir($this->cache_path)) return $this->_getOptimizedRemoved($source_files);
|
if(!is_dir($this->cache_path)) return $this->_getOptimizedRemoved($source_files);
|
||||||
|
|
||||||
|
$files = array();
|
||||||
|
|
||||||
if(!count($source_files)) return;
|
if(!count($source_files)) return;
|
||||||
foreach($source_files as $file) {
|
foreach($source_files as $file) {
|
||||||
if(!$file || !$file['file']) continue;
|
if(!$file || !$file['file']) continue;
|
||||||
if(empty($file['optimized']) || preg_match('/^https?:\/\//i', $file['file']) || $file['file'] == './common/css/button.css') $files[] = $file;
|
if(empty($file['optimized']) || preg_match('/^https?:\/\//i', $file['file']) ) $files[] = $file;
|
||||||
else $targets[] = $file;
|
else $targets[] = $file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -62,7 +64,7 @@
|
||||||
|
|
||||||
$this->doOptimizedFile($path, $filename, $targets, $type);
|
$this->doOptimizedFile($path, $filename, $targets, $type);
|
||||||
|
|
||||||
$files[] = array('file' => $path.'/'.$filename, 'media' => 'all');
|
array_unshift($files, array('file' => $path.'/'.$filename, 'media' => 'all'));
|
||||||
|
|
||||||
return $this->_getOptimizedRemoved($files);
|
return $this->_getOptimizedRemoved($files);
|
||||||
}
|
}
|
||||||
|
|
@ -180,7 +182,7 @@ header("Last-Modified: '.substr(gmdate('r', $mtime), 0, -5).'GMT");
|
||||||
header("ETag: \"'.dechex($unique).'-".dechex($size)."-'.dechex($mtime).'\"");
|
header("ETag: \"'.dechex($unique).'-".dechex($size)."-'.dechex($mtime).'\"");
|
||||||
|
|
||||||
if(!$cached) {
|
if(!$cached) {
|
||||||
if(!$buff) {
|
if(empty($buff)) {
|
||||||
$f = fopen($content_filename,"r");
|
$f = fopen($content_filename,"r");
|
||||||
fpassthru($f);
|
fpassthru($f);
|
||||||
} else print $buff;
|
} else print $buff;
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@
|
||||||
// include 변경 <!--#include($filename)-->
|
// include 변경 <!--#include($filename)-->
|
||||||
//$buff = preg_replace_callback('!<\!--#include\(([^\)]*?)\)-->!is', array($this, '_compileIncludeToCode'), $buff);
|
//$buff = preg_replace_callback('!<\!--#include\(([^\)]*?)\)-->!is', array($this, '_compileIncludeToCode'), $buff);
|
||||||
|
|
||||||
// 이미지 태그 img의 src의 값이 http:// 나 / 로 시작하지 않으면 제로보드의 root경로부터 시작하도록 변경
|
// 이미지 태그 img의 src의 값이 http:// 나 / 로 시작하지 않으면 root경로부터 시작하도록 변경
|
||||||
$buff = preg_replace_callback('/(img|input)([^>]*)src=[\'"]{1}(?!http)(.*?)[\'"]{1}/is', array($this, '_compileImgPath'), $buff);
|
$buff = preg_replace_callback('/(img|input)([^>]*)src=[\'"]{1}(?!http)(.*?)[\'"]{1}/is', array($this, '_compileImgPath'), $buff);
|
||||||
|
|
||||||
// 변수를 변경
|
// 변수를 변경
|
||||||
|
|
@ -121,6 +121,9 @@
|
||||||
// import xml filter/ css/ js/ 언어파일 <!--%import("filename"[,optimized=true|false][,media="media"][,targetie="lt IE 6|IE 7|gte IE 8|..."])--> (media는 css에만 적용)
|
// import xml filter/ css/ js/ 언어파일 <!--%import("filename"[,optimized=true|false][,media="media"][,targetie="lt IE 6|IE 7|gte IE 8|..."])--> (media는 css에만 적용)
|
||||||
$buff = preg_replace_callback('!<\!--%import\(\"([^\"]*?)\"(,optimized\=(true|false))?(,media\=\"([^\"]*)\")?(,targetie=\"([^\"]*)\")?\)-->!is', array($this, '_compileImportCode'), $buff);
|
$buff = preg_replace_callback('!<\!--%import\(\"([^\"]*?)\"(,optimized\=(true|false))?(,media\=\"([^\"]*)\")?(,targetie=\"([^\"]*)\")?\)-->!is', array($this, '_compileImportCode'), $buff);
|
||||||
|
|
||||||
|
// unload css/ js <!--%unload("filename"[,optimized=true|false][,media="media"][,targetie="lt IE 6|IE 7|gte IE 8|..."])--> (media는 css에만 적용)
|
||||||
|
$buff = preg_replace_callback('!<\!--%unload\(\"([^\"]*?)\"(,optimized\=(true|false))?(,media\=\"([^\"]*)\")?(,targetie=\"([^\"]*)\")?\)-->!is', array($this, '_compileUnloadCode'), $buff);
|
||||||
|
|
||||||
// 파일에 쓰기 전에 직접 호출되는 것을 방지
|
// 파일에 쓰기 전에 직접 호출되는 것을 방지
|
||||||
$buff = sprintf('%s%s%s','<?php if(!defined("__ZBXE__")) exit();?>',"\n",$buff);
|
$buff = sprintf('%s%s%s','<?php if(!defined("__ZBXE__")) exit();?>',"\n",$buff);
|
||||||
|
|
||||||
|
|
@ -168,6 +171,7 @@
|
||||||
* @brief <!--@, --> 사이의 구문을 php코드로 변경
|
* @brief <!--@, --> 사이의 구문을 php코드로 변경
|
||||||
**/
|
**/
|
||||||
function _compileFuncToCode($matches) {
|
function _compileFuncToCode($matches) {
|
||||||
|
static $idx = 0;
|
||||||
$code = trim($matches[1]);
|
$code = trim($matches[1]);
|
||||||
if(!$code) return;
|
if(!$code) return;
|
||||||
|
|
||||||
|
|
@ -200,11 +204,14 @@
|
||||||
$tmp_str = substr($code, 8);
|
$tmp_str = substr($code, 8);
|
||||||
$tmp_arr = explode(' ', $tmp_str);
|
$tmp_arr = explode(' ', $tmp_str);
|
||||||
$var_name = $tmp_arr[0];
|
$var_name = $tmp_arr[0];
|
||||||
|
$prefix = '$Context->__idx['.$idx.']=0;';
|
||||||
if(substr($var_name, 0, 1) == '$') {
|
if(substr($var_name, 0, 1) == '$') {
|
||||||
$prefix = sprintf('if(count($__Context->%s)) ', substr($var_name, 1));
|
$prefix .= sprintf('if(count($__Context->%s)) ', substr($var_name, 1));
|
||||||
} else {
|
} else {
|
||||||
$prefix = sprintf('if(count(%s)) ', $var_name);
|
$prefix .= sprintf('if(count(%s)) ', $var_name);
|
||||||
}
|
}
|
||||||
|
$idx++;
|
||||||
|
$suffix .= '$__idx['.$idx.']=($__idx['.$idx.']+1)%2; $cycle_idx = $__idx['.$idx.']+1;';
|
||||||
} elseif(substr($code, 0, 4) == 'case') {
|
} elseif(substr($code, 0, 4) == 'case') {
|
||||||
$suffix = ':';
|
$suffix = ':';
|
||||||
} elseif(substr($code, 0, 10) == 'break@case') {
|
} elseif(substr($code, 0, 10) == 'break@case') {
|
||||||
|
|
@ -350,6 +357,55 @@
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief <!--%filename-->의 확장자를 봐서 css/ js 파일을 제거하도록 수정
|
||||||
|
**/
|
||||||
|
function _compileUnloadCode($matches) {
|
||||||
|
// 현재 tpl 파일의 위치를 구해서 $base_path에 저장하여 적용하려는 xml file을 찾음
|
||||||
|
//$base_path = dirname($this->tpl_file).'/';
|
||||||
|
$base_path = $this->tpl_path;
|
||||||
|
$given_file = trim($matches[1]);
|
||||||
|
if(!$given_file) return;
|
||||||
|
if(isset($matches[3]))
|
||||||
|
$optimized = strtolower(trim($matches[3]));
|
||||||
|
if(!$optimized) $optimized = 'true';
|
||||||
|
if(isset($matches[5]))
|
||||||
|
$media = trim($matches[5]);
|
||||||
|
if(!$media) $media = 'all';
|
||||||
|
if(isset($matches[7]))
|
||||||
|
$targetie = trim($matches[7]);
|
||||||
|
if(!$targetie) $targetie = '';
|
||||||
|
else $optimized = 'false';
|
||||||
|
|
||||||
|
$filename = sprintf("%s%s",$base_path, $given_file);
|
||||||
|
|
||||||
|
// path와 파일이름을 구함
|
||||||
|
$tmp_arr = explode("/",$filename);
|
||||||
|
$filename = array_pop($tmp_arr);
|
||||||
|
|
||||||
|
$base_path = implode("/",$tmp_arr)."/";
|
||||||
|
|
||||||
|
// 확장자를 구함
|
||||||
|
$tmp_arr = explode(".",$filename);
|
||||||
|
$ext = strtolower(array_pop($tmp_arr));
|
||||||
|
|
||||||
|
// 확장자에 따라서 파일 import를 별도로
|
||||||
|
switch($ext) {
|
||||||
|
// css file
|
||||||
|
case 'css' :
|
||||||
|
$meta_file = sprintf('%s%s', $base_path, $filename);
|
||||||
|
$output = sprintf('<?php Context::unloadCSSFile("%s%s", %s, "%s", "%s"); ?>', $base_path, $filename, $optimized, $media, $targetie);
|
||||||
|
break;
|
||||||
|
// js file
|
||||||
|
case 'js' :
|
||||||
|
$meta_file = sprintf('%s%s', $base_path, $filename);
|
||||||
|
$output = sprintf('<?php Context::unloadJsFile("%s%s", %s, "%s"); ?>', $base_path, $filename, $optimized, $targetie);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief $tpl_file로 compiled_tpl_file이름을 return
|
* @brief $tpl_file로 compiled_tpl_file이름을 return
|
||||||
**/
|
**/
|
||||||
|
|
|
||||||
|
|
@ -1,212 +1,91 @@
|
||||||
a.button, span.button, del.button{
|
@charset "utf-8";
|
||||||
|
/* NHN > UIT Center > Open UI Platform Team > Jeong Chan Myeong(dece24@nhncorp.com) */
|
||||||
display:-moz-inline-box;
|
|
||||||
display:inline-block;
|
/* Anchor Button */
|
||||||
cursor:pointer;
|
a.button,
|
||||||
border:none;
|
a.button span { position:relative; display:inline-block; text-decoration:none !important; background:url(../tpl/images/buttonWhite.gif) no-repeat; cursor:pointer; white-space:nowrap; vertical-align:middle; *vertical-align:top;}
|
||||||
font-size:0;
|
a.button { padding:0; background-position:left top; overflow:visible;}
|
||||||
line-height:0;
|
a.button span { left:2px; padding:6px 10px 5px 8px; color:#000; font:12px/12px Sans-serif; background-position:right top;}
|
||||||
|
a.button, x:-moz-any-link { font:0/23px Sans-serif; padding:12px 0; top:1px;} /* Firefox 2 Fix */
|
||||||
/*
|
a.button, x:-moz-any-link, x:default { padding:0; top:0;} /* Firefox 2 Fix */
|
||||||
for Safari, read this first
|
/* Large Size */
|
||||||
http://creativebits.org/webdev/safari_background_repeat_bug_fix
|
a.button.large { background-position:left -30px; }
|
||||||
*/
|
a.button.large span { padding:7px 10px 6px 8px; font:16px/16px Sans-serif; background-position:right -30px;}
|
||||||
background-position:0 0;
|
a.button.large, x:-moz-any-link { font:0/29px Sans-serif; padding:15px 0;} /* Firefox 2 Fix */
|
||||||
background-repeat:no-repeat;
|
a.button.large, x:-moz-any-link, x:default { padding:0;} /* Firefox 2 Fix */
|
||||||
height:30px;
|
/* xLarge Size */
|
||||||
text-decoration:none;
|
a.button.xLarge { background-position:left -65px; }
|
||||||
color:#2e523b;
|
a.button.xLarge span { padding:8px 10px 7px 8px; font:20px/20px Sans-serif; background-position:right -65px;}
|
||||||
font-style:normal;
|
a.button.xLarge, x:-moz-any-link { font:0/35px Sans-serif; padding:18px 0;} /* Firefox 2 Fix */
|
||||||
margin:0 6px 0px 0;
|
a.button.xLarge, x:-moz-any-link, x:default { padding:0;} /* Firefox 2 Fix */
|
||||||
padding:0 10px 0 0;
|
/* Small Size */
|
||||||
vertical-align:middle;
|
a.button.small { background-position:left -107px; }
|
||||||
|
a.button.small span { padding:4px 6px 3px 4px; font:11px/11px Sans-serif; background-position:right -107px;}
|
||||||
padding-top:-2px;
|
a.button.small, x:-moz-any-link { font:0/18px Sans-serif; padding:9px 0;} /* Firefox 2 Fix */
|
||||||
_position:relative;
|
a.button.small, x:-moz-any-link, x:default { padding:0;} /* Firefox 2 Fix */
|
||||||
_top:-4px;
|
|
||||||
_width:10px;
|
/* Control Button + Submit Button */
|
||||||
_overflow-y:hidden;
|
span.button,
|
||||||
}
|
span.button button,
|
||||||
*:first-child+html a.button, *:first-child+html span.button,*:first-child+html del.button {
|
span.button input { position:relative; margin:0; display:inline-block; border:0; font:12px Sans-serif; white-space:nowrap; background:url(../tpl/images/buttonWhite.gif) no-repeat; vertical-align:middle;}
|
||||||
position:relative;
|
span.button { padding:0; background-position:left top;}
|
||||||
top:-4px;
|
span.button, x:-moz-any-link{ font:0/23px Sans-serif; padding:11px 0;} /* Firefox 2 Fix */
|
||||||
}
|
span.button, x:-moz-any-link, x:default{ padding:0;} /* Firefox 2 Fix */
|
||||||
|
span.button button,
|
||||||
|
span.button input { height:23px; left:2px; *top:-1px; _top:0; padding:0 10px 0 8px; *padding:0 5px 0 3px; line-height:24px; background-position:right top; cursor:pointer;}
|
||||||
|
/* Large Size */
|
||||||
a.button, span.button, del.button,
|
span.button.large { background-position:left -30px; *top:-1px;}
|
||||||
a.button span, span.button button, span.button input, del.button span{
|
span.button.large, x:-moz-any-link{ font:0/29px Sans-serif; padding:14px 0;} /* Firefox 2 Fix */
|
||||||
background-image:url(../tpl/images/form_buttons.png);
|
span.button.large, x:-moz-any-link, x:default{ padding:0;} /* Firefox 2 Fix */
|
||||||
_background-image:url(../tpl/images/form_buttons.gif);
|
span.button.large button,
|
||||||
}
|
span.button.large input { height:30px; *top:0; _top:-1px; padding:0 10px 0 8px; *padding:0 5px 0 3px; font:16px/30px Sans-serif; background-position:right -30px;}
|
||||||
|
/* xLarge Size */
|
||||||
|
span.button.xLarge { background-position:left -65px;}
|
||||||
a.button span, span.button button, span.button input, del.button span{
|
span.button.xLarge, x:-moz-any-link{ font:0/35px Sans-serif; padding:17px 0;} /* Firefox 2 Fix */
|
||||||
|
span.button.xLarge, x:-moz-any-link, x:default{ padding:0;} /* Firefox 2 Fix */
|
||||||
white-space:nowrap;
|
span.button.xLarge button,
|
||||||
cursor:pointer;
|
span.button.xLarge input { height:35px; padding:0 10px 0 8px; *padding:0 5px 0 3px; font:20px/36px Sans-serif; background-position:right -65px;}
|
||||||
color:#222;
|
/* Large Size */
|
||||||
display:-moz-inline-box;
|
span.button.small { background-position:left -107px;}
|
||||||
display:inline-block;
|
span.button.small, x:-moz-any-link{ font:0/18px Sans-serif; padding:9px 0;} /* Firefox 2 Fix */
|
||||||
line-height:1;
|
span.button.small, x:-moz-any-link, x:default{ padding:0;} /* Firefox 2 Fix */
|
||||||
letter-spacing:0 !important;
|
span.button.small button,
|
||||||
font-family:"Arial" !important;
|
span.button.small input { height:18px; *top:0; _top:-1px; padding:0 6px 0 4px; *padding:0 3px 0 2px; font:11px/18px Sans-serif; background-position:right -107px;}
|
||||||
font-size:12px !important;
|
span.button.small button, x:-moz-any-link,
|
||||||
font-style:normal;
|
span.button.small input, x:-moz-any-link{ top:-1px;} /* Firefox 2 Fix */
|
||||||
background-color:transparent;
|
span.button.small button, x:-moz-any-link, x:default,
|
||||||
background-position:100% 0;
|
span.button.small input, x:-moz-any-link, x:default{ top:0;} /* Firefox 2 Fix */
|
||||||
background-repeat:no-repeat;
|
|
||||||
height:30px;
|
/* Strong Button */
|
||||||
padding:8px 20px 0 10px;
|
a.button.strong *,
|
||||||
margin:0 -16px 0 10px;
|
span.button.strong * { font-weight:bold !important;}
|
||||||
border:none;
|
|
||||||
zoom:1;
|
/* Icon Add */
|
||||||
_position:relative;
|
a.button .icon { position:relative; border:0; vertical-align:middle;}
|
||||||
_padding-left:0px;
|
span.button .icon { position:relative; left:10px; margin-right:8px; vertical-align:middle;}
|
||||||
_padding-right:12px;
|
|
||||||
_margin-right:-10px;
|
/* Color Preset */
|
||||||
_display:block;
|
a.button.green,
|
||||||
_right:-5px;
|
a.button.green span,
|
||||||
|
span.button.green,
|
||||||
}
|
span.button.green button,
|
||||||
|
span.button.green input { background-image:url(../tpl/images/buttonGreen.gif); color:#fff;}
|
||||||
span.button button{
|
a.button.black,
|
||||||
line-height:2.5;/*Opera need this*/
|
a.button.black span,
|
||||||
}
|
span.button.black,
|
||||||
|
span.button.black button,
|
||||||
html.safari a.button span,
|
span.button.black input { background-image:url(../tpl/images/buttonBlack.gif); color:#fff;}
|
||||||
html.safari del.button span{
|
a.button.red,
|
||||||
line-height:1.3;
|
a.button.red span,
|
||||||
}
|
span.button.red,
|
||||||
|
span.button.red button,
|
||||||
html.safari span.button button{
|
span.button.red input { background-image:url(../tpl/images/buttonRed.gif); color:#fff;}
|
||||||
line-height:2.6;
|
a.button.blue,
|
||||||
}
|
a.button.blue span,
|
||||||
|
span.button.blue,
|
||||||
html.safari a.button:focus,
|
span.button.blue button,
|
||||||
html.safari span.button button:focus{
|
span.button.blue input { background-image:url(../tpl/images/buttonBlue.gif); color:#fff;}
|
||||||
outline:none;
|
|
||||||
}
|
/* Offset Debug */
|
||||||
|
a.button,
|
||||||
|
span.button{ margin-right:2px;}
|
||||||
|
|
||||||
del.button{
|
|
||||||
/* cursor:not-allowed; */
|
|
||||||
background-position:0 -120px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
del.button span{
|
|
||||||
cursor:default;
|
|
||||||
color:#aaa !important;
|
|
||||||
background-position:100% -120px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
span.button button, span.button input{
|
|
||||||
padding-top:0px;
|
|
||||||
line-height:2.5;/*Opera need this*/
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** optional **/
|
|
||||||
/*
|
|
||||||
a.button:visited{
|
|
||||||
color:#aaa;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*Hover Style*/
|
|
||||||
|
|
||||||
a.button:hover,
|
|
||||||
span.button:hover,
|
|
||||||
a.button:focus,
|
|
||||||
|
|
||||||
a.dom-button-focus,
|
|
||||||
span.button-behavior-hover{
|
|
||||||
background-position:0 -60px;
|
|
||||||
color:#222;
|
|
||||||
text-decoration:none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
a.button:hover span,
|
|
||||||
span.button:hover button,
|
|
||||||
span.button:hover input,
|
|
||||||
a.button:focus span,
|
|
||||||
|
|
||||||
span.button-behavior-hover button,
|
|
||||||
span.button-behavior-hover input{
|
|
||||||
background-position:100% -60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
a.button:active, a.button:focus span{
|
|
||||||
color:#444;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
del.button-behavior-hover, del.button:hover{
|
|
||||||
background-position:0 -180px;
|
|
||||||
/* cursor:not-allowed; */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
del.button-behavior-hover span, del.button:hover span{
|
|
||||||
background-position:100% -180px;
|
|
||||||
/* cursor:not-allowed; */
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*Optional hack for IE6 to simulate :hover selector*/
|
|
||||||
|
|
||||||
span.button button, del.button span, span.button input{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_behavior:expression(
|
|
||||||
(function(el){
|
|
||||||
|
|
||||||
if( typeof( behavior_onMouseEnter) == 'undefined'){
|
|
||||||
|
|
||||||
|
|
||||||
behavior_onMouseEnter = function(el){
|
|
||||||
|
|
||||||
var dEl = this.parentNode;
|
|
||||||
var sClass = dEl.className ;
|
|
||||||
dEl.__defaultClassName = sClass ;
|
|
||||||
dEl.className = sClass + ' button-behavior-hover';
|
|
||||||
this.setCapture();
|
|
||||||
};
|
|
||||||
|
|
||||||
behavior_onMouseLeave = function(el) {
|
|
||||||
var dEl = this.parentNode;
|
|
||||||
dEl.className = dEl.__defaultClassName ;
|
|
||||||
dEl.__defaultClassName = undefined;
|
|
||||||
this.releaseCapture();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
el.runtimeStyle.behavior = 'none';
|
|
||||||
el.onmouseenter = behavior_onMouseEnter;
|
|
||||||
el.onmouseleave = behavior_onMouseLeave;
|
|
||||||
|
|
||||||
|
|
||||||
})(this));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,95 +1,90 @@
|
||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
|
|
||||||
/*
|
/* default.css - Type Selector Definition */
|
||||||
Used Hack
|
body { margin:0;padding:0; font-size:.75em;}
|
||||||
IE6 & Below
|
|
||||||
{ property:value; _property:value; }
|
img { border:none; }
|
||||||
IE7 Only
|
label { cursor:pointer; }
|
||||||
*:first-child+html #selector
|
form { margin:0; padding:0; }
|
||||||
IE7 & IE6 & Below
|
|
||||||
*:first-child+html #selector,
|
/* Special Class Selector */
|
||||||
* html #selector {}
|
.fr { float:right; }
|
||||||
*/
|
.fl { float:left; }
|
||||||
|
.clear { clear:both; }
|
||||||
/* default.css - Type Selector Definition */
|
.fwB { font-weight:bold;}
|
||||||
body { margin:0;padding:0; font-size:9pt; }
|
.tCenter { text-align:center; }
|
||||||
img { border:none; }
|
.tRight { text-align:right; }
|
||||||
label { cursor:pointer; }
|
.tLeft { text-align:left; }
|
||||||
form { margin:0; padding:0; }
|
.gap1 { margin-top:.8em; }
|
||||||
|
.nowrap { white-space:nowrap; }
|
||||||
/* Special Class Selector */
|
|
||||||
.fr { float:right; }
|
.iePngFix { behavior:url(./common/js/iePngFix.htc); }
|
||||||
.fl { float:left; }
|
.zbxe_info { vertical-align:middle; behavior:url(./common/js/iePngFix.htc); }
|
||||||
.clear { clear:both; }
|
|
||||||
.fwB { font-weight:bold;}
|
/* Input Style Definition */
|
||||||
.tCenter { text-align:center; }
|
.inputTypeText { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1.4em; padding:.2em 0 0 .3em; background:#ffffff; font-size:1em; _font-size:9pt; }
|
||||||
.tRight { text-align:right; }
|
*:first-child+html .inputTypeText { font-size:9pt; }
|
||||||
.tLeft { text-align:left; }
|
.inputTypeText:hover,
|
||||||
.gap1 { margin-top:.8em; }
|
.inputTypeText:focus { background:#f4f4f4; }
|
||||||
.nowrap { white-space:nowrap; }
|
.inputTypeTextArea { border:1px solid !important; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6 !important; background:#ffffff; font-size:1em; _font-size:9pt;}
|
||||||
|
*:first-child+html .inputTypeTextArea { font-size:9pt; }
|
||||||
.iePngFix { behavior:url(./common/js/iePngFix.htc); }
|
|
||||||
.zbxe_info { vertical-align:middle; behavior:url(./common/js/iePngFix.htc); }
|
.w40 { width:40px; }
|
||||||
|
.w60 { width:60px; }
|
||||||
/* Input Style Definition */
|
.w70 { width:70px; }
|
||||||
.inputTypeText { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1.4em; padding:.2em 0 0 .3em; background:#ffffff; font-size:1em; _font-size:9pt; }
|
.w80 { width:80px; }
|
||||||
*:first-child+html .inputTypeText { font-size:9pt; }
|
.w90 { width:90px; }
|
||||||
.inputTypeText:hover,
|
.w100 { width:100px; }
|
||||||
.inputTypeText:focus { background:#f4f4f4; }
|
.w110 { width:110px; }
|
||||||
.inputTypeTextArea { border:1px solid !important; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6 !important; background:#ffffff; font-size:1em; _font-size:9pt;}
|
.w120 { width:120px; }
|
||||||
*:first-child+html .inputTypeTextArea { font-size:9pt; }
|
.w130 { width:130px; }
|
||||||
|
.w140 { width:140px; }
|
||||||
.w40 { width:40px; }
|
.w150 { width:150px; }
|
||||||
.w60 { width:60px; }
|
.w160 { width:160px; }
|
||||||
.w70 { width:70px; }
|
.w170 { width:170px; }
|
||||||
.w80 { width:80px; }
|
.w180 { width:180px; }
|
||||||
.w90 { width:90px; }
|
.w190 { width:190px; }
|
||||||
.w100 { width:100px; }
|
.w200 { width:200px; }
|
||||||
.w110 { width:110px; }
|
.w210 { width:210px; }
|
||||||
.w120 { width:120px; }
|
.w220 { width:220px; }
|
||||||
.w130 { width:130px; }
|
.w230 { width:230px; }
|
||||||
.w140 { width:140px; }
|
.w240 { width:240px; }
|
||||||
.w150 { width:150px; }
|
.w250 { width:250px; }
|
||||||
.w160 { width:160px; }
|
.w260 { width:260px; }
|
||||||
.w170 { width:170px; }
|
.w270 { width:270px; }
|
||||||
.w180 { width:180px; }
|
.w280 { width:280px; }
|
||||||
.w190 { width:190px; }
|
.w290 { width:290px; }
|
||||||
.w200 { width:200px; }
|
.w300 { width:300px; }
|
||||||
.w210 { width:210px; }
|
.w400 { width:400px; }
|
||||||
.w220 { width:220px; }
|
|
||||||
.w230 { width:230px; }
|
/* editor style */
|
||||||
.w240 { width:240px; }
|
a.bold { font-weight:bold; }
|
||||||
.w250 { width:250px; }
|
|
||||||
.w260 { width:260px; }
|
.editor_blue_text { color: #145ff9 !important; text-decoration:underline !important; }
|
||||||
.w270 { width:270px; }
|
.editor_blue_text a { color: #145ff9 !important; text-decoration:underline !important; }
|
||||||
.w280 { width:280px; }
|
.editor_red_text { color: #f42126 !important; text-decoration:underline !important; }
|
||||||
.w290 { width:290px; }
|
.editor_red_text a { color: #f42126 !important; text-decoration:underline !important; }
|
||||||
.w300 { width:300px; }
|
.editor_yellow_text { color: #c9bd00 !important; text-decoration:underline !important; }
|
||||||
.w400 { width:400px; }
|
.editor_yellow_text a { color: #c9bd00 !important; text-decoration:underline !important; }
|
||||||
|
.editor_green_text { color: #08830B !important; text-decoration:underline !important; }
|
||||||
/* editor style */
|
.editor_green_text a { color: #08830B !important; text-decoration:underline !important; }
|
||||||
a.bold { font-weight:bold; }
|
|
||||||
|
.folder_opener { display: block; }
|
||||||
.editor_blue_text { color: #145ff9 !important; text-decoration:underline !important; }
|
.folder_closer { display: none; }
|
||||||
.editor_blue_text a { color: #145ff9 !important; text-decoration:underline !important; }
|
.folder_area { display: none; }
|
||||||
.editor_red_text { color: #f42126 !important; text-decoration:underline !important; }
|
|
||||||
.editor_red_text a { color: #f42126 !important; text-decoration:underline !important; }
|
.xe_content { line-height:1.6; }
|
||||||
.editor_yellow_text { color: #c9bd00 !important; text-decoration:underline !important; }
|
|
||||||
.editor_yellow_text a { color: #c9bd00 !important; text-decoration:underline !important; }
|
.zbxe_widget_output { background:url(../tpl/images/widget_text.gif) no-repeat center bottom; display:block;}
|
||||||
.editor_green_text { color: #08830B !important; text-decoration:underline !important; }
|
|
||||||
.editor_green_text a { color: #08830B !important; text-decoration:underline !important; }
|
/* xe layer */
|
||||||
|
#waitingforserverresponse { border:2px solid #444444; font-weight:bold; color:#444444; padding: 7px 5px 5px 25px; background:#FFFFFF url("../tpl/images/loading.gif") no-repeat 5px 5px; top:40px; left:40px; position:absolute; z-index:100; visibility:hidden; }
|
||||||
.folder_opener { display: block; }
|
|
||||||
.folder_closer { display: none; }
|
#popup_menu_area{ position:absolute; background:#fff; border:2px solid #eee; -moz-border-radius:5px; -webkit-border-radius:5px; margin:0; padding:0;}
|
||||||
.folder_area { display: none; }
|
#popup_menu_area *{ margin:0; padding:0; list-style:none; font-size:12px; line-height:normal;}
|
||||||
|
#popup_menu_area ul{ border:1px solid #ddd; -moz-border-radius:5px; -webkit-border-radius:5px; padding:10px 10px 5px 10px;}
|
||||||
.xe_content { line-height:1.6; }
|
#popup_menu_area li{ padding:2px 0 2px 20px; background-repeat:no-repeat; background-position:left center; margin-bottom:3px; white-space:nowrap;}
|
||||||
|
#popup_menu_area li a{ text-decoration:none; color:#000;}
|
||||||
.zbxe_widget_output { background:url(../tpl/images/widget_text.gif) no-repeat center bottom; display:block;}
|
#popup_menu_area li a:hover,
|
||||||
|
#popup_menu_area li a:active,
|
||||||
/* xe layer */
|
#popup_menu_area li a:focus{ font-weight:bold; letter-spacing:-1px;}
|
||||||
#waitingforserverresponse { border:2px solid #444444; font-weight:bold; color:#444444; padding: 7px 5px 5px 25px; background:#FFFFFF url("../tpl/images/loading.gif") no-repeat 5px 5px; top:40px; left:40px; position:absolute; z-index:100; visibility:hidden; }
|
|
||||||
#popup_menu_area { position:absolute; left:0px; top:0px; z-index:1003; visibility:hidden; border:2px solid #D9D9D9; background-color:#FFFFFF; padding:0; }
|
|
||||||
#popup_menu_area .box { border:1px solid #CACACA; background-color:#FFFFFF; padding:7px; }
|
|
||||||
#popup_menu_area .item { color:#333333; cursor:pointer; margin:0; padding:3px 0 3px 0; white-space:nowrap; }
|
|
||||||
#popup_menu_area .item_on { color:#333333; font-weight:bold; margin:0; cursor:pointer; padding:3px 0 3px 0; letter-spacing:-1px; white-space:nowrap;}
|
|
||||||
|
|
|
||||||
124
common/js/calendar-jp.js
Normal file
|
|
@ -0,0 +1,124 @@
|
||||||
|
// ** I18N
|
||||||
|
|
||||||
|
// DyCalendar JA language
|
||||||
|
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||||
|
// Translation: ミニミ
|
||||||
|
// Encoding: UTF-8
|
||||||
|
// lang : jp
|
||||||
|
// Distributed under the same terms as the calendar itself.
|
||||||
|
|
||||||
|
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||||
|
// Unicode is the answer to a real internationalized world. Also please
|
||||||
|
// include your contact information in the header, as can be seen above.
|
||||||
|
|
||||||
|
// full day names
|
||||||
|
|
||||||
|
DyCalendar._DN = new Array
|
||||||
|
("日曜日",
|
||||||
|
"月曜日",
|
||||||
|
"火曜日",
|
||||||
|
"水曜日",
|
||||||
|
"木曜日",
|
||||||
|
"金曜日",
|
||||||
|
"土曜日",
|
||||||
|
"日曜日");
|
||||||
|
|
||||||
|
// Please note that the following array of short day names (and the same goes
|
||||||
|
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||||
|
// for exemplification on how one can customize the short day names, but if
|
||||||
|
// they are simply the first N letters of the full name you can simply say:
|
||||||
|
//
|
||||||
|
// DyCalendar._SDN_len = N; // short day name length
|
||||||
|
// DyCalendar._SMN_len = N; // short month name length
|
||||||
|
//
|
||||||
|
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||||
|
// present, to be compatible with translation files that were written before
|
||||||
|
// this feature.
|
||||||
|
|
||||||
|
// short day names
|
||||||
|
DyCalendar._SDN = new Array
|
||||||
|
("日",
|
||||||
|
"月",
|
||||||
|
"火",
|
||||||
|
"水",
|
||||||
|
"木",
|
||||||
|
"金",
|
||||||
|
"土",
|
||||||
|
"日");
|
||||||
|
|
||||||
|
// full month names
|
||||||
|
DyCalendar._MN = new Array
|
||||||
|
("1月",
|
||||||
|
"2月",
|
||||||
|
"3月",
|
||||||
|
"4月",
|
||||||
|
"5月",
|
||||||
|
"6月",
|
||||||
|
"7月",
|
||||||
|
"8月",
|
||||||
|
"9月",
|
||||||
|
"10月",
|
||||||
|
"11月",
|
||||||
|
"12月");
|
||||||
|
|
||||||
|
// short month names
|
||||||
|
DyCalendar._SMN = new Array
|
||||||
|
("1",
|
||||||
|
"2",
|
||||||
|
"3",
|
||||||
|
"4",
|
||||||
|
"5",
|
||||||
|
"6",
|
||||||
|
"7",
|
||||||
|
"8",
|
||||||
|
"9",
|
||||||
|
"10",
|
||||||
|
"11",
|
||||||
|
"12");
|
||||||
|
|
||||||
|
// tooltips
|
||||||
|
DyCalendar._TT = {};
|
||||||
|
DyCalendar._TT["INFO"] = "カレンダーの紹介";
|
||||||
|
|
||||||
|
DyCalendar._TT["ABOUT"] =
|
||||||
|
"DHTML Date/Time Selector\n" +
|
||||||
|
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||||
|
"\n"+
|
||||||
|
"最新バージョンは http://www.dynarch.com/projects/calendar/ にご訪問して下さい。\n" +
|
||||||
|
"\n"+
|
||||||
|
"GNU LGPL ライセンスで配布されます。 \n"+
|
||||||
|
"より詳しいライセンスの内容は http://gnu.org/licenses/lgpl.html をお読みください。" +
|
||||||
|
"\n\n" +
|
||||||
|
"日付選択:\n" +
|
||||||
|
"- 年度の選択には \xab, \xbb ボタンを使います。\n" +
|
||||||
|
"- 月の選択には " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " ボタンを使って下さい。\n" +
|
||||||
|
"- ずっと押していると上の値をよら楽に選択できます。";
|
||||||
|
DyCalendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||||
|
"時間の選択:\n" +
|
||||||
|
"- マウスをクリックすると時間が増加します。\n" +
|
||||||
|
"- Shiftキーと同時にクリックすると減ります。\n" +
|
||||||
|
"- 押している状態で、マウスを動かすとより早く値が変化します。\n";
|
||||||
|
|
||||||
|
DyCalendar._TT["PREV_YEAR"] = "前年 (長く押すとリスト)";
|
||||||
|
DyCalendar._TT["PREV_MONTH"] = "前月 (長く押すとリスト)";
|
||||||
|
DyCalendar._TT["GO_TODAY"] = "今日";
|
||||||
|
DyCalendar._TT["NEXT_MONTH"] = "翌月 (長く押すとリスト)";
|
||||||
|
DyCalendar._TT["NEXT_YEAR"] = "翌年 (長く押すとリスト)";
|
||||||
|
DyCalendar._TT["SEL_DATE"] = "日付選択";
|
||||||
|
DyCalendar._TT["DRAG_TO_MOVE"] = "ウィンドウの移動";
|
||||||
|
DyCalendar._TT["PART_TODAY"] = " (今日)";
|
||||||
|
|
||||||
|
DyCalendar._TT["DAY_FIRST"] = "%s を先頭に";
|
||||||
|
|
||||||
|
DyCalendar._TT["WEEKEND"] = "0,6";
|
||||||
|
|
||||||
|
DyCalendar._TT["CLOSE"] = "閉じる";
|
||||||
|
DyCalendar._TT["TODAY"] = "今日";
|
||||||
|
DyCalendar._TT["TIME_PART"] = "(Shift-)クリック、もしくはドラッグして下さい。";
|
||||||
|
|
||||||
|
// date formats
|
||||||
|
DyCalendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||||
|
DyCalendar._TT["TT_DATE_FORMAT"] = "%b/%e [%a]";
|
||||||
|
|
||||||
|
DyCalendar._TT["WK"] = "週";
|
||||||
|
DyCalendar._TT["TIME"] = "時:";
|
||||||
122
common/js/calendar-zh-TW.js
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
// ** I18N
|
||||||
|
|
||||||
|
// DyCalendar zh-TW language
|
||||||
|
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||||
|
// Encoding: UTF-8
|
||||||
|
// Distributed under the same terms as the calendar itself.
|
||||||
|
|
||||||
|
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||||
|
// Unicode is the answer to a real internationalized world. Also please
|
||||||
|
// include your contact information in the header, as can be seen above.
|
||||||
|
|
||||||
|
// full day names
|
||||||
|
|
||||||
|
DyCalendar._DN = new Array
|
||||||
|
("星期日",
|
||||||
|
"星期一",
|
||||||
|
"星期二",
|
||||||
|
"星期三",
|
||||||
|
"星期四",
|
||||||
|
"星期五",
|
||||||
|
"星期六",
|
||||||
|
"星期日");
|
||||||
|
|
||||||
|
// Please note that the following array of short day names (and the same goes
|
||||||
|
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||||
|
// for exemplification on how one can customize the short day names, but if
|
||||||
|
// they are simply the first N letters of the full name you can simply say:
|
||||||
|
//
|
||||||
|
// DyCalendar._SDN_len = N; // short day name length
|
||||||
|
// DyCalendar._SMN_len = N; // short month name length
|
||||||
|
//
|
||||||
|
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||||
|
// present, to be compatible with translation files that were written before
|
||||||
|
// this feature.
|
||||||
|
|
||||||
|
// short day names
|
||||||
|
DyCalendar._SDN = new Array
|
||||||
|
("日",
|
||||||
|
"一",
|
||||||
|
"二",
|
||||||
|
"三",
|
||||||
|
"四",
|
||||||
|
"五",
|
||||||
|
"六",
|
||||||
|
"日");
|
||||||
|
|
||||||
|
// full month names
|
||||||
|
DyCalendar._MN = new Array
|
||||||
|
("1月",
|
||||||
|
"2月",
|
||||||
|
"3月",
|
||||||
|
"4月",
|
||||||
|
"5月",
|
||||||
|
"6月",
|
||||||
|
"7月",
|
||||||
|
"8月",
|
||||||
|
"9月",
|
||||||
|
"10月",
|
||||||
|
"11月",
|
||||||
|
"12月");
|
||||||
|
|
||||||
|
// short month names
|
||||||
|
DyCalendar._SMN = new Array
|
||||||
|
("1",
|
||||||
|
"2",
|
||||||
|
"3",
|
||||||
|
"4",
|
||||||
|
"5",
|
||||||
|
"6",
|
||||||
|
"7",
|
||||||
|
"8",
|
||||||
|
"9",
|
||||||
|
"10",
|
||||||
|
"11",
|
||||||
|
"12");
|
||||||
|
|
||||||
|
// tooltips
|
||||||
|
DyCalendar._TT = {};
|
||||||
|
DyCalendar._TT["INFO"] = "日曆簡介";
|
||||||
|
|
||||||
|
DyCalendar._TT["ABOUT"] =
|
||||||
|
"DHTML Date/Time Selector\n" +
|
||||||
|
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||||
|
"\n"+
|
||||||
|
"請到 http://www.dynarch.com/projects/calendar/ 下載最新版本\n" +
|
||||||
|
"\n"+
|
||||||
|
"遵照 GNU LGPL版權。 \n"+
|
||||||
|
"實際的版權内容請參考考 http://gnu.org/licenses/lgpl.html " +
|
||||||
|
"\n\n" +
|
||||||
|
"選擇日期:\n" +
|
||||||
|
"- 選擇年份請使用 \xab, \xbb 按鈕\n" +
|
||||||
|
"- 選擇月份請使用 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按鈕\n" +
|
||||||
|
"- 按住按鈕可快速的選擇所要的年份或月份";
|
||||||
|
DyCalendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||||
|
"選擇時間:\n" +
|
||||||
|
"- 以滑鼠點擊可增加時間\n" +
|
||||||
|
"- 配合Shift按鍵,可減少時間 \n" +
|
||||||
|
"- 在按住滑鼠的狀態下,往右是增加、往左是減少,可快速調整時間。\n";
|
||||||
|
|
||||||
|
DyCalendar._TT["PREV_YEAR"] = "去年 (按住顯示目錄)";
|
||||||
|
DyCalendar._TT["PREV_MONTH"] = "上個月 (按住顯示目錄)";
|
||||||
|
DyCalendar._TT["GO_TODAY"] = "設為今天";
|
||||||
|
DyCalendar._TT["NEXT_MONTH"] = "下個月 (按住顯示目錄)";
|
||||||
|
DyCalendar._TT["NEXT_YEAR"] = "明年 (按住顯示目錄)";
|
||||||
|
DyCalendar._TT["SEL_DATE"] = "請選擇日期";
|
||||||
|
DyCalendar._TT["DRAG_TO_MOVE"] = "可用滑鼠拖曳";
|
||||||
|
DyCalendar._TT["PART_TODAY"] = " (今日)";
|
||||||
|
|
||||||
|
DyCalendar._TT["DAY_FIRST"] = "%s排到第一列";
|
||||||
|
|
||||||
|
DyCalendar._TT["WEEKEND"] = "0,6";
|
||||||
|
|
||||||
|
DyCalendar._TT["CLOSE"] = "關閉";
|
||||||
|
DyCalendar._TT["TODAY"] = "今日";
|
||||||
|
DyCalendar._TT["TIME_PART"] = "(Shift-)點擊或拖曳";
|
||||||
|
|
||||||
|
// date formats
|
||||||
|
DyCalendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||||
|
DyCalendar._TT["TT_DATE_FORMAT"] = "%b/%e [%a]";
|
||||||
|
|
||||||
|
DyCalendar._TT["WK"] = "周";
|
||||||
|
DyCalendar._TT["TIME"] = "時:";
|
||||||
2
common/js/calendar.min.js
vendored
|
|
@ -105,7 +105,7 @@ if(!date.equalsTo(cal.date)){cal.setDate(date);newdate=true;}else if(el.navtype=
|
||||||
newdate=closing=true;}
|
newdate=closing=true;}
|
||||||
if(newdate){ev&&cal.callHandler();}
|
if(newdate){ev&&cal.callHandler();}
|
||||||
if(closing){DyCalendar.removeClass(el,"hilite");ev&&cal.callCloseHandler();}};DyCalendar.prototype.create=function(_par){var parent=null;if(!_par){parent=document.getElementsByTagName("body")[0];this.isPopup=true;}else{parent=_par;this.isPopup=false;}
|
if(closing){DyCalendar.removeClass(el,"hilite");ev&&cal.callCloseHandler();}};DyCalendar.prototype.create=function(_par){var parent=null;if(!_par){parent=document.getElementsByTagName("body")[0];this.isPopup=true;}else{parent=_par;this.isPopup=false;}
|
||||||
this.date=this.dateStr?new Date(this.dateStr):new Date();var table=DyCalendar.createElement("table");this.table=table;table.cellSpacing=0;table.cellPadding=0;table.calendar=this;DyCalendar.addEvent(table,"mousedown",DyCalendar.tableMouseDown);var div=DyCalendar.createElement("div");this.element=div;div.className="calendar";if(this.isPopup){div.style.position="absolute";div.style.display="none";}
|
this.date=this.dateStr?new Date(this.dateStr):new Date();var table=DyCalendar.createElement("table");this.table=table;table.cellSpacing=0;table.cellPadding=0;table.calendar=this;DyCalendar.addEvent(table,"mousedown",DyCalendar.tableMouseDown);var div=DyCalendar.createElement("div");this.element=div;div.className="calendar";div.style.zIndex="9999";if(this.isPopup){div.style.position="absolute";div.style.display="none";}
|
||||||
div.appendChild(table);var thead=DyCalendar.createElement("thead",table);var cell=null;var row=null;var cal=this;var hh=function(text,cs,navtype){cell=DyCalendar.createElement("td",row);cell.colSpan=cs;cell.className="button";if(navtype!=0&&Math.abs(navtype)<=2)
|
div.appendChild(table);var thead=DyCalendar.createElement("thead",table);var cell=null;var row=null;var cal=this;var hh=function(text,cs,navtype){cell=DyCalendar.createElement("td",row);cell.colSpan=cs;cell.className="button";if(navtype!=0&&Math.abs(navtype)<=2)
|
||||||
cell.className+=" nav";DyCalendar._add_evs(cell);cell.calendar=cal;cell.navtype=navtype;cell.innerHTML="<div unselectable='on'>"+text+"</div>";return cell;};row=DyCalendar.createElement("tr",thead);var title_length=6;(this.isPopup)&&--title_length;(this.weekNumbers)&&++title_length;hh("?",1,400).ttip=DyCalendar._TT["INFO"];this.title=hh("",title_length,300);this.title.className="title";if(this.isPopup){this.title.ttip=DyCalendar._TT["DRAG_TO_MOVE"];this.title.style.cursor="move";hh("×",1,200).ttip=DyCalendar._TT["CLOSE"];}
|
cell.className+=" nav";DyCalendar._add_evs(cell);cell.calendar=cal;cell.navtype=navtype;cell.innerHTML="<div unselectable='on'>"+text+"</div>";return cell;};row=DyCalendar.createElement("tr",thead);var title_length=6;(this.isPopup)&&--title_length;(this.weekNumbers)&&++title_length;hh("?",1,400).ttip=DyCalendar._TT["INFO"];this.title=hh("",title_length,300);this.title.className="title";if(this.isPopup){this.title.ttip=DyCalendar._TT["DRAG_TO_MOVE"];this.title.style.cursor="move";hh("×",1,200).ttip=DyCalendar._TT["CLOSE"];}
|
||||||
row=DyCalendar.createElement("tr",thead);row.className="headrow";this._nav_py=hh("«",1,-2);this._nav_py.ttip=DyCalendar._TT["PREV_YEAR"];this._nav_pm=hh("‹",1,-1);this._nav_pm.ttip=DyCalendar._TT["PREV_MONTH"];this._nav_now=hh(DyCalendar._TT["TODAY"],this.weekNumbers?4:3,0);this._nav_now.ttip=DyCalendar._TT["GO_TODAY"];this._nav_nm=hh("›",1,1);this._nav_nm.ttip=DyCalendar._TT["NEXT_MONTH"];this._nav_ny=hh("»",1,2);this._nav_ny.ttip=DyCalendar._TT["NEXT_YEAR"];row=DyCalendar.createElement("tr",thead);row.className="daynames";if(this.weekNumbers){cell=DyCalendar.createElement("td",row);cell.className="name wn";cell.innerHTML=DyCalendar._TT["WK"];}
|
row=DyCalendar.createElement("tr",thead);row.className="headrow";this._nav_py=hh("«",1,-2);this._nav_py.ttip=DyCalendar._TT["PREV_YEAR"];this._nav_pm=hh("‹",1,-1);this._nav_pm.ttip=DyCalendar._TT["PREV_MONTH"];this._nav_now=hh(DyCalendar._TT["TODAY"],this.weekNumbers?4:3,0);this._nav_now.ttip=DyCalendar._TT["GO_TODAY"];this._nav_nm=hh("›",1,1);this._nav_nm.ttip=DyCalendar._TT["NEXT_MONTH"];this._nav_ny=hh("»",1,2);this._nav_ny.ttip=DyCalendar._TT["NEXT_YEAR"];row=DyCalendar.createElement("tr",thead);row.className="daynames";if(this.weekNumbers){cell=DyCalendar.createElement("td",row);cell.className="name wn";cell.innerHTML=DyCalendar._TT["WK"];}
|
||||||
|
|
|
||||||
|
|
@ -142,7 +142,7 @@ function winopen(url, target, attribute) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 팝업으로만 띄우기
|
* @brief 팝업으로만 띄우기
|
||||||
* common/tpl/popup_layout.html이 요청되는 제로보드 XE내의 팝업일 경우에 사용
|
* common/tpl/popup_layout.html이 요청되는 XE내의 팝업일 경우에 사용
|
||||||
**/
|
**/
|
||||||
function popopen(url, target) {
|
function popopen(url, target) {
|
||||||
if(typeof(target)=="undefined") target = "_blank";
|
if(typeof(target)=="undefined") target = "_blank";
|
||||||
|
|
@ -189,36 +189,99 @@ function toggleDisplay(obj, display_type) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* jQuery의 extend. */
|
||||||
|
/* TODO:jQuery 등 자바스크립트 프레임웍 차용시 대체 가능하면 제거 대상 */
|
||||||
|
objectExtend = function() {
|
||||||
|
// copy reference to target object
|
||||||
|
var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
|
||||||
|
|
||||||
|
// Handle a deep copy situation
|
||||||
|
if ( target.constructor == Boolean ) {
|
||||||
|
deep = target;
|
||||||
|
target = arguments[1] || {};
|
||||||
|
// skip the boolean and the target
|
||||||
|
i = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle case when target is a string or something (possible in deep copy)
|
||||||
|
if ( typeof target != "object" && typeof target != "function" )
|
||||||
|
target = {};
|
||||||
|
|
||||||
|
// extend jQuery itself if only one argument is passed
|
||||||
|
if ( length == i ) {
|
||||||
|
target = this;
|
||||||
|
--i;
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( ; i < length; i++ )
|
||||||
|
// Only deal with non-null/undefined values
|
||||||
|
if ( (options = arguments[ i ]) != null )
|
||||||
|
// Extend the base object
|
||||||
|
for ( var name in options ) {
|
||||||
|
var src = target[ name ], copy = options[ name ];
|
||||||
|
|
||||||
|
// Prevent never-ending loop
|
||||||
|
if ( target === copy )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Recurse if we're merging object values
|
||||||
|
if ( deep && copy && typeof copy == "object" && !copy.nodeType )
|
||||||
|
target[ name ] = objectExtend( deep,
|
||||||
|
// Never move original objects, clone them
|
||||||
|
src || ( copy.length != null ? [ ] : { } )
|
||||||
|
, copy );
|
||||||
|
|
||||||
|
// Don't bring in undefined values
|
||||||
|
else if ( copy !== undefined )
|
||||||
|
target[ name ] = copy;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the modified object
|
||||||
|
return target;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 멀티미디어 출력용 (IE에서 플래쉬/동영상 주변에 점선 생김 방지용)
|
* @brief 멀티미디어 출력용 (IE에서 플래쉬/동영상 주변에 점선 생김 방지용)
|
||||||
**/
|
**/
|
||||||
function displayMultimedia(src, width, height, auto_start, flashvars) {
|
function displayMultimedia(src, width, height, options) {
|
||||||
if(src.indexOf('files')==0) src = request_uri+src;
|
if(src.indexOf('files') == 0) src = request_uri + src;
|
||||||
if(auto_start) auto_start = "true";
|
|
||||||
else auto_start = "false";
|
var defaults = {
|
||||||
|
wmode : 'transparent',
|
||||||
|
allowScriptAccess : 'sameDomain',
|
||||||
|
quality : 'high',
|
||||||
|
flashvars : ''
|
||||||
|
};
|
||||||
|
|
||||||
|
if(options) {
|
||||||
|
var autostart = (options.autostart) ? 'true' : 'false';
|
||||||
|
delete(options.autostart);
|
||||||
|
}
|
||||||
|
|
||||||
|
var params = objectExtend(defaults, options || {});
|
||||||
|
|
||||||
var clsid = "";
|
var clsid = "";
|
||||||
var codebase = "";
|
var codebase = "";
|
||||||
var html = "";
|
var html = "";
|
||||||
|
|
||||||
if(typeof(flashvars)=="undefined") flashvars = "";
|
|
||||||
|
|
||||||
if(/\.swf/i.test(src)) {
|
if(/\.swf/i.test(src)) {
|
||||||
clsid = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";
|
clsid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
|
||||||
codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0";
|
codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0";
|
||||||
html = ""+
|
html = '<object classid="'+clsid+'" codebase="'+codebase+'" width="'+width+'" height="'+height+'" flashvars="'+params.flashvars+'">';
|
||||||
"<object classid=\""+clsid+"\" codebase=\""+codebase+"\" width=\""+width+"\" height=\""+height+"\" flashvars=\""+flashvars+"\">"+
|
html += '<param name="movie" value="'+src+'" />';
|
||||||
"<param name=\"wmode\" value=\"transparent\" />"+
|
for(var name in params) {
|
||||||
"<param name=\"allowScriptAccess\" value=\"sameDomain\" />"+
|
if(params[name] != 'undefined' && params[name] != '') {
|
||||||
"<param name=\"movie\" value=\""+src+"\" />"+
|
html += '<param name="'+name+'" value="'+params[name]+'" />';
|
||||||
"<param name=\"quality\" value=\"high\" />"+
|
}
|
||||||
"<param name=\"flashvars\" value=\""+flashvars+"\" />"+
|
}
|
||||||
"<embed src=\""+src+"\" autostart=\""+auto_start+"\" width=\""+width+"\" height=\""+height+"\" flashvars=\""+flashvars+"\" wmode=\"transparent\"></embed>"+
|
html += ''
|
||||||
"<\/object>";
|
+ '<embed src="'+src+'" autostart="'+autostart+'" width="'+width+'" height="'+height+'" flashvars="'+params.flashvars+'" wmode="'+params.wmode+'"></embed>'
|
||||||
|
+ '</object>';
|
||||||
} else if(/\.flv/i.test(src)) {
|
} else if(/\.flv/i.test(src)) {
|
||||||
html = "<embed src=\""+request_uri+"common/tpl/images/flvplayer.swf\" allowfullscreen=\"true\" autostart=\""+auto_start+"\" width=\""+width+"\" height=\""+height+"\" flashvars=\"&file="+src+"&width="+width+"&height="+height+"&autostart="+auto_start+"\" />";
|
html = '<embed src="'+request_uri+'common/tpl/images/flvplayer.swf" allowfullscreen="true" autostart="'+autostart+'" width="'+width+'" height="'+height+'" flashvars="&file='+src+'&width='+width+'&height='+height+'&autostart='+autostart+'" />';
|
||||||
} else {
|
} else {
|
||||||
html = "<embed src=\""+src+"\" autostart=\""+auto_start+"\" width=\""+width+"\" height=\""+height+"\"></embed>";
|
html = '<embed src="'+src+'" autostart="'+autostart+'" width="'+width+'" height="'+height+'"></embed>';
|
||||||
}
|
}
|
||||||
document.writeln(html);
|
document.writeln(html);
|
||||||
}
|
}
|
||||||
|
|
@ -321,43 +384,50 @@ function createPopupMenu(evt) {
|
||||||
area = xCreateElement("div");
|
area = xCreateElement("div");
|
||||||
area.id = "popup_menu_area";
|
area.id = "popup_menu_area";
|
||||||
area.style.visibility = 'hidden';
|
area.style.visibility = 'hidden';
|
||||||
|
area.style.zIndex = 9999;
|
||||||
document.body.appendChild(area);
|
document.body.appendChild(area);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 클릭 이벤트 발생시 이벤트가 일어난 대상을 검사하여 적절한 규칙에 맞으면 처리 */
|
/* 클릭 이벤트 발생시 이벤트가 일어난 대상을 검사하여 적절한 규칙에 맞으면 처리 */
|
||||||
function chkPopupMenu(evt) {
|
function chkPopupMenu(evt) {
|
||||||
|
|
||||||
// 이전에 호출되었을지 모르는 팝업메뉴 숨김
|
// 이전에 호출되었을지 모르는 팝업메뉴 숨김
|
||||||
var area = xGetElementById("popup_menu_area");
|
var area = xGetElementById("popup_menu_area");
|
||||||
if(!area) return;
|
if(!area) return;
|
||||||
|
|
||||||
if(area.style.visibility!="hidden") area.style.visibility="hidden";
|
if(area.style.visibility != "hidden") area.style.visibility = "hidden";
|
||||||
|
|
||||||
// 이벤트 대상이 없으면 무시
|
// 이벤트 대상이 없으면 무시
|
||||||
var e = new xEvent(evt);
|
var e = new xEvent(evt);
|
||||||
|
|
||||||
if(!e) return;
|
if(!e) return;
|
||||||
|
|
||||||
// 대상의 객체 구함
|
// 대상의 객체 구함
|
||||||
var obj = e.target;
|
var obj = e.target;
|
||||||
if(!obj) return;
|
if(!obj) return;
|
||||||
|
|
||||||
|
|
||||||
// obj의 nodeName이 div나 span이 아니면 나올대까지 상위를 찾음
|
// obj의 nodeName이 div나 span이 아니면 나올대까지 상위를 찾음
|
||||||
if(obj && obj.nodeName != 'DIV' && obj.nodeName != 'SPAN') obj = obj.parentNode;
|
if(obj && obj.nodeName != 'DIV' && obj.nodeName != 'SPAN' && obj.nodeName != 'A') obj = obj.parentNode;
|
||||||
if(!obj || (obj.nodeName != 'DIV' && obj.nodeName != 'SPAN')) return;
|
if(!obj || (obj.nodeName != 'DIV' && obj.nodeName != 'SPAN' && obj.nodeName != 'A')) return;
|
||||||
|
|
||||||
// 객체의 className값을 구함
|
// 객체의 className값을 구함
|
||||||
var class_name = obj.className;
|
var class_name = obj.className;
|
||||||
if(!class_name) return;
|
if(!class_name) return;
|
||||||
|
|
||||||
// className을 분리
|
// className을 분리
|
||||||
var class_name_list = class_name.split(' ');
|
var class_name_list = class_name.split(' ');
|
||||||
|
|
||||||
var menu_id = '';
|
var menu_id = '';
|
||||||
var menu_id_regx = /^([a-zA-Z]+)_([0-9]+)$/ig;
|
var menu_id_regx = /^([a-zA-Z]+)_([0-9]+)$/;
|
||||||
for(var i in class_name_list) {
|
|
||||||
|
|
||||||
|
for(var i=0,c=class_name_list.length;i<c;i++) {
|
||||||
if(menu_id_regx.test(class_name_list[i])) {
|
if(menu_id_regx.test(class_name_list[i])) {
|
||||||
menu_id = class_name_list[i];
|
menu_id = class_name_list[i];
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(!menu_id) return;
|
if(!menu_id) return;
|
||||||
|
|
||||||
// module명과 대상 번호가 없으면 return
|
// module명과 대상 번호가 없으면 return
|
||||||
|
|
@ -369,14 +439,15 @@ function chkPopupMenu(evt) {
|
||||||
// action이름을 규칙에 맞게 작성
|
// action이름을 규칙에 맞게 작성
|
||||||
var action_name = "get" + module_name.substr(0,1).toUpperCase() + module_name.substr(1,module_name.length-1) + "Menu";
|
var action_name = "get" + module_name.substr(0,1).toUpperCase() + module_name.substr(1,module_name.length-1) + "Menu";
|
||||||
|
|
||||||
|
|
||||||
// 서버에 메뉴를 요청
|
// 서버에 메뉴를 요청
|
||||||
var params = new Array();
|
var params = new Array();
|
||||||
params["target_srl"] = target_srl;
|
params["target_srl"] = target_srl;
|
||||||
params["cur_mid"] = current_mid;
|
params["cur_mid"] = current_mid;
|
||||||
params["cur_act"] = current_url.getQuery('act');
|
params["cur_act"] = current_url.getQuery('act');
|
||||||
params["menu_id"] = menu_id;
|
params["menu_id"] = menu_id;
|
||||||
params["page_x"] = e.pageX;
|
params["page_x"] = e.pageX >0 ? e.pageX : GetObjLeft(obj);
|
||||||
params["page_y"] = e.pageY;
|
params["page_y"] = e.pageY >0 ? e.pageY : GetObjTop(obj)+ xHeight(obj);
|
||||||
|
|
||||||
var response_tags = new Array("error","message","menus");
|
var response_tags = new Array("error","message","menus");
|
||||||
|
|
||||||
|
|
@ -384,13 +455,23 @@ function chkPopupMenu(evt) {
|
||||||
displayPopupMenu(params, response_tags, params);
|
displayPopupMenu(params, response_tags, params);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
show_waiting_message = false;
|
show_waiting_message = false;
|
||||||
exec_xml(module_name, action_name, params, displayPopupMenu, response_tags, params);
|
exec_xml(module_name, action_name, params, displayPopupMenu, response_tags, params);
|
||||||
show_waiting_message = true;
|
show_waiting_message = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function GetObjTop(obj) {
|
||||||
|
if(obj.offsetParent == document.body) return xOffsetTop(obj);
|
||||||
|
else return xOffsetTop(obj) + GetObjTop(obj.offsetParent);
|
||||||
|
}
|
||||||
|
function GetObjLeft(obj) {
|
||||||
|
if(obj.offsetParent == document.body) return xOffsetLeft(obj);
|
||||||
|
else return xOffsetLeft(obj) + GetObjLeft(obj.offsetParent);
|
||||||
|
}
|
||||||
|
|
||||||
function displayPopupMenu(ret_obj, response_tags, params) {
|
function displayPopupMenu(ret_obj, response_tags, params) {
|
||||||
|
|
||||||
var target_srl = params["target_srl"];
|
var target_srl = params["target_srl"];
|
||||||
var menu_id = params["menu_id"];
|
var menu_id = params["menu_id"];
|
||||||
var menus = ret_obj['menus'];
|
var menus = ret_obj['menus'];
|
||||||
|
|
@ -398,10 +479,11 @@ function displayPopupMenu(ret_obj, response_tags, params) {
|
||||||
|
|
||||||
if(loaded_popup_menus[menu_id]) {
|
if(loaded_popup_menus[menu_id]) {
|
||||||
html = loaded_popup_menus[menu_id];
|
html = loaded_popup_menus[menu_id];
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if(menus) {
|
if(menus) {
|
||||||
var item = menus['item'];
|
var item = menus['item'];
|
||||||
if(item.length<1) item = new Array(item);
|
if(typeof(item.length)=='undefined' || item.length<1) item = new Array(item);
|
||||||
if(item.length) {
|
if(item.length) {
|
||||||
for(var i=0;i<item.length;i++) {
|
for(var i=0;i<item.length;i++) {
|
||||||
var url = item[i].url;
|
var url = item[i].url;
|
||||||
|
|
@ -410,24 +492,25 @@ function displayPopupMenu(ret_obj, response_tags, params) {
|
||||||
var target = item[i].target;
|
var target = item[i].target;
|
||||||
|
|
||||||
var styleText = "";
|
var styleText = "";
|
||||||
|
var click_str = "";
|
||||||
if(icon) styleText = " style=\"background:url('"+icon+"') no-repeat left center; padding-left:18px; \"";
|
if(icon) styleText = " style=\"background-image:url('"+icon+"')\" ";
|
||||||
switch(target) {
|
switch(target) {
|
||||||
case "popup" :
|
case "popup" :
|
||||||
click_str = " onclick=\"popopen('"+url+"','"+target+"')\"; return false;";
|
click_str = " onclick=\"popopen(this.href,'"+target+"'); return false;\"";
|
||||||
break;
|
break;
|
||||||
case "self" :
|
case "self" :
|
||||||
click_str = " onclick=\"location.href='"+url+"'\"; return false;";
|
//click_str = " onclick=\"location.href='"+url+"' return false;\"";
|
||||||
break;
|
break;
|
||||||
case "javascript" :
|
case "javascript" :
|
||||||
click_str = " onclick=\""+url+"\"; return false;";
|
click_str = " onclick=\""+url+"; return false; \"";
|
||||||
|
url="#";
|
||||||
break;
|
break;
|
||||||
default :
|
default :
|
||||||
click_str = " onclick=\"window.open('"+url+"')\"; return false;";
|
click_str = " onclick=\"window.open(this.href); return false;\"";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
html += '<div class="item" onmouseover="this.className=\'item_on\'" onmouseout="this.className=\'item\'"'+styleText+click_str+'>'+str+'</div> ';
|
html += '<li '+styleText+'><a href="'+url+'"'+click_str+'>'+str+'</a></li> ';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -437,13 +520,13 @@ function displayPopupMenu(ret_obj, response_tags, params) {
|
||||||
// 레이어 출력
|
// 레이어 출력
|
||||||
if(html) {
|
if(html) {
|
||||||
var area = xGetElementById("popup_menu_area");
|
var area = xGetElementById("popup_menu_area");
|
||||||
xInnerHtml(area, "<div class=\"box\">"+html+"</div>");
|
xInnerHtml(area, '<ul>'+html+'</ul>');
|
||||||
xLeft(area, params["page_x"]);
|
xLeft(area, params["page_x"]);
|
||||||
xTop(area, params["page_y"]);
|
xTop(area, params["page_y"]);
|
||||||
if(xWidth(area)+xLeft(area)>xClientWidth()+xScrollLeft()) xLeft(area, xClientWidth()-xWidth(area)+xScrollLeft());
|
if(xWidth(area)+xLeft(area)>xClientWidth()+xScrollLeft()) xLeft(area, xClientWidth()-xWidth(area)+xScrollLeft());
|
||||||
if(xHeight(area)+xTop(area)>xClientHeight()+xScrollTop()) xTop(area, xClientHeight()-xHeight(area)+xScrollTop());
|
if(xHeight(area)+xTop(area)>xClientHeight()+xScrollTop()) xTop(area, xClientHeight()-xHeight(area)+xScrollTop());
|
||||||
area.style.visibility = "visible";
|
area.style.visibility = "visible";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -461,6 +544,11 @@ function completeCallModuleAction(ret_obj, response_tags) {
|
||||||
location.reload();
|
location.reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function completeMessage(ret_obj) {
|
||||||
|
alert(ret_obj['message']);
|
||||||
|
location.reload();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 날짜 선택 (달력 열기)
|
* @brief 날짜 선택 (달력 열기)
|
||||||
**/
|
**/
|
||||||
|
|
@ -789,10 +877,13 @@ if(xIE4Up) {
|
||||||
var sels = xGetElementsByTagName('select');
|
var sels = xGetElementsByTagName('select');
|
||||||
for(var i=0; i < sels.length; i++){
|
for(var i=0; i < sels.length; i++){
|
||||||
var disabled_exists = false;
|
var disabled_exists = false;
|
||||||
|
var first_enable = new Array();
|
||||||
for(var j=0; j < sels[i].options.length; j++) {
|
for(var j=0; j < sels[i].options.length; j++) {
|
||||||
if(sels[i].options[j].disabled) {
|
if(sels[i].options[j].disabled) {
|
||||||
sels[i].options[j].style.color = '#CCCCCC';
|
sels[i].options[j].style.color = '#CCCCCC';
|
||||||
disabled_exists = true;
|
disabled_exists = true;
|
||||||
|
}else{
|
||||||
|
first_enable[i] = first_enable[i]>-1? first_enable[i] : j;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -801,9 +892,14 @@ if(xIE4Up) {
|
||||||
sels[i].oldonchange = sels[i].onchange;
|
sels[i].oldonchange = sels[i].onchange;
|
||||||
sels[i].onchange = function() {
|
sels[i].onchange = function() {
|
||||||
if(this.options[this.selectedIndex].disabled) {
|
if(this.options[this.selectedIndex].disabled) {
|
||||||
if(this.options.length<=1) this.selectedIndex = -1;
|
|
||||||
else if(this.selectedIndex < this.options.length - 1) this.selectedIndex++;
|
this.selectedIndex = first_enable[i];
|
||||||
else this.selectedIndex--;
|
/*
|
||||||
|
if(this.options.length<=1) this.selectedIndex = -1;
|
||||||
|
else if(this.selectedIndex < this.options.length - 1) this.selectedIndex++;
|
||||||
|
else this.selectedIndex--;
|
||||||
|
*/
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if(this.oldonchange) this.oldonchange();
|
if(this.oldonchange) this.oldonchange();
|
||||||
}
|
}
|
||||||
|
|
@ -828,3 +924,7 @@ if(typeof(resizeImageContents) == 'undefined')
|
||||||
{
|
{
|
||||||
function resizeImageContents() {}
|
function resizeImageContents() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function reloadDocument() {
|
||||||
|
location.reload();
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
* @brief xml파일을 읽어서 트리 메뉴를 그려줌
|
* @brief xml파일을 읽어서 트리 메뉴를 그려줌
|
||||||
*
|
*
|
||||||
* 일단 이것 저것 꽁수가 좀 들어간 것이긴 한데 속도나 기타 면에서 쓸만함...\n
|
* 일단 이것 저것 꽁수가 좀 들어간 것이긴 한데 속도나 기타 면에서 쓸만함...\n
|
||||||
* 다만 제로보드에 좀 특화되어 있어서....\n
|
* 다만 XE에좀 특화되어 있어서....\n
|
||||||
* GPL License 를 따릅니당~~~\n
|
* GPL License 를 따릅니당~~~\n
|
||||||
* 언제나 그렇듯 필요하신 분은 가져가서 쓰세요.\n
|
* 언제나 그렇듯 필요하신 분은 가져가서 쓰세요.\n
|
||||||
* 더 좋게 개량하시면 공유해주세요~\n
|
* 더 좋게 개량하시면 공유해주세요~\n
|
||||||
|
|
@ -402,9 +402,9 @@ function moveTreeMenu(menu_id, node) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// url이 있으면 url을 분석한다 (제로보드 특화된 부분. url이 http나 ftp등으로 시작하면 그냥 해당 url 열기)
|
// url이 있으면 url을 분석한다 (Xe 특화된 부분. url이 http나 ftp등으로 시작하면 그냥 해당 url 열기)
|
||||||
if(url) {
|
if(url) {
|
||||||
// http, ftp등의 연결이 아닌 경우 제로보드용으로 처리
|
// http, ftp등의 연결이 아닌 경우 XE용으로 처리
|
||||||
if(url.indexOf('://')==-1) url = "./?"+url;
|
if(url.indexOf('://')==-1) url = "./?"+url;
|
||||||
|
|
||||||
// open_window에 따라서 처리
|
// open_window에 따라서 처리
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,12 @@ var show_waiting_message = true;
|
||||||
function exec_xml(module, act, params, callback_func, response_tags, callback_func_arg, fo_obj) {
|
function exec_xml(module, act, params, callback_func, response_tags, callback_func_arg, fo_obj) {
|
||||||
var oXml = new xml_handler();
|
var oXml = new xml_handler();
|
||||||
oXml.reset();
|
oXml.reset();
|
||||||
for(var key in params) {
|
if(typeof(params)!='undefined') {
|
||||||
if(!params.hasOwnProperty(key)) continue;
|
for(var key in params) {
|
||||||
var val = params[key];
|
if(!params.hasOwnProperty(key)) continue;
|
||||||
oXml.addParam(key, val);
|
var val = params[key];
|
||||||
|
oXml.addParam(key, val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
oXml.addParam("module", module);
|
oXml.addParam("module", module);
|
||||||
oXml.addParam("act", act);
|
oXml.addParam("act", act);
|
||||||
|
|
@ -76,7 +78,7 @@ function zGetXmlHttp() {
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return new ActiveXObject("Microsoft.XMLHTTP");
|
return new ActiveXObject("Microsoft.XMLHTTP");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -158,12 +160,20 @@ function xml_handlerGetResponseXML() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function xml_parseXmlDoc(dom) {
|
function xml_parseXmlDoc(dom) {
|
||||||
|
|
||||||
if(!dom) return;
|
if(!dom) return;
|
||||||
|
|
||||||
|
var jsonStr = xml2json(dom,false,false);
|
||||||
|
var jsonObj = eval("("+ jsonStr +");");
|
||||||
|
return jsonObj.response;
|
||||||
|
/*
|
||||||
|
|
||||||
var ret_obj = new Array();
|
var ret_obj = new Array();
|
||||||
|
|
||||||
var obj = dom.firstChild;
|
var obj = dom.firstChild;
|
||||||
|
var preObj;
|
||||||
if(!obj) return;
|
if(!obj) return;
|
||||||
|
|
||||||
while(obj) {
|
while(obj) {
|
||||||
|
|
@ -173,11 +183,11 @@ function xml_parseXmlDoc(dom) {
|
||||||
var value = null;
|
var value = null;
|
||||||
|
|
||||||
if(obj.childNodes.length==1 && obj.firstChild.nodeType != 1) {
|
if(obj.childNodes.length==1 && obj.firstChild.nodeType != 1) {
|
||||||
|
|
||||||
value = obj.firstChild.nodeValue;
|
value = obj.firstChild.nodeValue;
|
||||||
} else {
|
} else {
|
||||||
value = this.parseXMLDoc(obj);
|
value = this.parseXMLDoc(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(typeof(ret_obj[name])=='undefined') {
|
if(typeof(ret_obj[name])=='undefined') {
|
||||||
ret_obj[name] = value;
|
ret_obj[name] = value;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -193,8 +203,10 @@ function xml_parseXmlDoc(dom) {
|
||||||
|
|
||||||
}
|
}
|
||||||
obj = obj.nextSibling;
|
obj = obj.nextSibling;
|
||||||
|
|
||||||
}
|
}
|
||||||
return ret_obj;
|
return ret_obj;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
function xml_handlerToZMsgObject(xmlDoc, tags) {
|
function xml_handlerToZMsgObject(xmlDoc, tags) {
|
||||||
|
|
@ -213,3 +225,164 @@ function xml_handlerToZMsgObject(xmlDoc, tags) {
|
||||||
}
|
}
|
||||||
return obj_ret;
|
return obj_ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* This work is licensed under Creative Commons GNU LGPL License.
|
||||||
|
|
||||||
|
License: http://creativecommons.org/licenses/LGPL/2.1/
|
||||||
|
Version: 0.9
|
||||||
|
Author: Stefan Goessner/2006
|
||||||
|
Web: http://goessner.net/
|
||||||
|
*/
|
||||||
|
function xml2json(xml, tab, ignoreAttrib) {
|
||||||
|
var X = {
|
||||||
|
toObj: function(xml) {
|
||||||
|
var o = {};
|
||||||
|
if (xml.nodeType==1) { // element node ..
|
||||||
|
if (ignoreAttrib && xml.attributes.length) // element with attributes ..
|
||||||
|
for (var i=0; i<xml.attributes.length; i++)
|
||||||
|
o["@"+xml.attributes[i].nodeName] = (xml.attributes[i].nodeValue||"").toString();
|
||||||
|
if (xml.firstChild) { // element has child nodes ..
|
||||||
|
var textChild=0, cdataChild=0, hasElementChild=false;
|
||||||
|
for (var n=xml.firstChild; n; n=n.nextSibling) {
|
||||||
|
if (n.nodeType==1) hasElementChild = true;
|
||||||
|
else if (n.nodeType==3 && n.nodeValue.match(/[^ \f\n\r\t\v]/)) textChild++; // non-whitespace text
|
||||||
|
else if (n.nodeType==4) cdataChild++; // cdata section node
|
||||||
|
}
|
||||||
|
if (hasElementChild) {
|
||||||
|
if (textChild < 2 && cdataChild < 2) { // structured element with evtl. a single text or/and cdata node ..
|
||||||
|
X.removeWhite(xml);
|
||||||
|
for (var n=xml.firstChild; n; n=n.nextSibling) {
|
||||||
|
if (n.nodeType == 3) // text node
|
||||||
|
o = X.escape(n.nodeValue);
|
||||||
|
else if (n.nodeType == 4) // cdata node
|
||||||
|
// o["#cdata"] = X.escape(n.nodeValue);
|
||||||
|
o = X.escape(n.nodeValue);
|
||||||
|
else if (o[n.nodeName]) { // multiple occurence of element ..
|
||||||
|
if (o[n.nodeName] instanceof Array)
|
||||||
|
o[n.nodeName][o[n.nodeName].length] = X.toObj(n);
|
||||||
|
else
|
||||||
|
o[n.nodeName] = [o[n.nodeName], X.toObj(n)];
|
||||||
|
}
|
||||||
|
else // first occurence of element..
|
||||||
|
o[n.nodeName] = X.toObj(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else { // mixed content
|
||||||
|
if (!xml.attributes.length)
|
||||||
|
o = X.escape(X.innerXml(xml));
|
||||||
|
else
|
||||||
|
o["#text"] = X.escape(X.innerXml(xml));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (textChild) { // pure text
|
||||||
|
if (!xml.attributes.length)
|
||||||
|
o = X.escape(X.innerXml(xml));
|
||||||
|
else
|
||||||
|
o["#text"] = X.escape(X.innerXml(xml));
|
||||||
|
}
|
||||||
|
else if (cdataChild) { // cdata
|
||||||
|
if (cdataChild > 1)
|
||||||
|
o = X.escape(X.innerXml(xml));
|
||||||
|
else
|
||||||
|
for (var n=xml.firstChild; n; n=n.nextSibling){
|
||||||
|
//o["#cdata"] = X.escape(n.nodeValue);
|
||||||
|
o = X.escape(n.nodeValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!xml.attributes.length && !xml.firstChild) o = null;
|
||||||
|
}
|
||||||
|
else if (xml.nodeType==9) { // document.node
|
||||||
|
o = X.toObj(xml.documentElement);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
alert("unhandled node type: " + xml.nodeType);
|
||||||
|
return o;
|
||||||
|
},
|
||||||
|
toJson: function(o, name, ind) {
|
||||||
|
var json = name ? ("\""+name+"\"") : "";
|
||||||
|
if (o instanceof Array) {
|
||||||
|
for (var i=0,n=o.length; i<n; i++)
|
||||||
|
o[i] = X.toJson(o[i], "", ind+"\t");
|
||||||
|
json += (name?":[":"[") + (o.length > 1 ? ("\n"+ind+"\t"+o.join(",\n"+ind+"\t")+"\n"+ind) : o.join("")) + "]";
|
||||||
|
}
|
||||||
|
else if (o == null)
|
||||||
|
json += (name&&":") + "null";
|
||||||
|
else if (typeof(o) == "object") {
|
||||||
|
var arr = [];
|
||||||
|
for (var m in o)
|
||||||
|
arr[arr.length] = X.toJson(o[m], m, ind+"\t");
|
||||||
|
json += (name?":{":"{") + (arr.length > 1 ? ("\n"+ind+"\t"+arr.join(",\n"+ind+"\t")+"\n"+ind) : arr.join("")) + "}";
|
||||||
|
}
|
||||||
|
else if (typeof(o) == "string")
|
||||||
|
json += (name&&":") + "\"" + o.toString() + "\"";
|
||||||
|
else
|
||||||
|
json += (name&&":") + o.toString();
|
||||||
|
return json;
|
||||||
|
},
|
||||||
|
innerXml: function(node) {
|
||||||
|
var s = ""
|
||||||
|
if ("innerHTML" in node)
|
||||||
|
s = node.innerHTML;
|
||||||
|
else {
|
||||||
|
var asXml = function(n) {
|
||||||
|
var s = "";
|
||||||
|
if (n.nodeType == 1) {
|
||||||
|
s += "<" + n.nodeName;
|
||||||
|
for (var i=0; i<n.attributes.length;i++)
|
||||||
|
s += " " + n.attributes[i].nodeName + "=\"" + (n.attributes[i].nodeValue||"").toString() + "\"";
|
||||||
|
if (n.firstChild) {
|
||||||
|
s += ">";
|
||||||
|
for (var c=n.firstChild; c; c=c.nextSibling)
|
||||||
|
s += asXml(c);
|
||||||
|
s += "</"+n.nodeName+">";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
s += "/>";
|
||||||
|
}
|
||||||
|
else if (n.nodeType == 3)
|
||||||
|
s += n.nodeValue;
|
||||||
|
else if (n.nodeType == 4)
|
||||||
|
s += "<![CDATA[" + n.nodeValue + "]]>";
|
||||||
|
return s;
|
||||||
|
};
|
||||||
|
for (var c=node.firstChild; c; c=c.nextSibling)
|
||||||
|
s += asXml(c);
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
},
|
||||||
|
escape: function(txt) {
|
||||||
|
return txt.replace(/[\\]/g, "\\\\")
|
||||||
|
.replace(/[\"]/g, '\\"')
|
||||||
|
.replace(/[\n]/g, '\\n')
|
||||||
|
.replace(/[\r]/g, '\\r');
|
||||||
|
},
|
||||||
|
removeWhite: function(e) {
|
||||||
|
e.normalize();
|
||||||
|
for (var n = e.firstChild; n; ) {
|
||||||
|
if (n.nodeType == 3) { // text node
|
||||||
|
if (!n.nodeValue.match(/[^ \f\n\r\t\v]/)) { // pure whitespace text node
|
||||||
|
var nxt = n.nextSibling;
|
||||||
|
e.removeChild(n);
|
||||||
|
n = nxt;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
n = n.nextSibling;
|
||||||
|
}
|
||||||
|
else if (n.nodeType == 1) { // element node
|
||||||
|
X.removeWhite(n);
|
||||||
|
n = n.nextSibling;
|
||||||
|
}
|
||||||
|
else // any other node
|
||||||
|
n = n.nextSibling;
|
||||||
|
}
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (xml.nodeType == 9) // document node
|
||||||
|
xml = xml.documentElement;
|
||||||
|
var json = X.toJson(X.toObj(X.removeWhite(xml)), xml.nodeName, "");
|
||||||
|
return "{" + (tab ? json.replace(/\t/g, tab) : json.replace(/\t|\n/g, "")) + "}";
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,273 +1,298 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @file common/lang/en.lang.php
|
* @file common/lang/en.lang.php
|
||||||
* @author zero (zero@nzeo.com)
|
* @author zero (zero@nzeo.com)
|
||||||
* @brief English Language Pack (Only basic words are included here)
|
* @brief English Language Pack (Only basic words are included here)
|
||||||
**/
|
**/
|
||||||
|
|
||||||
// words for action, which is basically used
|
// words for action, which is basically used
|
||||||
$lang->cmd_write = 'Write';
|
$lang->cmd_write = 'Write';
|
||||||
$lang->cmd_reply = 'Reply';
|
$lang->cmd_reply = 'Reply';
|
||||||
$lang->cmd_delete = 'Delete';
|
$lang->cmd_delete = 'Delete';
|
||||||
$lang->cmd_modify = 'Modify';
|
$lang->cmd_modify = 'Modify';
|
||||||
$lang->cmd_edit = 'Edit';
|
$lang->cmd_edit = 'Edit';
|
||||||
$lang->cmd_view = 'View';
|
$lang->cmd_view = 'View';
|
||||||
$lang->cmd_view_all = 'View All';
|
$lang->cmd_view_all = 'View All';
|
||||||
$lang->cmd_list = 'List';
|
$lang->cmd_list = 'List';
|
||||||
$lang->cmd_prev = 'Prev';
|
$lang->cmd_prev = 'Prev';
|
||||||
$lang->cmd_next = 'Next';
|
$lang->cmd_next = 'Next';
|
||||||
$lang->cmd_send_trackback = 'Send Trackback';
|
$lang->cmd_send_trackback = 'Send Trackback';
|
||||||
$lang->cmd_registration = $lang->cmd_submit = 'Submit';
|
$lang->cmd_registration = $lang->cmd_submit = 'Submit';
|
||||||
$lang->cmd_comment_registration = 'Add Comment';
|
$lang->cmd_comment_registration = 'Add Comment';
|
||||||
$lang->cmd_insert = 'Insert';
|
$lang->cmd_insert = 'Insert';
|
||||||
$lang->cmd_save = 'Save';
|
$lang->cmd_save = 'Save';
|
||||||
$lang->cmd_load = 'Load';
|
$lang->cmd_load = 'Load';
|
||||||
$lang->cmd_input = 'Input';
|
$lang->cmd_input = 'Input';
|
||||||
$lang->cmd_search = 'Search';
|
$lang->cmd_search = 'Search';
|
||||||
$lang->cmd_cancel = 'Cancel';
|
$lang->cmd_cancel = 'Cancel';
|
||||||
$lang->cmd_back = 'Go Back';
|
$lang->cmd_back = 'Go Back';
|
||||||
$lang->cmd_vote = 'Recommend';
|
$lang->cmd_vote = 'Recommend';
|
||||||
$lang->cmd_vote_down = 'Criticize';
|
$lang->cmd_vote_down = 'Criticize';
|
||||||
$lang->cmd_declare = 'Accuse';
|
$lang->cmd_declare = 'Accuse';
|
||||||
$lang->cmd_cancel_declare = 'Cancel Accuse';
|
$lang->cmd_cancel_declare = 'Cancel Accuse';
|
||||||
$lang->cmd_declared_list = 'Accusations List';
|
$lang->cmd_declared_list = 'Accusations List';
|
||||||
$lang->cmd_copy = 'Copy';
|
$lang->cmd_copy = 'Copy';
|
||||||
$lang->cmd_move = 'Move';
|
$lang->cmd_move = 'Move';
|
||||||
$lang->cmd_move_up = 'Up';
|
$lang->cmd_move_up = 'Up';
|
||||||
$lang->cmd_move_down = 'Down';
|
$lang->cmd_move_down = 'Down';
|
||||||
$lang->cmd_add_indent = 'Indent';
|
$lang->cmd_add_indent = 'Indent';
|
||||||
$lang->cmd_remove_indent = 'Outdent';
|
$lang->cmd_remove_indent = 'Outdent';
|
||||||
$lang->cmd_management = 'Manage';
|
$lang->cmd_management = 'Manage';
|
||||||
$lang->cmd_make = 'Create';
|
$lang->cmd_make = 'Create';
|
||||||
$lang->cmd_select = 'Select';
|
$lang->cmd_select = 'Select';
|
||||||
$lang->cmd_select_all = 'Select All';
|
$lang->cmd_select_all = 'Select All';
|
||||||
$lang->cmd_unselect_all = 'Deselect All';
|
$lang->cmd_unselect_all = 'Deselect All';
|
||||||
$lang->cmd_reverse_all = 'Reverse';
|
$lang->cmd_reverse_all = 'Reverse';
|
||||||
$lang->cmd_close_all = 'Close All';
|
$lang->cmd_close_all = 'Close All';
|
||||||
$lang->cmd_open_all = 'Open All';
|
$lang->cmd_open_all = 'Open All';
|
||||||
$lang->cmd_reload = 'Reload';
|
$lang->cmd_reload = 'Reload';
|
||||||
$lang->cmd_close = 'Close';
|
$lang->cmd_close = 'Close';
|
||||||
$lang->cmd_open = 'Open';
|
$lang->cmd_open = 'Open';
|
||||||
$lang->cmd_setup = 'Configure';
|
$lang->cmd_setup = 'Configure';
|
||||||
$lang->cmd_addition_setup = 'Additional Setup';
|
$lang->cmd_addition_setup = 'Additional Setup';
|
||||||
$lang->cmd_option = 'Option';
|
$lang->cmd_option = 'Option';
|
||||||
$lang->cmd_apply = 'Apply';
|
$lang->cmd_apply = 'Apply';
|
||||||
$lang->cmd_open_calendar = 'Select a Date';
|
$lang->cmd_open_calendar = 'Select a Date';
|
||||||
$lang->cmd_send = 'Send';
|
$lang->cmd_send = 'Send';
|
||||||
$lang->cmd_print = 'Print';
|
$lang->cmd_print = 'Print';
|
||||||
$lang->cmd_scrap = 'Scrap';
|
$lang->cmd_scrap = 'Scrap';
|
||||||
$lang->cmd_preview = 'Preview';
|
$lang->cmd_preview = 'Preview';
|
||||||
$lang->cmd_reset = 'Reset';
|
$lang->cmd_reset = 'Reset';
|
||||||
$lang->cmd_remake_cache = "Re-create cache file";
|
$lang->cmd_remake_cache = "Re-create cache file";
|
||||||
$lang->cmd_publish = "Publish";
|
$lang->cmd_publish = "Publish";
|
||||||
$lang->cmd_layout_setup = 'Configure layout';
|
$lang->cmd_layout_setup = 'Configure layout';
|
||||||
$lang->cmd_layout_edit = 'Edit layout';
|
$lang->cmd_layout_edit = 'Edit layout';
|
||||||
$lang->cmd_search_by_ipaddress = 'Search by IP Address';
|
$lang->cmd_search_by_ipaddress = 'Search by IP Address';
|
||||||
|
$lang->cmd_add_ip_to_spamfilter = 'Add IP to spamfilter';
|
||||||
$lang->enable = 'Enable';
|
|
||||||
$lang->disable = 'Disable';
|
$lang->enable = 'Enable';
|
||||||
|
$lang->disable = 'Disable';
|
||||||
// Essential Words
|
|
||||||
$lang->no = 'No.';
|
// Essential Words
|
||||||
$lang->notice = 'Notice';
|
$lang->no = 'No.';
|
||||||
$lang->secret = 'Secret';
|
$lang->notice = 'Notice';
|
||||||
$lang->category = $lang->category_srl = 'Category';
|
$lang->secret = 'Secret';
|
||||||
$lang->none_category = 'None category';
|
$lang->category = $lang->category_srl = 'Category';
|
||||||
$lang->document_srl = 'Doc. No.';
|
$lang->none_category = 'None category';
|
||||||
$lang->user_id = 'User ID';
|
$lang->document_srl = 'Doc. No.';
|
||||||
$lang->author = 'Developer';
|
$lang->user_id = 'User ID';
|
||||||
$lang->password = 'Password';
|
$lang->author = 'Developer';
|
||||||
$lang->password1 = 'Password';
|
$lang->password = 'Password';
|
||||||
$lang->password2 = 'Confirm Password';
|
$lang->password1 = 'Password';
|
||||||
$lang->admin_id = 'Admin ID';
|
$lang->password2 = 'Confirm Password';
|
||||||
$lang->writer = 'Author';
|
$lang->admin_id = 'Admin ID';
|
||||||
$lang->user_name = 'User Name';
|
$lang->writer = 'Author';
|
||||||
$lang->nick_name = 'Nick Name';
|
$lang->user_name = 'User Name';
|
||||||
$lang->email_address = 'Email';
|
$lang->nick_name = 'Nick Name';
|
||||||
$lang->homepage = 'Homepage';
|
$lang->email_address = 'Email';
|
||||||
$lang->blog = 'Blog';
|
$lang->homepage = 'Homepage';
|
||||||
$lang->birthday = 'Birthday';
|
$lang->blog = 'Blog';
|
||||||
$lang->browser_title = 'Browser Title';
|
$lang->birthday = 'Birthday';
|
||||||
$lang->title = 'Subject';
|
$lang->browser_title = 'Browser Title';
|
||||||
$lang->title_content = 'Subject+Content';
|
$lang->title = 'Subject';
|
||||||
$lang->topic = 'Topic';
|
$lang->title_content = 'Subject+Content';
|
||||||
$lang->replies = 'Reply';
|
$lang->topic = 'Topic';
|
||||||
$lang->content = 'Content';
|
$lang->replies = 'Reply';
|
||||||
$lang->document = 'Article';
|
$lang->content = 'Content';
|
||||||
$lang->comment = 'Comment';
|
$lang->document = 'Article';
|
||||||
$lang->description = 'Description';
|
$lang->comment = 'Comment';
|
||||||
$lang->trackback = 'Trackback';
|
$lang->description = 'Description';
|
||||||
$lang->tag = 'Tag';
|
$lang->trackback = 'Trackback';
|
||||||
$lang->allow_comment = 'Allow Comments';
|
$lang->tag = 'Tag';
|
||||||
$lang->lock_comment = 'Block Comments';
|
$lang->allow_comment = 'Allow Comments';
|
||||||
$lang->allow_trackback = 'Allow Trackbacks';
|
$lang->lock_comment = 'Block Comments';
|
||||||
$lang->uploaded_file = 'Attachment';
|
$lang->allow_trackback = 'Allow Trackbacks';
|
||||||
$lang->grant = 'Permission';
|
$lang->uploaded_file = 'Attachment';
|
||||||
$lang->target = 'Target';
|
$lang->grant = 'Permission';
|
||||||
$lang->total = 'Total';
|
$lang->target = 'Target';
|
||||||
$lang->total_count = 'Count Total';
|
$lang->total = 'Total';
|
||||||
$lang->ipaddress = 'IP Address';
|
$lang->total_count = 'Count Total';
|
||||||
$lang->path = 'Path';
|
$lang->ipaddress = 'IP Address';
|
||||||
$lang->cart = 'Selected Item';
|
$lang->path = 'Path';
|
||||||
$lang->friend = 'Friends';
|
$lang->cart = 'Selected Item';
|
||||||
$lang->notify = 'Notification';
|
$lang->friend = 'Friends';
|
||||||
$lang->order_target = 'Align Target';
|
$lang->notify = 'Notification';
|
||||||
$lang->order_type = 'Sorting Type';
|
$lang->order_target = 'Align Target';
|
||||||
$lang->order_asc = 'ascend';
|
$lang->order_type = 'Sorting Type';
|
||||||
$lang->order_desc = 'descend';
|
$lang->order_asc = 'ascend';
|
||||||
|
$lang->order_desc = 'descend';
|
||||||
$lang->mid = 'Module Name';
|
|
||||||
$lang->layout = 'Layout';
|
$lang->mid = 'Module Name';
|
||||||
$lang->widget = 'Widget';
|
$lang->layout = 'Layout';
|
||||||
$lang->module = 'Module';
|
$lang->widget = 'Widget';
|
||||||
$lang->skin = 'Theme';
|
$lang->module = 'Module';
|
||||||
$lang->colorset = 'Colorset';
|
$lang->skin = 'Theme';
|
||||||
$lang->extra_vars = 'Extra Vars';
|
$lang->colorset = 'Colorset';
|
||||||
|
$lang->extra_vars = 'Extra Vars';
|
||||||
$lang->document_url = 'Article URL';
|
|
||||||
$lang->trackback_url = 'Trackback URL';
|
$lang->document_url = 'Article URL';
|
||||||
$lang->blog_name = 'Blog Title';
|
$lang->trackback_url = 'Trackback URL';
|
||||||
$lang->excerpt = 'Quotation';
|
$lang->blog_name = 'Blog Title';
|
||||||
|
$lang->excerpt = 'Quotation';
|
||||||
$lang->document_count = 'Total Articles';
|
|
||||||
$lang->page_count = 'Page Count';
|
$lang->document_count = 'Total Articles';
|
||||||
$lang->list_count = 'List Count';
|
$lang->page_count = 'Page Count';
|
||||||
$lang->search_list_count = 'Search List Count';
|
$lang->list_count = 'List Count';
|
||||||
$lang->readed_count = 'Views';
|
$lang->search_list_count = 'Search List Count';
|
||||||
$lang->voted_count = 'Votes';
|
$lang->readed_count = 'Views';
|
||||||
$lang->comment_count = 'Comments';
|
$lang->voted_count = 'Votes';
|
||||||
$lang->member_count = 'Member Count';
|
$lang->comment_count = 'Comments';
|
||||||
$lang->date = 'Date';
|
$lang->member_count = 'Member Count';
|
||||||
$lang->regdate = 'Registered Date';
|
$lang->date = 'Date';
|
||||||
$lang->last_update = 'Last Update';
|
$lang->regdate = 'Registered Date';
|
||||||
$lang->last_post = 'Last Post';
|
$lang->last_update = 'Last Update';
|
||||||
$lang->signup_date = 'Join Date';
|
$lang->last_post = 'Last Post';
|
||||||
$lang->last_login = 'Last Login';
|
$lang->signup_date = 'Join Date';
|
||||||
$lang->first_page = 'First Page';
|
$lang->last_login = 'Last Login';
|
||||||
$lang->last_page = 'Last Page';
|
$lang->first_page = 'First Page';
|
||||||
$lang->search_target = 'Target for Search';
|
$lang->last_page = 'Last Page';
|
||||||
$lang->search_keyword = 'Keyword';
|
$lang->search_target = 'Target for Search';
|
||||||
$lang->is_default = 'Default';
|
$lang->search_keyword = 'Keyword';
|
||||||
|
$lang->is_default = 'Default';
|
||||||
$lang->no_documents = 'No Articles';
|
|
||||||
|
$lang->no_documents = 'No Articles';
|
||||||
$lang->board_manager = 'Board Settings';
|
|
||||||
$lang->member_manager = 'Member Settings';
|
$lang->board_manager = 'Board Settings';
|
||||||
$lang->layout_manager = 'Layout Settings';
|
$lang->member_manager = 'Member Settings';
|
||||||
|
$lang->layout_manager = 'Layout Settings';
|
||||||
$lang->use = 'Use';
|
|
||||||
$lang->notuse = 'Not use';
|
$lang->use = 'Use';
|
||||||
$lang->not_exists = "Doesn't exist";
|
$lang->notuse = 'Not use';
|
||||||
|
$lang->not_exists = "Doesn't exist";
|
||||||
$lang->public = 'public';
|
|
||||||
$lang->private = 'private';
|
$lang->public = 'public';
|
||||||
|
$lang->private = 'private';
|
||||||
$lang->unit_sec = 'sec';
|
|
||||||
$lang->unit_min = 'min';
|
$lang->unit_sec = 'sec';
|
||||||
$lang->unit_hour = 'hr';
|
$lang->unit_min = 'min';
|
||||||
$lang->unit_day = 'th';
|
$lang->unit_hour = 'hr';
|
||||||
$lang->unit_week = 'week';
|
$lang->unit_day = 'th';
|
||||||
$lang->unit_month = 'month';
|
$lang->unit_week = 'week';
|
||||||
$lang->unit_year = 'year';
|
$lang->unit_month = 'month';
|
||||||
|
$lang->unit_year = 'year';
|
||||||
// Descriptions
|
|
||||||
$lang->about_tag = 'You may submit multiple tags by inserting commas(,) between each tag';
|
$lang->unit_week = array(
|
||||||
$lang->about_layout = 'Layouts decorate the appearance of your modules. you can configure them from Layout menu on the top';
|
'Monday' => 'Monday',
|
||||||
|
'Tuesday' => 'Tuesday',
|
||||||
// Messages
|
'Wednesday' => 'Wednesday',
|
||||||
$lang->msg_call_server = 'Requesting to the server, please wait';
|
'Thursday' => 'Thursday',
|
||||||
$lang->msg_db_not_setted = 'DB configuration has not been set';
|
'Friday' => 'Friday',
|
||||||
$lang->msg_invalid_queryid = 'Specified query ID value is invalid';
|
'Saturday' => 'Saturday',
|
||||||
$lang->msg_not_permitted = 'You do not have permission to access';
|
'Sunday' => 'Sunday',
|
||||||
$lang->msg_input_password = 'Please input the password';
|
);
|
||||||
$lang->msg_invalid_document = 'Invalid Article Number';
|
|
||||||
$lang->msg_invalid_request = 'Invalid Request';
|
$lang->unit_meridiem = array(
|
||||||
$lang->msg_invalid_password = 'Invalid Password';
|
'am' => 'am',
|
||||||
$lang->msg_error_occured = 'An error has occured';
|
'pm' => 'pm',
|
||||||
$lang->msg_not_founded = 'Target could not be found';
|
'AM' => 'AM',
|
||||||
$lang->msg_no_result = 'Nothing found';
|
'PM' => 'PM',
|
||||||
|
);
|
||||||
$lang->msg_not_permitted_act = 'You do not have permission to execute requested action';
|
|
||||||
$lang->msg_module_is_not_exists = 'Requested module could not be found';
|
$lang->time_gap = array(
|
||||||
$lang->msg_module_is_not_standalone = 'Requested module cannot be executed independently';
|
'min' => '%d minute ago',
|
||||||
|
'mins' => '%d minutes ago',
|
||||||
$lang->success_registed = 'Registered successfully';
|
'hour' => '%d hour ago',
|
||||||
$lang->success_declared = 'Accused successfully';
|
'hours' => '%d hours ago',
|
||||||
$lang->success_updated = 'Updated successfully';
|
);
|
||||||
$lang->success_deleted = 'Deleted successfully';
|
|
||||||
$lang->success_voted = 'Recommended successfully';
|
// Descriptions
|
||||||
$lang->success_blamed = 'Blamed success_blamed';
|
$lang->about_tag = 'You may submit multiple tags by inserting commas(,) between each tag';
|
||||||
$lang->success_moved = 'Moved successfully';
|
$lang->about_layout = 'Layouts decorate the appearance of your modules. you can configure them from Layout menu on the top';
|
||||||
$lang->success_sended = 'Sent successfully';
|
|
||||||
$lang->success_reset = 'Reset successfully';
|
// Messages
|
||||||
$lang->success_leaved = 'All member data have been deleted completely.';
|
$lang->msg_call_server = 'Requesting to the server, please wait';
|
||||||
$lang->success_saved = 'Saved successfully';
|
$lang->msg_db_not_setted = 'DB configuration has not been set';
|
||||||
|
$lang->msg_dbconnect_failed = "Error has occurred while connecting DB.\nPlease check DB information again";
|
||||||
$lang->fail_to_delete = 'Could not be deleted';
|
$lang->msg_invalid_queryid = 'Specified query ID value is invalid';
|
||||||
$lang->fail_to_move = 'Could not be moved';
|
$lang->msg_not_permitted = 'You do not have permission to access';
|
||||||
|
$lang->msg_input_password = 'Please input the password';
|
||||||
$lang->failed_voted = 'Could not recommend';
|
$lang->msg_invalid_document = 'Invalid Article Number';
|
||||||
$lang->failed_blamed = 'Could not blame';
|
$lang->msg_invalid_request = 'Invalid Request';
|
||||||
$lang->failed_declared = 'Could not accuse';
|
$lang->msg_invalid_password = 'Invalid Password';
|
||||||
$lang->fail_to_delete_have_children = 'Please try again after removing replies first';
|
$lang->msg_error_occured = 'An error has occured';
|
||||||
|
$lang->msg_not_founded = 'Target could not be found';
|
||||||
$lang->confirm_submit = 'Are you sure to submit?';
|
$lang->msg_no_result = 'Nothing found';
|
||||||
$lang->confirm_logout = 'Are you sure to logout?';
|
|
||||||
$lang->confirm_vote = 'Are you sure to recommend?';
|
$lang->msg_not_permitted_act = 'You do not have permission to execute requested action';
|
||||||
$lang->confirm_delete = 'Are you sure to delete?';
|
$lang->msg_module_is_not_exists = 'Requested module could not be found';
|
||||||
$lang->confirm_move = 'Are you sure to move?';
|
$lang->msg_module_is_not_standalone = 'Requested module cannot be executed independently';
|
||||||
$lang->confirm_reset = 'Are you sure to reset?';
|
|
||||||
$lang->confirm_leave = 'Are you sure to leave?';
|
$lang->success_registed = 'Registered successfully';
|
||||||
|
$lang->success_declared = 'Accused successfully';
|
||||||
$lang->column_type = 'Column Type';
|
$lang->success_updated = 'Updated successfully';
|
||||||
$lang->column_type_list['text'] = 'one-line text';
|
$lang->success_deleted = 'Deleted successfully';
|
||||||
$lang->column_type_list['homepage'] = 'url';
|
$lang->success_voted = 'Recommended successfully';
|
||||||
$lang->column_type_list['email_address'] = 'email';
|
$lang->success_blamed = 'Blamed success_blamed';
|
||||||
$lang->column_type_list['tel'] = 'phone number';
|
$lang->success_moved = 'Moved successfully';
|
||||||
$lang->column_type_list['textarea'] = 'multi-line textarea';
|
$lang->success_sended = 'Sent successfully';
|
||||||
$lang->column_type_list['checkbox'] = 'checkbox (multiple selection)';
|
$lang->success_reset = 'Reset successfully';
|
||||||
$lang->column_type_list['select'] = 'select box (single selection)';
|
$lang->success_leaved = 'All member data have been deleted completely.';
|
||||||
$lang->column_type_list['kr_zip'] = 'zip code (Korean)';
|
$lang->success_saved = 'Saved successfully';
|
||||||
$lang->column_type_list['date'] = 'date (yyyy/mm/dd)';
|
|
||||||
//$lang->column_type_list['jp_zip'] = 'zip code (Japanese)';
|
$lang->fail_to_delete = 'Could not be deleted';
|
||||||
$lang->column_name = 'Column Name';
|
$lang->fail_to_move = 'Could not be moved';
|
||||||
$lang->column_title = 'Column Title';
|
|
||||||
$lang->default_value = 'Default Value';
|
$lang->failed_voted = 'Could not recommend';
|
||||||
$lang->is_active = 'Active';
|
$lang->failed_blamed = 'Could not blame';
|
||||||
$lang->is_required = 'Required Field';
|
$lang->failed_declared = 'Could not accuse';
|
||||||
|
$lang->fail_to_delete_have_children = 'Please try again after removing replies first';
|
||||||
// ftp 관련
|
|
||||||
$lang->ftp_form_title = 'FTP 정보 입력';
|
$lang->confirm_submit = 'Are you sure to submit?';
|
||||||
$lang->ftp = 'FTP';
|
$lang->confirm_logout = 'Are you sure to logout?';
|
||||||
$lang->ftp_port = 'FTP port';
|
$lang->confirm_vote = 'Are you sure to recommend?';
|
||||||
$lang->cmd_check_ftp_connect = 'FTP 접속 확인';
|
$lang->confirm_delete = 'Are you sure to delete?';
|
||||||
$lang->about_ftp_info = "
|
$lang->confirm_move = 'Are you sure to move?';
|
||||||
FTP 정보는 다음의 경우에 이용될 수 있습니다.<br/>
|
$lang->confirm_reset = 'Are you sure to reset?';
|
||||||
1. PHP의 safe_mode=On일 경우에 FTP 정보를 이용해서 XE를 정상적으로 동작할 수 있게 합니다.<br/>
|
$lang->confirm_leave = 'Are you sure to leave?';
|
||||||
2. 자동 업데이트등에서 FTP 정보를 이용할 수 있습니다.<br/>
|
|
||||||
이 FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
|
$lang->column_type = 'Column Type';
|
||||||
그리고 설치 후 관리자 페이지에서 FTP 정보를 변경하거나 제거할 수 있습니다.<br />
|
$lang->column_type_list['text'] = 'one-line text';
|
||||||
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
|
$lang->column_type_list['homepage'] = 'url';
|
||||||
";
|
$lang->column_type_list['email_address'] = 'email';
|
||||||
|
$lang->column_type_list['tel'] = 'phone number';
|
||||||
$lang->msg_safe_mode_ftp_needed = "PHP의 safe_mode가 On일 경우 FTP 정보를 꼭 입력해주셔야 XE의 설치 및 사용이 가능합니다";
|
$lang->column_type_list['textarea'] = 'multi-line textarea';
|
||||||
$lang->msg_ftp_not_connected = "localhost로의 FTP 접속 오류가 발생하였습니다. ftp 포트 번호를 확인해주시거나 ftp 서비스가 가능한지 확인해주세요";
|
$lang->column_type_list['checkbox'] = 'checkbox (multiple selection)';
|
||||||
$lang->msg_ftp_invalid_auth_info = "입력하신 FTP 정보로 로그인을 하지 못했습니다. FTP정보를 확인해주세요";
|
$lang->column_type_list['select'] = 'select box (single selection)';
|
||||||
$lang->msg_ftp_mkdir_fail = "FTP를 이용한 디렉토리 생성 명령을 실패하였습니다. FTP 서버의 설정을 확인해주세요";
|
$lang->column_type_list['kr_zip'] = 'zip code (Korean)';
|
||||||
$lang->msg_ftp_chmod_fail = "FTP를 이용한 디렉토리의 속성 변경을 실패하였습니다. FTP 서버의 설정을 확인해주세요";
|
$lang->column_type_list['date'] = 'date (yyyy/mm/dd)';
|
||||||
$lang->msg_ftp_connect_success = "FTP 접속 및 인증 성공하였습니다";
|
//$lang->column_type_list['jp_zip'] = 'zip code (Japanese)';
|
||||||
|
$lang->column_name = 'Column Name';
|
||||||
|
$lang->column_title = 'Column Title';
|
||||||
// Alert messages for Javascript using by XML filter
|
$lang->default_value = 'Default Value';
|
||||||
$lang->filter->isnull = 'Please input a value for %s';
|
$lang->is_active = 'Active';
|
||||||
$lang->filter->outofrange = 'Please align the text length of %s';
|
$lang->is_required = 'Required Field';
|
||||||
$lang->filter->equalto = "The value of %s is invalid";
|
|
||||||
$lang->filter->invalid_email = "The format of %s is invalid. ex) zbxe@zeroboard.com";
|
// ftp 관련
|
||||||
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "The format of %s is invalid.\\nAll values should consist of alphabets, numbers or underscore(_) and the first letter should be alphabet";
|
$lang->ftp_form_title = 'Input FTP account information';
|
||||||
$lang->filter->invalid_homepage = "The format of %s is invalid. ex) http://www.zeroboard.com";
|
$lang->ftp = 'FTP';
|
||||||
$lang->filter->invalid_korean = "The format of %s is invalid. Please input Korean only";
|
$lang->ftp_port = 'FTP port';
|
||||||
$lang->filter->invalid_korean_number = "The format of %s is invalid. Please input Korean or numbers";
|
$lang->cmd_check_ftp_connect = 'Check connection via FTP';
|
||||||
$lang->filter->invalid_alpha = "The format of %s is invalid. Please input alphabets only";
|
$lang->about_ftp_info = "
|
||||||
$lang->filter->invalid_alpha_number = "The format of %s is invalid. Please input alphabets or numbers";
|
FTP account information can be used in following cases. <br />
|
||||||
$lang->filter->invalid_number = "The format of %s is invalid. Please input numbers only";
|
1. If safe_mode setting of PHP is on, XE will be installed using FTP. <br />
|
||||||
?>
|
2. Automatic updates might use FTP information. <br />
|
||||||
|
This account info will be stored in files/config/ftp.config.php <br />
|
||||||
|
After installation, you can modify or delete the account info at the administration page. <br />
|
||||||
|
";
|
||||||
|
|
||||||
|
$lang->msg_safe_mode_ftp_needed = "If safe_mode setting of PHP is on, you should input FTP account information to install XE.";
|
||||||
|
$lang->msg_ftp_not_connected = "Connection to localhost via FTP failed. Please check the port number and if FTP service is available.";
|
||||||
|
$lang->msg_ftp_invalid_auth_info = "Authentication failed. Please check the username and password.";
|
||||||
|
$lang->msg_ftp_mkdir_fail = "Directory creation failed. Please check the permission of FTP account.";
|
||||||
|
$lang->msg_ftp_chmod_fail = "Chmod failed. Please check the permission and configuration of FTP server.";
|
||||||
|
$lang->msg_ftp_connect_success = "Connection and authentication to the FTP server succeeded.";
|
||||||
|
|
||||||
|
|
||||||
|
// Alert messages for Javascript using by XML filter
|
||||||
|
$lang->filter->isnull = 'Please input a value for %s';
|
||||||
|
$lang->filter->outofrange = 'Please align the text length of %s';
|
||||||
|
$lang->filter->equalto = "The value of %s is invalid";
|
||||||
|
$lang->filter->invalid_email = "The format of %s is invalid. ex) zbxe@zeroboard.com";
|
||||||
|
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "The format of %s is invalid.\\nAll values should consist of alphabets, numbers or underscore(_) and the first letter should be alphabet";
|
||||||
|
$lang->filter->invalid_homepage = "The format of %s is invalid. ex) http://www.zeroboard.com";
|
||||||
|
$lang->filter->invalid_korean = "The format of %s is invalid. Please input Korean only";
|
||||||
|
$lang->filter->invalid_korean_number = "The format of %s is invalid. Please input Korean or numbers";
|
||||||
|
$lang->filter->invalid_alpha = "The format of %s is invalid. Please input alphabets only";
|
||||||
|
$lang->filter->invalid_alpha_number = "The format of %s is invalid. Please input alphabets or numbers";
|
||||||
|
$lang->filter->invalid_number = "The format of %s is invalid. Please input numbers only";
|
||||||
|
?>
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,8 @@
|
||||||
$lang->cmd_prev = 'Anterior';
|
$lang->cmd_prev = 'Anterior';
|
||||||
$lang->cmd_next = 'Siguiente';
|
$lang->cmd_next = 'Siguiente';
|
||||||
$lang->cmd_send_trackback = 'Enviar Trackback';
|
$lang->cmd_send_trackback = 'Enviar Trackback';
|
||||||
$lang->cmd_registration = $lang->cmd_submit = 'Enviar';
|
$lang->cmd_registration = $lang->cmd_submit = 'Admitir';
|
||||||
$lang->cmd_comment_registration = 'Agregar commentarios';
|
$lang->cmd_comment_registration = 'Agregar comentario';
|
||||||
$lang->cmd_insert = 'Insertar';
|
$lang->cmd_insert = 'Insertar';
|
||||||
$lang->cmd_save = 'Guardar';
|
$lang->cmd_save = 'Guardar';
|
||||||
$lang->cmd_load = 'Carga';
|
$lang->cmd_load = 'Carga';
|
||||||
|
|
@ -26,59 +26,60 @@
|
||||||
$lang->cmd_search = 'Buscar';
|
$lang->cmd_search = 'Buscar';
|
||||||
$lang->cmd_cancel = 'Cancelar';
|
$lang->cmd_cancel = 'Cancelar';
|
||||||
$lang->cmd_back = 'Atrás';
|
$lang->cmd_back = 'Atrás';
|
||||||
$lang->cmd_vote = 'Recomendar';
|
$lang->cmd_vote = 'a Favor';
|
||||||
$lang->cmd_vote_down = 'Critique';
|
$lang->cmd_vote_down = 'en Contra';
|
||||||
$lang->cmd_declare = 'Acusan';
|
$lang->cmd_declare = 'Denunciar';
|
||||||
$lang->cmd_cancel_declare = 'Cancelar acusan';
|
$lang->cmd_cancel_declare = 'Anular la Denuncia';
|
||||||
$lang->cmd_declared_list = 'Lista acusaciones';
|
$lang->cmd_declared_list = 'Lista de Denuncias';
|
||||||
$lang->cmd_copy = 'Copia';
|
$lang->cmd_copy = 'Copiar';
|
||||||
$lang->cmd_move = 'Mover';
|
$lang->cmd_move = 'Mover';
|
||||||
$lang->cmd_move_up = 'Arriba';
|
$lang->cmd_move_up = 'Arriba';
|
||||||
$lang->cmd_move_down = 'Abajo';
|
$lang->cmd_move_down = 'Abajo';
|
||||||
$lang->cmd_add_indent = 'Agregar';
|
$lang->cmd_add_indent = 'Añadir Sangría';
|
||||||
$lang->cmd_remove_indent = 'Eliminar';
|
$lang->cmd_remove_indent = 'Reducir Sangría';
|
||||||
$lang->cmd_management = 'Administración';
|
$lang->cmd_management = 'Administración';
|
||||||
$lang->cmd_make = 'Crear';
|
$lang->cmd_make = 'Crear';
|
||||||
$lang->cmd_select = 'Seleccionar';
|
$lang->cmd_select = 'Seleccionar';
|
||||||
$lang->cmd_select_all = 'Seleccionar todo';
|
$lang->cmd_select_all = 'Seleccionar todo';
|
||||||
$lang->cmd_unselect_all = 'Cancelar todo';
|
$lang->cmd_unselect_all = 'Cancelar Toda la Selección';
|
||||||
$lang->cmd_close_all = 'Cerrar todo';
|
$lang->cmd_close_all = 'Cerrar todo';
|
||||||
$lang->cmd_open_all = 'Abrir todo';
|
$lang->cmd_open_all = 'Abrir todo';
|
||||||
$lang->cmd_reload = 'Actualizar';
|
$lang->cmd_reload = 'Actualizar';
|
||||||
$lang->cmd_close = 'Cerrar';
|
$lang->cmd_close = 'Cerrar';
|
||||||
$lang->cmd_open = 'Abrir';
|
$lang->cmd_open = 'Abrir';
|
||||||
$lang->cmd_setup = 'Configuración';
|
$lang->cmd_setup = 'Configuración';
|
||||||
$lang->cmd_addition_setup = 'Configurar';
|
$lang->cmd_addition_setup = 'Más opciones';
|
||||||
$lang->cmd_option = 'Opción';
|
$lang->cmd_option = 'Opción';
|
||||||
$lang->cmd_apply = 'Aplicar';
|
$lang->cmd_apply = 'Aplicar';
|
||||||
$lang->cmd_open_calendar = 'Abrir el calendario';
|
$lang->cmd_open_calendar = 'Abrir el calendario';
|
||||||
$lang->cmd_send = 'Enviar';
|
$lang->cmd_send = 'Enviar';
|
||||||
$lang->cmd_print = 'Imprimir';
|
$lang->cmd_print = 'Imprimir';
|
||||||
$lang->cmd_scrap = 'Scrap';
|
$lang->cmd_scrap = 'Recorte';
|
||||||
$lang->cmd_preview = 'Previo';
|
$lang->cmd_preview = 'Vista Previa';
|
||||||
$lang->cmd_reset = 'Rehacer';
|
$lang->cmd_reset = 'Rehacer';
|
||||||
$lang->cmd_remake_cache = "Re-crear el archivo caché";
|
$lang->cmd_remake_cache = "Re-crear el archivo caché";
|
||||||
$lang->cmd_publish = "Publicar";
|
$lang->cmd_publish = "Publicar";
|
||||||
$lang->cmd_layout_setup = 'Configuración del diseño';
|
$lang->cmd_layout_setup = 'Composición de Página';
|
||||||
$lang->cmd_layout_edit = 'Editar el diseño';
|
$lang->cmd_layout_edit = 'Editar la Página';
|
||||||
$lang->cmd_search_by_ipaddress = 'IP주소로 검색';
|
$lang->cmd_search_by_ipaddress = 'Búsqueda con IP';
|
||||||
|
$lang->cmd_add_ip_to_spamfilter = 'Añadir IP en el Filtro de Spam';
|
||||||
|
|
||||||
$lang->enable = 'Activar';
|
$lang->enable = 'Activar'; //Activado
|
||||||
$lang->disable = 'Desactivar';
|
$lang->disable = 'Desactivar'; //Desactivado
|
||||||
|
|
||||||
// Palabras Esenciales
|
// Palabras Esenciales
|
||||||
$lang->no = 'Nº';
|
$lang->no = 'Nº';
|
||||||
$lang->notice = 'Aviso';
|
$lang->notice = 'Aviso'; //boletín, noticia
|
||||||
$lang->secret = 'Secreto';
|
$lang->secret = 'Secreto';
|
||||||
$lang->category = $lang->category_srl = 'Categoría';
|
$lang->category = $lang->category_srl = 'Categoría';
|
||||||
$lang->none_category = '분류없음';
|
$lang->none_category = 'Sin categoría';
|
||||||
$lang->document_srl = 'Número del documento';
|
$lang->document_srl = 'Número del documento';
|
||||||
$lang->user_id = 'Usuario';
|
$lang->user_id = 'ID de Usuario';
|
||||||
$lang->author = 'Autor';
|
$lang->author = 'Autor';
|
||||||
$lang->password = 'Contraseña';
|
$lang->password = 'Contraseña';
|
||||||
$lang->password1 = 'Contraseña';
|
$lang->password1 = 'Contraseña';
|
||||||
$lang->password2 = 'Confirmar la contraseña';
|
$lang->password2 = 'Otra vez la contraseña';
|
||||||
$lang->admin_id = 'Identificación del Administrador';
|
$lang->admin_id = 'ID del Administrador';
|
||||||
$lang->writer = 'Escritor';
|
$lang->writer = 'Escritor';
|
||||||
$lang->user_name = 'Nombre del Usuario';
|
$lang->user_name = 'Nombre del Usuario';
|
||||||
$lang->nick_name = 'Apodo';
|
$lang->nick_name = 'Apodo';
|
||||||
|
|
@ -91,36 +92,36 @@
|
||||||
$lang->title_content = 'Título+Contenido';
|
$lang->title_content = 'Título+Contenido';
|
||||||
$lang->topic = 'Tema';
|
$lang->topic = 'Tema';
|
||||||
$lang->replies = 'Responder';
|
$lang->replies = 'Responder';
|
||||||
$lang->content = 'Contenidos';
|
$lang->content = 'Contenido';
|
||||||
$lang->document = 'Documentos';
|
$lang->document = 'Documento';
|
||||||
$lang->comment = 'Commentarios';
|
$lang->comment = 'Comentario';
|
||||||
$lang->description = 'Descripción';
|
$lang->description = 'Descripción';
|
||||||
$lang->trackback = 'Trackback';
|
$lang->trackback = 'Trackback';
|
||||||
$lang->tag = 'Etiqueta';
|
$lang->tag = 'Etiqueta';
|
||||||
$lang->allow_comment = 'Permitir Commentarios';
|
$lang->allow_comment = 'Permitir Comentarios';
|
||||||
$lang->lock_comment = 'Bloquear Commentarios';
|
$lang->lock_comment = 'Bloquear Comentarios';
|
||||||
$lang->allow_trackback = 'Permitir Trackback';
|
$lang->allow_trackback = 'Permitir Trackback';
|
||||||
$lang->uploaded_file = 'Archivos Adjuntos';
|
$lang->uploaded_file = 'Archivos Adjuntos';
|
||||||
$lang->grant = 'Atribución';
|
$lang->grant = 'Permisos';
|
||||||
$lang->target = 'Objetivo';
|
$lang->target = 'Para'; //significaria para cual o quien
|
||||||
$lang->total = 'Total';
|
$lang->total = 'Total';
|
||||||
$lang->total_count = 'Número total';
|
$lang->total_count = 'Número total';
|
||||||
$lang->ipaddress = 'Dirección IP';
|
$lang->ipaddress = 'Dirección IP';
|
||||||
$lang->path = 'Ruta';
|
$lang->path = 'Ruta';
|
||||||
$lang->cart = 'Artículo Seleccionado';
|
$lang->cart = 'Artículo Seleccionado'; //Cesta
|
||||||
$lang->friend = 'Amigos';
|
$lang->friend = 'Amigos';
|
||||||
$lang->notify = 'Notificación';
|
$lang->notify = 'Notificación';
|
||||||
$lang->order_target = 'Alinear Meta';
|
$lang->order_target = 'Alinear Meta';
|
||||||
$lang->order_type = 'Tipo de ordenamiento';
|
$lang->order_type = 'Tipo de Ordenación';
|
||||||
$lang->order_asc = 'acendente';
|
$lang->order_asc = 'ascendente';
|
||||||
$lang->order_desc = 'descendente';
|
$lang->order_desc = 'descendente';
|
||||||
|
|
||||||
$lang->mid = 'Nombre del Módulo';
|
$lang->mid = 'ID del Módulo';
|
||||||
$lang->layout = 'Diseño';
|
$lang->layout = 'Composición';
|
||||||
$lang->widget = 'Widget';
|
$lang->widget = 'Widget';
|
||||||
$lang->module = 'Módulo';
|
$lang->module = 'Módulo';
|
||||||
$lang->skin = 'Tema';
|
$lang->skin = 'Tema'; //máscara,
|
||||||
$lang->colorset = 'Set de colores';
|
$lang->colorset = 'Conjunto de Colores';
|
||||||
$lang->extra_vars = 'Variables Extra';
|
$lang->extra_vars = 'Variables Extra';
|
||||||
|
|
||||||
$lang->document_url = 'URL del Documento';
|
$lang->document_url = 'URL del Documento';
|
||||||
|
|
@ -128,31 +129,31 @@
|
||||||
$lang->blog_name = 'Titulo del Blog';
|
$lang->blog_name = 'Titulo del Blog';
|
||||||
$lang->excerpt = 'Extracto';
|
$lang->excerpt = 'Extracto';
|
||||||
|
|
||||||
$lang->document_count = 'Cantidad de documentos';
|
$lang->document_count = 'Número de documentos';
|
||||||
$lang->page_count = 'Cantidad de páginas';
|
$lang->page_count = 'Número de páginas';
|
||||||
$lang->list_count = 'Cantidad de listas';
|
$lang->list_count = 'Número de listas';
|
||||||
$lang->search_list_count = 'Buscar lista Conde';
|
$lang->search_list_count = 'Buscar lista Conde'; //??
|
||||||
$lang->readed_count = 'Leídos';
|
$lang->readed_count = 'Leídos';
|
||||||
$lang->voted_count = 'Recomendados';
|
$lang->voted_count = 'Recomendados';
|
||||||
$lang->comment_count = 'Commentarios';
|
$lang->comment_count = 'Comentarios';
|
||||||
$lang->member_count = 'Cantidad de usuarios';
|
$lang->member_count = 'Número de usuarios';
|
||||||
$lang->date = 'Fecha';
|
$lang->date = 'Fecha';
|
||||||
$lang->regdate = 'Fecha publicada';
|
$lang->regdate = 'Fecha de Publicación';
|
||||||
$lang->last_update = 'Ultima actualización';
|
$lang->last_update = 'Ultima actualización';
|
||||||
$lang->last_post = 'Último mensaje';
|
$lang->last_post = 'Ultimo mensaje';
|
||||||
$lang->signup_date = 'Fecha del registro';
|
$lang->signup_date = 'Fecha del Registro';
|
||||||
$lang->last_login = 'Ultima conección';
|
$lang->last_login = 'Ultima conexión'; //Ultima Entrada
|
||||||
$lang->first_page = 'Primera página';
|
$lang->first_page = 'Primera página';
|
||||||
$lang->last_page = 'Ultima página';
|
$lang->last_page = 'Ultima página';
|
||||||
$lang->search_target = 'Objectivo a buscar';
|
$lang->search_target = 'Campo a buscar'; //Objectivo a buscar
|
||||||
$lang->search_keyword = 'Palabra a buscar';
|
$lang->search_keyword = 'Palabra a buscar';
|
||||||
$lang->is_default = 'Predefinido';
|
$lang->is_default = 'Por defecto';
|
||||||
|
|
||||||
$lang->no_documents = 'Sin documentos';
|
$lang->no_documents = 'Sin documento';
|
||||||
|
|
||||||
$lang->board_manager = 'Manejo de los Tableros';
|
$lang->board_manager = 'Adm. Tableros';
|
||||||
$lang->member_manager = 'MAnejo de los usuarios';
|
$lang->member_manager = 'Adm. Usuarios';
|
||||||
$lang->layout_manager = 'MAnejo de los Diseños';
|
$lang->layout_manager = 'Adm. Diseños';
|
||||||
|
|
||||||
$lang->use = 'Usar';
|
$lang->use = 'Usar';
|
||||||
$lang->notuse = 'No usar';
|
$lang->notuse = 'No usar';
|
||||||
|
|
@ -169,33 +170,65 @@
|
||||||
$lang->unit_month = 'mes';
|
$lang->unit_month = 'mes';
|
||||||
$lang->unit_year = 'año';
|
$lang->unit_year = 'año';
|
||||||
|
|
||||||
|
$lang->unit_week = array(
|
||||||
|
'Monday' => 'Lunes',
|
||||||
|
'Tuesday' => 'Mártes',
|
||||||
|
'Wednesday' => 'Miércoles',
|
||||||
|
'Thursday' => 'Jueves',
|
||||||
|
'Friday' => 'Viernes',
|
||||||
|
'Saturday' => 'Sábado',
|
||||||
|
'Sunday' => 'Domingo',
|
||||||
|
'Monday' => 'Lunes',
|
||||||
|
'Tuesday' => 'Martes',
|
||||||
|
'Wednesday' => 'Miércoles ',
|
||||||
|
'Thursday' => 'Jueves',
|
||||||
|
'Friday' => 'Viernes',
|
||||||
|
'Saturday' => 'Sábado',
|
||||||
|
'Sunday' => 'Domingo',
|
||||||
|
);
|
||||||
|
|
||||||
|
$lang->unit_meridiem = array(
|
||||||
|
'am' => 'am',
|
||||||
|
'pm' => 'pm',
|
||||||
|
'AM' => 'AM',
|
||||||
|
'PM' => 'PM',
|
||||||
|
);
|
||||||
|
|
||||||
|
$lang->time_gap = array(
|
||||||
|
'min' => 'Hace %d minuto',
|
||||||
|
'mins' => '%d minutos',
|
||||||
|
'hour' => '%d día',
|
||||||
|
'hours' => '%d días',
|
||||||
|
);
|
||||||
|
|
||||||
// Relacionado a la Descripción
|
// Relacionado a la Descripción
|
||||||
$lang->about_tag = 'Tú puedes agregar múltiples etiquetas colocando una coma(,) entre cada etiqueta';
|
$lang->about_tag = 'Puede agregar o añadir diversas etiquetas separándolas con la coma(,)'; // revisado hasta aquí (081007: Juan Lee)
|
||||||
$lang->about_layout = 'El diseño decora la apariencia de tus módulos, lo cual podrás configurar en el menú de Diseño en la parte superior';
|
$lang->about_layout = 'Puede modificar la apariencia(Layout/Diseño) de los módulos. Puede administrarla con el menú Layout.';
|
||||||
|
|
||||||
// Relacionado al Mensaje
|
// Relacionado al Mensaje
|
||||||
$lang->msg_call_server = 'Solicitando al servidor, espere un momento';
|
$lang->msg_call_server = 'Solicitando al servidor, espere un momento';
|
||||||
$lang->msg_db_not_setted = 'Configuración de DB no ha sido creado';
|
$lang->msg_db_not_setted = 'La Base de Datos no está preparada';
|
||||||
|
$lang->msg_dbconnect_failed = "Ha ocurrido un error en la conexión de BD.\n Por favor chequee la información de BD nuevamente";
|
||||||
$lang->msg_invalid_queryid = 'El valor de Query ID especificado es inválido';
|
$lang->msg_invalid_queryid = 'El valor de Query ID especificado es inválido';
|
||||||
$lang->msg_not_permitted = 'Acceso denegado';
|
$lang->msg_not_permitted = 'Acceso denegado';
|
||||||
$lang->msg_input_password = 'Coloque la contraseña';
|
$lang->msg_input_password = 'Introduzca la contraseña';
|
||||||
$lang->msg_invalid_document = 'Mensaje inválido';
|
$lang->msg_invalid_document = 'Documento inválido';
|
||||||
$lang->msg_invalid_request = 'Respuesta Inválida';
|
$lang->msg_invalid_request = 'Solicitud Inválida';
|
||||||
$lang->msg_invalid_password = 'Contraseña Inválida';
|
$lang->msg_invalid_password = 'Contraseña Inválida';
|
||||||
$lang->msg_error_occured = 'Error';
|
$lang->msg_error_occured = 'Error';
|
||||||
$lang->msg_not_founded = 'No puede ser encontrado';
|
$lang->msg_not_founded = 'No se ha encontrado';
|
||||||
$lang->msg_no_result = 'Sin resultados';
|
$lang->msg_no_result = 'Sin resultado';
|
||||||
|
|
||||||
$lang->msg_not_permitted_act = 'Usted no tiene permiso para ejecutar la action solicitada';
|
$lang->msg_not_permitted_act = 'No está permitodo para ejecutar esta acción';
|
||||||
$lang->msg_module_is_not_exists = 'Módulo solicitado no puede ser encontrado';
|
$lang->msg_module_is_not_exists = 'No existe el Módulo requerido';
|
||||||
$lang->msg_module_is_not_standalone = 'Módulo solicitado no puede ser ejecutado independientemente';
|
$lang->msg_module_is_not_standalone = 'El Módulo requerido no funciona solo.';
|
||||||
|
|
||||||
$lang->success_registed = 'Agregado con éxito';
|
$lang->success_registed = 'Registrado con éxito';
|
||||||
$lang->success_declared = 'Acusado con éxito';
|
$lang->success_declared = 'Denuncia registrada con éxito';
|
||||||
$lang->success_updated = 'Actualizado con éxito';
|
$lang->success_updated = 'Actualizado con éxito';
|
||||||
$lang->success_deleted = 'Boarrado con éxito';
|
$lang->success_deleted = 'Borrado con éxito';
|
||||||
$lang->success_voted = 'Recomendado con éxito';
|
$lang->success_voted = 'Voto a favor registrado con éxito';
|
||||||
$lang->success_blamed = 'Culpó success_blamed';
|
$lang->success_blamed = 'Voto en Contra registrado con éxito';
|
||||||
$lang->success_moved = 'Movido con éxito';
|
$lang->success_moved = 'Movido con éxito';
|
||||||
$lang->success_sended = 'Enviado con éxito';
|
$lang->success_sended = 'Enviado con éxito';
|
||||||
$lang->success_reset = 'Reajustado con éxito';
|
$lang->success_reset = 'Reajustado con éxito';
|
||||||
|
|
@ -205,68 +238,67 @@
|
||||||
$lang->fail_to_delete = 'No puede ser borrado';
|
$lang->fail_to_delete = 'No puede ser borrado';
|
||||||
$lang->fail_to_move = 'No puede ser movido';
|
$lang->fail_to_move = 'No puede ser movido';
|
||||||
|
|
||||||
$lang->failed_voted = 'No puede ser recomendado';
|
$lang->failed_voted = 'No puede dar Voto a favor';
|
||||||
$lang->failed_blamed = 'No se ha podido culpa ';
|
$lang->failed_blamed = 'No puede dar Voto en contra';
|
||||||
$lang->failed_declared = 'No se ha podido acusar';
|
$lang->failed_declared = 'No puede denunciar';
|
||||||
$lang->fail_to_delete_have_children = 'No puede ser borrado, ya que el mensaje posee respuestas ';
|
$lang->fail_to_delete_have_children = 'No puede eliminar lo publicado, por los escritos: mensajes, ecos, respuestas, recibidos';
|
||||||
|
|
||||||
$lang->confirm_submit = '¿Está seguro que desea enviar?';
|
$lang->confirm_submit = '¿Está seguro que desea enviar?';
|
||||||
$lang->confirm_logout = '¿Está seguro que desea desconectar?';
|
$lang->confirm_logout = '¿Está seguro que desea desconectar?';
|
||||||
$lang->confirm_vote = '¿Está seguro que desea recomendar?';
|
$lang->confirm_vote = '¿Está seguro que desea votar?';
|
||||||
$lang->confirm_delete = '¿Está seguro que desea borrar?';
|
$lang->confirm_delete = '¿Está seguro que desea eliminar?';
|
||||||
$lang->confirm_move = '¿Está seguro que desea mover?';
|
$lang->confirm_move = '¿Está seguro que desea mover?';
|
||||||
$lang->confirm_reset = '¿Está seguro que desea rehacer?';
|
$lang->confirm_reset = '¿Está seguro que desea rehacer?';
|
||||||
$lang->confirm_leave = '¿Está seguro que desea salir?';
|
$lang->confirm_leave = '¿Está seguro que desea abandonar?';
|
||||||
|
|
||||||
$lang->column_type = 'Tipos de Columnas';
|
$lang->column_type = 'Tipos de Columnas';
|
||||||
$lang->column_type_list['text'] = 'Texto de una linea';
|
$lang->column_type_list['text'] = 'Texto sin cambio de línea';
|
||||||
$lang->column_type_list['homepage'] = 'URL';
|
$lang->column_type_list['homepage'] = 'URL de la página web';
|
||||||
$lang->column_type_list['email_address'] = 'Correo Electrónico';
|
$lang->column_type_list['email_address'] = 'Correo Electrónico';
|
||||||
$lang->column_type_list['tel'] = 'Número de teléfono';
|
$lang->column_type_list['tel'] = 'Número de teléfono';
|
||||||
$lang->column_type_list['textarea'] = 'Texto multi-linea';
|
$lang->column_type_list['textarea'] = 'Texto multi-linea';
|
||||||
$lang->column_type_list['checkbox'] = 'Cuadro de chequeo (selecciónes múltiples)';
|
$lang->column_type_list['checkbox'] = 'Caja de chequeo (selección múltiple)';
|
||||||
$lang->column_type_list['select'] = 'Cuadro de selección (selección individual)';
|
$lang->column_type_list['select'] = 'Selección (selección individual)';
|
||||||
//$lang->column_type_list['kr_zip'] = 'zip code (Korean)';
|
//$lang->column_type_list['kr_zip'] = 'zip code (Korean)';
|
||||||
$lang->column_type_list['date'] = 'fecha (dd/mm/aaaa)';
|
$lang->column_type_list['date'] = 'fecha (dd/mm/aaaa)';
|
||||||
//$lang->column_type_list['jp_zip'] = 'zip code (Japanese)';
|
//$lang->column_type_list['jp_zip'] = 'zip code (Japanese)';
|
||||||
$lang->column_name = 'Nombre de la Columna';
|
$lang->column_name = 'Nombre de la Columna';
|
||||||
$lang->column_title = 'Título de la Columna';
|
$lang->column_title = 'Título de la Columna';
|
||||||
$lang->default_value = 'Valor Predefinido';
|
$lang->default_value = 'Valor por defecto';
|
||||||
$lang->is_active = 'Activado';
|
$lang->is_active = 'Activado';
|
||||||
$lang->is_required = 'Espacio requerido';
|
$lang->is_required = 'Requerido';
|
||||||
|
|
||||||
// ftp 관련
|
// ftp 관련
|
||||||
$lang->ftp_form_title = 'FTP 정보 입력';
|
$lang->ftp_form_title = 'Datos de conexión para FTP';
|
||||||
$lang->ftp = 'FTP';
|
$lang->ftp = 'FTP';
|
||||||
$lang->ftp_port = 'FTP port';
|
$lang->ftp_port = 'FTP port';
|
||||||
$lang->cmd_check_ftp_connect = 'FTP 접속 확인';
|
$lang->cmd_check_ftp_connect = 'conexión de FTP confirmada';
|
||||||
$lang->about_ftp_info = "
|
$lang->about_ftp_info = "
|
||||||
FTP 정보는 다음의 경우에 이용될 수 있습니다.<br/>
|
Los datos de conexión para FTP pueden ser utilizados en los siguientes casos.<br/>
|
||||||
1. PHP의 safe_mode=On일 경우에 FTP 정보를 이용해서 XE를 정상적으로 동작할 수 있게 합니다.<br/>
|
1. Cuando la variable safe_mode está activa[safe_mode=On], el XE puede utilizarlos para su funcionamiento normal.<br/>
|
||||||
2. 자동 업데이트등에서 FTP 정보를 이용할 수 있습니다.<br/>
|
2. Para la actualización automática.<br/>
|
||||||
이 FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
|
Estos datos de FTP se guardan en el fichero files/config/ftp.config.php <br/>
|
||||||
그리고 설치 후 관리자 페이지에서 FTP 정보를 변경하거나 제거할 수 있습니다.<br />
|
, y pueden ser borrados o modificados posteriormente en las páginas de administración.<br />
|
||||||
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
|
|
||||||
";
|
";
|
||||||
|
|
||||||
$lang->msg_safe_mode_ftp_needed = "PHP의 safe_mode가 On일 경우 FTP 정보를 꼭 입력해주셔야 XE의 설치 및 사용이 가능합니다";
|
$lang->msg_safe_mode_ftp_needed = "Si la la variable safe_mode está activa[safe_mode=On], debe rellenar los datos de FTP para seguir instalando y usar con normalidad el XE.";
|
||||||
$lang->msg_ftp_not_connected = "localhost로의 FTP 접속 오류가 발생하였습니다. ftp 포트 번호를 확인해주시거나 ftp 서비스가 가능한지 확인해주세요";
|
$lang->msg_ftp_not_connected = "Ha ocurrico un error de conexión al FTP del localhost. Verifique el puerto del FTP y/o el funcionamiento del servicio FTP.";
|
||||||
$lang->msg_ftp_invalid_auth_info = "입력하신 FTP 정보로 로그인을 하지 못했습니다. FTP정보를 확인해주세요";
|
$lang->msg_ftp_invalid_auth_info = "Los datos de login para el FTP no son correctos. Veriféquelos.";
|
||||||
$lang->msg_ftp_mkdir_fail = "FTP를 이용한 디렉토리 생성 명령을 실패하였습니다. FTP 서버의 설정을 확인해주세요";
|
$lang->msg_ftp_mkdir_fail = "Ha fallado el comando de FTP para la creación de directorio. Verifique la configuración del servicio FTP en el servidor";
|
||||||
$lang->msg_ftp_chmod_fail = "FTP를 이용한 디렉토리의 속성 변경을 실패하였습니다. FTP 서버의 설정을 확인해주세요";
|
$lang->msg_ftp_chmod_fail = "Ha fallado el comando de FTP para la modificación de atributos de directorio. Verifique la configuración del servicio FTP en el servidor.";
|
||||||
$lang->msg_ftp_connect_success = "FTP 접속 및 인증 성공하였습니다";
|
$lang->msg_ftp_connect_success = "conexión con éxito al FTP";
|
||||||
|
|
||||||
|
|
||||||
// Mensajes de alerta para Javascript usando el filtro XML
|
// Mensajes de alerta para Javascript usando el filtro XML
|
||||||
$lang->filter->isnull = 'Ingresar un valor para %s';
|
$lang->filter->isnull = 'Introduzca valor en el %s';
|
||||||
$lang->filter->outofrange = 'Ajustar el largo del texto de %s';
|
$lang->filter->outofrange = 'Se ha excedido el máximo número de letras permitido en el %s';
|
||||||
$lang->filter->equalto = 'Valor de %s es inválido.';
|
$lang->filter->equalto = 'Valor inválido en el %s';
|
||||||
$lang->filter->invalid_email = 'Formato de %s es inválido. (ej. zbxe@zeroboard.com)';
|
$lang->filter->invalid_email = 'Formato email inválido en el %s (ej. zbxe@zeroboard.com)';
|
||||||
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "Formato de %s es inválido.\\n Todos los valores deberá consistir en alfabetos, números o guión abajo(_) y la primera letra deberá ser en alfabeto Español";
|
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "Formato inválido en el %s.\\nSólo pueden introducir los alfabetos o los dígitos númericos o el guión bajo(_). Además, el primer valor sólo puede ser una letra de alfabeto";
|
||||||
$lang->filter->invalid_homepage = 'Formato de %s es inválido. (ej: http://www.zeroboard.com)';
|
$lang->filter->invalid_homepage = 'Formato url inválido en el %s (ej: http://www.zeroboard.com)';
|
||||||
$lang->filter->invalid_korean = 'Formato de %s es inválido. Ingresar ingresar sólo coreano';
|
$lang->filter->invalid_korean = 'Sólo puede introducir los caracteres coreanos en el %s';
|
||||||
$lang->filter->invalid_korean_number = 'Formato de %s es inválido. Ingresar coreano o números';
|
$lang->filter->invalid_korean_number = 'Sólo puede introducir los caracteres coreanos o números en el %s';
|
||||||
$lang->filter->invalid_alpha = 'Formato de %s es inválido. Ingresar sólo alfabetos';
|
$lang->filter->invalid_alpha = 'Sólo puede introducir los alfabetos en el %s';
|
||||||
$lang->filter->invalid_alpha_number = 'Formato de %s es inválido. Ingresar alfabetos o números';
|
$lang->filter->invalid_alpha_number = 'Sólo puede introducir los alfanuméricos en el %s es inválido';
|
||||||
$lang->filter->invalid_number = 'Formato de %s es inválido. Ingresar sólo números.';
|
$lang->filter->invalid_number = 'Sólo puede introducir los dígitos numéricos en el %s';
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,7 @@
|
||||||
$lang->cmd_layout_setup = 'Configurer la Mise en page';
|
$lang->cmd_layout_setup = 'Configurer la Mise en page';
|
||||||
$lang->cmd_layout_edit = 'Editer la Mise en page';
|
$lang->cmd_layout_edit = 'Editer la Mise en page';
|
||||||
$lang->cmd_search_by_ipaddress = 'Recherce par l\'Address IP';
|
$lang->cmd_search_by_ipaddress = 'Recherce par l\'Address IP';
|
||||||
|
$lang->cmd_add_ip_to_spamfilter = 'Add IP to spamfilter';
|
||||||
|
|
||||||
$lang->enable = 'Valide';
|
$lang->enable = 'Valide';
|
||||||
$lang->disable = 'Invalide';
|
$lang->disable = 'Invalide';
|
||||||
|
|
@ -170,6 +171,30 @@
|
||||||
$lang->unit_month = 'mois';
|
$lang->unit_month = 'mois';
|
||||||
$lang->unit_year = 'année';;
|
$lang->unit_year = 'année';;
|
||||||
|
|
||||||
|
$lang->unit_week = array(
|
||||||
|
'Monday' => 'Lundi',
|
||||||
|
'Tuesday' => 'Mardi',
|
||||||
|
'Wednesday' => 'Mer.',
|
||||||
|
'Thursday' => 'Jeu.',
|
||||||
|
'Friday' => 'Vendredi',
|
||||||
|
'Saturday' => 'Samedi',
|
||||||
|
'Sunday' => 'Dimanche',
|
||||||
|
);
|
||||||
|
|
||||||
|
$lang->unit_meridiem = array(
|
||||||
|
'am' => 'am',
|
||||||
|
'pm' => 'pm',
|
||||||
|
'AM' => 'AM',
|
||||||
|
'PM' => 'PM',
|
||||||
|
);
|
||||||
|
|
||||||
|
$lang->time_gap = array(
|
||||||
|
'min' => '%d heure',
|
||||||
|
'mins' => 'Il ya %d minutes',
|
||||||
|
'hour' => 'Il ya %d jour',
|
||||||
|
'hours' => 'Il ya %d jours',
|
||||||
|
);
|
||||||
|
|
||||||
// Descriptions et information
|
// Descriptions et information
|
||||||
$lang->about_tag = 'Vous pouvez enrégistrer plusieurs balises en utilisant ,(virgule) entre chaque balise';
|
$lang->about_tag = 'Vous pouvez enrégistrer plusieurs balises en utilisant ,(virgule) entre chaque balise';
|
||||||
$lang->about_layout = 'Le Mise en Page décore l\'apparence des modules. Vous pouvez les configurer avec le menu de Mise en Page en haut';
|
$lang->about_layout = 'Le Mise en Page décore l\'apparence des modules. Vous pouvez les configurer avec le menu de Mise en Page en haut';
|
||||||
|
|
@ -177,6 +202,7 @@
|
||||||
// Messages et alertes
|
// Messages et alertes
|
||||||
$lang->msg_call_server = 'En demandant sur le serveur, attendez S.V.P.';
|
$lang->msg_call_server = 'En demandant sur le serveur, attendez S.V.P.';
|
||||||
$lang->msg_db_not_setted = 'La configuration de Base de Données n\'a pas été établie.';
|
$lang->msg_db_not_setted = 'La configuration de Base de Données n\'a pas été établie.';
|
||||||
|
$lang->msg_dbconnect_failed = "Erreur a lieu en essayant connecter à la Base de Données.\nVérifiez encore une fois les informations sur la Base de Données, S.V.P.";
|
||||||
$lang->msg_invalid_queryid = 'La valeur spécifiée d\'identite de query est invalide.';
|
$lang->msg_invalid_queryid = 'La valeur spécifiée d\'identite de query est invalide.';
|
||||||
$lang->msg_not_permitted = 'Vous n\'avez pas le droit d\'accès.';
|
$lang->msg_not_permitted = 'Vous n\'avez pas le droit d\'accès.';
|
||||||
$lang->msg_input_password = 'Veuillez entrer votre mot de passe.';
|
$lang->msg_input_password = 'Veuillez entrer votre mot de passe.';
|
||||||
|
|
@ -247,7 +273,6 @@
|
||||||
2. 자동 업데이트등에서 FTP 정보를 이용할 수 있습니다.<br/>
|
2. 자동 업데이트등에서 FTP 정보를 이용할 수 있습니다.<br/>
|
||||||
이 FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
|
이 FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
|
||||||
그리고 설치 후 관리자 페이지에서 FTP 정보를 변경하거나 제거할 수 있습니다.<br />
|
그리고 설치 후 관리자 페이지에서 FTP 정보를 변경하거나 제거할 수 있습니다.<br />
|
||||||
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
|
|
||||||
";
|
";
|
||||||
|
|
||||||
$lang->msg_safe_mode_ftp_needed = "PHP의 safe_mode가 On일 경우 FTP 정보를 꼭 입력해주셔야 XE의 설치 및 사용이 가능합니다";
|
$lang->msg_safe_mode_ftp_needed = "PHP의 safe_mode가 On일 경우 FTP 정보를 꼭 입력해주셔야 XE의 설치 및 사용이 가능합니다";
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,8 @@
|
||||||
$lang->cmd_publish = 'Veröffentlichen';
|
$lang->cmd_publish = 'Veröffentlichen';
|
||||||
$lang->cmd_layout_setup = 'Konfiguration Layout';
|
$lang->cmd_layout_setup = 'Konfiguration Layout';
|
||||||
$lang->cmd_layout_edit = 'Layout bearbeiten';
|
$lang->cmd_layout_edit = 'Layout bearbeiten';
|
||||||
$lang->cmd_search_by_ipaddress = 'IP주소로 검색';
|
$lang->cmd_search_by_ipaddress = 'Search by IP Address';
|
||||||
|
$lang->cmd_add_ip_to_spamfilter = 'Add IP to spamfilter';
|
||||||
|
|
||||||
$lang->enable = 'Aktivieren';
|
$lang->enable = 'Aktivieren';
|
||||||
$lang->deaktivieren = 'Deaktivieren';
|
$lang->deaktivieren = 'Deaktivieren';
|
||||||
|
|
@ -170,13 +171,38 @@
|
||||||
$lang->unit_month = 'Monat';
|
$lang->unit_month = 'Monat';
|
||||||
$lang->unit_year = 'Jahr';
|
$lang->unit_year = 'Jahr';
|
||||||
|
|
||||||
|
$lang->unit_week = array(
|
||||||
|
'Monday' => 'Montag',
|
||||||
|
'Tuesday' => 'Dienstag',
|
||||||
|
'Wednesday' => 'Mittwoch',
|
||||||
|
'Thursday' => 'Donnerstag',
|
||||||
|
'Friday' => 'Freitag',
|
||||||
|
'Saturday' => 'Samstag',
|
||||||
|
'Sunday' => 'Sonntag',
|
||||||
|
);
|
||||||
|
|
||||||
|
$lang->unit_meridiem = array(
|
||||||
|
'am' => 'am',
|
||||||
|
'pm' => 'pm',
|
||||||
|
'AM' => 'AM',
|
||||||
|
'PM' => 'PM',
|
||||||
|
);
|
||||||
|
|
||||||
|
$lang->time_gap = array(
|
||||||
|
'min' => 'Vor %d Minute',
|
||||||
|
'mins' => '%d Stunden',
|
||||||
|
'hour' => '%d Tag',
|
||||||
|
'hours' => '%d Tage',
|
||||||
|
);
|
||||||
|
|
||||||
// Beschreibungen
|
// Beschreibungen
|
||||||
$lang->about_tag = 'Sie können mehrere Tags, indem Sie ein Komma (,) zwischen den einzelnen Tag';
|
$lang->about_tag = 'Sie können mehrere Tags, indem Sie ein Komma (,) zwischen den einzelnen Tag';
|
||||||
$lang->about_layout = 'Layouts schmücken das Aussehen Ihrer Module. Sie können sie von Layout-Menü am oberen Rand ';
|
$lang->about_layout = 'Layouts schmücken das Aussehen Ihrer Module. Sie können sie von Layout-Menü am oberen Rand ';
|
||||||
|
|
||||||
// Messages
|
// Messages
|
||||||
$lang->msg_call_server = 'Anfordern an den Server, bitte warten';
|
$lang->msg_call_server = 'Anfordern an den Server, bitte warten';
|
||||||
$lang->msg_db_not_setted = 'DB-Konfiguration wurde nicht festgelegt ';
|
$lang->msg_db_not_setted = 'DB-Konfiguration wurde nicht festgelegt';
|
||||||
|
$lang->msg_dbconnect_failed = "Error has occurred while connecting DB.\nPlease check DB information again"; // TODO:translation en -> ge
|
||||||
$lang->msg_invalid_queryid = 'spezifiziert Abfrage ID-Wert ist ungültig';
|
$lang->msg_invalid_queryid = 'spezifiziert Abfrage ID-Wert ist ungültig';
|
||||||
$lang->msg_not_permitted = 'Sie haben keine Berechtigung zum Zugriff auf';
|
$lang->msg_not_permitted = 'Sie haben keine Berechtigung zum Zugriff auf';
|
||||||
$lang->msg_input_password = 'Bitte geben Sie das Passwort';
|
$lang->msg_input_password = 'Bitte geben Sie das Passwort';
|
||||||
|
|
@ -247,7 +273,6 @@
|
||||||
2. 자동 업데이트등에서 FTP 정보를 이용할 수 있습니다.<br/>
|
2. 자동 업데이트등에서 FTP 정보를 이용할 수 있습니다.<br/>
|
||||||
이 FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
|
이 FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
|
||||||
그리고 설치 후 관리자 페이지에서 FTP 정보를 변경하거나 제거할 수 있습니다.<br />
|
그리고 설치 후 관리자 페이지에서 FTP 정보를 변경하거나 제거할 수 있습니다.<br />
|
||||||
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
|
|
||||||
";
|
";
|
||||||
|
|
||||||
$lang->msg_safe_mode_ftp_needed = "PHP의 safe_mode가 On일 경우 FTP 정보를 꼭 입력해주셔야 XE의 설치 및 사용이 가능합니다";
|
$lang->msg_safe_mode_ftp_needed = "PHP의 safe_mode가 On일 경우 FTP 정보를 꼭 입력해주셔야 XE의 설치 및 사용이 가능합니다";
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,8 @@
|
||||||
$lang->cmd_publish = "発行";
|
$lang->cmd_publish = "発行";
|
||||||
$lang->cmd_layout_setup = 'レイアウト設定';
|
$lang->cmd_layout_setup = 'レイアウト設定';
|
||||||
$lang->cmd_layout_edit = 'レイアウト編集';
|
$lang->cmd_layout_edit = 'レイアウト編集';
|
||||||
$lang->cmd_search_by_ipaddress = 'IP주소로 검색';
|
$lang->cmd_search_by_ipaddress = 'IPアドレスで検索';
|
||||||
|
$lang->cmd_add_ip_to_spamfilter = 'スパムフィルターにIPを追加';
|
||||||
|
|
||||||
$lang->enable = '可能';
|
$lang->enable = '可能';
|
||||||
$lang->disable = '不可';
|
$lang->disable = '不可';
|
||||||
|
|
@ -72,10 +73,10 @@
|
||||||
$lang->notice = 'お知らせ';
|
$lang->notice = 'お知らせ';
|
||||||
$lang->secret = '非公開';
|
$lang->secret = '非公開';
|
||||||
$lang->category = $lang->category_srl = 'カテゴリ';
|
$lang->category = $lang->category_srl = 'カテゴリ';
|
||||||
$lang->none_category = 'None category';
|
$lang->none_category = 'カテゴリ無し';
|
||||||
$lang->document_srl = '書き込み番号';
|
$lang->document_srl = '書き込み番号';
|
||||||
$lang->user_id = 'ユーザID';
|
$lang->user_id = 'ユーザID';
|
||||||
$lang->author = '作者';
|
$lang->author = '作成者';
|
||||||
$lang->password = 'パスワード';
|
$lang->password = 'パスワード';
|
||||||
$lang->password1 = 'パスワード';
|
$lang->password1 = 'パスワード';
|
||||||
$lang->password2 = 'パスワード確認';
|
$lang->password2 = 'パスワード確認';
|
||||||
|
|
@ -133,7 +134,7 @@
|
||||||
$lang->page_count = 'ページ数';
|
$lang->page_count = 'ページ数';
|
||||||
$lang->list_count = 'リスト数';
|
$lang->list_count = 'リスト数';
|
||||||
$lang->search_list_count = '検索リスト数';
|
$lang->search_list_count = '検索リスト数';
|
||||||
$lang->readed_count = '照合数';
|
$lang->readed_count = '閲覧数';
|
||||||
$lang->voted_count = '推薦数';
|
$lang->voted_count = '推薦数';
|
||||||
$lang->comment_count = 'コメント数';
|
$lang->comment_count = 'コメント数';
|
||||||
$lang->member_count = '会員数';
|
$lang->member_count = '会員数';
|
||||||
|
|
@ -159,8 +160,8 @@
|
||||||
$lang->notuse = '未使用';
|
$lang->notuse = '未使用';
|
||||||
$lang->not_exists = 'なし';
|
$lang->not_exists = 'なし';
|
||||||
|
|
||||||
$lang->public = 'public';
|
$lang->public = '公開';
|
||||||
$lang->private = 'private';
|
$lang->private = '非公開';
|
||||||
|
|
||||||
$lang->unit_sec = '秒';
|
$lang->unit_sec = '秒';
|
||||||
$lang->unit_min = '分';
|
$lang->unit_min = '分';
|
||||||
|
|
@ -170,13 +171,38 @@
|
||||||
$lang->unit_month = '月';
|
$lang->unit_month = '月';
|
||||||
$lang->unit_year = '年';
|
$lang->unit_year = '年';
|
||||||
|
|
||||||
// 説明関連
|
$lang->unit_week = array(
|
||||||
|
'Monday' => '月',
|
||||||
|
'Tuesday' => '火',
|
||||||
|
'Wednesday' => '水',
|
||||||
|
'Thursday' => '木',
|
||||||
|
'Friday' => '金',
|
||||||
|
'Saturday' => '土',
|
||||||
|
'Sunday' => '日',
|
||||||
|
);
|
||||||
|
|
||||||
|
$lang->unit_meridiem = array(
|
||||||
|
'am' => '午前',
|
||||||
|
'pm' => '午後',
|
||||||
|
'AM' => '午前',
|
||||||
|
'PM' => '午後',
|
||||||
|
);
|
||||||
|
|
||||||
|
$lang->time_gap = array(
|
||||||
|
'min' => '%d 分前',
|
||||||
|
'mins' => '%d 分前',
|
||||||
|
'hour' => '%d 時間前',
|
||||||
|
'hours' => '%d 時間前',
|
||||||
|
);
|
||||||
|
|
||||||
|
// 説明関連
|
||||||
$lang->about_tag = 'タグを入力する時、「,」(半角コンマ)を使うと複数登録できます。';
|
$lang->about_tag = 'タグを入力する時、「,」(半角コンマ)を使うと複数登録できます。';
|
||||||
$lang->about_layout = 'レイアウトでモジュールの枠をデザインします。上段のレイアウトメニューで管理できます。';
|
$lang->about_layout = 'レイアウトでモジュールの枠をデザインします。上段のレイアウトメニューで管理できます。';
|
||||||
|
|
||||||
// メッセージ関連
|
// メッセージ関連
|
||||||
$lang->msg_call_server = 'サーバへ問合わせ中です。しばらくお待ちください。';
|
$lang->msg_call_server = 'サーバへ問合わせ中です。しばらくお待ちください。';
|
||||||
$lang->msg_db_not_setted = 'DBが設定されていません。';
|
$lang->msg_db_not_setted = 'DBが設定されていません。';
|
||||||
|
$lang->msg_dbconnect_failed = "データベースアクセスにエラーが発生しました。\nデータベースの情報をもう一度確認してください。";
|
||||||
$lang->msg_invalid_queryid = 'クエリIDの値が無効です。';
|
$lang->msg_invalid_queryid = 'クエリIDの値が無効です。';
|
||||||
$lang->msg_not_permitted = '権限がありません。';
|
$lang->msg_not_permitted = '権限がありません。';
|
||||||
$lang->msg_input_password = 'パスワードを入力してください。';
|
$lang->msg_input_password = 'パスワードを入力してください。';
|
||||||
|
|
@ -196,7 +222,7 @@
|
||||||
$lang->success_updated = '修正しました。';
|
$lang->success_updated = '修正しました。';
|
||||||
$lang->success_deleted = '削除しました。';
|
$lang->success_deleted = '削除しました。';
|
||||||
$lang->success_voted = '推薦しました。';
|
$lang->success_voted = '推薦しました。';
|
||||||
$lang->success_blamed = 'Blamed success_blamed';
|
$lang->success_blamed = '非推薦しました。';
|
||||||
$lang->success_moved = '移動しました。';
|
$lang->success_moved = '移動しました。';
|
||||||
$lang->success_sended = '送信しました。';
|
$lang->success_sended = '送信しました。';
|
||||||
$lang->success_reset = '初期化しました。';
|
$lang->success_reset = '初期化しました。';
|
||||||
|
|
@ -207,7 +233,7 @@
|
||||||
$lang->fail_to_move = '移動に失敗しました。';
|
$lang->fail_to_move = '移動に失敗しました。';
|
||||||
|
|
||||||
$lang->failed_voted = '推薦できません。';
|
$lang->failed_voted = '推薦できません。';
|
||||||
$lang->failed_blamed = 'Could not blame';
|
$lang->failed_blamed = '非推薦できません。';
|
||||||
$lang->failed_declared = '通報できません。';
|
$lang->failed_declared = '通報できません。';
|
||||||
$lang->fail_to_delete_have_children = '返信の書き込みがあり、削除できません。';
|
$lang->fail_to_delete_have_children = '返信の書き込みがあり、削除できません。';
|
||||||
|
|
||||||
|
|
@ -221,8 +247,8 @@
|
||||||
|
|
||||||
$lang->column_type = 'タイプ';
|
$lang->column_type = 'タイプ';
|
||||||
$lang->column_type_list['text'] = '入力フィールド(text)';
|
$lang->column_type_list['text'] = '入力フィールド(text)';
|
||||||
$lang->column_type_list['homepage'] = 'ホームページタイプ(url)';
|
$lang->column_type_list['homepage'] = 'URLタイプ(url)';
|
||||||
$lang->column_type_list['email_address'] = 'メールタイプ(email)';
|
$lang->column_type_list['email_address'] = 'メールアドレスタイプ(email)';
|
||||||
$lang->column_type_list['tel'] = '電話番号タイプ(phone)';
|
$lang->column_type_list['tel'] = '電話番号タイプ(phone)';
|
||||||
$lang->column_type_list['textarea'] = 'テキストエリア(textarea)';
|
$lang->column_type_list['textarea'] = 'テキストエリア(textarea)';
|
||||||
$lang->column_type_list['checkbox'] = 'チェックボックス(checkbox)';
|
$lang->column_type_list['checkbox'] = 'チェックボックス(checkbox)';
|
||||||
|
|
@ -237,37 +263,36 @@
|
||||||
$lang->is_required = '必須項目';
|
$lang->is_required = '必須項目';
|
||||||
|
|
||||||
// ftp 관련
|
// ftp 관련
|
||||||
$lang->ftp_form_title = 'FTP 정보 입력';
|
$lang->ftp_form_title = 'FTP情報の入力';
|
||||||
$lang->ftp = 'FTP';
|
$lang->ftp = 'FTP';
|
||||||
$lang->ftp_port = 'FTP port';
|
$lang->ftp_port = 'FTP port';
|
||||||
$lang->cmd_check_ftp_connect = 'FTP 접속 확인';
|
$lang->cmd_check_ftp_connect = 'FTP接続確認';
|
||||||
$lang->about_ftp_info = "
|
$lang->about_ftp_info = "
|
||||||
FTP 정보는 다음의 경우에 이용될 수 있습니다.<br/>
|
FTP情報は次の場合、利用されます。<br/>
|
||||||
1. PHP의 safe_mode=On일 경우에 FTP 정보를 이용해서 XE를 정상적으로 동작할 수 있게 합니다.<br/>
|
1. PHPの safe_mode=Onになった際、FTP情報を用いてゼロボードXEが正常に動きます。<br/>
|
||||||
2. 자동 업데이트등에서 FTP 정보를 이용할 수 있습니다.<br/>
|
2. 自動アップデート等で、FTP情報が使われます。<br/>
|
||||||
이 FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
|
FTP情報は files/config/ftp.config.php の中に保存されます。<br/>
|
||||||
그리고 설치 후 관리자 페이지에서 FTP 정보를 변경하거나 제거할 수 있습니다.<br />
|
また、ゼロボードXEのインストールの後、管理者画面からFTP情報の変更・削除が可能です。 <br />
|
||||||
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
|
|
||||||
";
|
";
|
||||||
|
|
||||||
$lang->msg_safe_mode_ftp_needed = "PHP의 safe_mode가 On일 경우 FTP 정보를 꼭 입력해주셔야 XE의 설치 및 사용이 가능합니다";
|
$lang->msg_safe_mode_ftp_needed = "PHPのsafe_modeがOnの場合、FTP情報を登録することで、ゼロボードXEのインストール及び利用が可能になります。";
|
||||||
$lang->msg_ftp_not_connected = "localhost로의 FTP 접속 오류가 발생하였습니다. ftp 포트 번호를 확인해주시거나 ftp 서비스가 가능한지 확인해주세요";
|
$lang->msg_ftp_not_connected = "localhostへのFTP接続エラーが発生しました。FTPポート(port)番号をはじめ、FTPサービスが可能であるかをご確認下さい。";
|
||||||
$lang->msg_ftp_invalid_auth_info = "입력하신 FTP 정보로 로그인을 하지 못했습니다. FTP정보를 확인해주세요";
|
$lang->msg_ftp_invalid_auth_info = "ログインが失敗しました。 FTP情報を再度ご確認下さい。";
|
||||||
$lang->msg_ftp_mkdir_fail = "FTP를 이용한 디렉토리 생성 명령을 실패하였습니다. FTP 서버의 설정을 확인해주세요";
|
$lang->msg_ftp_mkdir_fail = "FTPを用いたディレクトリ生成に失敗しました。FTPサーバーの設定を再度ご確認ください。";
|
||||||
$lang->msg_ftp_chmod_fail = "FTP를 이용한 디렉토리의 속성 변경을 실패하였습니다. FTP 서버의 설정을 확인해주세요";
|
$lang->msg_ftp_chmod_fail = "FTPを用いたディレクトリパーミッション(permission)変更に失敗しました。FTPサーバーの設定を再度ご確認ください。";
|
||||||
$lang->msg_ftp_connect_success = "FTP 접속 및 인증 성공하였습니다";
|
$lang->msg_ftp_connect_success = "FTP接続に成功しました。";
|
||||||
|
|
||||||
|
|
||||||
// xml filterで用いられているjavascript用のアラートメッセージ
|
// xml filterで用いられているjavascript用のアラートメッセージ
|
||||||
$lang->filter->isnull = '%sを入力してください';
|
$lang->filter->isnull = '%sを入力して下さい。';
|
||||||
$lang->filter->outofrange = '%sの文字の長さを合わせてください';
|
$lang->filter->outofrange = '%sの文字の長さを合わせて下さい。';
|
||||||
$lang->filter->equalto = '%sが正しくありません';
|
$lang->filter->equalto = '%sが正しくありません。';
|
||||||
$lang->filter->invalid_email = '%sのパターンが正しくありません (例: zbxe@zeroboard.com)';
|
$lang->filter->invalid_email = '%sのパターンが正しくありません。 (例: zbxe@zeroboard.com)';
|
||||||
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "%sの形式が正しくありません。\\n半角の英数と記号「_」を組み合わせて入力してください。頭字は半角英文字でなければなりません。";
|
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "%sの形式が正しくありません。\\n半角の英数と記号「_」を組み合わせて入力してください。頭字は半角英文字でなければなりません。";
|
||||||
$lang->filter->invalid_homepage = '%sの形式が正しくありません (例: http://www.zeroboard.com)';
|
$lang->filter->invalid_homepage = '%sの形式が正しくありません。 (例: http://www.zeroboard.com)';
|
||||||
$lang->filter->invalid_korean = '%sの形式が正しくありません。ハングルのみ入力してください。';
|
$lang->filter->invalid_korean = '%sの形式が正しくありません。ハングルのみ入力して下さい。';
|
||||||
$lang->filter->invalid_korean_number = '%sの形式が正しくありません。ハングルと半角数字で入力してください。';
|
$lang->filter->invalid_korean_number = '%sの形式が正しくありません。ハングルと半角数字で入力して下さい。';
|
||||||
$lang->filter->invalid_alpha = '%sの形式が正しくありません。半角英文字のみ入力してください。';
|
$lang->filter->invalid_alpha = '%sの形式が正しくありません。半角英文字のみ入力して下さい。';
|
||||||
$lang->filter->invalid_alpha_number = '%sの形式が正しくありません。半角英数で入力してください。';
|
$lang->filter->invalid_alpha_number = '%sの形式が正しくありません。半角英数で入力して下さい。';
|
||||||
$lang->filter->invalid_number = '%sの形式が正しくありません。半角数字で入力してください。';
|
$lang->filter->invalid_number = '%sの形式が正しくありません。半角数字で入力して下さい。';
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -1,272 +1,297 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @file common/lang/ko.lang.php
|
* @file common/lang/ko.lang.php
|
||||||
* @author zero (zero@nzeo.com)
|
* @author zero (zero@nzeo.com)
|
||||||
* @brief 한국어 언어팩 (기본적인 내용만 수록)
|
* @brief 한국어 언어팩 (기본적인 내용만 수록)
|
||||||
**/
|
**/
|
||||||
|
|
||||||
// 기본적으로 사용되는 action 언어
|
// 기본적으로 사용되는 action 언어
|
||||||
$lang->cmd_write = '쓰기';
|
$lang->cmd_write = '쓰기';
|
||||||
$lang->cmd_reply = '답글';
|
$lang->cmd_reply = '답글';
|
||||||
$lang->cmd_delete = '삭제';
|
$lang->cmd_delete = '삭제';
|
||||||
$lang->cmd_modify = '수정';
|
$lang->cmd_modify = '수정';
|
||||||
$lang->cmd_edit = '편집';
|
$lang->cmd_edit = '편집';
|
||||||
$lang->cmd_view = '보기';
|
$lang->cmd_view = '보기';
|
||||||
$lang->cmd_view_all = '전체 보기';
|
$lang->cmd_view_all = '전체 보기';
|
||||||
$lang->cmd_list = '목록';
|
$lang->cmd_list = '목록';
|
||||||
$lang->cmd_prev = '이전';
|
$lang->cmd_prev = '이전';
|
||||||
$lang->cmd_next = '다음';
|
$lang->cmd_next = '다음';
|
||||||
$lang->cmd_send_trackback = '엮인글발송';
|
$lang->cmd_send_trackback = '엮인글발송';
|
||||||
$lang->cmd_registration = $lang->cmd_submit = '등록';
|
$lang->cmd_registration = $lang->cmd_submit = '등록';
|
||||||
$lang->cmd_comment_registration = '댓글 등록';
|
$lang->cmd_comment_registration = '댓글 등록';
|
||||||
$lang->cmd_insert = '추가';
|
$lang->cmd_insert = '추가';
|
||||||
$lang->cmd_save = '저장';
|
$lang->cmd_save = '저장';
|
||||||
$lang->cmd_load = '불러오기';
|
$lang->cmd_load = '불러오기';
|
||||||
$lang->cmd_input = '입력';
|
$lang->cmd_input = '입력';
|
||||||
$lang->cmd_search = '검색';
|
$lang->cmd_search = '검색';
|
||||||
$lang->cmd_cancel = '취소';
|
$lang->cmd_cancel = '취소';
|
||||||
$lang->cmd_back = '돌아가기';
|
$lang->cmd_back = '돌아가기';
|
||||||
$lang->cmd_vote = '추천';
|
$lang->cmd_vote = '추천';
|
||||||
$lang->cmd_vote_down = '비추천';
|
$lang->cmd_vote_down = '비추천';
|
||||||
$lang->cmd_declare = '신고';
|
$lang->cmd_declare = '신고';
|
||||||
$lang->cmd_cancel_declare = '신고 취소';
|
$lang->cmd_cancel_declare = '신고 취소';
|
||||||
$lang->cmd_declared_list = '신고 목록';
|
$lang->cmd_declared_list = '신고 목록';
|
||||||
$lang->cmd_copy = '복사';
|
$lang->cmd_copy = '복사';
|
||||||
$lang->cmd_move = '이동';
|
$lang->cmd_move = '이동';
|
||||||
$lang->cmd_move_up = '위로';
|
$lang->cmd_move_up = '위로';
|
||||||
$lang->cmd_move_down = '아래로';
|
$lang->cmd_move_down = '아래로';
|
||||||
$lang->cmd_add_indent = '들이기';
|
$lang->cmd_add_indent = '들이기';
|
||||||
$lang->cmd_remove_indent = '빼내기';
|
$lang->cmd_remove_indent = '빼내기';
|
||||||
$lang->cmd_management = '관리';
|
$lang->cmd_management = '관리';
|
||||||
$lang->cmd_make = '생성';
|
$lang->cmd_make = '생성';
|
||||||
$lang->cmd_select = '선택';
|
$lang->cmd_select = '선택';
|
||||||
$lang->cmd_select_all = '모두선택';
|
$lang->cmd_select_all = '모두선택';
|
||||||
$lang->cmd_unselect_all = '모두해제';
|
$lang->cmd_unselect_all = '모두해제';
|
||||||
$lang->cmd_reverse_all = "선택반전";
|
$lang->cmd_reverse_all = "선택반전";
|
||||||
$lang->cmd_close_all = '모두닫기';
|
$lang->cmd_close_all = '모두닫기';
|
||||||
$lang->cmd_open_all = '모두열기';
|
$lang->cmd_open_all = '모두열기';
|
||||||
$lang->cmd_reload = '다시읽기';
|
$lang->cmd_reload = '다시읽기';
|
||||||
$lang->cmd_close = '닫기';
|
$lang->cmd_close = '닫기';
|
||||||
$lang->cmd_open = '열기';
|
$lang->cmd_open = '열기';
|
||||||
$lang->cmd_setup = '설정';
|
$lang->cmd_setup = '설정';
|
||||||
$lang->cmd_addition_setup = '추가 설정';
|
$lang->cmd_addition_setup = '추가 설정';
|
||||||
$lang->cmd_option = '옵션';
|
$lang->cmd_option = '옵션';
|
||||||
$lang->cmd_apply = '적용';
|
$lang->cmd_apply = '적용';
|
||||||
$lang->cmd_open_calendar = '날짜 선택';
|
$lang->cmd_open_calendar = '날짜 선택';
|
||||||
$lang->cmd_send = '발송';
|
$lang->cmd_send = '발송';
|
||||||
$lang->cmd_print = '인쇄';
|
$lang->cmd_print = '인쇄';
|
||||||
$lang->cmd_scrap = '스크랩';
|
$lang->cmd_scrap = '스크랩';
|
||||||
$lang->cmd_preview = '미리 보기';
|
$lang->cmd_preview = '미리 보기';
|
||||||
$lang->cmd_reset = '초기화';
|
$lang->cmd_reset = '초기화';
|
||||||
$lang->cmd_remake_cache = "캐시파일 재생성";
|
$lang->cmd_remake_cache = "캐시파일 재생성";
|
||||||
$lang->cmd_publish = "발행";
|
$lang->cmd_publish = "발행";
|
||||||
$lang->cmd_layout_setup = '레이아웃 설정';
|
$lang->cmd_layout_setup = '레이아웃 설정';
|
||||||
$lang->cmd_layout_edit = '레이아웃 편집';
|
$lang->cmd_layout_edit = '레이아웃 편집';
|
||||||
$lang->cmd_search_by_ipaddress = 'IP주소로 검색';
|
$lang->cmd_search_by_ipaddress = 'IP주소로 검색';
|
||||||
|
$lang->cmd_add_ip_to_spamfilter = '스팸필터에 IP추가';
|
||||||
$lang->enable = '가능';
|
|
||||||
$lang->disable = '불가능';
|
$lang->enable = '가능';
|
||||||
|
$lang->disable = '불가능';
|
||||||
// 기본 단어
|
|
||||||
$lang->no = '번호';
|
// 기본 단어
|
||||||
$lang->notice = '공지';
|
$lang->no = '번호';
|
||||||
$lang->secret = '비밀';
|
$lang->notice = '공지';
|
||||||
$lang->category = $lang->category_srl = '분류';
|
$lang->secret = '비밀';
|
||||||
$lang->none_category = '분류 없음';
|
$lang->category = $lang->category_srl = '분류';
|
||||||
$lang->document_srl = '문서번호';
|
$lang->none_category = '분류 없음';
|
||||||
$lang->user_id = '아이디';
|
$lang->document_srl = '문서번호';
|
||||||
$lang->author = '작성자';
|
$lang->user_id = '아이디';
|
||||||
$lang->password = '비밀번호';
|
$lang->author = '작성자';
|
||||||
$lang->password1 = '비밀번호';
|
$lang->password = '비밀번호';
|
||||||
$lang->password2 = '비밀번호 확인';
|
$lang->password1 = '비밀번호';
|
||||||
$lang->admin_id = '관리자ID';
|
$lang->password2 = '비밀번호 확인';
|
||||||
$lang->writer = '글쓴이';
|
$lang->admin_id = '관리자ID';
|
||||||
$lang->user_name = '이름';
|
$lang->writer = '글쓴이';
|
||||||
$lang->nick_name = '닉네임';
|
$lang->user_name = '이름';
|
||||||
$lang->email_address = '이메일 주소';
|
$lang->nick_name = '닉네임';
|
||||||
$lang->homepage = '홈페이지';
|
$lang->email_address = '이메일 주소';
|
||||||
$lang->blog = '블로그';
|
$lang->homepage = '홈페이지';
|
||||||
$lang->birthday = '생일';
|
$lang->blog = '블로그';
|
||||||
$lang->browser_title = '브라우저 제목';
|
$lang->birthday = '생일';
|
||||||
$lang->title = '제목';
|
$lang->browser_title = '브라우저 제목';
|
||||||
$lang->title_content = '제목+내용';
|
$lang->title = '제목';
|
||||||
$lang->topic = '주제';
|
$lang->title_content = '제목+내용';
|
||||||
$lang->replies = '응답';
|
$lang->topic = '주제';
|
||||||
$lang->content = '내용';
|
$lang->replies = '댓글';
|
||||||
$lang->document = '게시물';
|
$lang->content = '내용';
|
||||||
$lang->comment = '댓글';
|
$lang->document = '게시물';
|
||||||
$lang->description = '설명';
|
$lang->comment = '댓글';
|
||||||
$lang->trackback = '엮인글';
|
$lang->description = '설명';
|
||||||
$lang->tag = '태그';
|
$lang->trackback = '엮인글';
|
||||||
$lang->allow_comment = '댓글허용';
|
$lang->tag = '태그';
|
||||||
$lang->lock_comment = '댓글잠금';
|
$lang->allow_comment = '댓글허용';
|
||||||
$lang->allow_trackback = '엮인글허용';
|
$lang->lock_comment = '댓글잠금';
|
||||||
$lang->uploaded_file = '첨부';
|
$lang->allow_trackback = '엮인글허용';
|
||||||
$lang->grant = '권한';
|
$lang->uploaded_file = '첨부';
|
||||||
$lang->target = '대상';
|
$lang->grant = '권한';
|
||||||
$lang->total = '전체';
|
$lang->target = '대상';
|
||||||
$lang->total_count = '전체개수';
|
$lang->total = '전체';
|
||||||
$lang->ipaddress = 'IP 주소';
|
$lang->total_count = '전체개수';
|
||||||
$lang->path = '경로';
|
$lang->ipaddress = 'IP 주소';
|
||||||
$lang->cart = '선택항목';
|
$lang->path = '경로';
|
||||||
$lang->friend = '친구';
|
$lang->cart = '선택항목';
|
||||||
$lang->notify = '알림';
|
$lang->friend = '친구';
|
||||||
$lang->order_target = '정렬대상';
|
$lang->notify = '알림';
|
||||||
$lang->order_type = '정렬방법';
|
$lang->order_target = '정렬대상';
|
||||||
$lang->order_asc = '올림차순';
|
$lang->order_type = '정렬방법';
|
||||||
$lang->order_desc = '내림차순';
|
$lang->order_asc = '올림차순';
|
||||||
|
$lang->order_desc = '내림차순';
|
||||||
$lang->mid = '모듈이름';
|
|
||||||
$lang->layout = '레이아웃';
|
$lang->mid = '모듈이름';
|
||||||
$lang->widget = '위젯 ';
|
$lang->layout = '레이아웃';
|
||||||
$lang->module = '모듈';
|
$lang->widget = '위젯 ';
|
||||||
$lang->skin = '스킨';
|
$lang->module = '모듈';
|
||||||
$lang->colorset = '컬러셋';
|
$lang->skin = '스킨';
|
||||||
$lang->extra_vars = '확장변수';
|
$lang->colorset = '컬러셋';
|
||||||
|
$lang->extra_vars = '확장변수';
|
||||||
$lang->document_url = '게시글 주소';
|
|
||||||
$lang->trackback_url = '엮인글 주소';
|
$lang->document_url = '게시글 주소';
|
||||||
$lang->blog_name = '블로그이름';
|
$lang->trackback_url = '엮인글 주소';
|
||||||
$lang->excerpt = '발췌';
|
$lang->blog_name = '블로그이름';
|
||||||
|
$lang->excerpt = '발췌';
|
||||||
$lang->document_count = '글수';
|
|
||||||
$lang->page_count = '페이지수';
|
$lang->document_count = '글수';
|
||||||
$lang->list_count = '목록 수';
|
$lang->page_count = '페이지수';
|
||||||
$lang->search_list_count = '검색 목록 수';
|
$lang->list_count = '목록 수';
|
||||||
$lang->readed_count = '조회수';
|
$lang->search_list_count = '검색 목록 수';
|
||||||
$lang->voted_count = '추천수';
|
$lang->readed_count = '조회수';
|
||||||
$lang->comment_count = '댓글수';
|
$lang->voted_count = '추천수';
|
||||||
$lang->member_count = '회원수';
|
$lang->comment_count = '댓글수';
|
||||||
$lang->date = '날짜';
|
$lang->member_count = '회원수';
|
||||||
$lang->regdate = '등록일';
|
$lang->date = '날짜';
|
||||||
$lang->last_update = '최근 수정일';
|
$lang->regdate = '등록일';
|
||||||
$lang->last_post = '최근 등록';
|
$lang->last_update = '최근 수정일';
|
||||||
$lang->signup_date = '가입일';
|
$lang->last_post = '마지막 댓글';
|
||||||
$lang->last_login = '최근로그인';
|
$lang->signup_date = '가입일';
|
||||||
$lang->first_page = '첫페이지';
|
$lang->last_login = '최근로그인';
|
||||||
$lang->last_page = '끝페이지';
|
$lang->first_page = '첫페이지';
|
||||||
$lang->search_target = '검색대상';
|
$lang->last_page = '끝페이지';
|
||||||
$lang->search_keyword = '검색어';
|
$lang->search_target = '검색대상';
|
||||||
$lang->is_default = '기본';
|
$lang->search_keyword = '검색어';
|
||||||
|
$lang->is_default = '기본';
|
||||||
$lang->no_documents = '등록된 글이 없습니다';
|
|
||||||
|
$lang->no_documents = '등록된 글이 없습니다';
|
||||||
$lang->board_manager = '게시판 관리';
|
|
||||||
$lang->member_manager = '회원 관리';
|
$lang->board_manager = '게시판 관리';
|
||||||
$lang->layout_manager = '레이아웃 관리';
|
$lang->member_manager = '회원 관리';
|
||||||
|
$lang->layout_manager = '레이아웃 관리';
|
||||||
$lang->use = '사용';
|
|
||||||
$lang->notuse = '미사용';
|
$lang->use = '사용';
|
||||||
$lang->not_exists = '없음';
|
$lang->notuse = '미사용';
|
||||||
|
$lang->not_exists = '없음';
|
||||||
$lang->public = '공개';
|
|
||||||
$lang->private = '비공개';
|
$lang->public = '공개';
|
||||||
|
$lang->private = '비공개';
|
||||||
$lang->unit_sec = '초';
|
|
||||||
$lang->unit_min = '분';
|
$lang->unit_sec = '초';
|
||||||
$lang->unit_hour = '시';
|
$lang->unit_min = '분';
|
||||||
$lang->unit_day = '일';
|
$lang->unit_hour = '시';
|
||||||
$lang->unit_week = '주';
|
$lang->unit_day = '일';
|
||||||
$lang->unit_month = '월';
|
$lang->unit_week = '주';
|
||||||
$lang->unit_year = '년';
|
$lang->unit_month = '월';
|
||||||
|
$lang->unit_year = '년';
|
||||||
// 설명 관련
|
|
||||||
$lang->about_tag = '태그 입력시 , (쉼표)를 이용하시면 복수 등록이 가능합니다';
|
$lang->unit_week = array(
|
||||||
$lang->about_layout = '레이아웃은 모듈의 껍데기를 꾸며줍니다. 상단 레이아웃 메뉴에서 관리하실 수 있습니다';
|
'Monday' => '월',
|
||||||
|
'Tuesday' => '화',
|
||||||
// 메세지 관련
|
'Wednesday' => '수',
|
||||||
$lang->msg_call_server = '서버에 요청중입니다. 잠시만 기다려주세요.';
|
'Thursday' => '목',
|
||||||
$lang->msg_db_not_setted = 'DB설정이 되어 있지 않습니다';
|
'Friday' => '금',
|
||||||
$lang->msg_invalid_queryid = 'Query ID값이 잘못 지정되었습니다';
|
'Saturday' => '토',
|
||||||
$lang->msg_not_permitted = '권한이 없습니다';
|
'Sunday' => '일',
|
||||||
$lang->msg_input_password = '비밀번호를 입력하여 주세요';
|
);
|
||||||
$lang->msg_invalid_document = '잘못된 문서번호입니다';
|
|
||||||
$lang->msg_invalid_request = '잘못된 요청입니다';
|
$lang->unit_meridiem = array(
|
||||||
$lang->msg_invalid_password = '비밀번호가 올바르지 않습니다';
|
'am' => '오전',
|
||||||
$lang->msg_error_occured = '오류가 발생하였습니다';
|
'pm' => '오후',
|
||||||
$lang->msg_not_founded = '대상을 찾을 수 없습니다';
|
'AM' => '오전',
|
||||||
$lang->msg_no_result = '검색 결과가 없습니다';
|
'PM' => '오후',
|
||||||
|
);
|
||||||
$lang->msg_not_permitted_act = '요청하신 action을 실행할 수 있는 권한이 없습니다';
|
|
||||||
$lang->msg_module_is_not_exists = '요청하신 모듈을 찾을 수 없습니다';
|
$lang->time_gap = array(
|
||||||
$lang->msg_module_is_not_standalone = '요청하신 모듈은 독립적으로 동작할 수가 없습니다';
|
'min' => '%d 분전',
|
||||||
|
'mins' => '%d 분전',
|
||||||
$lang->success_registed = '등록되었습니다';
|
'hour' => '%d 시간전',
|
||||||
$lang->success_declared = '신고되었습니다';
|
'hours' => '%d 시간전',
|
||||||
$lang->success_updated = '수정되었습니다';
|
);
|
||||||
$lang->success_deleted = '삭제되었습니다';
|
|
||||||
$lang->success_voted = '추천되었습니다';
|
// 설명 관련
|
||||||
$lang->success_blamed = '비추천되었습니다';
|
$lang->about_tag = '태그 입력시 , (쉼표)를 이용하시면 복수 등록이 가능합니다';
|
||||||
$lang->success_moved = '이동되었습니다';
|
$lang->about_layout = '레이아웃은 모듈의 껍데기를 꾸며줍니다. 상단 레이아웃 메뉴에서 관리하실 수 있습니다';
|
||||||
$lang->success_sended = '발송되었습니다';
|
|
||||||
$lang->success_reset = '초기화되었습니다';
|
// 메세지 관련
|
||||||
$lang->success_leaved = '탈퇴되었습니다';
|
$lang->msg_call_server = '서버에 요청중입니다. 잠시만 기다려주세요.';
|
||||||
$lang->success_saved = '저장되었습니다';
|
$lang->msg_db_not_setted = 'DB설정이 되어 있지 않습니다';
|
||||||
|
$lang->msg_dbconnect_failed = "DB접속 오류가 발생하였습니다.\nDB정보를 다시 확인해주세요.";
|
||||||
$lang->fail_to_delete = '삭제 실패하였습니다';
|
$lang->msg_invalid_queryid = 'Query ID값이 잘못 지정되었습니다';
|
||||||
$lang->fail_to_move = '이동 실패하였습니다';
|
$lang->msg_not_permitted = '권한이 없습니다';
|
||||||
|
$lang->msg_input_password = '비밀번호를 입력하여 주세요';
|
||||||
$lang->failed_voted = '추천하실 수 없습니다';
|
$lang->msg_invalid_document = '잘못된 문서번호입니다';
|
||||||
$lang->failed_blamed = '비추천하실 수 없습니다';
|
$lang->msg_invalid_request = '잘못된 요청입니다';
|
||||||
$lang->failed_declared = '신고를 하실 수 없습니다';
|
$lang->msg_invalid_password = '비밀번호가 올바르지 않습니다';
|
||||||
$lang->fail_to_delete_have_children = '답글이 있어서 삭제할 수 없습니다';
|
$lang->msg_error_occured = '오류가 발생하였습니다';
|
||||||
|
$lang->msg_not_founded = '대상을 찾을 수 없습니다';
|
||||||
$lang->confirm_submit = '등록하시겠습니까?';
|
$lang->msg_no_result = '검색 결과가 없습니다';
|
||||||
$lang->confirm_logout = '로그아웃하시겠습니까?';
|
|
||||||
$lang->confirm_vote = '추천하시겠습니까?';
|
$lang->msg_not_permitted_act = '요청하신 action을 실행할 수 있는 권한이 없습니다';
|
||||||
$lang->confirm_delete = '삭제하시겠습니까?';
|
$lang->msg_module_is_not_exists = '요청하신 모듈을 찾을 수 없습니다';
|
||||||
$lang->confirm_move = '이동하시겠습니까?';
|
$lang->msg_module_is_not_standalone = '요청하신 모듈은 독립적으로 동작할 수가 없습니다';
|
||||||
$lang->confirm_reset = '초기화 하시겠습니까??';
|
|
||||||
$lang->confirm_leave = '탈퇴 하시겠습니까??';
|
$lang->success_registed = '등록되었습니다';
|
||||||
|
$lang->success_declared = '신고되었습니다';
|
||||||
$lang->column_type = '형식';
|
$lang->success_updated = '수정되었습니다';
|
||||||
$lang->column_type_list['text'] = '한줄 입력칸 (text)';
|
$lang->success_deleted = '삭제되었습니다';
|
||||||
$lang->column_type_list['homepage'] = '홈페이지 형식 (url)';
|
$lang->success_voted = '추천되었습니다';
|
||||||
$lang->column_type_list['email_address'] = '이메일 형식 (email)';
|
$lang->success_blamed = '비추천되었습니다';
|
||||||
$lang->column_type_list['tel'] = '전화번호 형식 (phone)';
|
$lang->success_moved = '이동되었습니다';
|
||||||
$lang->column_type_list['textarea'] = '여러줄 입력칸 (textarea)';
|
$lang->success_sended = '발송되었습니다';
|
||||||
$lang->column_type_list['checkbox'] = '다중 선택 (checkbox)';
|
$lang->success_reset = '초기화되었습니다';
|
||||||
$lang->column_type_list['select'] = '단일 선택 (select)';
|
$lang->success_leaved = '탈퇴되었습니다';
|
||||||
$lang->column_type_list['kr_zip'] = '한국주소 (zip)';
|
$lang->success_saved = '저장되었습니다';
|
||||||
$lang->column_type_list['date'] = '일자 (년월일)';
|
|
||||||
//$lang->column_type_list['jp_zip'] = '일본주소 (zip)';
|
$lang->fail_to_delete = '삭제 실패하였습니다';
|
||||||
$lang->column_name = '입력항목 이름';
|
$lang->fail_to_move = '이동 실패하였습니다';
|
||||||
$lang->column_title = '입력항목 제목';
|
|
||||||
$lang->default_value = '기본 값';
|
$lang->failed_voted = '추천하실 수 없습니다';
|
||||||
$lang->is_active = '활성';
|
$lang->failed_blamed = '비추천하실 수 없습니다';
|
||||||
$lang->is_required = '필수항목';
|
$lang->failed_declared = '신고를 하실 수 없습니다';
|
||||||
|
$lang->fail_to_delete_have_children = '답글이 있어서 삭제할 수 없습니다';
|
||||||
// ftp 관련
|
|
||||||
$lang->ftp_form_title = 'FTP 정보 입력';
|
$lang->confirm_submit = '등록하시겠습니까?';
|
||||||
$lang->ftp = 'FTP';
|
$lang->confirm_logout = '로그아웃하시겠습니까?';
|
||||||
$lang->ftp_port = 'FTP port';
|
$lang->confirm_vote = '추천하시겠습니까?';
|
||||||
$lang->cmd_check_ftp_connect = 'FTP 접속 확인';
|
$lang->confirm_delete = '삭제하시겠습니까?';
|
||||||
$lang->about_ftp_info = "
|
$lang->confirm_move = '이동하시겠습니까?';
|
||||||
FTP 정보는 다음의 경우에 이용될 수 있습니다.<br/>
|
$lang->confirm_reset = '초기화 하시겠습니까??';
|
||||||
1. PHP의 safe_mode=On일 경우에 FTP 정보를 이용해서 XE를 정상적으로 동작할 수 있게 합니다.<br/>
|
$lang->confirm_leave = '탈퇴 하시겠습니까??';
|
||||||
2. 자동 업데이트등에서 FTP 정보를 이용할 수 있습니다.<br/>
|
|
||||||
이 FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
|
$lang->column_type = '형식';
|
||||||
그리고 설치 후 관리자 페이지에서 FTP 정보를 변경하거나 제거할 수 있습니다.<br />
|
$lang->column_type_list['text'] = '한줄 입력칸 (text)';
|
||||||
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
|
$lang->column_type_list['homepage'] = '홈페이지 형식 (url)';
|
||||||
";
|
$lang->column_type_list['email_address'] = '이메일 형식 (email)';
|
||||||
|
$lang->column_type_list['tel'] = '전화번호 형식 (phone)';
|
||||||
$lang->msg_safe_mode_ftp_needed = "PHP의 safe_mode가 On일 경우 FTP 정보를 꼭 입력해주셔야 XE의 설치 및 사용이 가능합니다";
|
$lang->column_type_list['textarea'] = '여러줄 입력칸 (textarea)';
|
||||||
$lang->msg_ftp_not_connected = "localhost로의 FTP 접속 오류가 발생하였습니다. ftp 포트 번호를 확인해주시거나 ftp 서비스가 가능한지 확인해주세요";
|
$lang->column_type_list['checkbox'] = '다중 선택 (checkbox)';
|
||||||
$lang->msg_ftp_invalid_auth_info = "입력하신 FTP 정보로 로그인을 하지 못했습니다. FTP정보를 확인해주세요";
|
$lang->column_type_list['select'] = '단일 선택 (select)';
|
||||||
$lang->msg_ftp_mkdir_fail = "FTP를 이용한 디렉토리 생성 명령을 실패하였습니다. FTP 서버의 설정을 확인해주세요";
|
$lang->column_type_list['kr_zip'] = '한국주소 (zip)';
|
||||||
$lang->msg_ftp_chmod_fail = "FTP를 이용한 디렉토리의 속성 변경을 실패하였습니다. FTP 서버의 설정을 확인해주세요";
|
$lang->column_type_list['date'] = '일자 (년월일)';
|
||||||
$lang->msg_ftp_connect_success = "FTP 접속 및 인증 성공하였습니다";
|
//$lang->column_type_list['jp_zip'] = '일본주소 (zip)';
|
||||||
|
$lang->column_name = '입력항목 이름';
|
||||||
// xml filter에서 사용되는 javascript용 alert msg
|
$lang->column_title = '입력항목 제목';
|
||||||
$lang->filter->isnull = '%s의 값을 입력해주세요';
|
$lang->default_value = '기본 값';
|
||||||
$lang->filter->outofrange = '%s의 글자 길이를 맞추어 주세요.';
|
$lang->is_active = '활성';
|
||||||
$lang->filter->equalto = '%s의 값이 잘못 되었습니다.';
|
$lang->is_required = '필수항목';
|
||||||
$lang->filter->invalid_email = '%s의 형식이 잘못되었습니다. (예: zbxe@zeroboard.com)';
|
|
||||||
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "%s의 형식이 잘못되었습니다.\\n영문,숫자와 _로 만드실 수 있으며 제일 앞은 영문이어야 합니다";
|
// ftp 관련
|
||||||
$lang->filter->invalid_homepage = '%s의 형식이 잘못되었습니다. (예: http://www.zeroboard.com)';
|
$lang->ftp_form_title = 'FTP 정보 입력';
|
||||||
$lang->filter->invalid_korean = '%s의 형식이 잘못되었습니다. 한글로만 입력해주셔야 합니다';
|
$lang->ftp = 'FTP';
|
||||||
$lang->filter->invalid_korean_number = '%s의 형식이 잘못되었습니다. 한글과 숫자로만 입력해주셔야 합니다';
|
$lang->ftp_port = 'FTP port';
|
||||||
$lang->filter->invalid_alpha = '%s의 형식이 잘못되었습니다. 영문으로만 입력해주셔야 합니다';
|
$lang->cmd_check_ftp_connect = 'FTP 접속 확인';
|
||||||
$lang->filter->invalid_alpha_number = '%s의 형식이 잘못되었습니다. 영문과 숫자로만 입력해주셔야 합니다';
|
$lang->about_ftp_info = "
|
||||||
$lang->filter->invalid_number = '%s의 형식이 잘못되었습니다. 숫자로만 입력해주셔야 합니다';
|
FTP 정보는 다음의 경우에 이용될 수 있습니다.<br/>
|
||||||
?>
|
1. PHP의 safe_mode=On일 경우에 FTP 정보를 이용해서 XE를 정상적으로 동작할 수 있게 합니다.<br/>
|
||||||
|
2. 자동 업데이트등에서 FTP 정보를 이용할 수 있습니다.<br/>
|
||||||
|
이 FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
|
||||||
|
그리고 설치 후 관리자 페이지에서 FTP 정보를 변경하거나 제거할 수 있습니다.<br />
|
||||||
|
";
|
||||||
|
|
||||||
|
$lang->msg_safe_mode_ftp_needed = "PHP의 safe_mode가 On일 경우 FTP 정보를 꼭 입력해주셔야 XE의 설치 및 사용이 가능합니다";
|
||||||
|
$lang->msg_ftp_not_connected = "localhost로의 FTP 접속 오류가 발생하였습니다. ftp 포트 번호를 확인해주시거나 ftp 서비스가 가능한지 확인해주세요";
|
||||||
|
$lang->msg_ftp_invalid_auth_info = "입력하신 FTP 정보로 로그인을 하지 못했습니다. FTP정보를 확인해주세요";
|
||||||
|
$lang->msg_ftp_mkdir_fail = "FTP를 이용한 디렉토리 생성 명령을 실패하였습니다. FTP 서버의 설정을 확인해주세요";
|
||||||
|
$lang->msg_ftp_chmod_fail = "FTP를 이용한 디렉토리의 속성 변경을 실패하였습니다. FTP 서버의 설정을 확인해주세요";
|
||||||
|
$lang->msg_ftp_connect_success = "FTP 접속 및 인증 성공하였습니다";
|
||||||
|
|
||||||
|
// xml filter에서 사용되는 javascript용 alert msg
|
||||||
|
$lang->filter->isnull = '%s의 값을 입력해주세요';
|
||||||
|
$lang->filter->outofrange = '%s의 글자 길이를 맞추어 주세요.';
|
||||||
|
$lang->filter->equalto = '%s의 값이 잘못 되었습니다.';
|
||||||
|
$lang->filter->invalid_email = '%s의 형식이 잘못되었습니다. (예: zbxe@zeroboard.com)';
|
||||||
|
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "%s의 형식이 잘못되었습니다.\\n영문,숫자와 _로 만드실 수 있으며 제일 앞은 영문이어야 합니다";
|
||||||
|
$lang->filter->invalid_homepage = '%s의 형식이 잘못되었습니다. (예: http://www.zeroboard.com)';
|
||||||
|
$lang->filter->invalid_korean = '%s의 형식이 잘못되었습니다. 한글로만 입력해주셔야 합니다';
|
||||||
|
$lang->filter->invalid_korean_number = '%s의 형식이 잘못되었습니다. 한글과 숫자로만 입력해주셔야 합니다';
|
||||||
|
$lang->filter->invalid_alpha = '%s의 형식이 잘못되었습니다. 영문으로만 입력해주셔야 합니다';
|
||||||
|
$lang->filter->invalid_alpha_number = '%s의 형식이 잘못되었습니다. 영문과 숫자로만 입력해주셔야 합니다';
|
||||||
|
$lang->filter->invalid_number = '%s의 형식이 잘못되었습니다. 숫자로만 입력해주셔야 합니다';
|
||||||
|
?>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
ko,한국어
|
ko,한국어
|
||||||
en,English
|
en,English
|
||||||
zh-CN,中文
|
zh-CN,简体中文
|
||||||
jp,日本語
|
jp,日本語
|
||||||
es,Español
|
es,Español
|
||||||
ru,Русский
|
ru,Русский
|
||||||
fr,Français
|
fr,Français
|
||||||
|
zh-TW,正體中文
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
/**
|
/**
|
||||||
* @file ru.lang.php
|
* @file ru.lang.php
|
||||||
* @author zero <zero@nzeo.com> | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467;
|
* @author zero <zero@nzeo.com> | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467;
|
||||||
* @brief Russian basic language pack for Zeroboard XE
|
* @brief Russian basic language pack
|
||||||
**/
|
**/
|
||||||
|
|
||||||
// Основные слова для действий
|
// Основные слова для действий
|
||||||
|
|
@ -62,7 +62,8 @@
|
||||||
$lang->cmd_publish = "Опубликовать";
|
$lang->cmd_publish = "Опубликовать";
|
||||||
$lang->cmd_layout_setup = 'Конфигурировать лейаут';
|
$lang->cmd_layout_setup = 'Конфигурировать лейаут';
|
||||||
$lang->cmd_layout_edit = 'Редактировать лейаут';
|
$lang->cmd_layout_edit = 'Редактировать лейаут';
|
||||||
$lang->cmd_search_by_ipaddress = 'IP주소로 검색';
|
$lang->cmd_search_by_ipaddress = 'Search by IP Address';
|
||||||
|
$lang->cmd_add_ip_to_spamfilter = 'Add IP to spamfilter';
|
||||||
|
|
||||||
$lang->enable = 'Включено';
|
$lang->enable = 'Включено';
|
||||||
$lang->disable = 'Выключено';
|
$lang->disable = 'Выключено';
|
||||||
|
|
@ -170,6 +171,30 @@
|
||||||
$lang->unit_month = 'мес.';
|
$lang->unit_month = 'мес.';
|
||||||
$lang->unit_year = 'г.';
|
$lang->unit_year = 'г.';
|
||||||
|
|
||||||
|
$lang->unit_week = array(
|
||||||
|
'Monday' => 'Monday',
|
||||||
|
'Tuesday' => 'Tuesday',
|
||||||
|
'Wednesday' => 'Wednesday',
|
||||||
|
'Thursday' => 'Thursday',
|
||||||
|
'Friday' => 'Friday',
|
||||||
|
'Saturday' => 'Saturday',
|
||||||
|
'Sunday' => 'Sunday',
|
||||||
|
);
|
||||||
|
|
||||||
|
$lang->unit_meridiem = array(
|
||||||
|
'am' => 'am',
|
||||||
|
'pm' => 'pm',
|
||||||
|
'AM' => 'AM',
|
||||||
|
'PM' => 'PM',
|
||||||
|
);
|
||||||
|
|
||||||
|
$lang->time_gap = array(
|
||||||
|
'min' => '%d minute ago',
|
||||||
|
'mins' => '%d minutes ago',
|
||||||
|
'hour' => '%d hour ago',
|
||||||
|
'hours' => '%d hours ago',
|
||||||
|
);
|
||||||
|
|
||||||
// Описания
|
// Описания
|
||||||
$lang->about_tag = 'Вы можете применить несколько тегов, разделенных запятыми (,)';
|
$lang->about_tag = 'Вы можете применить несколько тегов, разделенных запятыми (,)';
|
||||||
$lang->about_layout = 'Лейауты украшают внешний вид Ваших модулей. Вы можете сконфигирировать их с помощью меню Лейаут сверху';
|
$lang->about_layout = 'Лейауты украшают внешний вид Ваших модулей. Вы можете сконфигирировать их с помощью меню Лейаут сверху';
|
||||||
|
|
@ -177,6 +202,7 @@
|
||||||
// Сообщение
|
// Сообщение
|
||||||
$lang->msg_call_server = 'Идет обработка. Пожалуйста, подождите...';
|
$lang->msg_call_server = 'Идет обработка. Пожалуйста, подождите...';
|
||||||
$lang->msg_db_not_setted = 'Даза данных не сконфигурирована';
|
$lang->msg_db_not_setted = 'Даза данных не сконфигурирована';
|
||||||
|
$lang->msg_dbconnect_failed = "Произошла ошибка подключения к базе данных.\nПожалуйста, проверьте иформацию базы данных еще раз";
|
||||||
$lang->msg_invalid_queryid = 'Указанный ID запроса неверен';
|
$lang->msg_invalid_queryid = 'Указанный ID запроса неверен';
|
||||||
$lang->msg_not_permitted = 'У Вас нет прав доступа';
|
$lang->msg_not_permitted = 'У Вас нет прав доступа';
|
||||||
$lang->msg_input_password = 'Пожалуйста, введите пароль';
|
$lang->msg_input_password = 'Пожалуйста, введите пароль';
|
||||||
|
|
@ -245,7 +271,6 @@
|
||||||
2. 자동 업데이트등에서 FTP 정보를 이용할 수 있습니다.<br/>
|
2. 자동 업데이트등에서 FTP 정보를 이용할 수 있습니다.<br/>
|
||||||
이 FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
|
이 FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
|
||||||
그리고 설치 후 관리자 페이지에서 FTP 정보를 변경하거나 제거할 수 있습니다.<br />
|
그리고 설치 후 관리자 페이지에서 FTP 정보를 변경하거나 제거할 수 있습니다.<br />
|
||||||
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
|
|
||||||
";
|
";
|
||||||
|
|
||||||
$lang->msg_safe_mode_ftp_needed = "PHP의 safe_mode가 On일 경우 FTP 정보를 꼭 입력해주셔야 XE의 설치 및 사용이 가능합니다";
|
$lang->msg_safe_mode_ftp_needed = "PHP의 safe_mode가 On일 경우 FTP 정보를 꼭 입력해주셔야 XE의 설치 및 사용이 가능합니다";
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,7 @@
|
||||||
$lang->cmd_layout_setup = '布局设置';
|
$lang->cmd_layout_setup = '布局设置';
|
||||||
$lang->cmd_layout_edit = '编辑布局';
|
$lang->cmd_layout_edit = '编辑布局';
|
||||||
$lang->cmd_search_by_ipaddress = '以IP地址搜索';
|
$lang->cmd_search_by_ipaddress = '以IP地址搜索';
|
||||||
|
$lang->cmd_add_ip_to_spamfilter = '禁止IP';
|
||||||
|
|
||||||
$lang->enable = '可用';
|
$lang->enable = '可用';
|
||||||
$lang->disable = '禁用';
|
$lang->disable = '禁用';
|
||||||
|
|
@ -170,6 +171,30 @@
|
||||||
$lang->unit_month = '月';
|
$lang->unit_month = '月';
|
||||||
$lang->unit_year = '年';
|
$lang->unit_year = '年';
|
||||||
|
|
||||||
|
$lang->unit_week = array(
|
||||||
|
'Monday' => '星期一',
|
||||||
|
'Tuesday' => '星期二',
|
||||||
|
'Wednesday' => '星期三',
|
||||||
|
'Thursday' => '星期四',
|
||||||
|
'Friday' => '星期五',
|
||||||
|
'Saturday' => '星期六',
|
||||||
|
'Sunday' => '星期日',
|
||||||
|
);
|
||||||
|
|
||||||
|
$lang->unit_meridiem = array(
|
||||||
|
'am' => '上午',
|
||||||
|
'pm' => '下午',
|
||||||
|
'AM' => '上午',
|
||||||
|
'PM' => '下午',
|
||||||
|
);
|
||||||
|
|
||||||
|
$lang->time_gap = array(
|
||||||
|
'min' => '%d分钟前',
|
||||||
|
'mins' => '%d分钟前',
|
||||||
|
'hour' => '%d小时前',
|
||||||
|
'hours' => '%d小时前',
|
||||||
|
);
|
||||||
|
|
||||||
// 说明
|
// 说明
|
||||||
$lang->about_tag = '用逗号分隔多个标签';
|
$lang->about_tag = '用逗号分隔多个标签';
|
||||||
$lang->about_layout = '布局是布置模块的外观,在上端布局菜里单可以进行管理';
|
$lang->about_layout = '布局是布置模块的外观,在上端布局菜里单可以进行管理';
|
||||||
|
|
@ -177,6 +202,7 @@
|
||||||
// 信息
|
// 信息
|
||||||
$lang->msg_call_server = '系统正在链接服务器,请稍后。';
|
$lang->msg_call_server = '系统正在链接服务器,请稍后。';
|
||||||
$lang->msg_db_not_setted = '还没有设定 DB';
|
$lang->msg_db_not_setted = '还没有设定 DB';
|
||||||
|
$lang->msg_dbconnect_failed = "连接DB时发生错误。\n请重新确认DB信息。";
|
||||||
$lang->msg_invalid_queryid = 'Query ID值指定错误';
|
$lang->msg_invalid_queryid = 'Query ID值指定错误';
|
||||||
$lang->msg_not_permitted = '没有权限';
|
$lang->msg_not_permitted = '没有权限';
|
||||||
$lang->msg_input_password = '请输入密码';
|
$lang->msg_input_password = '请输入密码';
|
||||||
|
|
@ -236,26 +262,25 @@
|
||||||
$lang->is_active = '激活';
|
$lang->is_active = '激活';
|
||||||
$lang->is_required = '必填';
|
$lang->is_required = '必填';
|
||||||
|
|
||||||
// ftp 관련
|
// ftp 相关
|
||||||
$lang->ftp_form_title = 'FTP 정보 입력';
|
$lang->ftp_form_title = '输入FTP信息';
|
||||||
$lang->ftp = 'FTP';
|
$lang->ftp = 'FTP';
|
||||||
$lang->ftp_port = 'FTP port';
|
$lang->ftp_port = 'FTP port';
|
||||||
$lang->cmd_check_ftp_connect = 'FTP 접속 확인';
|
$lang->cmd_check_ftp_connect = '测试FTP连接';
|
||||||
$lang->about_ftp_info = "
|
$lang->about_ftp_info = "
|
||||||
FTP 정보는 다음의 경우에 이용될 수 있습니다.<br/>
|
相关FTP信息,应用于如下几种状况:<br/>
|
||||||
1. PHP의 safe_mode=On일 경우에 FTP 정보를 이용해서 XE를 정상적으로 동작할 수 있게 합니다.<br/>
|
1. 当PHP的safe_mode=On时,也能使程序工作正常。<br/>
|
||||||
2. 자동 업데이트등에서 FTP 정보를 이용할 수 있습니다.<br/>
|
2. 可以应用于自动更新。<br/>
|
||||||
이 FTP정보는 files/config/ftp.config.php 파일내에 정보가 저장됩니다.<br/>
|
此FTP信息将保存在files/config/ftp.config.php文件当中。<br/>
|
||||||
그리고 설치 후 관리자 페이지에서 FTP 정보를 변경하거나 제거할 수 있습니다.<br />
|
安装程序后可在管理页面对FTP信息进行修改或删除操作。<br />
|
||||||
<strong>FTP 정보 노출을 원하지 않으시면 입력하지 않으셔도 됩니다</strong>
|
|
||||||
";
|
";
|
||||||
|
|
||||||
$lang->msg_safe_mode_ftp_needed = "PHP의 safe_mode가 On일 경우 FTP 정보를 꼭 입력해주셔야 XE의 설치 및 사용이 가능합니다";
|
$lang->msg_safe_mode_ftp_needed = "当PHP的safe_mode=On时,请必须输入相关FTP信息,否则将无法正常安装或使用XE程序。";
|
||||||
$lang->msg_ftp_not_connected = "localhost로의 FTP 접속 오류가 발생하였습니다. ftp 포트 번호를 확인해주시거나 ftp 서비스가 가능한지 확인해주세요";
|
$lang->msg_ftp_not_connected = "发生本地(localhost)FTP连接错误。请确认ftp端口号及支持ftp服务与否。";
|
||||||
$lang->msg_ftp_invalid_auth_info = "입력하신 FTP 정보로 로그인을 하지 못했습니다. FTP정보를 확인해주세요";
|
$lang->msg_ftp_invalid_auth_info = "FTP登录失败。请确认输入的FTP信息。";
|
||||||
$lang->msg_ftp_mkdir_fail = "FTP를 이용한 디렉토리 생성 명령을 실패하였습니다. FTP 서버의 설정을 확인해주세요";
|
$lang->msg_ftp_mkdir_fail = "新建文件夹失败。请确认 FTP服务器设置。";
|
||||||
$lang->msg_ftp_chmod_fail = "FTP를 이용한 디렉토리의 속성 변경을 실패하였습니다. FTP 서버의 설정을 확인해주세요";
|
$lang->msg_ftp_chmod_fail = "修改文件夹属性失败。请确认 FTP服务器设置。";
|
||||||
$lang->msg_ftp_connect_success = "FTP 접속 및 인증 성공하였습니다";
|
$lang->msg_ftp_connect_success = "FTP连接成功。";
|
||||||
|
|
||||||
|
|
||||||
// 在xml filter使用的 javascript用 alert msg
|
// 在xml filter使用的 javascript用 alert msg
|
||||||
|
|
|
||||||
297
common/lang/zh-TW.lang.php
Normal file
|
|
@ -0,0 +1,297 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @file common/lang/zh-TW.lang.php
|
||||||
|
* @author zero (zero@nzeo.com) 翻譯:royallin
|
||||||
|
* @brief 正體中文語言(包含基本內容)
|
||||||
|
**/
|
||||||
|
|
||||||
|
// 基本使用的語言
|
||||||
|
$lang->cmd_write = '發表';
|
||||||
|
$lang->cmd_reply = '回覆';
|
||||||
|
$lang->cmd_delete = '刪除';
|
||||||
|
$lang->cmd_modify = '修改';
|
||||||
|
$lang->cmd_edit = '編輯';
|
||||||
|
$lang->cmd_view = '檢視';
|
||||||
|
$lang->cmd_view_all = '全部檢視';
|
||||||
|
$lang->cmd_list = '列表';
|
||||||
|
$lang->cmd_prev = '上一頁';
|
||||||
|
$lang->cmd_next = '下一頁';
|
||||||
|
$lang->cmd_send_trackback = '發送引用';
|
||||||
|
$lang->cmd_registration = $lang->cmd_submit = '確定';
|
||||||
|
$lang->cmd_comment_registration = '送出評論';
|
||||||
|
$lang->cmd_insert = '插入';
|
||||||
|
$lang->cmd_save = '儲存';
|
||||||
|
$lang->cmd_load = '讀取';
|
||||||
|
$lang->cmd_input = '輸入';
|
||||||
|
$lang->cmd_search = '搜尋';
|
||||||
|
$lang->cmd_cancel = '取消';
|
||||||
|
$lang->cmd_back = '返回';
|
||||||
|
$lang->cmd_vote = '推薦';
|
||||||
|
$lang->cmd_vote_down = '反對';
|
||||||
|
$lang->cmd_declare = '檢舉';
|
||||||
|
$lang->cmd_cancel_declare = '取消檢舉';
|
||||||
|
$lang->cmd_declared_list = '檢舉列表';
|
||||||
|
$lang->cmd_copy = '複製';
|
||||||
|
$lang->cmd_move = '移動';
|
||||||
|
$lang->cmd_move_up = '向上';
|
||||||
|
$lang->cmd_move_down = '向下';
|
||||||
|
$lang->cmd_add_indent = '拉長';
|
||||||
|
$lang->cmd_remove_indent = '縮短';
|
||||||
|
$lang->cmd_management = '管理';
|
||||||
|
$lang->cmd_make = '建立';
|
||||||
|
$lang->cmd_select = '選擇';
|
||||||
|
$lang->cmd_select_all = '全部選擇';
|
||||||
|
$lang->cmd_unselect_all = '全部解除';
|
||||||
|
$lang->cmd_reverse_all = "反選";
|
||||||
|
$lang->cmd_close_all = '全部收合';
|
||||||
|
$lang->cmd_open_all = '全部展開';
|
||||||
|
$lang->cmd_reload = '重新讀取';
|
||||||
|
$lang->cmd_close = '關閉';
|
||||||
|
$lang->cmd_open = '開啟';
|
||||||
|
$lang->cmd_setup = '設置';
|
||||||
|
$lang->cmd_addition_setup = '延伸設置';
|
||||||
|
$lang->cmd_option = '選項';
|
||||||
|
$lang->cmd_apply = '套用';
|
||||||
|
$lang->cmd_open_calendar = '選擇日期';
|
||||||
|
$lang->cmd_send = '發送';
|
||||||
|
$lang->cmd_print = '列印';
|
||||||
|
$lang->cmd_scrap = '收藏';
|
||||||
|
$lang->cmd_preview = '預覽';
|
||||||
|
$lang->cmd_reset = '重置';
|
||||||
|
$lang->cmd_remake_cache = "重新建立暫存檔";
|
||||||
|
$lang->cmd_publish = "發表";
|
||||||
|
$lang->cmd_layout_setup = '版面設置';
|
||||||
|
$lang->cmd_layout_edit = '版面編輯';
|
||||||
|
$lang->cmd_search_by_ipaddress = '以 IP位址搜尋';
|
||||||
|
$lang->cmd_add_ip_to_spamfilter = '新增 IP至垃圾過濾器';
|
||||||
|
|
||||||
|
$lang->enable = '可用';
|
||||||
|
$lang->disable = '禁用';
|
||||||
|
|
||||||
|
// 基本詞語
|
||||||
|
$lang->no = '編號';
|
||||||
|
$lang->notice = '公告';
|
||||||
|
$lang->secret = '秘密';
|
||||||
|
$lang->category = $lang->category_srl = '分類';
|
||||||
|
$lang->none_category = '無分類';
|
||||||
|
$lang->document_srl = '文章編號';
|
||||||
|
$lang->user_id = '帳號';
|
||||||
|
$lang->author = '作者';
|
||||||
|
$lang->password = '密碼';
|
||||||
|
$lang->password1 = '新密碼';
|
||||||
|
$lang->password2 = '確認密碼';
|
||||||
|
$lang->admin_id = '管理員帳號';
|
||||||
|
$lang->writer = '作者';
|
||||||
|
$lang->user_name = '姓名';
|
||||||
|
$lang->nick_name = '暱稱';
|
||||||
|
$lang->email_address = '電子郵件';
|
||||||
|
$lang->homepage = '主頁';
|
||||||
|
$lang->blog = '部落格';
|
||||||
|
$lang->birthday = '生日';
|
||||||
|
$lang->browser_title = '瀏覽器標題';
|
||||||
|
$lang->title = '標題';
|
||||||
|
$lang->title_content = '標題+內容';
|
||||||
|
$lang->topic = '主題';
|
||||||
|
$lang->replies = '回覆';
|
||||||
|
$lang->content = '內容';
|
||||||
|
$lang->document = '文章';
|
||||||
|
$lang->comment = '評論';
|
||||||
|
$lang->description = '說明';
|
||||||
|
$lang->trackback = '引用';
|
||||||
|
$lang->tag = '標籤';
|
||||||
|
$lang->allow_comment = '允許評論';
|
||||||
|
$lang->lock_comment = '關閉評論';
|
||||||
|
$lang->allow_trackback = '允許引用';
|
||||||
|
$lang->uploaded_file = '附加檔案';
|
||||||
|
$lang->grant = '權限';
|
||||||
|
$lang->target = '目標';
|
||||||
|
$lang->total = '全部';
|
||||||
|
$lang->total_count = '總數';
|
||||||
|
$lang->ipaddress = 'IP位址';
|
||||||
|
$lang->path = '路徑';
|
||||||
|
$lang->cart = '選擇項目';
|
||||||
|
$lang->friend = '好友';
|
||||||
|
$lang->notify = '通知';
|
||||||
|
$lang->order_target = '排列目標';
|
||||||
|
$lang->order_type = '排列方式';
|
||||||
|
$lang->order_asc = '升冪';
|
||||||
|
$lang->order_desc = '降冪';
|
||||||
|
|
||||||
|
$lang->mid = '模組名稱';
|
||||||
|
$lang->layout = '版面';
|
||||||
|
$lang->widget = '控件 ';
|
||||||
|
$lang->module = '模組';
|
||||||
|
$lang->skin = '面板';
|
||||||
|
$lang->colorset = '顏色設定';
|
||||||
|
$lang->extra_vars = '延伸變數';
|
||||||
|
|
||||||
|
$lang->document_url = '連結網址';
|
||||||
|
$lang->trackback_url = '引用';
|
||||||
|
$lang->blog_name = '部落格名稱';
|
||||||
|
$lang->excerpt = '轉載自';
|
||||||
|
|
||||||
|
$lang->document_count = '文章數';
|
||||||
|
$lang->page_count = '頁數';
|
||||||
|
$lang->list_count = '列表數';
|
||||||
|
$lang->search_list_count = '搜尋列表數';
|
||||||
|
$lang->readed_count = '點閱';
|
||||||
|
$lang->voted_count = '推薦';
|
||||||
|
$lang->comment_count = '評論';
|
||||||
|
$lang->member_count = '會員人數';
|
||||||
|
$lang->date = '日期';
|
||||||
|
$lang->regdate = '登錄日期';
|
||||||
|
$lang->last_update = '最後更新';
|
||||||
|
$lang->last_post = '最後發表';
|
||||||
|
$lang->signup_date = '註冊日期';
|
||||||
|
$lang->last_login = '最近登入';
|
||||||
|
$lang->first_page = '第一頁';
|
||||||
|
$lang->last_page = '最後頁';
|
||||||
|
$lang->search_target = '搜尋目標';
|
||||||
|
$lang->search_keyword = '關鍵字';
|
||||||
|
$lang->is_default = '預設';
|
||||||
|
|
||||||
|
$lang->no_documents = '目前沒有主題';
|
||||||
|
|
||||||
|
$lang->board_manager = '討論板管理';
|
||||||
|
$lang->member_manager = '會員管理';
|
||||||
|
$lang->layout_manager = '版面管理';
|
||||||
|
|
||||||
|
$lang->use = '使用';
|
||||||
|
$lang->notuse = '未使用';
|
||||||
|
$lang->not_exists = '無';
|
||||||
|
|
||||||
|
$lang->public = '公開';
|
||||||
|
$lang->private = '不公開';
|
||||||
|
|
||||||
|
$lang->unit_sec = '秒';
|
||||||
|
$lang->unit_min = '分';
|
||||||
|
$lang->unit_hour = '時';
|
||||||
|
$lang->unit_day = '日';
|
||||||
|
$lang->unit_week = '周';
|
||||||
|
$lang->unit_month = '月';
|
||||||
|
$lang->unit_year = '年';
|
||||||
|
|
||||||
|
$lang->unit_week = array(
|
||||||
|
'Monday' => '星期一',
|
||||||
|
'Tuesday' => '星期二',
|
||||||
|
'Wednesday' => '星期三',
|
||||||
|
'Thursday' => '星期四',
|
||||||
|
'Friday' => '星期五',
|
||||||
|
'Saturday' => '禮拜六',
|
||||||
|
'Sunday' => '星期日',
|
||||||
|
);
|
||||||
|
|
||||||
|
$lang->unit_meridiem = array(
|
||||||
|
'am' => '上午',
|
||||||
|
'pm' => '下午',
|
||||||
|
'AM' => '上午',
|
||||||
|
'PM' => '下午',
|
||||||
|
);
|
||||||
|
|
||||||
|
$lang->time_gap = array(
|
||||||
|
'min' => '%d 分鐘前',
|
||||||
|
'mins' => '%d 分鐘前',
|
||||||
|
'hour' => '%d 小時前',
|
||||||
|
'hours' => '%d 小時前',
|
||||||
|
);
|
||||||
|
|
||||||
|
// 說明
|
||||||
|
$lang->about_tag = '用逗號分隔多個標籤';
|
||||||
|
$lang->about_layout = '版面設計是佈置網站的外觀模組,在上端版面選單中,可以進行管理';
|
||||||
|
|
||||||
|
// 訊息
|
||||||
|
$lang->msg_call_server = '系統正在連結服務器,請稍後。';
|
||||||
|
$lang->msg_db_not_setted = '還沒有設定資料庫';
|
||||||
|
$lang->msg_dbconnect_failed = "連接資料庫時發生錯誤。\n請重新確認資料庫資訊。";
|
||||||
|
$lang->msg_invalid_queryid = 'Query ID值指定錯誤';
|
||||||
|
$lang->msg_not_permitted = '沒有權限';
|
||||||
|
$lang->msg_input_password = '請輸入密碼';
|
||||||
|
$lang->msg_invalid_document = '錯誤的文章編號';
|
||||||
|
$lang->msg_invalid_request = '錯誤的請求';
|
||||||
|
$lang->msg_invalid_password = '密碼錯誤';
|
||||||
|
$lang->msg_error_occured = '發生錯誤';
|
||||||
|
$lang->msg_not_founded = '找不到相關內容';
|
||||||
|
$lang->msg_no_result = '找不到與您查詢的相符結果';
|
||||||
|
|
||||||
|
$lang->msg_not_permitted_act = '沒有權限執行';
|
||||||
|
$lang->msg_module_is_not_exists = '找不到您查詢的模組';
|
||||||
|
$lang->msg_module_is_not_standalone = '您請求的模組不能單獨執行';
|
||||||
|
|
||||||
|
$lang->success_registed = '成功送出!';
|
||||||
|
$lang->success_declared = '檢舉成功!';
|
||||||
|
$lang->success_updated = '修改成功!';
|
||||||
|
$lang->success_deleted = '刪除成功!';
|
||||||
|
$lang->success_voted = '推薦成功!';
|
||||||
|
$lang->success_blamed = '反對成功!';
|
||||||
|
$lang->success_moved = '移動成功!';
|
||||||
|
$lang->success_sended = '發送成功!';
|
||||||
|
$lang->success_reset = '重設成功!';
|
||||||
|
$lang->success_leaved = '成功退出!';
|
||||||
|
$lang->success_saved = '儲存成功!';
|
||||||
|
|
||||||
|
$lang->fail_to_delete = '刪除成功!';
|
||||||
|
$lang->fail_to_move = '移動成功!';
|
||||||
|
|
||||||
|
$lang->failed_voted = '您不能推薦!';
|
||||||
|
$lang->failed_blamed = '您不能反對!';
|
||||||
|
$lang->failed_declared = '您沒有檢舉權限!';
|
||||||
|
$lang->fail_to_delete_have_children = '不能刪除有回覆的評論!';
|
||||||
|
|
||||||
|
$lang->confirm_submit = '確定要送出嗎?';
|
||||||
|
$lang->confirm_logout = '確定要登出嗎?';
|
||||||
|
$lang->confirm_vote = '確定要推薦嗎?';
|
||||||
|
$lang->confirm_delete = '確定要刪除嗎?';
|
||||||
|
$lang->confirm_move = '確定要移動嗎?';
|
||||||
|
$lang->confirm_reset = '確定要重置嗎?';
|
||||||
|
$lang->confirm_leave = '確定要退出嗎?';
|
||||||
|
|
||||||
|
$lang->column_type = '格式';
|
||||||
|
$lang->column_type_list['text'] = '文字輸入(text)';
|
||||||
|
$lang->column_type_list['homepage'] = '網址格式 (url)';
|
||||||
|
$lang->column_type_list['email_address'] = '郵件格式 (email)';
|
||||||
|
$lang->column_type_list['tel'] = '電話號碼格式 (phone)';
|
||||||
|
$lang->column_type_list['textarea'] = '文字輸入區塊 (textarea)';
|
||||||
|
$lang->column_type_list['checkbox'] = '復選框 (checkbox)';
|
||||||
|
$lang->column_type_list['select'] = '下拉式選單 (select)';
|
||||||
|
$lang->column_type_list['kr_zip'] = '韓國郵編(zip)';
|
||||||
|
$lang->column_type_list['date'] = '日期 (年月日)';
|
||||||
|
//$lang->column_type_list['jp_zip'] = '日本郵編 (zip)';
|
||||||
|
$lang->column_name = '項目名稱';
|
||||||
|
$lang->column_title = '項目標題';
|
||||||
|
$lang->default_value = '預設值';
|
||||||
|
$lang->is_active = '啟動';
|
||||||
|
$lang->is_required = '必填';
|
||||||
|
|
||||||
|
// 關於 FTP
|
||||||
|
$lang->ftp_form_title = '輸入 FTP資訊';
|
||||||
|
$lang->ftp = 'FTP';
|
||||||
|
$lang->ftp_port = 'FTP Port';
|
||||||
|
$lang->cmd_check_ftp_connect = '確認 FTP連線';
|
||||||
|
$lang->about_ftp_info = "
|
||||||
|
FTP資訊可應用至以下情形<br/>
|
||||||
|
1. 當 PHP的安全模式(safe_mode)開啟時,可使程式正常運作。<br/>
|
||||||
|
2. 可用於自動更新。<br/>
|
||||||
|
這個 FTP資訊會儲存在檔案 files/config/ftp.config.php裡面。<br/>
|
||||||
|
安裝程式後,可以在管理頁面中針對 FTP資訊進行修改或刪除。<br />
|
||||||
|
";
|
||||||
|
|
||||||
|
$lang->msg_safe_mode_ftp_needed = "當 PHP的安全模式(safe_mode)開啟時,請輸入相關 FTP資訊,否則無法正常安裝或使用程式。";
|
||||||
|
$lang->msg_ftp_not_connected = "本地(localhost)FTP連線錯誤。請確認 FTP Prot或確認是否支援 FTP功能。";
|
||||||
|
$lang->msg_ftp_invalid_auth_info = "FTP登入失敗。請確認輸入的 FTP資訊。";
|
||||||
|
$lang->msg_ftp_mkdir_fail = "新增資料夾失敗。請確認 FTP主機設置。";
|
||||||
|
$lang->msg_ftp_chmod_fail = "修改資料夾權限失敗。請確認 FTP主機設置。";
|
||||||
|
$lang->msg_ftp_connect_success = "FTP連線成功。";
|
||||||
|
|
||||||
|
// 在 xml filter使用的 javascript用 alert msg
|
||||||
|
$lang->filter->isnull = '請輸入%s';
|
||||||
|
$lang->filter->outofrange = '請確認%s字數';
|
||||||
|
$lang->filter->equalto = '%s值有誤。';
|
||||||
|
$lang->filter->invalid_email = '%s格式有誤。(例:zbxe@zeroboard.com)';
|
||||||
|
$lang->filter->invalid_user_id = $lang->filter->invalid_userid = "%s只能用英文,數字和 _,第一個字母必須是英文。";
|
||||||
|
$lang->filter->invalid_homepage = '%s格式有誤。(例: http://www.zeroboard.com)';
|
||||||
|
$lang->filter->invalid_korean = '%s只能輸入中文';
|
||||||
|
$lang->filter->invalid_korean_number = '%s只能輸入中文或數字';
|
||||||
|
$lang->filter->invalid_alpha = '%s只能輸入英文字母';
|
||||||
|
$lang->filter->invalid_alpha_number = '%s只能輸入英文或數字';
|
||||||
|
$lang->filter->invalid_number = '%s只能輸入數字';
|
||||||
|
?>
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<html lang="{Context::getLangType()}" xml:lang="{Context::getLangType()}" xmlns="http://www.w3.org/1999/xhtml">
|
<html lang="{Context::getLangType()}" xml:lang="{Context::getLangType()}" xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<meta name="Generator" content="zeroboardXE {__ZBXE_VERSION__}" />
|
<meta name="Generator" content="XpressEngine {__ZBXE_VERSION__}" />
|
||||||
<!--@if($module_info->module)-->
|
<!--@if($module_info->module)-->
|
||||||
<meta name="module" content="{$module_info->module}" />
|
<meta name="module" content="{$module_info->module}" />
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
|
||||||
BIN
common/tpl/images/buttonBlack.gif
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
common/tpl/images/buttonBlue.gif
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
common/tpl/images/buttonGreen.gif
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
common/tpl/images/buttonRed.gif
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
common/tpl/images/buttonWhite.gif
Normal file
|
After Width: | Height: | Size: 2 KiB |
BIN
common/tpl/images/iconAdd.gif
Normal file
|
After Width: | Height: | Size: 51 B |
BIN
common/tpl/images/iconCheckGreen.gif
Normal file
|
After Width: | Height: | Size: 56 B |
BIN
common/tpl/images/iconCheckYellow.gif
Normal file
|
After Width: | Height: | Size: 56 B |
BIN
common/tpl/images/iconWrite.gif
Normal file
|
After Width: | Height: | Size: 119 B |
BIN
common/tpl/images/iconX.gif
Normal file
|
After Width: | Height: | Size: 54 B |
|
|
@ -1,91 +1,91 @@
|
||||||
<?php
|
<?php
|
||||||
@error_reporting(E_ALL ^ E_NOTICE);
|
@error_reporting(E_ALL ^ E_NOTICE);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file config/config.inc.php
|
* @file config/config.inc.php
|
||||||
* @author zero (zero@nzeo.com)
|
* @author zero (zero@nzeo.com)
|
||||||
* @brief 기본적으로 사용하는 class파일의 include 및 환경 설정을 함
|
* @brief 기본적으로 사용하는 class파일의 include 및 환경 설정을 함
|
||||||
**/
|
**/
|
||||||
|
|
||||||
if(!defined('__ZBXE__')) exit();
|
if(!defined('__ZBXE__')) exit();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 제로보드XE의 전체 버전 표기
|
* @brief XE의 전체 버전 표기
|
||||||
* 이 내용은 제로보드XE의 버전을 관리자 페이지에 표시하기 위한 용도이며
|
* 이 내용은 XE의 버전을 관리자 페이지에 표시하기 위한 용도이며
|
||||||
* config.inc.php의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야 함
|
* config.inc.php의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야 함
|
||||||
**/
|
**/
|
||||||
define('__ZBXE_VERSION__', '1.0.6');
|
define('__ZBXE_VERSION__', '1.1.0');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 디버깅 메세지 출력
|
* @brief 디버깅 메세지 출력
|
||||||
* 0 : 디버그 메세지를 생성/ 출력하지 않음
|
* 0 : 디버그 메세지를 생성/ 출력하지 않음
|
||||||
* 1 : 전체 실행 시간에 대해서만 메세지 생성/ 출력
|
* 1 : 전체 실행 시간에 대해서만 메세지 생성/ 출력
|
||||||
* 2 : 1 + DB 쿼리
|
* 2 : 1 + DB 쿼리
|
||||||
* 3 : 모든 로그
|
* 3 : 모든 로그
|
||||||
**/
|
**/
|
||||||
define('__DEBUG__', 0);
|
define('__DEBUG__', 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 디버그 메세지의 출력 장소
|
* @brief 디버그 메세지의 출력 장소
|
||||||
* 0 : files/_debug_message.php 에 연결하여 출력
|
* 0 : files/_debug_message.php 에 연결하여 출력
|
||||||
* 1 : Response Method 가 XML 형식이 아닐 경우 브라우저에 최상단에 주석으로 표시
|
* 1 : Response Method 가 XML 형식이 아닐 경우 브라우저에 최상단에 주석으로 표시
|
||||||
**/
|
**/
|
||||||
define('__DEBUG_OUTPUT__', 0);
|
define('__DEBUG_OUTPUT__', 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief DB 오류 메세지 출력 정의
|
* @brief DB 오류 메세지 출력 정의
|
||||||
* 0 : 출력하지 않음
|
* 0 : 출력하지 않음
|
||||||
* 1 : files/_debug_db_query.php 에 연결하여 출력
|
* 1 : files/_debug_db_query.php 에 연결하여 출력
|
||||||
**/
|
**/
|
||||||
define('__DEBUG_DB_OUTPUT__', 0);
|
define('__DEBUG_DB_OUTPUT__', 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief DB 쿼리중 정해진 시간을 넘기는 쿼리의 로그 남김
|
* @brief DB 쿼리중 정해진 시간을 넘기는 쿼리의 로그 남김
|
||||||
* 0 : 로그를 남기지 않음
|
* 0 : 로그를 남기지 않음
|
||||||
* 0 이상 : 단위를 초로 하여 지정된 초 이상의 실행시간이 걸린 쿼리를 로그로 남김
|
* 0 이상 : 단위를 초로 하여 지정된 초 이상의 실행시간이 걸린 쿼리를 로그로 남김
|
||||||
* 로그파일은 ./files/_db_slow_query.php 파일로 저장됨
|
* 로그파일은 ./files/_db_slow_query.php 파일로 저장됨
|
||||||
**/
|
**/
|
||||||
define('__LOG_SLOW_QUERY__', 0);
|
define('__LOG_SLOW_QUERY__', 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ob_gzhandler를 이용한 압축 기능을 강제로 사용하거나 끄는 옵션
|
* @brief ob_gzhandler를 이용한 압축 기능을 강제로 사용하거나 끄는 옵션
|
||||||
* 0 : 사용하지 않음
|
* 0 : 사용하지 않음
|
||||||
* 1 : 사용함
|
* 1 : 사용함
|
||||||
* 대부분의 서버에서는 문제가 없는데 특정 서버군에서 압축전송시 IE에서 오동작을 일으키는경우가 있음
|
* 대부분의 서버에서는 문제가 없는데 특정 서버군에서 압축전송시 IE에서 오동작을 일으키는경우가 있음
|
||||||
**/
|
**/
|
||||||
define('__OB_GZHANDLER_ENABLE__', 1);
|
define('__OB_GZHANDLER_ENABLE__', 1);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief zbXE가 설치된 장소의 base path를 구함
|
* @brief zbXE가 설치된 장소의 base path를 구함
|
||||||
**/
|
**/
|
||||||
define('_XE_PATH_', str_replace('config/config.inc.php', '', str_replace('\\', '/', __FILE__)));
|
define('_XE_PATH_', str_replace('config/config.inc.php', '', str_replace('\\', '/', __FILE__)));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 간단하게 사용하기 위한 함수 정의한 파일 require
|
* @brief 간단하게 사용하기 위한 함수 정의한 파일 require
|
||||||
**/
|
**/
|
||||||
require_once(_XE_PATH_.'config/func.inc.php');
|
require_once(_XE_PATH_.'config/func.inc.php');
|
||||||
|
|
||||||
|
|
||||||
if(__DEBUG__) define('__StartTime__', getMicroTime());
|
if(__DEBUG__) define('__StartTime__', getMicroTime());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 기본적인 class 파일 include
|
* @brief 기본적인 class 파일 include
|
||||||
*
|
*
|
||||||
* php5 기반으로 바꾸게 되면 _autoload를 이용할 수 있기에 제거 대상
|
* php5 기반으로 바꾸게 되면 _autoload를 이용할 수 있기에 제거 대상
|
||||||
**/
|
**/
|
||||||
if(__DEBUG__) define('__ClassLoadStartTime__', getMicroTime());
|
if(__DEBUG__) define('__ClassLoadStartTime__', getMicroTime());
|
||||||
require_once(_XE_PATH_.'classes/object/Object.class.php');
|
require_once(_XE_PATH_.'classes/object/Object.class.php');
|
||||||
require_once(_XE_PATH_.'classes/handler/Handler.class.php');
|
require_once(_XE_PATH_.'classes/handler/Handler.class.php');
|
||||||
require_once(_XE_PATH_.'classes/xml/XmlParser.class.php');
|
require_once(_XE_PATH_.'classes/xml/XmlParser.class.php');
|
||||||
require_once(_XE_PATH_.'classes/context/Context.class.php');
|
require_once(_XE_PATH_.'classes/context/Context.class.php');
|
||||||
require_once(_XE_PATH_.'classes/db/DB.class.php');
|
require_once(_XE_PATH_.'classes/db/DB.class.php');
|
||||||
require_once(_XE_PATH_.'classes/file/FileHandler.class.php');
|
require_once(_XE_PATH_.'classes/file/FileHandler.class.php');
|
||||||
require_once(_XE_PATH_.'classes/widget/WidgetHandler.class.php');
|
require_once(_XE_PATH_.'classes/widget/WidgetHandler.class.php');
|
||||||
require_once(_XE_PATH_.'classes/editor/EditorHandler.class.php');
|
require_once(_XE_PATH_.'classes/editor/EditorHandler.class.php');
|
||||||
require_once(_XE_PATH_.'classes/module/ModuleObject.class.php');
|
require_once(_XE_PATH_.'classes/module/ModuleObject.class.php');
|
||||||
require_once(_XE_PATH_.'classes/module/ModuleHandler.class.php');
|
require_once(_XE_PATH_.'classes/module/ModuleHandler.class.php');
|
||||||
require_once(_XE_PATH_.'classes/display/DisplayHandler.class.php');
|
require_once(_XE_PATH_.'classes/display/DisplayHandler.class.php');
|
||||||
require_once(_XE_PATH_.'classes/template/TemplateHandler.class.php');
|
require_once(_XE_PATH_.'classes/template/TemplateHandler.class.php');
|
||||||
require_once(_XE_PATH_.'classes/mail/Mail.class.php');
|
require_once(_XE_PATH_.'classes/mail/Mail.class.php');
|
||||||
if(__DEBUG__) $GLOBALS['__elapsed_class_load__'] = getMicroTime() - __ClassLoadStartTime__;
|
if(__DEBUG__) $GLOBALS['__elapsed_class_load__'] = getMicroTime() - __ClassLoadStartTime__;
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
');
|
');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// time zone
|
// time zone
|
||||||
$time_zone = array(
|
$time_zone = array(
|
||||||
'-1200' => '[GMT -12:00] Baker Island Time',
|
'-1200' => '[GMT -12:00] Baker Island Time',
|
||||||
|
|
@ -90,7 +90,7 @@
|
||||||
* @return module controller instance
|
* @return module controller instance
|
||||||
**/
|
**/
|
||||||
function &getController($module_name) {
|
function &getController($module_name) {
|
||||||
return getModule($module_name, 'controller');
|
return getModule($module_name, 'controller');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -99,7 +99,7 @@
|
||||||
* @return module admin controller instance
|
* @return module admin controller instance
|
||||||
**/
|
**/
|
||||||
function &getAdminController($module_name) {
|
function &getAdminController($module_name) {
|
||||||
return getModule($module_name, 'controller','admin');
|
return getModule($module_name, 'controller','admin');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -108,7 +108,7 @@
|
||||||
* @return module view instance
|
* @return module view instance
|
||||||
**/
|
**/
|
||||||
function &getView($module_name) {
|
function &getView($module_name) {
|
||||||
return getModule($module_name, 'view');
|
return getModule($module_name, 'view');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -117,7 +117,7 @@
|
||||||
* @return module admin view instance
|
* @return module admin view instance
|
||||||
**/
|
**/
|
||||||
function &getAdminView($module_name) {
|
function &getAdminView($module_name) {
|
||||||
return getModule($module_name, 'view','admin');
|
return getModule($module_name, 'view','admin');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -126,7 +126,7 @@
|
||||||
* @return module model instance
|
* @return module model instance
|
||||||
**/
|
**/
|
||||||
function &getModel($module_name) {
|
function &getModel($module_name) {
|
||||||
return getModule($module_name, 'model');
|
return getModule($module_name, 'model');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -135,7 +135,16 @@
|
||||||
* @return module admin model instance
|
* @return module admin model instance
|
||||||
**/
|
**/
|
||||||
function &getAdminModel($module_name) {
|
function &getAdminModel($module_name) {
|
||||||
return getModule($module_name, 'model','admin');
|
return getModule($module_name, 'model','admin');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief module의 api 객체 생성용
|
||||||
|
* @param module_name 모듈이름
|
||||||
|
* @return module api class instance
|
||||||
|
**/
|
||||||
|
function &getAPI($module_name) {
|
||||||
|
return getModule($module_name, 'api');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -144,7 +153,7 @@
|
||||||
* @return module class instance
|
* @return module class instance
|
||||||
**/
|
**/
|
||||||
function &getClass($module_name) {
|
function &getClass($module_name) {
|
||||||
return getModule($module_name, 'class');
|
return getModule($module_name, 'class');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -183,7 +192,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Context::getUrl($args_list)를 쓰기 쉽게 함수로 선언
|
* @brief Context::getUrl()를 쓰기 쉽게 함수로 선언
|
||||||
* @return string
|
* @return string
|
||||||
*
|
*
|
||||||
* getUrl()은 현재 요청된 RequestURI에 주어진 인자의 값으로 변형하여 url을 리턴한다\n
|
* getUrl()은 현재 요청된 RequestURI에 주어진 인자의 값으로 변형하여 url을 리턴한다\n
|
||||||
|
|
@ -201,6 +210,25 @@
|
||||||
return Context::getUrl($num_args, $args_list);
|
return Context::getUrl($num_args, $args_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Context::getUrl()를 쓰기 쉽게 함수로 선언
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
* getSiteUrl()은 지정된 도메인에 대해 주어진 인자의 값으로 변형하여 url을 리턴한다\n
|
||||||
|
* 첫 인자는 도메인(http://등이 제외된)+path 여야 함.
|
||||||
|
**/
|
||||||
|
function getSiteUrl() {
|
||||||
|
$num_args = func_num_args();
|
||||||
|
$args_list = func_get_args();
|
||||||
|
|
||||||
|
if(!$num_args) return Context::getRequestUri();
|
||||||
|
|
||||||
|
$domain = array_shift($args_list);
|
||||||
|
$num_args = count($args_list);
|
||||||
|
|
||||||
|
return Context::getUrl($num_args, $args_list, $domain);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 주어진 문자를 주어진 크기로 자르고 잘라졌을 경우 주어진 꼬리를 담
|
* @brief 주어진 문자를 주어진 크기로 자르고 잘라졌을 경우 주어진 꼬리를 담
|
||||||
* @param string 자를 원 문자열
|
* @param string 자를 원 문자열
|
||||||
|
|
@ -208,27 +236,25 @@
|
||||||
* @param tail 잘라졌을 경우 문자열의 제일 뒤에 붙을 꼬리
|
* @param tail 잘라졌을 경우 문자열의 제일 뒤에 붙을 꼬리
|
||||||
* @return string
|
* @return string
|
||||||
**/
|
**/
|
||||||
function cut_str($string,$cut_size=0,$tail = '...') {
|
function cut_str($string,$cut_size=0,$tail = '...') {
|
||||||
if($cut_size<1 || !$string) return $string;
|
if($cut_size<1 || !$string) return $string;
|
||||||
|
|
||||||
$char_width = Array(5,10,11,16,14,16,16,10,11,11,12,13,10,13,10,12,13,13,13,13,13,13,13,13,13,13,10,10,14,13,14,13,16,15,15,16,15,15,14,16,15,8,13,15,14,16,16,16,15,16,15,15,14,16,15,16,16,15,15,13,16,13,13,11,10,14,14,14,14,14,10,14,14,8,9,13,8,16,14,15,14,14,10,14,10,14,13,16,14,13,14,14,14,14,16);
|
$chars = Array(12, 4, 3, 5, 7, 7, 11, 8, 4, 5, 5, 6, 6, 4, 6, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 8, 6, 8, 6, 10, 8, 8, 9, 8, 8, 7, 9, 8, 3, 6, 7, 7, 11, 8, 9, 8, 9, 8, 8, 7, 8, 8, 10, 8, 8, 8, 6, 11, 6, 6, 6, 4, 7, 7, 7, 7, 7, 3, 7, 7, 3, 3, 6, 3, 9, 7, 7, 7, 7, 4, 7, 3, 7, 6, 10, 6, 6, 7, 6, 6, 6, 9);
|
||||||
$unicode_width = 21;
|
$max_width = $cut_size*$chars[0]/2;
|
||||||
|
|
||||||
$max_width = $cut_size*$unicode_width/2;
|
|
||||||
$char_width = 0;
|
$char_width = 0;
|
||||||
|
|
||||||
$string_length = strlen($string);
|
$string_length = strlen($string);
|
||||||
$char_count = 0;
|
$char_count = 0;
|
||||||
|
|
||||||
$idx = 0;
|
$idx = 0;
|
||||||
while($idx < $string_length && $char_count < $cut_size && $char_width < $max_width) {
|
while($idx < $string_length && $char_count < $cut_size && $char_width <= $max_width) {
|
||||||
$c = ord(substr($string, $idx,1));
|
$c = ord(substr($string, $idx,1));
|
||||||
$char_count++;
|
$char_count++;
|
||||||
if($c<128) {
|
if($c<128) {
|
||||||
$char_width += (int)$char_width[$c-32];
|
$char_width += (int)$chars[$c-32];
|
||||||
$idx++;
|
$idx++;
|
||||||
} else {
|
} else {
|
||||||
$char_width += $unicode_width;
|
$char_width += $chars[0];
|
||||||
$idx += 3;
|
$idx += 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -277,6 +303,21 @@
|
||||||
return mktime($hour, $min, $sec, $month?$month:1, $day?$day:1, $year)+$gap;
|
return mktime($hour, $min, $sec, $month?$month:1, $day?$day:1, $year)+$gap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief YmdHis의 시간 형식을 지금으로 부터 몇분/몇시간전, 1일 이상 차이나면 format string return
|
||||||
|
**/
|
||||||
|
function getTimeGap($date, $format = 'Y.m.d') {
|
||||||
|
$gap = time() - ztime($date);
|
||||||
|
|
||||||
|
$lang_time_gap = Context::getLang('time_gap');
|
||||||
|
if($gap<60) $buff = sprintf($lang_time_gap['min'], (int)($gap / 60)+1);
|
||||||
|
elseif($gap<60*60) $buff = sprintf($lang_time_gap['mins'], (int)($gap / 60)+1);
|
||||||
|
elseif($gap<60*60*2) $buff = sprintf($lang_time_gap['hour'], (int)($gap / 60 /60)+1);
|
||||||
|
elseif($gap<60*60*24) $buff = sprintf($lang_time_gap['hours'], (int)($gap / 60 /60)+1);
|
||||||
|
else $buff = zdate($date, $format);
|
||||||
|
return $buff;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 월이름을 return
|
* @brief 월이름을 return
|
||||||
**/
|
**/
|
||||||
|
|
@ -318,15 +359,22 @@
|
||||||
$year = (int)substr($str,0,4);
|
$year = (int)substr($str,0,4);
|
||||||
$month = (int)substr($str,4,2);
|
$month = (int)substr($str,4,2);
|
||||||
$day = (int)substr($str,6,2);
|
$day = (int)substr($str,6,2);
|
||||||
return str_replace(
|
$string = str_replace(
|
||||||
array('Y','m','d','H','h','i','s','a','M', 'F'),
|
array('Y','m','d','H','h','i','s','a','M', 'F'),
|
||||||
array($year,$month,$day,$hour,$hour/12,$min,$sec,($hour <= 12) ? 'am' : 'pm',getMonthName($month), getMonthName($month,false)),
|
array($year,$month,$day,$hour,$hour/12,$min,$sec,($hour <= 12) ? 'am' : 'pm',getMonthName($month), getMonthName($month,false)),
|
||||||
$format
|
$format
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
// 1970년 이후라면 ztime()함수로 unixtime을 구하고 date함수로 처리
|
||||||
|
$string = date($format, ztime($str));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1970년 이후라면 ztime()함수로 unixtime을 구하고 date함수로 처리
|
// 요일, am/pm을 각 언어에 맞게 변경
|
||||||
return date($format, ztime($str));
|
$unit_week = Context::getLang('unit_week');
|
||||||
|
$unit_meridiem = Context::getLang('unit_meridiem');
|
||||||
|
$string = str_replace(array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'),$unit_week, $string);
|
||||||
|
$string = str_replace(array('am','pm','AM','PM'), $unit_meridiem, $string);
|
||||||
|
return $string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -360,7 +408,7 @@
|
||||||
return (float)$time1 + (float)$time2;
|
return (float)$time1 + (float)$time2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 첫번째 인자로 오는 object var에서 2번째 object의 var들을 제거
|
* @brief 첫번째 인자로 오는 object var에서 2번째 object의 var들을 제거
|
||||||
* @param target_obj 원 object
|
* @param target_obj 원 object
|
||||||
* @param del_obj 원 object의 vars에서 del_obj의 vars를 제거한다
|
* @param del_obj 원 object의 vars에서 del_obj의 vars를 제거한다
|
||||||
|
|
@ -388,9 +436,9 @@
|
||||||
return $return_obj;
|
return $return_obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief php5 이상에서 error_handing을 debugPrint로 변경
|
* @brief php5 이상에서 error_handing을 debugPrint로 변경
|
||||||
* @param errno
|
* @param errno
|
||||||
* @param errstr
|
* @param errstr
|
||||||
* @return file
|
* @return file
|
||||||
* @return line
|
* @return line
|
||||||
|
|
@ -426,20 +474,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief iframe, script코드 제거
|
* @brief 해킹 시도로 의심되는 코드들을 미리 차단
|
||||||
**/
|
**/
|
||||||
function removeHackTag($content) {
|
function removeHackTag($content) {
|
||||||
// iframe 제거
|
// 특정 태그들을 일반 문자로 변경
|
||||||
$content = preg_replace("!<iframe(.*?)<\/iframe>!is", '', $content);
|
$content = preg_replace('/<(\/?)(iframe|script|meta|style)/is', '<$1$2', $content);
|
||||||
|
|
||||||
// script code 제거
|
|
||||||
$content = preg_replace("!<script(.*?)<\/script>!is", '', $content);
|
|
||||||
|
|
||||||
// meta 태그 제거
|
|
||||||
$content = preg_replace("!<meta(.*?)>!is", '', $content);
|
|
||||||
|
|
||||||
// style 태그 제거
|
|
||||||
$content = preg_replace("!<style(.*?)<\/style>!is", '', $content);
|
|
||||||
|
|
||||||
// XSS 사용을 위한 이벤트 제거
|
// XSS 사용을 위한 이벤트 제거
|
||||||
$content = preg_replace_callback("!<([a-z]+)(.*?)>!is", removeJSEvent, $content);
|
$content = preg_replace_callback("!<([a-z]+)(.*?)>!is", removeJSEvent, $content);
|
||||||
|
|
@ -454,15 +493,34 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeJSEvent($matches) {
|
function removeJSEvent($matches) {
|
||||||
$tag = strtolower($matches[1]);
|
$attrs = $matches[2];
|
||||||
if(preg_match('/(src|href)=("|\'?)javascript:/i',$matches[2])) $matches[0] = preg_replace('/(src|href)=("|\'?)javascript:/i','$1=$2_javascript:', $matches[0]);
|
|
||||||
return preg_replace('/ on([a-z]+)=/i',' _on$1=',$matches[0]);
|
// vbscript|javascript 제거
|
||||||
|
if(preg_match('/(src|href|lowsrc|dynsrc)=("|\'?)([\r\n]*)(vbscript|javascript)/is', $matches[2])) {
|
||||||
|
$attrs = preg_replace('/(src|href|lowsrc|dynsrc)=("|\'?)([\r\n]*)(vbscript|javascript)/is','$1=$2_$4', $attrs);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 이벤트 제거
|
||||||
|
// 전제 : 1. 이벤트명 앞에는 개행(r, n, rn)문자와 공백 문자만 올 수 있음
|
||||||
|
// 2. 이벤트명 뒤에는 등호(=)가 존재해야하나 앞, 뒤에 공백이 있을 수 있음
|
||||||
|
// 3. 에디터 컴포넌트에서 on으로 시작하는 변수명을 가질 수 있으므로 실제 이벤트명만을 체크해야 함
|
||||||
|
$attrs = preg_replace(
|
||||||
|
'/(\r|\n| )+on(click|dblclick|mousedown|mouseup|mouseover|mouseout|mousemove|keydown|keyup|keypress|load|unload|abort|error|select|change|submit|reset|resize|scroll|focus|blur)+([= ]+)/is',
|
||||||
|
' _on$2=',
|
||||||
|
$attrs
|
||||||
|
);
|
||||||
|
|
||||||
|
// 링크를 새창으로 열기 위한 이벤트만 복구
|
||||||
|
$attrs = preg_replace('/_onclick=("|\')window\.open\(this\.href\);(.?)return false;("|\')/i','onclick=$1window.open(this.href);$2return false;$3', $attrs);
|
||||||
|
|
||||||
|
return '<'.$matches[1].$attrs.'>';
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeSrcHack($matches) {
|
function removeSrcHack($matches) {
|
||||||
$tag = strtolower(trim($matches[1]));
|
$tag = strtolower(trim($matches[1]));
|
||||||
|
|
||||||
$buff = trim(preg_replace('/(\/>|>)/','/>',$matches[0]));
|
$buff = trim(preg_replace('/(\/>|>)/','/>',$matches[0]));
|
||||||
|
$buff = str_replace(array('&','&'),array('&','&'),$buff);
|
||||||
$buff = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', fixQuotation, $buff);
|
$buff = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', fixQuotation, $buff);
|
||||||
|
|
||||||
$oXmlParser = new XmlParser();
|
$oXmlParser = new XmlParser();
|
||||||
|
|
@ -471,25 +529,27 @@
|
||||||
// src값에 module=admin이라는 값이 입력되어 있으면 이 값을 무효화 시킴
|
// src값에 module=admin이라는 값이 입력되어 있으면 이 값을 무효화 시킴
|
||||||
$src = $xml_doc->{$tag}->attrs->src;
|
$src = $xml_doc->{$tag}->attrs->src;
|
||||||
$dynsrc = $xml_doc->{$tag}->attrs->dynsrc;
|
$dynsrc = $xml_doc->{$tag}->attrs->dynsrc;
|
||||||
if(_isHackedSrc($src) || _isHackedSrc($dynsrc) ) return sprintf("<%s>",$tag);
|
$lowsrc = $xml_doc->{$tag}->attrs->lowsrc;
|
||||||
|
$href = $xml_doc->{$tag}->attrs->href;
|
||||||
|
if(_isHackedSrc($src) || _isHackedSrc($dynsrc) || _isHackedSrc($lowsrc) || _isHackedSrc($href) ) return sprintf("<%s>",$tag);
|
||||||
|
|
||||||
return $matches[0];
|
return $matches[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
function _isHackedSrc($src) {
|
function _isHackedSrc($src) {
|
||||||
if(!$src) return false;
|
if(!$src) return false;
|
||||||
if($src && preg_match('/javascript:/i',$src)) return true;
|
|
||||||
if($src) {
|
if($src) {
|
||||||
$url_info = parse_url($src);
|
$url_info = parse_url($src);
|
||||||
$query = $url_info['query'];
|
$query = $url_info['query'];
|
||||||
$queries = explode('&', $query);
|
$queries = explode('&', $query);
|
||||||
$cnt = count($queries);
|
$cnt = count($queries);
|
||||||
for($i=0;$i<$cnt;$i++) {
|
for($i=0;$i<$cnt;$i++) {
|
||||||
$pos = strpos($queries[$i],'=');
|
$tmp_str = strtolower(trim($queries[$i]));
|
||||||
|
$pos = strpos($tmp_str,'=');
|
||||||
if($pos === false) continue;
|
if($pos === false) continue;
|
||||||
$key = strtolower(trim(substr($queries[$i], 0, $pos)));
|
$key = strtolower(trim(substr($tmp_str, 0, $pos)));
|
||||||
$val = strtolower(trim(substr($queries[$i] ,$pos+1)));
|
$val = strtolower(trim(substr($tmp_str,$pos+1)));
|
||||||
if(($key == 'module' && $val == 'admin') || $key == 'act' && preg_match('/admin/i',$val)) return true;
|
if( ($key=='module'&&$val=='admin') || ($key=='act'&&preg_match('/admin/i',$val)) ) return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -514,7 +574,7 @@
|
||||||
'green' => 0xFF & ($int >> 0x8),
|
'green' => 0xFF & ($int >> 0x8),
|
||||||
'blue' => 0xFF & $int);
|
'blue' => 0xFF & $int);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -554,9 +614,9 @@
|
||||||
return $url;
|
return $url;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* javascript의 escape의 php unescape 함수
|
* javascript의 escape의 php unescape 함수
|
||||||
* Function converts an Javascript escaped string back into a string with specified charset (default is UTF-8).
|
* Function converts an Javascript escaped string back into a string with specified charset (default is UTF-8).
|
||||||
* Modified function from http://pure-essence.net/stuff/code/utf8RawUrlDecode.phps
|
* Modified function from http://pure-essence.net/stuff/code/utf8RawUrlDecode.phps
|
||||||
**/
|
**/
|
||||||
function utf8RawUrlDecode ($source) {
|
function utf8RawUrlDecode ($source) {
|
||||||
|
|
@ -597,4 +657,38 @@
|
||||||
if($num<2097152)return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128) .chr(($num&63)+128);
|
if($num<2097152)return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128) .chr(($num&63)+128);
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function json_encode2($data) {
|
||||||
|
switch (gettype($data)) {
|
||||||
|
case 'boolean':
|
||||||
|
return $data?'true':'false';
|
||||||
|
case 'integer':
|
||||||
|
case 'double':
|
||||||
|
return $data;
|
||||||
|
case 'string':
|
||||||
|
return '"'.strtr($data, array('\\'=>'\\\\','"'=>'\\"')).'"';
|
||||||
|
case 'object':
|
||||||
|
$data = get_object_vars($data);
|
||||||
|
case 'array':
|
||||||
|
$rel = false; // relative array?
|
||||||
|
$key = array_keys($data);
|
||||||
|
foreach ($key as $v) {
|
||||||
|
if (!is_int($v)) {
|
||||||
|
$rel = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$arr = array();
|
||||||
|
foreach ($data as $k=>$v) {
|
||||||
|
$arr[] = ($rel?'"'.strtr($k, array('\\'=>'\\\\','"'=>'\\"')).'":':'').json_encode2($v);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $rel?'{'.join(',', $arr).'}':'['.join(',', $arr).']';
|
||||||
|
default:
|
||||||
|
return '""';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
16
index.php
|
|
@ -4,23 +4,21 @@
|
||||||
* @author zero <zero@zeroboard.com>
|
* @author zero <zero@zeroboard.com>
|
||||||
* @brief 시작 페이지
|
* @brief 시작 페이지
|
||||||
*
|
*
|
||||||
* zeroboard XE의 시작 페이지
|
|
||||||
*
|
|
||||||
* Request Argument에서 mid, act로 module 객체를 찾아서 생성하고 \n
|
* Request Argument에서 mid, act로 module 객체를 찾아서 생성하고 \n
|
||||||
* 모듈 정보를 세팅함
|
* 모듈 정보를 세팅함
|
||||||
*
|
*
|
||||||
* @mainpage 첫페이지
|
* @mainpage 첫페이지
|
||||||
* @section intro 소개
|
* @section intro 소개
|
||||||
* zeroboard XE 는 오픈 프로젝트로 개발되는 오픈 소스입니다.\n
|
* XE 는 오픈 프로젝트로 개발되는 오픈 소스입니다.\n
|
||||||
* 자세한 내용은 아래 링크를 참조하세요.
|
* 자세한 내용은 아래 링크를 참조하세요.
|
||||||
* - 공식홈페이지 : http://www.zeroboard.com
|
* - 공식홈페이지 : http://www.zeroboard.com
|
||||||
* - zbXE 포럼 : http://www.zeroboard.com/forum_main
|
* - XE 포럼 : http://www.zeroboard.com/forum_main
|
||||||
* - 이슈트래킹 : http://trac.zeroboard.com
|
* - 이슈트래킹 : http://trac.zeroboard.com
|
||||||
* - SVN Repository : http://svn.zeroboard.com/zeroboard_xe/trunk
|
* - SVN Repository : http://svn.zeroboard.com/zeroboard_xe/trunk
|
||||||
* - document : http://doc.zeroboard.com
|
* - document : http://doc.zeroboard.com
|
||||||
* - pdf 문서 : http://doc.zeroboard.com/zeroboard_xe.pdf
|
* - pdf 문서 : http://doc.zeroboard.com/zeroboard_xe.pdf
|
||||||
* \n
|
* \n
|
||||||
* "Zeroboard™ XE"는 자유 소프트웨어입니다. \n
|
* "XpressEngine (XE)"은 자유 소프트웨어입니다. \n
|
||||||
* 소프트웨어의 피양도자는 자유 소프트웨어 재단이 공표한 GNU 일반 공중 사용 허가서 2판 또는 \n
|
* 소프트웨어의 피양도자는 자유 소프트웨어 재단이 공표한 GNU 일반 공중 사용 허가서 2판 또는 \n
|
||||||
* 그 이후 판을 임의로 선택해서, 그 규정에 따라 프로그램을 개작하거나 재배포할 수 있습니다. \n
|
* 그 이후 판을 임의로 선택해서, 그 규정에 따라 프로그램을 개작하거나 재배포할 수 있습니다. \n
|
||||||
* \n
|
* \n
|
||||||
|
|
@ -60,8 +58,10 @@
|
||||||
* 그리고 해당 모듈을 실행후 컨텐츠를 출력한다\n
|
* 그리고 해당 모듈을 실행후 컨텐츠를 출력한다\n
|
||||||
**/
|
**/
|
||||||
$oModuleHandler = new ModuleHandler();
|
$oModuleHandler = new ModuleHandler();
|
||||||
$oModuleHandler->init();
|
if($oModuleHandler->init()) {
|
||||||
$oModule = &$oModuleHandler->procModule();
|
$oModule = &$oModuleHandler->procModule();
|
||||||
$oModuleHandler->displayContent($oModule);
|
$oModuleHandler->displayContent($oModule);
|
||||||
|
}
|
||||||
|
|
||||||
|
$oContext->close();
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,15 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<layout version="0.2">
|
<layout version="0.2">
|
||||||
<title xml:lang="ko">제로보드XE 블로그 기본 스킨</title>
|
<title xml:lang="ko">XE 블로그 기본 스킨</title>
|
||||||
<title xml:lang="jp">ZBXEブログのデフォルトスキン</title>
|
<title xml:lang="jp">ZBXEブログのデフォルトスキン</title>
|
||||||
<title xml:lang="zh-CN">Zeroboard XE博客默认皮肤</title>
|
<title xml:lang="zh-CN">XE博客默认皮肤</title>
|
||||||
<title xml:lang="en">Default Skin of Zeroboard XE blog</title>
|
<title xml:lang="en">Default Skin of XE blog</title>
|
||||||
<title xml:lang="ge">Standard-Skin von Zeroboard XE Blog</title>
|
<title xml:lang="ge">Standard-Skin von XE Blog</title>
|
||||||
<title xml:lang="es">Cuidado de la Piel por defecto de Zeroboard XE blog</title>
|
<title xml:lang="es">Cuidado de la Piel por defecto de XE blog</title>
|
||||||
<title xml:lang="ru">По умолчанию Кожа Zeroboard XE блоге</title>
|
<title xml:lang="ru">По умолчанию Кожа XE блоге</title>
|
||||||
|
<title xml:lang="zh-TW">XE部落格預設面板</title>
|
||||||
<description xml:lang="ko">
|
<description xml:lang="ko">
|
||||||
제로보드XE 블로그 기본 스킨입니다.
|
XE 블로그 기본 스킨입니다.
|
||||||
디자인 : 서기정 (http://blog.naver.com/addcozy)
|
디자인 : 서기정 (http://blog.naver.com/addcozy)
|
||||||
HTML/CSS : 소지훈
|
HTML/CSS : 소지훈
|
||||||
</description>
|
</description>
|
||||||
|
|
@ -18,34 +19,39 @@
|
||||||
HTML/CSS : Ju-Hoon So
|
HTML/CSS : Ju-Hoon So
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="zh-CN">
|
<description xml:lang="zh-CN">
|
||||||
Zeroboard XE博客默认皮肤。
|
XE博客默认皮肤。
|
||||||
设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||||
HTML/CSS : Ju-Hoon So
|
HTML/CSS : Ju-Hoon So
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="en">
|
<description xml:lang="en">
|
||||||
This is default skin of Zeroboard XE blog.
|
This is default skin of XE blog.
|
||||||
Design : Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
Design : Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||||
HTML/CSS : Ju-Hoon So
|
HTML/CSS : Ju-Hoon So
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="ge">
|
<description xml:lang="ge">
|
||||||
Dies ist der Standard-Skin Zeroboard XE-Blog.
|
Dies ist der Standard-Skin XE-Blog.
|
||||||
Design: Ki-Seo Jeong (http://blog.naver.com/addcozy)
|
Design: Ki-Seo Jeong (http://blog.naver.com/addcozy)
|
||||||
HTML / CSS: Ju-Hoon Also
|
HTML / CSS: Ju-Hoon Also
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="es">
|
<description xml:lang="es">
|
||||||
Esto es por defecto de la piel Zeroboard XE blog.
|
Esto es por defecto de la piel XE blog.
|
||||||
Diseño: Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
Diseño: Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||||
HTML/CSS : Ju-Hoon So
|
HTML/CSS : Ju-Hoon So
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="ru">
|
<description xml:lang="ru">
|
||||||
Это умолчанию кожи Zeroboard XE блоге.
|
Это умолчанию кожи XE блоге.
|
||||||
Дизайн: Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
Дизайн: Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||||
HTML/CSS : Ju-Hoon So
|
HTML/CSS : Ju-Hoon So
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
XE部落格預設面板。
|
||||||
|
設計 : Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||||
|
HTML/CSS : Ju-Hoon So
|
||||||
|
</description>
|
||||||
<version>0.1</version>
|
<version>0.1</version>
|
||||||
<date>2008-02-26</date>
|
<date>2008-02-26</date>
|
||||||
|
|
||||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
|
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||||
<name xml:lang="ko">zero</name>
|
<name xml:lang="ko">zero</name>
|
||||||
<name xml:lang="jp">zero</name>
|
<name xml:lang="jp">zero</name>
|
||||||
<name xml:lang="zh-CN">zero</name>
|
<name xml:lang="zh-CN">zero</name>
|
||||||
|
|
@ -53,6 +59,7 @@
|
||||||
<name xml:lang="ge">zero</name>
|
<name xml:lang="ge">zero</name>
|
||||||
<name xml:lang="es">zero</name>
|
<name xml:lang="es">zero</name>
|
||||||
<name xml:lang="ru">zero</name>
|
<name xml:lang="ru">zero</name>
|
||||||
|
<name xml:lang="zh-TW">zero</name>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<extra_vars>
|
<extra_vars>
|
||||||
|
|
@ -64,6 +71,7 @@
|
||||||
<title xml:lang="ge">Colorset</title>
|
<title xml:lang="ge">Colorset</title>
|
||||||
<title xml:lang="es">Set de Colores</title>
|
<title xml:lang="es">Set de Colores</title>
|
||||||
<title xml:lang="ru">Colorset</title>
|
<title xml:lang="ru">Colorset</title>
|
||||||
|
<title xml:lang="zh-TW">顏色設定</title>
|
||||||
<description xml:lang="ko">원하시는 컬러셋을 선택해주세요.</description>
|
<description xml:lang="ko">원하시는 컬러셋을 선택해주세요.</description>
|
||||||
<description xml:lang="jp">希望するカラーセットを選択してください。</description>
|
<description xml:lang="jp">希望するカラーセットを選択してください。</description>
|
||||||
<description xml:lang="zh-CN">请选择颜色。</description>
|
<description xml:lang="zh-CN">请选择颜色。</description>
|
||||||
|
|
@ -71,6 +79,7 @@
|
||||||
<description xml:lang="ge">Bitte wählen Sie ein colorset Sie wollen.</description>
|
<description xml:lang="ge">Bitte wählen Sie ein colorset Sie wollen.</description>
|
||||||
<description xml:lang="ru">Выберите colorset хотите.</description>
|
<description xml:lang="ru">Выберите colorset хотите.</description>
|
||||||
<description xml:lang="es">Seleccione set de colores que desea.</description>
|
<description xml:lang="es">Seleccione set de colores que desea.</description>
|
||||||
|
<description xml:lang="zh-TW">請選擇顏色。</description>
|
||||||
<options value="blue">
|
<options value="blue">
|
||||||
<title xml:lang="ko">파란색 (기본)</title>
|
<title xml:lang="ko">파란색 (기본)</title>
|
||||||
<title xml:lang="jp">青 (default)</title>
|
<title xml:lang="jp">青 (default)</title>
|
||||||
|
|
@ -79,6 +88,7 @@
|
||||||
<title xml:lang="ge">Blue (Standard)</title>
|
<title xml:lang="ge">Blue (Standard)</title>
|
||||||
<title xml:lang="es">Azul (default)</title>
|
<title xml:lang="es">Azul (default)</title>
|
||||||
<title xml:lang="ru">Blue (default)</title>
|
<title xml:lang="ru">Blue (default)</title>
|
||||||
|
<title xml:lang="zh-TW">藍色(預設)</title>
|
||||||
</options>
|
</options>
|
||||||
<options value="gray">
|
<options value="gray">
|
||||||
<title xml:lang="ko">회색</title>
|
<title xml:lang="ko">회색</title>
|
||||||
|
|
@ -88,6 +98,7 @@
|
||||||
<title xml:lang="ge">Gray</title>
|
<title xml:lang="ge">Gray</title>
|
||||||
<title xml:lang="es">Gray</title>
|
<title xml:lang="es">Gray</title>
|
||||||
<title xml:lang="ru">Gray</title>
|
<title xml:lang="ru">Gray</title>
|
||||||
|
<title xml:lang="zh-TW">灰色</title>
|
||||||
</options>
|
</options>
|
||||||
<options value="orange">
|
<options value="orange">
|
||||||
<title xml:lang="ko">오렌지</title>
|
<title xml:lang="ko">오렌지</title>
|
||||||
|
|
@ -97,6 +108,7 @@
|
||||||
<title xml:lang="ge">Orange</title>
|
<title xml:lang="ge">Orange</title>
|
||||||
<title xml:lang="es">Orange</title>
|
<title xml:lang="es">Orange</title>
|
||||||
<title xml:lang="ru">Orange</title>
|
<title xml:lang="ru">Orange</title>
|
||||||
|
<title xml:lang="zh-TW">橘色</title>
|
||||||
</options>
|
</options>
|
||||||
<options value="violet">
|
<options value="violet">
|
||||||
<title xml:lang="ko">보라색</title>
|
<title xml:lang="ko">보라색</title>
|
||||||
|
|
@ -106,6 +118,7 @@
|
||||||
<title xml:lang="ge">Violett</title>
|
<title xml:lang="ge">Violett</title>
|
||||||
<title xml:lang="es">Violet</title>
|
<title xml:lang="es">Violet</title>
|
||||||
<title xml:lang="ru">Violet</title>
|
<title xml:lang="ru">Violet</title>
|
||||||
|
<title xml:lang="zh-TW">紫色</title>
|
||||||
</options>
|
</options>
|
||||||
<options value="green">
|
<options value="green">
|
||||||
<title xml:lang="ko">초록색</title>
|
<title xml:lang="ko">초록색</title>
|
||||||
|
|
@ -115,23 +128,26 @@
|
||||||
<title xml:lang="ge">Grün</title>
|
<title xml:lang="ge">Grün</title>
|
||||||
<title xml:lang="es">Verde</title>
|
<title xml:lang="es">Verde</title>
|
||||||
<title xml:lang="ru">Green</title>
|
<title xml:lang="ru">Green</title>
|
||||||
|
<title xml:lang="zh-TW">綠色</title>
|
||||||
</options>
|
</options>
|
||||||
</var>
|
</var>
|
||||||
<var name="target_mid" type="text">
|
<var name="target_mid" type="text">
|
||||||
<title xml:lang="ko">기본 모듈</title>
|
<title xml:lang="ko">기본 모듈</title>
|
||||||
<title xml:lang="jp">기본 모듈</title>
|
<title xml:lang="jp">デフォルトモジュール</title>
|
||||||
<title xml:lang="zh-CN">默认模块</title>
|
<title xml:lang="zh-CN">默认模块</title>
|
||||||
<title xml:lang="en">Basic module</title>
|
<title xml:lang="en">Basic module</title>
|
||||||
<title xml:lang="ge">Basismodul</title>
|
<title xml:lang="ge">Basismodul</title>
|
||||||
<title xml:lang="es">Módulo Básico</title>
|
<title xml:lang="es">Módulo Básico</title>
|
||||||
<title xml:lang="ru">Основной модуль</title>
|
<title xml:lang="ru">Основной модуль</title>
|
||||||
|
<title xml:lang="zh-TW">預設模組</title>
|
||||||
<description xml:lang="ko">기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다</description>
|
<description xml:lang="ko">기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다</description>
|
||||||
<description xml:lang="jp">기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다</description>
|
<description xml:lang="jp">デフォルトモジュールを指定するとレイアウトで表示されるウィジェットが正常に作動するようになります。</description>
|
||||||
<description xml:lang="zh-CN">为了让博客系统中的控件正常运作,在这里必须得指定默认版面模块名。</description>
|
<description xml:lang="zh-CN">为了让博客系统中的控件正常运作,在这里必须得指定默认版面模块名。</description>
|
||||||
<description xml:lang="en">The widgets that are being displayed in the layout will work properly if you select the basic module</description>
|
<description xml:lang="en">The widgets that are being displayed in the layout will work properly if you select the basic module</description>
|
||||||
<description xml:lang="ge">Die Widgets, die angezeigt werden im Layout wird ordnungsgemäß funktionieren, wenn Sie das Basismodul</description>
|
<description xml:lang="ge">Die Widgets, die angezeigt werden im Layout wird ordnungsgemäß funktionieren, wenn Sie das Basismodul</description>
|
||||||
<description xml:lang="es">Los reproductores que se muestran en el diseño funcionará correctamente si selecciona el módulo básico</description>
|
<description xml:lang="es">Los reproductores que se muestran en el diseño funcionará correctamente si selecciona el módulo básico</description>
|
||||||
<description xml:lang="ru">В виджеты, которые отображаются в формате будет работать правильно, если вы выбираете основной модуль</description>
|
<description xml:lang="ru">В виджеты, которые отображаются в формате будет работать правильно, если вы выбираете основной модуль</description>
|
||||||
|
<description xml:lang="zh-TW">要讓部落格系統中的控件正常運作,必須要指定預設討論板模組名稱。</description>
|
||||||
</var>
|
</var>
|
||||||
<var name="background_image" type="image">
|
<var name="background_image" type="image">
|
||||||
<title xml:lang="ko">배경 이미지</title>
|
<title xml:lang="ko">배경 이미지</title>
|
||||||
|
|
@ -140,6 +156,7 @@
|
||||||
<title xml:lang="en">Background Image</title>
|
<title xml:lang="en">Background Image</title>
|
||||||
<title xml:lang="es">Imagen de fondo</title>
|
<title xml:lang="es">Imagen de fondo</title>
|
||||||
<title xml:lang="ru">Фоновое изображение</title>
|
<title xml:lang="ru">Фоновое изображение</title>
|
||||||
|
<title xml:lang="zh-TW">背景圖片</title>
|
||||||
<description xml:lang="ko">배경 이미지를 사용하시려면 등록해주세요.</description>
|
<description xml:lang="ko">배경 이미지를 사용하시려면 등록해주세요.</description>
|
||||||
<description xml:lang="jp">背景イメージを使う場合は、登録してください。</description>
|
<description xml:lang="jp">背景イメージを使う場合は、登録してください。</description>
|
||||||
<description xml:lang="zh-CN">要想使用背景图片请在这里上传。</description>
|
<description xml:lang="zh-CN">要想使用背景图片请在这里上传。</description>
|
||||||
|
|
@ -147,6 +164,7 @@
|
||||||
<description xml:lang="ge">Bitte geben Sie, wenn Sie verwenden wollen Hintergrundbild.</description>
|
<description xml:lang="ge">Bitte geben Sie, wenn Sie verwenden wollen Hintergrundbild.</description>
|
||||||
<description xml:lang="es">Entre, por favor, si desea utilizar la imagen de fondo.</description>
|
<description xml:lang="es">Entre, por favor, si desea utilizar la imagen de fondo.</description>
|
||||||
<description xml:lang="ru">Введите, если вы хотите использовать фоновое изображение.</description>
|
<description xml:lang="ru">Введите, если вы хотите использовать фоновое изображение.</description>
|
||||||
|
<description xml:lang="zh-TW">請在這裡上傳想要使用的背景圖片。</description>
|
||||||
</var>
|
</var>
|
||||||
<var name="profile_image" type="image">
|
<var name="profile_image" type="image">
|
||||||
<title xml:lang="ko">프로필 이미지</title>
|
<title xml:lang="ko">프로필 이미지</title>
|
||||||
|
|
@ -156,6 +174,7 @@
|
||||||
<title xml:lang="ge">Profil Bilder</title>
|
<title xml:lang="ge">Profil Bilder</title>
|
||||||
<title xml:lang="es">Perfil de Imagen</title>
|
<title xml:lang="es">Perfil de Imagen</title>
|
||||||
<title xml:lang="ru">Профиль Изображение</title>
|
<title xml:lang="ru">Профиль Изображение</title>
|
||||||
|
<title xml:lang="zh-TW">部落格頭像</title>
|
||||||
<description xml:lang="ko">프로필 이미지를 입력해 주세요 (가로 사이즈는 160px이 가장 보기 좋습니다)</description>
|
<description xml:lang="ko">프로필 이미지를 입력해 주세요 (가로 사이즈는 160px이 가장 보기 좋습니다)</description>
|
||||||
<description xml:lang="jp">プロフィールイメージを入力してください(横幅は「160px」が一番適しています)。</description>
|
<description xml:lang="jp">プロフィールイメージを入力してください(横幅は「160px」が一番適しています)。</description>
|
||||||
<description xml:lang="zh-CN">请上传博客个性头像(推荐宽度为160px)。</description>
|
<description xml:lang="zh-CN">请上传博客个性头像(推荐宽度为160px)。</description>
|
||||||
|
|
@ -163,6 +182,7 @@
|
||||||
<description xml:lang="ge">itte geben Sie Ihre Image-Profil (Es wird empfohlen, Breite 160px)</description>
|
<description xml:lang="ge">itte geben Sie Ihre Image-Profil (Es wird empfohlen, Breite 160px)</description>
|
||||||
<description xml:lang="es">Por favor, el perfil de entrada de imagen (Se recomienda configurar el ancho de 160px)</description>
|
<description xml:lang="es">Por favor, el perfil de entrada de imagen (Se recomienda configurar el ancho de 160px)</description>
|
||||||
<description xml:lang="ru">Введите профиля изображения (Рекомендуется устанавливать ширину, 160px)</description>
|
<description xml:lang="ru">Введите профиля изображения (Рекомендуется устанавливать ширину, 160px)</description>
|
||||||
|
<description xml:lang="zh-TW">請上傳部落格頭像(最適寬度 160px)。</description>
|
||||||
</var>
|
</var>
|
||||||
<var name="profile" type="textarea">
|
<var name="profile" type="textarea">
|
||||||
<title xml:lang="ko">프로필</title>
|
<title xml:lang="ko">프로필</title>
|
||||||
|
|
@ -172,6 +192,7 @@
|
||||||
<title xml:lang="ge">Profil</title>
|
<title xml:lang="ge">Profil</title>
|
||||||
<title xml:lang="es">Perfil</title>
|
<title xml:lang="es">Perfil</title>
|
||||||
<title xml:lang="ru">Профиль</title>
|
<title xml:lang="ru">Профиль</title>
|
||||||
|
<title xml:lang="zh-TW">簡介</title>
|
||||||
<description lang="ko">간단한 프로필을 입력해주세요</description>
|
<description lang="ko">간단한 프로필을 입력해주세요</description>
|
||||||
<description lang="jp">簡単なプロフィールを入力してください。</description>
|
<description lang="jp">簡単なプロフィールを入力してください。</description>
|
||||||
<description lang="zh-CN">请输入简单介绍。</description>
|
<description lang="zh-CN">请输入简单介绍。</description>
|
||||||
|
|
@ -179,6 +200,7 @@
|
||||||
<description lang="ge">Bitte geben Sie Ihre Simple Profile</description>
|
<description lang="ge">Bitte geben Sie Ihre Simple Profile</description>
|
||||||
<description lang="es">Por favor, introduzca su perfil simple</description>
|
<description lang="es">Por favor, introduzca su perfil simple</description>
|
||||||
<description lang="ru">Введите простое профиль</description>
|
<description lang="ru">Введите простое профиль</description>
|
||||||
|
<description lang="zh-TW">請輸入簡單說明。</description>
|
||||||
</var>
|
</var>
|
||||||
</extra_vars>
|
</extra_vars>
|
||||||
|
|
||||||
|
|
@ -191,6 +213,7 @@
|
||||||
<title xml:lang="ge">Top-Menü</title>
|
<title xml:lang="ge">Top-Menü</title>
|
||||||
<title xml:lang="es">Menú superior</title>
|
<title xml:lang="es">Menú superior</title>
|
||||||
<title xml:lang="ru">Главное меню</title>
|
<title xml:lang="ru">Главное меню</title>
|
||||||
|
<title xml:lang="zh-TW">主選單</title>
|
||||||
</menu>
|
</menu>
|
||||||
</menus>
|
</menus>
|
||||||
</layout>
|
</layout>
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,9 @@
|
||||||
<title xml:lang="ru">ZBXE Официальный сайт макет</title>
|
<title xml:lang="ru">ZBXE Официальный сайт макет</title>
|
||||||
<title xml:lang="es">Diseño oficial de la página web de ZBXE</title>
|
<title xml:lang="es">Diseño oficial de la página web de ZBXE</title>
|
||||||
<title xml:lang="zh-CN">ZBXE 官方网站布局</title>
|
<title xml:lang="zh-CN">ZBXE 官方网站布局</title>
|
||||||
|
<title xml:lang="zh-TW">ZBXE 官方網站版面</title>
|
||||||
<description xml:lang="ko">
|
<description xml:lang="ko">
|
||||||
제로보드XE 공식 사이트 레이아웃입니다.
|
XE 공식 사이트 레이아웃입니다.
|
||||||
디자인 : 이소라
|
디자인 : 이소라
|
||||||
퍼블리싱 : 정찬명
|
퍼블리싱 : 정찬명
|
||||||
레이아웃 제작 : zero
|
레이아웃 제작 : zero
|
||||||
|
|
@ -20,19 +21,19 @@
|
||||||
レイアウト作成:Zero
|
レイアウト作成:Zero
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="en">
|
<description xml:lang="en">
|
||||||
This layout is the Zeroboard XE Official website layout.
|
This layout is the XE Official website layout.
|
||||||
Designer : So-Ra Lee
|
Designer : So-Ra Lee
|
||||||
HTML/CSS : Chan-Myung Jeong
|
HTML/CSS : Chan-Myung Jeong
|
||||||
Layout producer : zero
|
Layout producer : zero
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="ge">
|
<description xml:lang="ge">
|
||||||
Dieses Layout ist das Zeroboard XE Offizielle Website-Layout.
|
Dieses Layout ist das XE Offizielle Website-Layout.
|
||||||
Designer: So-Ra Lee
|
Designer: So-Ra Lee
|
||||||
HTML / CSS: Chan-Myung Jeong
|
HTML / CSS: Chan-Myung Jeong
|
||||||
Layout Hersteller: Zero
|
Layout Hersteller: Zero
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="ru">
|
<description xml:lang="ru">
|
||||||
Этот формат является Zeroboard XE Официальный сайт компоновку.
|
Этот формат является XE Официальный сайт компоновку.
|
||||||
Дизайнер: So-Ra Lee
|
Дизайнер: So-Ra Lee
|
||||||
HTML / CSS: Chan-Myung Jeong
|
HTML / CSS: Chan-Myung Jeong
|
||||||
Макет производителя: ноль
|
Макет производителя: ноль
|
||||||
|
|
@ -44,22 +45,29 @@
|
||||||
Productor del diseño : zero
|
Productor del diseño : zero
|
||||||
</description>
|
</description>
|
||||||
<description xml:lang="zh-CN">
|
<description xml:lang="zh-CN">
|
||||||
Zeroboard XE官方网站布局。
|
XE官方网站布局。
|
||||||
设计 : So-Ra Lee
|
设计 : So-Ra Lee
|
||||||
HTML/CSS : Chan-Myung Jeong
|
HTML/CSS : Chan-Myung Jeong
|
||||||
布局 : zero
|
布局 : zero
|
||||||
</description>
|
</description>
|
||||||
|
<description xml:lang="zh-TW">
|
||||||
|
XE官方網站版面。
|
||||||
|
設計 : So-Ra Lee
|
||||||
|
HTML/CSS : Chan-Myung Jeong
|
||||||
|
版面設計 : zero
|
||||||
|
</description>
|
||||||
<version>0.1</version>
|
<version>0.1</version>
|
||||||
<date>2007-08-01</date>
|
<date>2007-08-01</date>
|
||||||
|
|
||||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
|
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||||
<name xml:lang="ko">zero</name>
|
<name xml:lang="ko">zero</name>
|
||||||
<name xml:lang="jp">Zero</name>
|
<name xml:lang="jp">zero</name>
|
||||||
<name xml:lang="en">zero</name>
|
<name xml:lang="en">zero</name>
|
||||||
<name xml:lang="ge">zero</name>
|
<name xml:lang="ge">zero</name>
|
||||||
<name xml:lang="ru">zero</name>
|
<name xml:lang="ru">zero</name>
|
||||||
<name xml:lang="es">zero</name>
|
<name xml:lang="es">zero</name>
|
||||||
<name xml:lang="zh-CN">zero</name>
|
<name xml:lang="zh-CN">zero</name>
|
||||||
|
<name xml:lang="zh-TW">zero</name>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<extra_vars>
|
<extra_vars>
|
||||||
|
|
@ -67,6 +75,7 @@
|
||||||
<title xml:lang="ko">컬러셋</title>
|
<title xml:lang="ko">컬러셋</title>
|
||||||
<title xml:lang="jp">カラーセット</title>
|
<title xml:lang="jp">カラーセット</title>
|
||||||
<title xml:lang="zh-CN">颜色</title>
|
<title xml:lang="zh-CN">颜色</title>
|
||||||
|
<title xml:lang="zh-TW">顏色設定</title>
|
||||||
<title xml:lang="en">Colorset</title>
|
<title xml:lang="en">Colorset</title>
|
||||||
<title xml:lang="ge">Colorset</title>
|
<title xml:lang="ge">Colorset</title>
|
||||||
<title xml:lang="ru">Colorset</title>
|
<title xml:lang="ru">Colorset</title>
|
||||||
|
|
@ -74,6 +83,7 @@
|
||||||
<description xml:lang="ko">원하시는 컬러셋을 선택해주세요.</description>
|
<description xml:lang="ko">원하시는 컬러셋을 선택해주세요.</description>
|
||||||
<description xml:lang="jp">希望するカラーセットを選択してください。</description>
|
<description xml:lang="jp">希望するカラーセットを選択してください。</description>
|
||||||
<description xml:lang="zh-CN">请选择颜色。</description>
|
<description xml:lang="zh-CN">请选择颜色。</description>
|
||||||
|
<description xml:lang="zh-TW">請選擇顏色。</description>
|
||||||
<description xml:lang="en">Please select a colorset you want.</description>
|
<description xml:lang="en">Please select a colorset you want.</description>
|
||||||
<description xml:lang="ge">Bitte wählen Sie ein colorset Sie wollen.</description>
|
<description xml:lang="ge">Bitte wählen Sie ein colorset Sie wollen.</description>
|
||||||
<description xml:lang="ru">Выберите colorset хотите.</description>
|
<description xml:lang="ru">Выберите colorset хотите.</description>
|
||||||
|
|
@ -86,6 +96,7 @@
|
||||||
<title xml:lang="ru">Базовые</title>
|
<title xml:lang="ru">Базовые</title>
|
||||||
<title xml:lang="es">Básico</title>
|
<title xml:lang="es">Básico</title>
|
||||||
<title xml:lang="zh-CN">默认</title>
|
<title xml:lang="zh-CN">默认</title>
|
||||||
|
<title xml:lang="zh-TW">預設</title>
|
||||||
</options>
|
</options>
|
||||||
<options value="black">
|
<options value="black">
|
||||||
<title xml:lang="ko">검은색</title>
|
<title xml:lang="ko">검은색</title>
|
||||||
|
|
@ -95,6 +106,7 @@
|
||||||
<title xml:lang="ru">Черного</title>
|
<title xml:lang="ru">Черного</title>
|
||||||
<title xml:lang="es">Negro</title>
|
<title xml:lang="es">Negro</title>
|
||||||
<title xml:lang="zh-CN">黑色</title>
|
<title xml:lang="zh-CN">黑色</title>
|
||||||
|
<title xml:lang="zh-TW">黑色</title>
|
||||||
</options>
|
</options>
|
||||||
<options value="white">
|
<options value="white">
|
||||||
<title xml:lang="ko">하얀색</title>
|
<title xml:lang="ko">하얀색</title>
|
||||||
|
|
@ -104,12 +116,14 @@
|
||||||
<title xml:lang="ru">белый</title>
|
<title xml:lang="ru">белый</title>
|
||||||
<title xml:lang="es">Blanco</title>
|
<title xml:lang="es">Blanco</title>
|
||||||
<title xml:lang="zh-CN">白色</title>
|
<title xml:lang="zh-CN">白色</title>
|
||||||
|
<title xml:lang="zh-TW">白色</title>
|
||||||
</options>
|
</options>
|
||||||
</var>
|
</var>
|
||||||
<var name="logo_image" type="image">
|
<var name="logo_image" type="image">
|
||||||
<title xml:lang="ko">로고이미지</title>
|
<title xml:lang="ko">로고이미지</title>
|
||||||
<title xml:lang="jp">ロゴイメージ</title>
|
<title xml:lang="jp">ロゴイメージ</title>
|
||||||
<title xml:lang="zh-CN">LOGO图片</title>
|
<title xml:lang="zh-CN">LOGO图片</title>
|
||||||
|
<title xml:lang="zh-TW">LOGO圖片</title>
|
||||||
<title xml:lang="en">Logo image</title>
|
<title xml:lang="en">Logo image</title>
|
||||||
<title xml:lang="ge">Logobildes</title>
|
<title xml:lang="ge">Logobildes</title>
|
||||||
<title xml:lang="ru">Изображения логотипа</title>
|
<title xml:lang="ru">Изображения логотипа</title>
|
||||||
|
|
@ -117,6 +131,7 @@
|
||||||
<description xml:lang="ko">레이아웃의 상단에 표시될 로고이미지를 입력하세요. (세로길이가 23px인 투명이미지가 가장 어울립니다)</description>
|
<description xml:lang="ko">레이아웃의 상단에 표시될 로고이미지를 입력하세요. (세로길이가 23px인 투명이미지가 가장 어울립니다)</description>
|
||||||
<description xml:lang="jp">レイアウトの上段に表示されるロゴイメージを入力してください。 (縦幅が23pxである透明イメージが最も合います。)</description>
|
<description xml:lang="jp">レイアウトの上段に表示されるロゴイメージを入力してください。 (縦幅が23pxである透明イメージが最も合います。)</description>
|
||||||
<description xml:lang="zh-CN">请输入显示在布局顶部的LOGO图片。(高度为23px的透明图片为适。)</description>
|
<description xml:lang="zh-CN">请输入显示在布局顶部的LOGO图片。(高度为23px的透明图片为适。)</description>
|
||||||
|
<description xml:lang="zh-TW">請輸入在版面上端要顯示的LOGO圖片。(適當高度為23px的透明圖片。)</description>
|
||||||
<description xml:lang="en">Please input a logo image which will be displayed on the top of layout. (Transparent image with height of 23px is recommended.)</description>
|
<description xml:lang="en">Please input a logo image which will be displayed on the top of layout. (Transparent image with height of 23px is recommended.)</description>
|
||||||
<description xml:lang="ge">Bitte geben Sie ein Logo das Bild wird auf dem oberen Layout. (Transparent Bild mit einer Höhe von 23px wird empfohlen).</description>
|
<description xml:lang="ge">Bitte geben Sie ein Logo das Bild wird auf dem oberen Layout. (Transparent Bild mit einer Höhe von 23px wird empfohlen).</description>
|
||||||
<description xml:lang="ru">Введите логотип изображение, которое будет отображаться в верхней части формы. (Прозрачный изображение с высотой 23px рекомендуется.)</description>
|
<description xml:lang="ru">Введите логотип изображение, которое будет отображаться в верхней части формы. (Прозрачный изображение с высотой 23px рекомендуется.)</description>
|
||||||
|
|
@ -126,6 +141,7 @@
|
||||||
<title xml:lang="ko">홈 페이지 URL</title>
|
<title xml:lang="ko">홈 페이지 URL</title>
|
||||||
<title xml:lang="jp">ホームページURL</title>
|
<title xml:lang="jp">ホームページURL</title>
|
||||||
<title xml:lang="zh-CN">主页地址</title>
|
<title xml:lang="zh-CN">主页地址</title>
|
||||||
|
<title xml:lang="zh-TW">主頁URL</title>
|
||||||
<title xml:lang="en">Homepage URL</title>
|
<title xml:lang="en">Homepage URL</title>
|
||||||
<title xml:lang="ge">Homepage URL</title>
|
<title xml:lang="ge">Homepage URL</title>
|
||||||
<title xml:lang="ru">Домашняя страница URL</title>
|
<title xml:lang="ru">Домашняя страница URL</title>
|
||||||
|
|
@ -133,6 +149,7 @@
|
||||||
<description xml:lang="ko">로고를 클릭시에 이동할 홈 페이지 URL을 입력해 주세요.</description>
|
<description xml:lang="ko">로고를 클릭시에 이동할 홈 페이지 URL을 입력해 주세요.</description>
|
||||||
<description xml:lang="jp">ロゴをクリックした時に移動するホームページのURLを入力してください。</description>
|
<description xml:lang="jp">ロゴをクリックした時に移動するホームページのURLを入力してください。</description>
|
||||||
<description xml:lang="zh-CN">点击网站LOGO时要移动的页面URL。</description>
|
<description xml:lang="zh-CN">点击网站LOGO时要移动的页面URL。</description>
|
||||||
|
<description xml:lang="zh-TW">請輸入要移往的頁面URL,當用戶按了網站LOGO後。</description>
|
||||||
<description xml:lang="en">Please input the URL to redirect when user clicks the logo</description>
|
<description xml:lang="en">Please input the URL to redirect when user clicks the logo</description>
|
||||||
<description xml:lang="ge">Bitte geben Sie die URL umzuleiten, wenn Benutzer klickt das Logo</description>
|
<description xml:lang="ge">Bitte geben Sie die URL umzuleiten, wenn Benutzer klickt das Logo</description>
|
||||||
<description xml:lang="ru">Пожалуйста, введите URL для перенаправления, когда пользователь нажимает логотип</description>
|
<description xml:lang="ru">Пожалуйста, введите URL для перенаправления, когда пользователь нажимает логотип</description>
|
||||||
|
|
@ -142,6 +159,7 @@
|
||||||
<title xml:lang="ko">배경 이미지</title>
|
<title xml:lang="ko">배경 이미지</title>
|
||||||
<title xml:lang="jp">背景イメージ</title>
|
<title xml:lang="jp">背景イメージ</title>
|
||||||
<title xml:lang="zh-CN">背景图片</title>
|
<title xml:lang="zh-CN">背景图片</title>
|
||||||
|
<title xml:lang="zh-TW">背景圖片</title>
|
||||||
<title xml:lang="en">Background Image</title>
|
<title xml:lang="en">Background Image</title>
|
||||||
<title xml:lang="ge">Hintergrundbild</title>
|
<title xml:lang="ge">Hintergrundbild</title>
|
||||||
<title xml:lang="ru">Фоновое изображение</title>
|
<title xml:lang="ru">Фоновое изображение</title>
|
||||||
|
|
@ -149,6 +167,7 @@
|
||||||
<description xml:lang="ko">배경 이미지를 사용하시려면 등록해주세요.</description>
|
<description xml:lang="ko">배경 이미지를 사용하시려면 등록해주세요.</description>
|
||||||
<description xml:lang="jp">背景イメージを使う場合は、登録してください。</description>
|
<description xml:lang="jp">背景イメージを使う場合は、登録してください。</description>
|
||||||
<description xml:lang="zh-CN">要想使用背景图片请在这里上传。</description>
|
<description xml:lang="zh-CN">要想使用背景图片请在这里上传。</description>
|
||||||
|
<description xml:lang="zh-TW">請在這裡上傳想要使用的背景圖片。</description>
|
||||||
<description xml:lang="en">Please input if you want to use background image.</description>
|
<description xml:lang="en">Please input if you want to use background image.</description>
|
||||||
<description xml:lang="ge">Bitte geben Sie, wenn Sie verwenden wollen Hintergrundbild.</description>
|
<description xml:lang="ge">Bitte geben Sie, wenn Sie verwenden wollen Hintergrundbild.</description>
|
||||||
<description xml:lang="ru">Введите, если вы хотите использовать фоновое изображение.</description>
|
<description xml:lang="ru">Введите, если вы хотите использовать фоновое изображение.</description>
|
||||||
|
|
@ -161,6 +180,7 @@
|
||||||
<title xml:lang="ko">상단 메뉴</title>
|
<title xml:lang="ko">상단 메뉴</title>
|
||||||
<title xml:lang="jp">上段メニュー</title>
|
<title xml:lang="jp">上段メニュー</title>
|
||||||
<title xml:lang="zh-CN">主菜单</title>
|
<title xml:lang="zh-CN">主菜单</title>
|
||||||
|
<title xml:lang="zh-TW">主選單</title>
|
||||||
<title xml:lang="en">Top menu</title>
|
<title xml:lang="en">Top menu</title>
|
||||||
<title xml:lang="ge">Top Menü</title>
|
<title xml:lang="ge">Top Menü</title>
|
||||||
<title xml:lang="ru">Верхнее меню</title>
|
<title xml:lang="ru">Верхнее меню</title>
|
||||||
|
|
@ -170,10 +190,11 @@
|
||||||
<title xml:lang="ko">하단 메뉴 </title>
|
<title xml:lang="ko">하단 메뉴 </title>
|
||||||
<title xml:lang="jp">下段メニュー</title>
|
<title xml:lang="jp">下段メニュー</title>
|
||||||
<title xml:lang="zh-CN">底部菜单</title>
|
<title xml:lang="zh-CN">底部菜单</title>
|
||||||
|
<title xml:lang="zh-TW">底部選單</title>
|
||||||
<title xml:lang="en">Bottom menu</title>
|
<title xml:lang="en">Bottom menu</title>
|
||||||
<title xml:lang="ge">Bottom-Menü</title>
|
<title xml:lang="ge">Bottom-Menü</title>
|
||||||
<title xml:lang="ru">Внизу меню</title>
|
<title xml:lang="ru">Внизу меню</title>
|
||||||
<title xml:lang="es">Menú Inferior </title>
|
<title xml:lang="es">Menú Inferior </title>
|
||||||
</menu>
|
</menu>
|
||||||
</menus>
|
</menus>
|
||||||
</layout>
|
</layout>
|
||||||
|
|
|
||||||
|
|
@ -1,91 +1,91 @@
|
||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
/*
|
/*
|
||||||
NHN UIT Lab. WebStandardization Team (http://html.nhndesign.com/)
|
NHN UIT Lab. WebStandardization Team (http://html.nhndesign.com/)
|
||||||
Jeong, Chan Myeong 070601~070630
|
Jeong, Chan Myeong 070601~070630
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Black Skin - Start */
|
/* Black Skin - Start */
|
||||||
#selectLang { margin:0; padding:0; }
|
#selectLang { margin:0; padding:0; }
|
||||||
#gnb { margin:0; padding:0; }
|
#gnb { margin:0; padding:0; }
|
||||||
#lnb { margin:0; padding:0; }
|
#lnb { margin:0; padding:0; }
|
||||||
#lnb ul { margin:0; padding:0; }
|
#lnb ul { margin:0; padding:0; }
|
||||||
|
|
||||||
/* Site Layout - Body Wrap */
|
/* Site Layout - Body Wrap */
|
||||||
body { background:#3d3d3d url(../images/black/bgBody.gif) repeat-x;}
|
body { background:#000;}
|
||||||
#bodyWrap { position:relative; width:980px; margin:0 auto; padding:1.5em 0 0 0;}
|
#bodyWrap { position:relative; width:980px; margin:0 auto; padding:1.5em 0 0 0;}
|
||||||
|
|
||||||
/* Site Layout - Header */
|
/* Site Layout - Header */
|
||||||
#header { position:relative; width:980px; height:120px; background:url(../images/black/bgHeader.jpg) no-repeat right top; margin-bottom:10px; z-index:99;}
|
#header { position:relative; width:980px; height:120px; background:url(../images/black/bgHeader.jpg) no-repeat right top; margin-bottom:10px; z-index:99;}
|
||||||
#header h1 { position:absolute; top:32px; left:25px;}
|
#header h1 { position:absolute; top:32px; left:25px;}
|
||||||
#language { position:absolute; top:18px; right:19px; z-index:100;}
|
#language { position:absolute; top:18px; right:19px; z-index:100;}
|
||||||
#language strong { color:#ffffff; font:.75em Tahoma; margin-right:3px;}
|
#language strong { color:#ffffff; font:.75em Tahoma; margin-right:3px;}
|
||||||
#language a img { vertical-align:-5px;}
|
#language a img { vertical-align:-5px;}
|
||||||
#language ul { position:absolute; top:15px; right:0px; display:none; border:1px solid #282827; background:#3d3d3d;}
|
#language ul { position:absolute; top:15px; right:0px; display:none; border:1px solid #282827; background:#3d3d3d;}
|
||||||
#language ul li { list-style:none; }
|
#language ul li { list-style:none; }
|
||||||
#language ul li a { display:block; width:61px; padding:3px 8px; font:9px Tahoma; color:#cbcbcb; text-decoration:none;}
|
#language ul li a { display:block; width:61px; padding:3px 8px; font:9px Tahoma; color:#cbcbcb; text-decoration:none;}
|
||||||
#language ul li a:hover { background:#373736;}
|
#language ul li a:hover { background:#373736;}
|
||||||
|
|
||||||
#it_search_form { position:absolute; top:50px; right:15px;}
|
#it_search_form { position:absolute; top:50px; right:15px;}
|
||||||
#it_search_form .input { border:1px solid #bc4032; height:17px; width:120px; color:#888888; font-size:.9em;}
|
#it_search_form .input { border:1px solid #bc4032; height:17px; width:120px; color:#888888; font-size:.9em;}
|
||||||
#it_search_form .submit_button { width:1px; height:1px; visibility:hidden; }
|
#it_search_form .submit_button { width:1px; height:1px; visibility:hidden; }
|
||||||
|
|
||||||
#gnb { position:absolute; top:82px; left:0; height:38px; overflow:hidden; white-space:nowrap; margin-bottom:10px;}
|
#gnb { position:absolute; top:82px; left:0; height:38px; overflow:hidden; white-space:nowrap; margin-bottom:10px;}
|
||||||
#gnb li { list-style:none; float:left; background:url(../images/black/bgGnbVr.gif) no-repeat left center; padding-left:2px; position:relative; left:-2px; white-space:nowrap;}
|
#gnb li { list-style:none; float:left; background:url(../images/black/bgGnbVr.gif) no-repeat left center; padding-left:2px; position:relative; left:-2px; white-space:nowrap;}
|
||||||
#gnb li a { display:block; float:left; padding:13px 15px 0 15px; height:25px; color:#a6a6a6; white-space:nowrap; text-decoration:none; }
|
#gnb li a { display:block; float:left; padding:13px 15px 0 15px; height:25px; color:#a6a6a6; white-space:nowrap; text-decoration:none; }
|
||||||
#gnb li a:hover,
|
#gnb li a:hover,
|
||||||
#gnb li a:focus { color:#ffffff;}
|
#gnb li a:focus { color:#ffffff;}
|
||||||
#gnb li.on a { font-weight:bold; color:#ffffff; background:url(../images/black/bgGnbOn.gif) no-repeat center top;}
|
#gnb li.on a { font-weight:bold; color:#ffffff; background:url(../images/black/bgGnbOn.gif) no-repeat center top;}
|
||||||
|
|
||||||
#isSearch { position:absolute; top:48px; right:15px; width:214px; text-align:right;}
|
#isSearch { position:absolute; top:48px; right:15px; width:214px; text-align:right;}
|
||||||
#isSearch .searchOrder { display:none;}
|
#isSearch .searchOrder { display:none;}
|
||||||
#isSearch .checked { position:absolute; left:0; top:0; text-align:left; display:block; padding:5px 0 0 5px; width:64px; height:14px; background:url(../images/black/bgSearchTerm.gif) no-repeat; font:11px "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; color:#ffffff; line-height:normal;}
|
#isSearch .checked { position:absolute; left:0; top:0; text-align:left; display:block; padding:5px 0 0 5px; width:64px; height:14px; background:url(../images/black/bgSearchTerm.gif) no-repeat; font:11px "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; color:#ffffff; line-height:normal;}
|
||||||
#isSearch ul { display:none; position:absolute; left:0; top:18px; padding:2px 0 3px 0; text-align:left; border:1px solid #6e8081; background:#385153;}
|
#isSearch ul { display:none; position:absolute; left:0; top:18px; padding:2px 0 3px 0; text-align:left; border:1px solid #6e8081; background:#385153;}
|
||||||
#isSearch ul li { width:67px; height:18px; list-style:none;}
|
#isSearch ul li { width:67px; height:18px; list-style:none;}
|
||||||
#isSearch ul li input { display:none;}
|
#isSearch ul li input { display:none;}
|
||||||
#isSearch ul li label { display:block; padding:4px 0 0 4px; width:63px; height:15px; font:11px "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; color:#ffffff;}
|
#isSearch ul li label { display:block; padding:4px 0 0 4px; width:63px; height:15px; font:11px "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; color:#ffffff;}
|
||||||
#isSearch ul li label.on { background:#2f4345; }
|
#isSearch ul li label.on { background:#2f4345; }
|
||||||
#isSearch ul li label:hover,
|
#isSearch ul li label:hover,
|
||||||
#isSearch ul li label:focus { background:#2f4345;}
|
#isSearch ul li label:focus { background:#2f4345;}
|
||||||
#isSearch .inputText { vertical-align:middle; position:relative; top:0; _top:-1px; left:1px; padding:3px 3px 1px 3px; width:94px; height:13px; color:#ffffff; border:1px solid #8E8E8D; background-color:#857C79; }
|
#isSearch .inputText { vertical-align:middle; position:relative; top:0; _top:-1px; left:1px; padding:3px 3px 1px 3px; width:94px; height:13px; color:#ffffff; border:1px solid #8E8E8D; background-color:#857C79; }
|
||||||
#isSearch .inputText:hover,
|
#isSearch .inputText:hover,
|
||||||
#isSearch .inputText:focus { border:1px solid #B0B0AF; background-color:#A9A4A3; }
|
#isSearch .inputText:focus { border:1px solid #B0B0AF; background-color:#A9A4A3; }
|
||||||
*:first-child+html #isSearch .inputText { position:relative; top:-1px;}
|
*:first-child+html #isSearch .inputText { position:relative; top:-1px;}
|
||||||
#isSearch .submit { vertical-align:middle; _position:relative; _top:-1px;}
|
#isSearch .submit { vertical-align:middle; _position:relative; _top:-1px;}
|
||||||
*:first-child+html #isSearch .submit { position:relative; top:-1px;}
|
*:first-child+html #isSearch .submit { position:relative; top:-1px;}
|
||||||
|
|
||||||
/* Site Layout - Content Body */
|
/* Site Layout - Content Body */
|
||||||
#contentBody { position:relative; width:980px; padding-bottom:30px; overflow:hidden; background:url(../images/black/bgContentBody.gif) repeat-y left top; border-bottom:1px solid #515151;}
|
#contentBody { position:relative; width:980px; padding-bottom:30px; overflow:hidden; background:url(../images/black/bgContentBody.gif) repeat-y left top; border-bottom:1px solid #515151;}
|
||||||
|
|
||||||
/* Site Layout - Column Left */
|
/* Site Layout - Column Left */
|
||||||
#columnLeft { position:relative; width:201px; float:left;}
|
#columnLeft { position:relative; width:201px; float:left;}
|
||||||
#columnLeft .mask { width:201px; height:5px; background:#3d3d3d; display:block;}
|
#columnLeft .mask { width:201px; height:5px; background:#3d3d3d; display:block;}
|
||||||
#lnb { border-top:1px solid #515151; padding:4px 5px; width:190px;}
|
#lnb { border-top:1px solid #515151; padding:4px 5px; width:190px;}
|
||||||
#lnb li { list-style:none; padding-bottom:4px;}
|
#lnb li { list-style:none; padding-bottom:4px;}
|
||||||
#lnb li a { padding:6px 5px 6px 13px; width:170px; display:block; border:1px solid #565655; background:url(../images/black/bgLnbOff.gif) repeat-x; color:#c2c2c2; position:relative; z-index:99; text-decoration:none;}
|
#lnb li a { padding:6px 5px 6px 13px; width:170px; display:block; border:1px solid #565655; background:url(../images/black/bgLnbOff.gif) repeat-x; color:#c2c2c2; position:relative; z-index:99; text-decoration:none;}
|
||||||
#lnb li a:hover,
|
#lnb li a:hover,
|
||||||
#lnb li a:focus { color:#ffffff; background:#e61700; border:1px solid #ff1a00;}
|
#lnb li a:focus { color:#ffffff; background:#e61700; border:1px solid #ff1a00;}
|
||||||
#lnb li.on a { color:#ffffff; background:#e61700; border:1px solid #ff1a00;}
|
#lnb li.on a { color:#ffffff; background:#e61700; border:1px solid #ff1a00;}
|
||||||
#lnb li.on a:hover,
|
#lnb li.on a:hover,
|
||||||
#lnb li.on a:focus { font-weight:bold;}
|
#lnb li.on a:focus { font-weight:bold;}
|
||||||
#lnb li ul { display:block; position:relative; width:184px; padding:0 3px; position:relative; border-top:1px solid #3d3d3d; overflow:hidden;}
|
#lnb li ul { display:block; position:relative; width:184px; padding:0 3px; position:relative; border-top:1px solid #3d3d3d; overflow:hidden;}
|
||||||
#lnb li.on ul { display:block;}
|
#lnb li.on ul { display:block;}
|
||||||
#lnb li ul li { padding:0; border-top:1px solid #474747; position:relative; top:-1px;}
|
#lnb li ul li { padding:0; border-top:1px solid #474747; position:relative; top:-1px;}
|
||||||
#lnb li ul li a { padding:6px 5px 6px 10px; width:169px; color:#818181 !important; border:none; background:none !important; border:none !important;}
|
#lnb li ul li a { padding:6px 5px 6px 10px; width:169px; color:#818181 !important; border:none; background:none !important; border:none !important;}
|
||||||
#lnb li ul li a:hover,
|
#lnb li ul li a:hover,
|
||||||
#lnb li ul li a:focus { font-weight:normal !important; color:#de4332 !important;}
|
#lnb li ul li a:focus { font-weight:normal !important; color:#de4332 !important;}
|
||||||
#lnb li.on ul li.on a { color:#ff1a00 !important; font-weight:bold !important; background:url(../images/black/bulletLnb.gif) no-repeat 175px center !important;}
|
#lnb li.on ul li.on a { color:#ff1a00 !important; font-weight:bold !important; background:url(../images/black/bulletLnb.gif) no-repeat 175px center !important;}
|
||||||
|
|
||||||
/* Site Layout - Column Right */
|
/* Site Layout - Column Right */
|
||||||
#columnRight { width:770px; float:right; overflow:hidden;}
|
#columnRight { width:770px; float:right; overflow:hidden;}
|
||||||
#visualArea { width:770px; height:200px; background:#151514; margin-bottom:2.5em; position:relative; left:-15px; margin-right:-15px; color:#999999;}
|
#visualArea { width:770px; height:200px; background:#151514; margin-bottom:2.5em; position:relative; left:-15px; margin-right:-15px; color:#999999;}
|
||||||
#content { width:100%; overflow:hidden;}
|
#content { width:100%; overflow:hidden;}
|
||||||
|
|
||||||
/* Site Layout - Footer */
|
/* Site Layout - Footer */
|
||||||
#footer { margin:0; padding:0; border-top:3px solid #424242; text-align:center; padding:2em 0 4em; clear:both;}
|
#footer { margin:0; padding:0; border-top:3px solid #424242; text-align:center; padding:2em 0 4em; clear:both;}
|
||||||
#footer li { display:inline; padding:0 .6em 0 1em; background:url(../images/black/vrType1.gif) no-repeat left center;}
|
#footer li { display:inline; padding:0 .6em 0 1em; background:url(../images/black/vrType1.gif) no-repeat left center;}
|
||||||
#footer li.first-child { background:none;}
|
#footer li.first-child { background:none;}
|
||||||
#footer li a { color:#818181; font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif;}
|
#footer li a { color:#818181; font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif;}
|
||||||
#footer li address { display:inline; }
|
#footer li address { display:inline; }
|
||||||
|
|
||||||
/* Black Skin - End */
|
/* Black Skin - End */
|
||||||
|
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 141 B |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 132 B |
|
Before Width: | Height: | Size: 1.8 KiB |
BIN
layouts/xe_official/images/powerdByXE.gif
Normal file
|
After Width: | Height: | Size: 161 B |
|
Before Width: | Height: | Size: 132 B |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
<div id="bodyWrap">
|
<div id="bodyWrap">
|
||||||
<div id="header">
|
<div id="header">
|
||||||
<h1><a href="{$layout_info->index_url}"><!--@if(!$layout_info->logo_image)--><img src="./images/{$layout_info->colorset}/zeroBoardXE.png" alt="ZeroBoard™ XE" class="iePngFix" /><!--@else--><img src="{$layout_info->logo_image}" alt="logo" border="0" class="iePngFix" /><!--@end--></a></h1>
|
<h1><!--@if($layout_info->logo_image)--><a href="{$layout_info->index_url}"><img src="{$layout_info->logo_image}" alt="logo" border="0" class="iePngFix" /></a><!--@else--> <!--@end--></h1>
|
||||||
|
|
||||||
<div id="language">
|
<div id="language">
|
||||||
<strong title="{$lang_type}">{$lang_supported[$lang_type]}</strong> <a href="#selectLang" onclick="showHide('selectLang');return false;"><img src="./images/{$layout_info->colorset}/buttonLang.gif" alt="Select Language" width="87" height="15" /></a>
|
<strong title="{$lang_type}">{$lang_supported[$lang_type]}</strong> <a href="#selectLang" onclick="showHide('selectLang');return false;"><img src="./images/{$layout_info->colorset}/buttonLang.gif" alt="Select Language" width="87" height="15" /></a>
|
||||||
|
|
@ -95,7 +95,7 @@
|
||||||
<ul id="footer">
|
<ul id="footer">
|
||||||
<li class="first-child">
|
<li class="first-child">
|
||||||
<address>
|
<address>
|
||||||
<a href="http://www.zeroboard.com" onclick="window.open(this.href);return false;"><img src="./images/{$layout_info->colorset}/powerdByZeroboard.gif" alt="Powered By ZeroBoard" width="106" height="5" /></a>
|
<a href="http://www.zeroboard.com" onclick="window.open(this.href);return false;"><img src="./images/powerdByXE.gif" alt="Powered By XpressEngine" width="70" height="5" /></a>
|
||||||
</address>
|
</address>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,9 @@
|
||||||
* @author zero (zero@nzeo.com)
|
* @author zero (zero@nzeo.com)
|
||||||
* @brief addon 모듈의 admin controller class
|
* @brief addon 모듈의 admin controller class
|
||||||
**/
|
**/
|
||||||
|
include_once('addon.controller.php');
|
||||||
|
|
||||||
class addonAdminController extends addon {
|
class addonAdminController extends addonController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 초기화
|
* @brief 초기화
|
||||||
|
|
@ -48,34 +49,7 @@
|
||||||
$this->makeCacheFile();
|
$this->makeCacheFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief 캐시 파일 생성
|
|
||||||
**/
|
|
||||||
function makeCacheFile() {
|
|
||||||
// 모듈에서 애드온을 사용하기 위한 캐시 파일 생성
|
|
||||||
$buff = "";
|
|
||||||
$oAddonModel = &getAdminModel('addon');
|
|
||||||
$addon_list = $oAddonModel->getInsertedAddons();
|
|
||||||
foreach($addon_list as $addon => $val) {
|
|
||||||
if($val->is_used != 'Y' || !is_dir(_XE_PATH_.'addons/'.$addon) ) continue;
|
|
||||||
|
|
||||||
$extra_vars = unserialize($val->extra_vars);
|
|
||||||
$mid_list = $extra_vars->mid_list;
|
|
||||||
if(!is_array($mid_list)||!count($mid_list)) $mid_list = null;
|
|
||||||
$mid_list = base64_encode(serialize($mid_list));
|
|
||||||
|
|
||||||
if($val->extra_vars) {
|
|
||||||
unset($extra_vars);
|
|
||||||
$extra_vars = base64_encode($val->extra_vars);
|
|
||||||
}
|
|
||||||
|
|
||||||
$buff .= sprintf(' $_ml = unserialize(base64_decode("%s")); if(file_exists("%saddons/%s/%s.addon.php") && (!is_array($_ml) || in_array($_m, $_ml))) { unset($addon_info); $addon_info = unserialize(base64_decode("%s")); $addon_path = "%saddons/%s/"; @include("%saddons/%s/%s.addon.php"); }', $mid_list, _XE_PATH_, $addon, $addon, $extra_vars, _XE_PATH_, $addon, _XE_PATH_, $addon, $addon);
|
|
||||||
}
|
|
||||||
|
|
||||||
$buff = sprintf('<?php if(!defined("__ZBXE__")) exit(); $_m = Context::get(\'mid\'); %s ?>', $buff);
|
|
||||||
|
|
||||||
FileHandler::writeFile($this->cache_file, $buff);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 애드온 추가
|
* @brief 애드온 추가
|
||||||
|
|
@ -108,14 +82,6 @@
|
||||||
return executeQuery('addon.updateAddon', $args);
|
return executeQuery('addon.updateAddon', $args);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief 애드온 설정
|
|
||||||
**/
|
|
||||||
function doSetup($addon, $extra_vars) {
|
|
||||||
if($extra_vars->mid_list) $extra_vars->mid_list = explode('|@|', $extra_vars->mid_list);
|
|
||||||
$args->addon = $addon;
|
|
||||||
$args->extra_vars = serialize($extra_vars);
|
|
||||||
return executeQuery('addon.updateAddon', $args);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
145
modules/addon/addon.controller.php
Normal file
|
|
@ -0,0 +1,145 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @class addonController
|
||||||
|
* @author sol ngleader.com
|
||||||
|
* @brief addon 모듈의 controller class
|
||||||
|
**/
|
||||||
|
|
||||||
|
|
||||||
|
class addonController extends addon {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 초기화
|
||||||
|
**/
|
||||||
|
function init() {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 애드온 mid 추가 설정
|
||||||
|
**/
|
||||||
|
function _getMidList($selected_addon) {
|
||||||
|
|
||||||
|
$oAddonAdminModel = &getAdminModel('addon');
|
||||||
|
$addon_info = $oAddonAdminModel->getAddonInfoXml($selected_addon);
|
||||||
|
return $addon_info->mid_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 애드온 mid 추가 설정
|
||||||
|
**/
|
||||||
|
function _setAddMid($selected_addon,$mid) {
|
||||||
|
|
||||||
|
// 요청된 애드온의 정보를 구함
|
||||||
|
$mid_list = $this->_getMidList($selected_addon);
|
||||||
|
|
||||||
|
$mid_list[] = $mid;
|
||||||
|
$new_mid_list = array_unique($mid_list);
|
||||||
|
$this->_setMid($selected_addon,$new_mid_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 애드온 mid 추가 설정
|
||||||
|
**/
|
||||||
|
function _setDelMid($selected_addon,$mid) {
|
||||||
|
|
||||||
|
// 요청된 애드온의 정보를 구함
|
||||||
|
$mid_list = $this->_getMidList($selected_addon);
|
||||||
|
|
||||||
|
$new_mid_list = array();
|
||||||
|
if(is_array($mid_list)){
|
||||||
|
for($i=0,$c=count($mid_list);$i<$c;$i++){
|
||||||
|
if($mid_list[$i] != $mid) $new_mid_list[] = $mid_list[$i];
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$new_mid_list[] = $mid;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$this->_setMid($selected_addon,$new_mid_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 애드온 mid 추가 설정
|
||||||
|
**/
|
||||||
|
function _setMid($selected_addon,$mid_list) {
|
||||||
|
$args->mid_list = join('|@|',$mid_list);
|
||||||
|
$this->doSetup($selected_addon, $args);
|
||||||
|
$this->makeCacheFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 애드온 mid 추가
|
||||||
|
**/
|
||||||
|
function procAddonSetupAddonAddMid() {
|
||||||
|
|
||||||
|
$args = Context::getRequestVars();
|
||||||
|
$addon_name = $args->addon_name;
|
||||||
|
$mid = $args->mid;
|
||||||
|
$this->_setAddMid($addon_name,$mid);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 애드온 mid 삭제
|
||||||
|
**/
|
||||||
|
function procAddonSetupAddonDelMid() {
|
||||||
|
|
||||||
|
$args = Context::getRequestVars();
|
||||||
|
$addon_name = $args->addon_name;
|
||||||
|
$mid = $args->mid;
|
||||||
|
|
||||||
|
$this->_setDelMid($addon_name,$mid);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 생성
|
||||||
|
**/
|
||||||
|
function makeCacheFile() {
|
||||||
|
// 모듈에서 애드온을 사용하기 위한 캐시 파일 생성
|
||||||
|
$buff = "";
|
||||||
|
$oAddonModel = &getAdminModel('addon');
|
||||||
|
$addon_list = $oAddonModel->getInsertedAddons();
|
||||||
|
foreach($addon_list as $addon => $val) {
|
||||||
|
if($val->is_used != 'Y' || !is_dir(_XE_PATH_.'addons/'.$addon) ) continue;
|
||||||
|
|
||||||
|
$extra_vars = unserialize($val->extra_vars);
|
||||||
|
$mid_list = $extra_vars->mid_list;
|
||||||
|
if(!is_array($mid_list)||!count($mid_list)) $mid_list = null;
|
||||||
|
$mid_list = base64_encode(serialize($mid_list));
|
||||||
|
|
||||||
|
if($val->extra_vars) {
|
||||||
|
unset($extra_vars);
|
||||||
|
$extra_vars = base64_encode($val->extra_vars);
|
||||||
|
}
|
||||||
|
|
||||||
|
$buff .= sprintf(' $_ml = unserialize(base64_decode("%s")); if(file_exists("%saddons/%s/%s.addon.php") && (!is_array($_ml) || in_array($_m, $_ml))) { unset($addon_info); $addon_info = unserialize(base64_decode("%s")); $addon_path = "%saddons/%s/"; @include("%saddons/%s/%s.addon.php"); }', $mid_list, _XE_PATH_, $addon, $addon, $extra_vars, _XE_PATH_, $addon, _XE_PATH_, $addon, $addon);
|
||||||
|
}
|
||||||
|
|
||||||
|
$buff = sprintf('<?php if(!defined("__ZBXE__")) exit(); $_m = Context::get(\'mid\'); %s ?>', $buff);
|
||||||
|
|
||||||
|
FileHandler::writeFile($this->cache_file, $buff);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 애드온 설정
|
||||||
|
**/
|
||||||
|
function doSetup($addon, $extra_vars) {
|
||||||
|
if($extra_vars->mid_list) $extra_vars->mid_list = explode('|@|', $extra_vars->mid_list);
|
||||||
|
$args->addon = $addon;
|
||||||
|
$args->extra_vars = serialize($extra_vars);
|
||||||
|
return executeQuery('addon.updateAddon', $args);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
<title xml:lang="jp">アドオン</title>
|
<title xml:lang="jp">アドオン</title>
|
||||||
<title xml:lang="fr">Additions</title>
|
<title xml:lang="fr">Additions</title>
|
||||||
<title xml:lang="ru">Аддоны</title>
|
<title xml:lang="ru">Аддоны</title>
|
||||||
|
<title xml:lang="zh-TW">插件</title>
|
||||||
<description xml:lang="ko">애드온을 등록하거나 사용/미사용을 설정하는 애드온 관리 모듈입니다.</description>
|
<description xml:lang="ko">애드온을 등록하거나 사용/미사용을 설정하는 애드온 관리 모듈입니다.</description>
|
||||||
<description xml:lang="en">This module is for maintaining addons which can toggle use and disuse states.</description>
|
<description xml:lang="en">This module is for maintaining addons which can toggle use and disuse states.</description>
|
||||||
<description xml:lang="es">Este Módulo es para agregar Addons, como también el manejo de ellos.</description>
|
<description xml:lang="es">Este Módulo es para agregar Addons, como también el manejo de ellos.</description>
|
||||||
|
|
@ -14,18 +15,19 @@
|
||||||
<description xml:lang="jp">アドオンの「登録、使用、未使用」などを設定する管理モジュールです。</description>
|
<description xml:lang="jp">アドオンの「登録、使用、未使用」などを設定する管理モジュールです。</description>
|
||||||
<description xml:lang="fr">Ce module est pour les Additions de maintien qui peuvent basculer des états d'utilisation et de désuétude. </description>
|
<description xml:lang="fr">Ce module est pour les Additions de maintien qui peuvent basculer des états d'utilisation et de désuétude. </description>
|
||||||
<description xml:lang="ru">Этот модуль служит для управления аддонами, использование которых Вы можете включать и выключать.</description>
|
<description xml:lang="ru">Этот модуль служит для управления аддонами, использование которых Вы можете включать и выключать.</description>
|
||||||
|
<description xml:lang="zh-TW">登錄或啟用/禁用插件的管理模組。</description>
|
||||||
<version>0.1</version>
|
<version>0.1</version>
|
||||||
<date>2007-02-28</date>
|
<date>2007-02-28</date>
|
||||||
<category>manager</category>
|
<category>manager</category>
|
||||||
<link>http://www.zeroboard.com</link>
|
|
||||||
|
|
||||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com">
|
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||||
<name xml:lang="ko">제로</name>
|
<name xml:lang="ko">zero</name>
|
||||||
<name xml:lang="en">zero</name>
|
<name xml:lang="en">zero</name>
|
||||||
<name xml:lang="es">zero</name>
|
<name xml:lang="es">zero</name>
|
||||||
<name xml:lang="zh-CN">zero</name>
|
<name xml:lang="zh-CN">zero</name>
|
||||||
<name xml:lang="jp">Zero</name>
|
<name xml:lang="jp">zero</name>
|
||||||
<name xml:lang="fr">Zero</name>
|
<name xml:lang="fr">zero</name>
|
||||||
<name xml:lang="ru">Zero</name>
|
<name xml:lang="ru">zero</name>
|
||||||
|
<name xml:lang="zh-TW">zero</name>
|
||||||
</author>
|
</author>
|
||||||
</module>
|
</module>
|
||||||
|
|
|
||||||
|
|
@ -6,5 +6,7 @@
|
||||||
<action name="dispAddonAdminSetup" type="view" standalone="true" />
|
<action name="dispAddonAdminSetup" type="view" standalone="true" />
|
||||||
<action name="procAddonAdminToggleActivate" type="controller" standalone="true" />
|
<action name="procAddonAdminToggleActivate" type="controller" standalone="true" />
|
||||||
<action name="procAddonAdminSetupAddon" type="controller" standalone="true" />
|
<action name="procAddonAdminSetupAddon" type="controller" standalone="true" />
|
||||||
|
<action name="procAddonSetupAddonAddMid" type="controller" />
|
||||||
|
<action name="procAddonSetupAddonDelMid" type="controller" />
|
||||||
</actions>
|
</actions>
|
||||||
</module>
|
</module>
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,17 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @file jp.lang.php
|
* @file jp.lang.php
|
||||||
* @author zero (zero@nzeo.com) 翻訳:RisaPapa
|
* @author zero (zero@nzeo.com) 翻訳:RisaPapa、ミニミ
|
||||||
* @brief 日本語言語パッケージ
|
* @brief 日本語言語パッケージ
|
||||||
**/
|
**/
|
||||||
|
|
||||||
$lang->addon = "アドオン";
|
$lang->addon = 'アドオン';
|
||||||
|
|
||||||
$lang->addon_info = 'アドオン情報';
|
$lang->addon_info = 'アドオン情報';
|
||||||
$lang->addon_maker = 'アドオン作者';
|
$lang->addon_maker = 'アドオン作者';
|
||||||
$lang->addon_license = 'License';
|
$lang->addon_license = 'ライセンス';
|
||||||
$lang->addon_history = '変更内容';
|
$lang->addon_history = '変更内容';
|
||||||
|
|
||||||
$lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.<br />(모두 해제시 모든 대상에서 사용 가능합니다)";
|
$lang->about_addon_mid = "アドオンが使われる対象を指定します。<br />(選択なしの場合、全ての対象で利用可能)";
|
||||||
$lang->about_addon = 'アドオンは、HTMLの出力をコントロールするというより動作を制御する役割をします。お好みのアドオンを「使用/未使用」に設定するだけでサイトの運営に有用な機能が利用できます。';
|
$lang->about_addon = 'アドオンは、HTMLの出力をコントロールするというより動作を制御する役割をします。お好みのアドオンを「使用/未使用」に設定するだけでサイトの運営に有用な機能が利用できます。';
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||