merge sandbox to trunk for 1.4.4

git-svn-id: http://xe-core.googlecode.com/svn/trunk@7723 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ngleader 2010-09-28 07:24:47 +00:00
parent 200d63636c
commit b8299c8a65
683 changed files with 70982 additions and 69716 deletions

View file

@ -1,34 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="0.2">
<title xml:lang="ko">외부 페이지</title>
<title xml:lang="zh-CN">外部页面</title>
<title xml:lang="jp">外部ページ</title>
<title xml:lang="en">External Page</title>
<title xml:lang="vi">Trang ngoài</title>
<title xml:lang="es">Afuera Página</title>
<title xml:lang="ru">Внешние страницы</title>
<title xml:lang="zh-TW">外部頁面</title>
<description xml:lang="ko">외부페이지를 XE내부로 삽입시키는 모듈</description>
<description xml:lang="zh-CN">可以把外部页面插入到 Zeroboard XE内部的模块。</description>
<description xml:lang="jp">外部ページをXE内部に挿入させるモジュール</description>
<description xml:lang="en">Module for inserting external pages into inside of Zeroboard XE.</description>
<description xml:lang="vi">Module cho phépchèn một trang từ bên ngoài vào bên trong Zeroboard XE.</description>
<description xml:lang="es">외부페이지를 XE내부로 삽입시키는 모듈</description>
<description xml:lang="ru">Модуль для вставки внешних страниц внутрь Zeroboard XE.</description>
<description xml:lang="zh-TW">可將外部頁面插入至XE裡面的模組。</description>
<version>0.1</version>
<date>2007-09-17</date>
<category>service</category>
<link>http://www.zeroboard.com</link>
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
<name xml:lang="ko">zero</name>
<name xml:lang="vi">zero</name>
<name xml:lang="zh-CN">zero</name>
<name xml:lang="jp">zero</name>
<name xml:lang="en">zero</name>
<name xml:lang="es">zero</name>
<name xml:lang="ru">zero</name>
<name xml:lang="zh-TW">zero</name>
</author>
</module>
<?xml version="1.0" encoding="UTF-8"?>
<module version="0.2">
<title xml:lang="ko">외부 페이지</title>
<title xml:lang="zh-CN">外部页面</title>
<title xml:lang="jp">外部ページ</title>
<title xml:lang="en">External Page</title>
<title xml:lang="vi">Trang ngoài</title>
<title xml:lang="es">Afuera Página</title>
<title xml:lang="ru">Внешние страницы</title>
<title xml:lang="zh-TW">外部頁面</title>
<description xml:lang="ko">외부페이지를 XE내부로 삽입시키는 모듈</description>
<description xml:lang="zh-CN">可以把外部页面插入到 Zeroboard XE内部的模块。</description>
<description xml:lang="jp">外部ページをXE内部に挿入させるモジュール</description>
<description xml:lang="en">Module for inserting external pages into inside of Zeroboard XE.</description>
<description xml:lang="vi">Module cho phépchèn một trang từ bên ngoài vào bên trong Zeroboard XE.</description>
<description xml:lang="es">외부페이지를 XE내부로 삽입시키는 모듈</description>
<description xml:lang="ru">Модуль для вставки внешних страниц внутрь Zeroboard XE.</description>
<description xml:lang="zh-TW">可將外部頁面插入至XE裡面的模組。</description>
<version>0.1</version>
<date>2007-09-17</date>
<category>service</category>
<link>http://xpressengine.com/</link>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NHN</name>
<name xml:lang="vi">NHN</name>
<name xml:lang="zh-CN">NHN</name>
<name xml:lang="jp">NHN</name>
<name xml:lang="en">NHN</name>
<name xml:lang="es">NHN</name>
<name xml:lang="ru">NHN</name>
<name xml:lang="zh-TW">NHN</name>
</author>
</module>

View file

@ -1,18 +1,18 @@
<?php
/**
* @file en.lang.php
* @author zero (zero@nzeo.com)
* @brief basic language pack of external page module
**/
$lang->opage = "External Page";
$lang->opage_path = "Location of External Document";
$lang->opage_caching_interval = "Caching Time";
$lang->about_opage = "This module enables usage of external html or php files in XE.<br />It allows absolute or relative path, and if the url starts with 'http://' , it can display the external page of the server.";
$lang->about_opage_path= "Please input the location of external document.<br />Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.<br />If you input the path like 'http://url/sample.php' , the result will be received and then displayed.<br />This is current XE's absolute path.<br />";
$lang->about_opage_caching_interval = "The unit is minute, and it displays temporary saved data for assigned time.<br />It is recommended to cache for proper time if a lot of resources are needed when displaying other servers' data or information.<br />A value of 0 will not cache.";
$lang->opage_mobile_path = 'Location of External Document for Mobile View';
$lang->about_opage_mobile_path= "Please input the location of external document for mobile view. If not inputted, it uses the the external document specified above.<br />Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.<br />If you input the path like 'http://url/sample.php' , the result will be received and then displayed.<br />This is current XE's absolute path.<br />";
?>
<?php
/**
* @file en.lang.php
* @author NHN (developers@xpressengine.com)
* @brief basic language pack of external page module
**/
$lang->opage = "External Page";
$lang->opage_path = "Location of External Document";
$lang->opage_caching_interval = "Caching Time";
$lang->about_opage = "This module enables usage of external html or php files in XE.<br />It allows absolute or relative path, and if the url starts with 'http://' , it can display the external page of the server.";
$lang->about_opage_path= "Please input the location of external document.<br />Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.<br />If you input the path like 'http://url/sample.php' , the result will be received and then displayed.<br />This is current XE's absolute path.<br />";
$lang->about_opage_caching_interval = "The unit is minute, and it displays temporary saved data for assigned time.<br />It is recommended to cache for proper time if a lot of resources are needed when displaying other servers' data or information.<br />A value of 0 will not cache.";
$lang->opage_mobile_path = 'Location of External Document for Mobile View';
$lang->about_opage_mobile_path= "Please input the location of external document for mobile view. If not inputted, it uses the the external document specified above.<br />Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.<br />If you input the path like 'http://url/sample.php' , the result will be received and then displayed.<br />This is current XE's absolute path.<br />";
?>

View file

@ -1,17 +1,17 @@
<?php
/**
* @file es.lang.php
* @author zero (zero@nzeo.com)
* @brief basic language pack of external page module
**/
$lang->opage = "Page Exteriores";
$lang->opage_path = "Ubicacion del documento externo";
$lang->opage_caching_interval = "Establezca el tiempo de cache";
$lang->about_opage = 'Este modulo permite el uso externo de archivos html o php en XE. <br /> Permite ruta absoluta o relativa, y si la URL comienza con "http://", se puede mostrar la pagina externa del servidor.';
$lang->about_opage_path= "Por favor ingrese la ubicacion del documento externos. <br /> Ambos ruta absoluta como '/ path1/path2/sample.php' o ruta relativa como \"../path2/sample.php\" puede ser utilizado. <br /> Si la via de entrada, como \"http://url/sample.php\", el resultado sera recibido y, a continuacion se muestran. <br /> Esta es la actual XE ruta absoluta.<br />";
$lang->about_opage_caching_interval = "La unidad es minuto, y se muestra temporal de los datos guardados por el tiempo asignado. <br /> Se recomienda a la cache para una buena vez si una gran cantidad de recursos se necesitan otros servidores cuando se muestran los datos o la informacion. <br /> Un valor de 0 no cache.";
$lang->opage_mobile_path = 'Location of External Document for Mobile View';
$lang->about_opage_mobile_path= "Please input the location of external document for mobile view. If not inputted, it uses the the external document specified above.<br />Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.<br />If you input the path like 'http://url/sample.php' , the result will be received and then displayed.<br />This is current XE's absolute path.<br />";
?>
<?php
/**
* @file es.lang.php
* @author NHN (developers@xpressengine.com)
* @brief basic language pack of external page module
**/
$lang->opage = "Page Exteriores";
$lang->opage_path = "Ubicacion del documento externo";
$lang->opage_caching_interval = "Establezca el tiempo de cache";
$lang->about_opage = 'Este modulo permite el uso externo de archivos html o php en XE. <br /> Permite ruta absoluta o relativa, y si la URL comienza con "http://", se puede mostrar la pagina externa del servidor.';
$lang->about_opage_path= "Por favor ingrese la ubicacion del documento externos. <br /> Ambos ruta absoluta como '/ path1/path2/sample.php' o ruta relativa como \"../path2/sample.php\" puede ser utilizado. <br /> Si la via de entrada, como \"http://url/sample.php\", el resultado sera recibido y, a continuacion se muestran. <br /> Esta es la actual XE ruta absoluta.<br />";
$lang->about_opage_caching_interval = "La unidad es minuto, y se muestra temporal de los datos guardados por el tiempo asignado. <br /> Se recomienda a la cache para una buena vez si una gran cantidad de recursos se necesitan otros servidores cuando se muestran los datos o la informacion. <br /> Un valor de 0 no cache.";
$lang->opage_mobile_path = 'Location of External Document for Mobile View';
$lang->about_opage_mobile_path= "Please input the location of external document for mobile view. If not inputted, it uses the the external document specified above.<br />Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.<br />If you input the path like 'http://url/sample.php' , the result will be received and then displayed.<br />This is current XE's absolute path.<br />";
?>

View file

@ -1,17 +1,17 @@
<?php
/**
* @file fr.lang.php
* @author zero (zero@nzeo.com) Traduit par PierreDuvent (PierreDuvent@gmail.com)
* @brief Paque du langage en français pour le module de Page Extérieure
**/
$lang->opage = "Page Extérieure";
$lang->opage_path = "Localisation du Document Extérieur";
$lang->opage_caching_interval = "Temps de antémémoire";
$lang->about_opage = "Ce module vous fait pouvoir utiliser des documents extérieurs en html ou en php dans XE.<br />Il est possible d'utiliser le chemin absolu ou relatif, et si l'URL commence avec 'http://' , il est possible de représenter des pages extérieurs du serveur.";
$lang->about_opage_path= "Entrez la localisation du document extérieur.<br />Non seulement le chemin absolu comme '/path1/path2/sample.php' mais aussi le chemin relatif comme '../path2/sample.php' peuvent être utilisés.<br />Si vous entrez le chemin comme 'http://url/sample.php', le résultat sera reçu et puis exposé<br />Le chemin suivant, c'est le chemin absolu de XE.<br />";
$lang->about_opage_caching_interval = "L'unité est minute, et ça exposera des données conservées temporairement pendant le temps assigné.<br />Il est recommandé d'utiliser l'antémémoire pendant le temps convenable si beaucoup de ressource est nécessaire pour représenter les données ou l'information d'autre serveur.<br />La valeur 0 signifie de ne pas utiliser antémémoire.";
$lang->opage_mobile_path = 'Location of External Document for Mobile View';
$lang->about_opage_mobile_path= "Please input the location of external document for mobile view. If not inputted, it uses the the external document specified above.<br />Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.<br />If you input the path like 'http://url/sample.php' , the result will be received and then displayed.<br />This is current XE's absolute path.<br />";
?>
<?php
/**
* @file fr.lang.php
* @author NHN (developers@xpressengine.com) Traduit par PierreDuvent (PierreDuvent@gmail.com)
* @brief Paque du langage en français pour le module de Page Extérieure
**/
$lang->opage = "Page Extérieure";
$lang->opage_path = "Localisation du Document Extérieur";
$lang->opage_caching_interval = "Temps de antémémoire";
$lang->about_opage = "Ce module vous fait pouvoir utiliser des documents extérieurs en html ou en php dans XE.<br />Il est possible d'utiliser le chemin absolu ou relatif, et si l'URL commence avec 'http://' , il est possible de représenter des pages extérieurs du serveur.";
$lang->about_opage_path= "Entrez la localisation du document extérieur.<br />Non seulement le chemin absolu comme '/path1/path2/sample.php' mais aussi le chemin relatif comme '../path2/sample.php' peuvent être utilisés.<br />Si vous entrez le chemin comme 'http://url/sample.php', le résultat sera reçu et puis exposé<br />Le chemin suivant, c'est le chemin absolu de XE.<br />";
$lang->about_opage_caching_interval = "L'unité est minute, et ça exposera des données conservées temporairement pendant le temps assigné.<br />Il est recommandé d'utiliser l'antémémoire pendant le temps convenable si beaucoup de ressource est nécessaire pour représenter les données ou l'information d'autre serveur.<br />La valeur 0 signifie de ne pas utiliser antémémoire.";
$lang->opage_mobile_path = 'Location of External Document for Mobile View';
$lang->about_opage_mobile_path= "Please input the location of external document for mobile view. If not inputted, it uses the the external document specified above.<br />Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.<br />If you input the path like 'http://url/sample.php' , the result will be received and then displayed.<br />This is current XE's absolute path.<br />";
?>

View file

@ -1,17 +1,17 @@
<?php
/**
* @file modules/opage/lang/jp.lang.php
* @author zero (zero@nzeo.com) 翻訳RisaPapa
* @brief 外部ページ(opage)モジュールの基本言語パッケージ
**/
$lang->opage = '外部ページ';
$lang->opage_path = '外部ドキュメントの場所';
$lang->opage_caching_interval = 'キャッシング時間設定';
$lang->about_opage = '外部のHTMLまたはPHPファイルをXE内部で使用出来るようにするモジュールです。<br />絶対パス、相対パスで指定出来、「http://」で始まるサーバの外部ページも表示出来ます。';
$lang->about_opage_path= '外部ドキュメントの場所を入力して下さい。<br />「/path1/path2/sample.php」のような絶対パス、「../path2/sample.php」のような相対パスが使用出来ます。<br />「http://URL/sample.php」のように使用すると結果を読み込んで表示します。<br />現在XEがインストールされている絶対パスは次のようになっています。<br />';
$lang->about_opage_caching_interval = '分単位で指定出来、設定された時間の間は、臨時保存されたデータを出力します。<br />他のサーバの情報を出力したり、データを出力する際、リソースが多く使われるため、数分単位でキャッシングすることをお勧めします。<br />「0」に指定するとキャッシングされません。';
$lang->opage_mobile_path = 'Location of External Document for Mobile View';
$lang->about_opage_mobile_path= "Please input the location of external document for mobile view. If not inputted, it uses the the external document specified above.<br />Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.<br />If you input the path like 'http://url/sample.php' , the result will be received and then displayed.<br />This is current XE's absolute path.<br />";
?>
<?php
/**
* @file modules/opage/lang/jp.lang.php
* @author NHN (developers@xpressengine.com) 翻訳RisaPapa
* @brief 外部ページ(opage)モジュールの基本言語パッケージ
**/
$lang->opage = '外部ページ';
$lang->opage_path = '外部ドキュメントの場所';
$lang->opage_caching_interval = 'キャッシング時間設定';
$lang->about_opage = '外部のHTMLまたはPHPファイルをXE内部で使用出来るようにするモジュールです。<br />絶対パス、相対パスで指定出来、「http://」で始まるサーバの外部ページも表示出来ます。';
$lang->about_opage_path= '外部ドキュメントの場所を入力して下さい。<br />「/path1/path2/sample.php」のような絶対パス、「../path2/sample.php」のような相対パスが使用出来ます。<br />「http://URL/sample.php」のように使用すると結果を読み込んで表示します。<br />現在XEがインストールされている絶対パスは次のようになっています。<br />';
$lang->about_opage_caching_interval = '分単位で指定出来、設定された時間の間は、臨時保存されたデータを出力します。<br />他のサーバの情報を出力したり、データを出力する際、リソースが多く使われるため、数分単位でキャッシングすることをお勧めします。<br />「0」に指定するとキャッシングされません。';
$lang->opage_mobile_path = 'Location of External Document for Mobile View';
$lang->about_opage_mobile_path= "Please input the location of external document for mobile view. If not inputted, it uses the the external document specified above.<br />Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.<br />If you input the path like 'http://url/sample.php' , the result will be received and then displayed.<br />This is current XE's absolute path.<br />";
?>

View file

@ -1,18 +1,18 @@
<?php
/**
* @file modules/opage/lang/ko.lang.php
* @author zero (zero@nzeo.com)
* @brief 외부 페이지(opage) 모듈의 기본 언어팩
**/
$lang->opage = '외부 페이지';
$lang->opage_path = '외부 문서 위치';
$lang->opage_caching_interval = '캐싱 시간 설정';
$lang->about_opage = 'XE가 아닌 외부 HTML 또는 PHP파일을 XE에서 사용할 수 있도록 하는 모듈입니다.<br />절대경로, 상대경로를 이용할 수 있으며 http:// 로 시작할 경우 서버 외부의 페이지도 표시할 수 있습니다';
$lang->about_opage_path= '외부문서의 위치를 입력해주세요.<br />/path1/path2/sample.php 와 같이 절대경로나 ../path2/sample.php와 같은 상대경로 모두 사용가능합니다.<br />http://url/sample.php 와 같이 사용하면 해당 페이지를 웹으로 전송 받아 출력 하게 됩니다.<br />현재 XE가 설치된 절대경로는 다음과 같습니다.<br />';
$lang->about_opage_caching_interval = '분 단위이며 정해진 시간동안은 임시 저장한 데이터를 출력합니다.<br />다른 서버의 정보를 출력하거나, 데이터 출력하는데 많은 자원이 필요한 경우, 원하시는 분 단위 시간 간격으로 캐싱하는 것을 추천합니다.<br />0 으로 하시면 캐싱을 하지 않습니다.';
$lang->opage_mobile_path = '모바일용 외부 문서 위치';
$lang->about_opage_mobile_path= '모바일용 외부문서의 위치를 입력해주세요. 입력하지 않으면 위에서 지정한 외부문서 위치의 페이지를 이용합니다. <br />/path1/path2/sample.php 와 같이 절대경로나 ../path2/sample.php와 같은 상대경로 모두 사용가능합니다.<br />http://url/sample.php 와 같이 사용하면 해당 페이지를 웹으로 전송 받아 출력 하게 됩니다.<br />현재 XE가 설치된 절대경로는 다음과 같습니다.<br />';
?>
<?php
/**
* @file modules/opage/lang/ko.lang.php
* @author NHN (developers@xpressengine.com)
* @brief 외부 페이지(opage) 모듈의 기본 언어팩
**/
$lang->opage = '외부 페이지';
$lang->opage_path = '외부 문서 위치';
$lang->opage_caching_interval = '캐싱 시간 설정';
$lang->about_opage = 'XE가 아닌 외부 HTML 또는 PHP파일을 XE에서 사용할 수 있도록 하는 모듈입니다.<br />절대경로, 상대경로를 이용할 수 있으며 http:// 로 시작할 경우 서버 외부의 페이지도 표시할 수 있습니다';
$lang->about_opage_path= '외부문서의 위치를 입력해주세요.<br />/path1/path2/sample.php 와 같이 절대경로나 ../path2/sample.php와 같은 상대경로 모두 사용가능합니다.<br />http://url/sample.php 와 같이 사용하면 해당 페이지를 웹으로 전송 받아 출력 하게 됩니다.<br />현재 XE가 설치된 절대경로는 다음과 같습니다.<br />';
$lang->about_opage_caching_interval = '분 단위이며 정해진 시간동안은 임시 저장한 데이터를 출력합니다.<br />다른 서버의 정보를 출력하거나, 데이터 출력하는데 많은 자원이 필요한 경우, 원하시는 분 단위 시간 간격으로 캐싱하는 것을 추천합니다.<br />0 으로 하시면 캐싱을 하지 않습니다.';
$lang->opage_mobile_path = '모바일용 외부 문서 위치';
$lang->about_opage_mobile_path= '모바일용 외부문서의 위치를 입력해주세요. 입력하지 않으면 위에서 지정한 외부문서 위치의 페이지를 이용합니다. <br />/path1/path2/sample.php 와 같이 절대경로나 ../path2/sample.php와 같은 상대경로 모두 사용가능합니다.<br />http://url/sample.php 와 같이 사용하면 해당 페이지를 웹으로 전송 받아 출력 하게 됩니다.<br />현재 XE가 설치된 절대경로는 다음과 같습니다.<br />';
?>

View file

@ -1,17 +1,17 @@
<?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;
* @brief Russian basic language pack
**/
$lang->opage = "Внешняя страница";
$lang->opage_path = "Расположение внешнего документа";
$lang->opage_caching_interval = "Установить время кеширования";
$lang->about_opage = "Этот модуль позволяет использовать внешние HTML или PHP файлы в XE.<br />Требует ввода абсолютного или относительного пути. Если URL начинается с 'http://', внешняя страница с другого сервера будет показана.";
$lang->about_opage_path= "Пожалуйста, введите размещение внешнего документа.<br />Абсолютный путь как '/path1/path2/sample.php', так и относительный как '../path2/sample.php' могут быть использованы.<br />Если Вы введете путь как 'http://url/sample.php', результат будет сначала получен и затем показан.<br />Это текущий абсолютный путь к XE.<br />";
$lang->about_opage_caching_interval = "Единица измерения равна одной минуте. Это отображает временно сохраненные данные для присвоенного времени.<br />Рекомендуется устанавливать разумное время кеширования, если множество ресурсов нуждаются в показе данных с других серверов.<br />Значение 0 отключает кеширование.";
$lang->opage_mobile_path = 'Location of External Document for Mobile View';
$lang->about_opage_mobile_path= "Please input the location of external document for mobile view. If not inputted, it uses the the external document specified above.<br />Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.<br />If you input the path like 'http://url/sample.php' , the result will be received and then displayed.<br />This is current XE's absolute path.<br />";
?>
<?php
/**
* @file ru.lang.php
* @author NHN (developers@xpressengine.com) | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467;
* @brief Russian basic language pack
**/
$lang->opage = "Внешняя страница";
$lang->opage_path = "Расположение внешнего документа";
$lang->opage_caching_interval = "Установить время кеширования";
$lang->about_opage = "Этот модуль позволяет использовать внешние HTML или PHP файлы в XE.<br />Требует ввода абсолютного или относительного пути. Если URL начинается с 'http://', внешняя страница с другого сервера будет показана.";
$lang->about_opage_path= "Пожалуйста, введите размещение внешнего документа.<br />Абсолютный путь как '/path1/path2/sample.php', так и относительный как '../path2/sample.php' могут быть использованы.<br />Если Вы введете путь как 'http://url/sample.php', результат будет сначала получен и затем показан.<br />Это текущий абсолютный путь к XE.<br />";
$lang->about_opage_caching_interval = "Единица измерения равна одной минуте. Это отображает временно сохраненные данные для присвоенного времени.<br />Рекомендуется устанавливать разумное время кеширования, если множество ресурсов нуждаются в показе данных с других серверов.<br />Значение 0 отключает кеширование.";
$lang->opage_mobile_path = 'Location of External Document for Mobile View';
$lang->about_opage_mobile_path= "Please input the location of external document for mobile view. If not inputted, it uses the the external document specified above.<br />Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.<br />If you input the path like 'http://url/sample.php' , the result will be received and then displayed.<br />This is current XE's absolute path.<br />";
?>

View file

@ -1,19 +1,19 @@
<?php
/* ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░ * @File : common/lang/vi.lang.php ░░
░░ * @Author : zero (zero@nzeo.com) ░░
░░ * @Trans : Đào Đức Duy (ducduy.dao.vn@vietxe.net) ░░
░░ * @Website: http://vietxe.net ░░
░░ * @Brief : Vietnamese Language Pack (Only basic words are included here) ░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ */
$lang->opage = "Trang ngoài";
$lang->opage_path = "Đường dẫn thư mục";
$lang->opage_caching_interval = "Thời gian lưu trữ";
$lang->about_opage = "Module này tạo ra một trang từ bên ngoài tại XE thông qua File HTML hoặc PHP.<br />Nó cho phép đường dẫn tuyệt đối hay tương đối, nếu bắt đầu bằng 'http://' , nó sẽ hiển thị một trang từ bên ngoài Server.";
$lang->about_opage_path= "Xin hãy nhập đường dẫn của thư mục.<br />Có thể sử dụng đường dẫn tuyệt đối dạng '/path1/path2/sample.php' hay tương đối dạng '../path2/sample.php'.<br />Nếu nhập đường dẫn dạng 'http://url/sample.php', nó sẽ nhận và hiển thị nội dung của File đó.<br />Đây là đường dẫn tuyệt đối thư mục cài đặt XE.<br />";
$lang->about_opage_caching_interval = "Đơn vị được tính bằng phút, nó sẽ là thời gian lưu trữ tạm thời.<br />Đó là khuyến cáo thời gian lưu trữ tạm thời thích hợp khi cần để hiển thị.<br />Nhập 0 nếu không sử dụng tính năng này.";
$lang->opage_mobile_path = 'Location of External Document for Mobile View';
$lang->about_opage_mobile_path= "Please input the location of external document for mobile view. If not inputted, it uses the the external document specified above.<br />Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.<br />If you input the path like 'http://url/sample.php' , the result will be received and then displayed.<br />This is current XE's absolute path.<br />";
?>
<?php
/* ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░ * @File : common/lang/vi.lang.php ░░
░░ * @Author : NHN (developers@xpressengine.com) ░░
░░ * @Trans : Đào Đức Duy (ducduy.dao.vn@vietxe.net) ░░
░░ * @Website: http://vietxe.net ░░
░░ * @Brief : Vietnamese Language Pack (Only basic words are included here) ░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ */
$lang->opage = "Trang ngoài";
$lang->opage_path = "Đường dẫn thư mục";
$lang->opage_caching_interval = "Thời gian lưu trữ";
$lang->about_opage = "Module này tạo ra một trang từ bên ngoài tại XE thông qua File HTML hoặc PHP.<br />Nó cho phép đường dẫn tuyệt đối hay tương đối, nếu bắt đầu bằng 'http://' , nó sẽ hiển thị một trang từ bên ngoài Server.";
$lang->about_opage_path= "Xin hãy nhập đường dẫn của thư mục.<br />Có thể sử dụng đường dẫn tuyệt đối dạng '/path1/path2/sample.php' hay tương đối dạng '../path2/sample.php'.<br />Nếu nhập đường dẫn dạng 'http://url/sample.php', nó sẽ nhận và hiển thị nội dung của File đó.<br />Đây là đường dẫn tuyệt đối thư mục cài đặt XE.<br />";
$lang->about_opage_caching_interval = "Đơn vị được tính bằng phút, nó sẽ là thời gian lưu trữ tạm thời.<br />Đó là khuyến cáo thời gian lưu trữ tạm thời thích hợp khi cần để hiển thị.<br />Nhập 0 nếu không sử dụng tính năng này.";
$lang->opage_mobile_path = 'Location of External Document for Mobile View';
$lang->about_opage_mobile_path= "Please input the location of external document for mobile view. If not inputted, it uses the the external document specified above.<br />Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.<br />If you input the path like 'http://url/sample.php' , the result will be received and then displayed.<br />This is current XE's absolute path.<br />";
?>

View file

@ -1,18 +1,18 @@
<?php
/**
* @file modules/opage/lang/zh_CN.lang.php
* @author zero (zero@nzeo.com) 翻译guny(space.china@gmail.com)
* @brief 外部页面(opage)模块简体中文语言包
**/
$lang->opage = "外部页面";
$lang->opage_path = "外部页面路径";
$lang->opage_caching_interval = "缓冲时间设置";
$lang->about_opage = "此模块是一种可以把外部html或php文件插入到XE内部的模块。<br />可以使用绝对路径及相对路径。而且使用以http:// 开头的地址时可以把外部服务器中的页面插入到XE当中。";
$lang->about_opage_path= "请输入外部文件路径。<br />可以使用如同 /path1/path2/sample.php的绝对路径或如 ../path2/sample.php的相对路径。<br />如使用http://url/sample.php之类的地址可以把此页面的输出结果显示到XE内部的指定位置。<br />现安装的XE绝对路径如下:<br />";
$lang->about_opage_caching_interval = "单位为分。缓冲时间内页面将输出临时储存的数据。<br />输出外部服务器信息或数据时,如消耗资源很大,尽量把缓冲时间设置为大一点的相应值。<br />0 表示无缓冲。";
$lang->opage_mobile_path = '移动版外部页面路径';
$lang->about_opage_mobile_path= '请输入移动版外部文件路径。留空默认使用上面指定的的普通外部页面。<br />可以使用如同 /path1/path2/sample.php的绝对路径或如 ../path2/sample.php的相对路径。<br />如使用http://url/sample.php之类的地址可以把此页面的输出结果显示到XE内部的指定位置。<br />现安装的XE绝对路径如下:<br />';
?>
<?php
/**
* @file modules/opage/lang/zh_CN.lang.php
* @author NHN (developers@xpressengine.com) 翻译guny(space.china@gmail.com)
* @brief 外部页面(opage)模块简体中文语言包
**/
$lang->opage = "外部页面";
$lang->opage_path = "外部页面路径";
$lang->opage_caching_interval = "缓冲时间设置";
$lang->about_opage = "此模块是一种可以把外部html或php文件插入到XE内部的模块。<br />可以使用绝对路径及相对路径。而且使用以http:// 开头的地址时可以把外部服务器中的页面插入到XE当中。";
$lang->about_opage_path= "请输入外部文件路径。<br />可以使用如同 /path1/path2/sample.php的绝对路径或如 ../path2/sample.php的相对路径。<br />如使用http://url/sample.php之类的地址可以把此页面的输出结果显示到XE内部的指定位置。<br />现安装的XE绝对路径如下:<br />";
$lang->about_opage_caching_interval = "单位为分。缓冲时间内页面将输出临时储存的数据。<br />输出外部服务器信息或数据时,如消耗资源很大,尽量把缓冲时间设置为大一点的相应值。<br />0 表示无缓冲。";
$lang->opage_mobile_path = '移动版外部页面路径';
$lang->about_opage_mobile_path= '请输入移动版外部文件路径。留空默认使用上面指定的的普通外部页面。<br />可以使用如同 /path1/path2/sample.php的绝对路径或如 ../path2/sample.php的相对路径。<br />如使用http://url/sample.php之类的地址可以把此页面的输出结果显示到XE内部的指定位置。<br />现安装的XE绝对路径如下:<br />';
?>

View file

@ -1,7 +1,7 @@
<?php
/**
* @file modules/opage/lang/zh-TW.lang.php
* @author zero (zero@nzeo.com) 翻譯royallin
* @author NHN (developers@xpressengine.com) 翻譯royallin
* @brief 外部頁面(opage)模組正體中文語言
**/

View file

@ -1,84 +1,84 @@
<?php
/**
* @class opageAdminController
* @author zero (zero@nzeo.com)
* @brief opage 모듈의 admin controller class
**/
class opageAdminController extends opage {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 외부페이지 추가
**/
function procOpageAdminInsert() {
// module 모듈의 model/controller 객체 생성
$oModuleController = &getController('module');
$oModuleModel = &getModel('module');
// 게시판 모듈의 정보 설정
$args = Context::getRequestVars();
$args->module = 'opage';
$args->mid = $args->opage_name;
unset($args->opage_name);
// module_srl이 넘어오면 원 모듈이 있는지 확인
if($args->module_srl) {
$module_info = $oModuleModel->getModuleInfoByModuleSrl($args->module_srl);
if($module_info->module_srl != $args->module_srl) unset($args->module_srl);
}
// module_srl의 값에 따라 insert/update
if(!$args->module_srl) {
$args->module_srl = getNextSequence();
$output = $oModuleController->insertModule($args);
$msg_code = 'success_registed';
} else {
$output = $oModuleController->updateModule($args);
$msg_code = 'success_updated';
// 캐시 파일 삭제
$cache_file = sprintf("./files/cache/opage/%d.cache.php", $module_info->module_srl);
if(file_exists($cache_file)) FileHandler::removeFile($cache_file);
}
if(!$output->toBool()) return $output;
// 등록 성공후 return될 메세지 정리
$this->add("module_srl", $output->get('module_srl'));
$this->add("opage", Context::get('opage'));
$this->setMessage($msg_code);
}
/**
* @brief 외부페이지 삭제
**/
function procOpageAdminDelete() {
$module_srl = Context::get('module_srl');
// 원본을 구해온다
$oModuleController = &getController('module');
$output = $oModuleController->deleteModule($module_srl);
if(!$output->toBool()) return $output;
$this->add('module','opage');
$this->add('opage',Context::get('opage'));
$this->setMessage('success_deleted');
}
/**
* @brief 외부페이지 기본 정보의 추가
**/
function procOpageAdminInsertConfig() {
// 기본 정보를 받음
$args = Context::gets('test');
}
}
?>
<?php
/**
* @class opageAdminController
* @author NHN (developers@xpressengine.com)
* @brief opage 모듈의 admin controller class
**/
class opageAdminController extends opage {
/**
* @brief 초기화
**/
function init() {
}
/**
* @brief 외부페이지 추가
**/
function procOpageAdminInsert() {
// module 모듈의 model/controller 객체 생성
$oModuleController = &getController('module');
$oModuleModel = &getModel('module');
// 게시판 모듈의 정보 설정
$args = Context::getRequestVars();
$args->module = 'opage';
$args->mid = $args->opage_name;
unset($args->opage_name);
// module_srl이 넘어오면 원 모듈이 있는지 확인
if($args->module_srl) {
$module_info = $oModuleModel->getModuleInfoByModuleSrl($args->module_srl);
if($module_info->module_srl != $args->module_srl) unset($args->module_srl);
}
// module_srl의 값에 따라 insert/update
if(!$args->module_srl) {
$args->module_srl = getNextSequence();
$output = $oModuleController->insertModule($args);
$msg_code = 'success_registed';
} else {
$output = $oModuleController->updateModule($args);
$msg_code = 'success_updated';
// 캐시 파일 삭제
$cache_file = sprintf("./files/cache/opage/%d.cache.php", $module_info->module_srl);
if(file_exists($cache_file)) FileHandler::removeFile($cache_file);
}
if(!$output->toBool()) return $output;
// 등록 성공후 return될 메세지 정리
$this->add("module_srl", $output->get('module_srl'));
$this->add("opage", Context::get('opage'));
$this->setMessage($msg_code);
}
/**
* @brief 외부페이지 삭제
**/
function procOpageAdminDelete() {
$module_srl = Context::get('module_srl');
// 원본을 구해온다
$oModuleController = &getController('module');
$output = $oModuleController->deleteModule($module_srl);
if(!$output->toBool()) return $output;
$this->add('module','opage');
$this->add('opage',Context::get('opage'));
$this->setMessage('success_deleted');
}
/**
* @brief 외부페이지 기본 정보의 추가
**/
function procOpageAdminInsertConfig() {
// 기본 정보를 받음
$args = Context::gets('test');
}
}
?>

View file

@ -1,7 +1,7 @@
<?php
/**
* @class opageAdminView
* @author zero (zero@nzeo.com)
* @author NHN (developers@xpressengine.com)
* @brief opage 모듈의 admin view 클래스
**/

View file

@ -1,45 +1,45 @@
<?php
/**
* @class opage
* @author zero (zero@nzeo.com)
* @brief opage 모듈의 high class
**/
class opage extends ModuleObject {
/**
* @brief 설치시 추가 작업이 필요할시 구현
**/
function moduleInstall() {
// opage 에서 사용할 cache디렉토리 생성
FileHandler::makeDir('./files/cache/opage');
return new Object();
}
/**
* @brief 설치가 이상이 없는지 체크하는 method
**/
function checkUpdate() {
// cache 디렉토리가 없으면 바로 디렉토리 생성
if(!is_dir('./files/cache/opage')) FileHandler::makeDir('./files/cache/opage');
return false;
}
/**
* @brief 업데이트 실행
**/
function moduleUpdate() {
return new Object(0, 'success_updated');
}
/**
* @brief 캐시 파일 재생성
**/
function recompileCache() {
// 외부 페이지 캐시 파일 삭제
FileHandler::removeFilesInDir("./files/cache/opage");
}
}
?>
<?php
/**
* @class opage
* @author NHN (developers@xpressengine.com)
* @brief opage 모듈의 high class
**/
class opage extends ModuleObject {
/**
* @brief 설치시 추가 작업이 필요할시 구현
**/
function moduleInstall() {
// opage 에서 사용할 cache디렉토리 생성
FileHandler::makeDir('./files/cache/opage');
return new Object();
}
/**
* @brief 설치가 이상이 없는지 체크하는 method
**/
function checkUpdate() {
// cache 디렉토리가 없으면 바로 디렉토리 생성
if(!is_dir('./files/cache/opage')) FileHandler::makeDir('./files/cache/opage');
return false;
}
/**
* @brief 업데이트 실행
**/
function moduleUpdate() {
return new Object(0, 'success_updated');
}
/**
* @brief 캐시 파일 재생성
**/
function recompileCache() {
// 외부 페이지 캐시 파일 삭제
FileHandler::removeFilesInDir("./files/cache/opage");
}
}
?>

View file

@ -1,105 +1,105 @@
<?php
/**
* @class documentController
* @author zero (zero@nzeo.com)
* @brief document 모듈의 controller 클래스
**/
class opageController extends opage {
var $target_path = '';
/**
* @brief 초기화
**/
function init() { }
/**
* @brief 타이틀 추출
**/
function getTitle($content) {
preg_match('!<title([^>]*)>(.*?)<\/title>!is', $content, $buff);
return trim($buff[2]);
}
/**
* @brief header script 추출
**/
function getHeadScript($content) {
// title 태그 제거
$content = preg_replace('!<title([^>]*)>(.*?)<\/title>!is','', $content);
// meta 태그 제거
$content = preg_replace('!<(\/){0,1}meta([^>]*)>!is','', $content);
// <link, <style, <script 등의 정보를 추출
preg_match_all('!<link([^>]*)>!is', $content, $link_buff);
for($i=0;$i<count($link_buff[0]);$i++) {
$tmp_str = trim($link_buff[0][$i]);
if(!$tmp_str) continue;
$header_script .= $tmp_str."\n";
}
preg_match_all('!<(style|script)(.*?)<\/(style|script)>!is', $content, $script_buff);
for($i=0;$i<count($script_buff[0]);$i++) {
$tmp_str = trim($script_buff[0][$i]);
if(!$tmp_str) continue;
$header_script .= $tmp_str."\n";
}
return $header_script;
}
/**
* @brief body의 내용을 추출
**/
function getBodyScript($content) {
// 내용 추출
preg_match('!<body([^>]*)>(.*?)<\/body>!is', $content, $body_buff);
$body_script = $body_buff[2];
// link, style, script등 제거
$body_script = preg_replace('!<link([^>]*)>!is', '', $body_script);
$body_script = preg_replace('!<(style|script)(.*?)<\/(style|script)>!is', '', $body_script);
return $body_script;
}
/**
* @brief 내용에 포함된 src, href의 값을 변경
**/
function replaceSrc($content, $path) {
$url_info = parse_url($path);
$host = sprintf("%s://%s%s",$url_info['scheme'],$url_info['host'],$url_info['port']?':'.$url_info['port']:'');
$this->host = $host.'/';
$path = $url_info['path'];
if(substr($path,-1)=='/') $path = substr($path,-1);
$t = explode('/',$path);
$_t = array();
for($i=0,$c=count($t)-1;$i<$c;$i++) {
$v = trim($t[$i]);
if(!$v) continue;
$_t[] = $v;
}
$path = $host.'/'.implode('/',$_t);
if(substr($path,-1)!='/') $path .= '/';
$this->path = $path;
$content = preg_replace_callback('/(src=|href=|url\()("|\')?([^"\'\)]+)("|\'\))?/is',array($this,'_replacePath'),$content);
return $content;
}
function _replacePath($matches) {
$val = trim($matches[3]);
if(preg_match('/^(http|https|ftp|telnet|mms|mailto)/i',$val)) return $matches[0];
if(substr($val,0,2)=='./') {
$path = $this->path.substr($val,2);
} elseif(substr($val,0,1)=='/') {
$path = $this->host.substr($val,1);
} else {
$path = $this->path.$val;
}
return sprintf("%s%s%s%s", $matches[1], $matches[2], $path, $matches[4]);
}
}
?>
<?php
/**
* @class documentController
* @author NHN (developers@xpressengine.com)
* @brief document 모듈의 controller 클래스
**/
class opageController extends opage {
var $target_path = '';
/**
* @brief 초기화
**/
function init() { }
/**
* @brief 타이틀 추출
**/
function getTitle($content) {
preg_match('!<title([^>]*)>(.*?)<\/title>!is', $content, $buff);
return trim($buff[2]);
}
/**
* @brief header script 추출
**/
function getHeadScript($content) {
// title 태그 제거
$content = preg_replace('!<title([^>]*)>(.*?)<\/title>!is','', $content);
// meta 태그 제거
$content = preg_replace('!<(\/){0,1}meta([^>]*)>!is','', $content);
// <link, <style, <script 등의 정보를 추출
preg_match_all('!<link([^>]*)>!is', $content, $link_buff);
for($i=0;$i<count($link_buff[0]);$i++) {
$tmp_str = trim($link_buff[0][$i]);
if(!$tmp_str) continue;
$header_script .= $tmp_str."\n";
}
preg_match_all('!<(style|script)(.*?)<\/(style|script)>!is', $content, $script_buff);
for($i=0;$i<count($script_buff[0]);$i++) {
$tmp_str = trim($script_buff[0][$i]);
if(!$tmp_str) continue;
$header_script .= $tmp_str."\n";
}
return $header_script;
}
/**
* @brief body의 내용을 추출
**/
function getBodyScript($content) {
// 내용 추출
preg_match('!<body([^>]*)>(.*?)<\/body>!is', $content, $body_buff);
$body_script = $body_buff[2];
// link, style, script등 제거
$body_script = preg_replace('!<link([^>]*)>!is', '', $body_script);
$body_script = preg_replace('!<(style|script)(.*?)<\/(style|script)>!is', '', $body_script);
return $body_script;
}
/**
* @brief 내용에 포함된 src, href의 값을 변경
**/
function replaceSrc($content, $path) {
$url_info = parse_url($path);
$host = sprintf("%s://%s%s",$url_info['scheme'],$url_info['host'],$url_info['port']?':'.$url_info['port']:'');
$this->host = $host.'/';
$path = $url_info['path'];
if(substr($path,-1)=='/') $path = substr($path,-1);
$t = explode('/',$path);
$_t = array();
for($i=0,$c=count($t)-1;$i<$c;$i++) {
$v = trim($t[$i]);
if(!$v) continue;
$_t[] = $v;
}
$path = $host.'/'.implode('/',$_t);
if(substr($path,-1)!='/') $path .= '/';
$this->path = $path;
$content = preg_replace_callback('/(src=|href=|url\()("|\')?([^"\'\)]+)("|\'\))?/is',array($this,'_replacePath'),$content);
return $content;
}
function _replacePath($matches) {
$val = trim($matches[3]);
if(preg_match('/^(http|https|ftp|telnet|mms|mailto)/i',$val)) return $matches[0];
if(substr($val,0,2)=='./') {
$path = $this->path.substr($val,2);
} elseif(substr($val,0,1)=='/') {
$path = $this->host.substr($val,1);
} else {
$path = $this->path.$val;
}
return sprintf("%s%s%s%s", $matches[1], $matches[2], $path, $matches[4]);
}
}
?>

View file

@ -1,33 +1,33 @@
<?php
/**
* @class opageModel
* @author zero (zero@nzeo.com)
* @brief opage 모듈의 model 클래스
**/
class opageModel extends opage {
/**
* @brief 초기화
**/
function init() { }
/**
* @brief 특정 외부 페이지의 정보를 return
* 외부 페이지의 경우 기본 모듈의 정보와 설정정보를 함께 다루기 때문에 별도의 model method를 이용하게 한다
**/
function getOpage($module_srl) {
$oModuleModel = &getModel('module');
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
if($module_info->module_srl != $module_srl) return;
$extra_vars = unserialize($module_info->extra_vars);
if($extra_vars) {
foreach($extra_vars as $key => $val) $module_info->{$key} = $val;
unset($module_info->extra_vars);
}
return $module_info;
}
}
?>
<?php
/**
* @class opageModel
* @author NHN (developers@xpressengine.com)
* @brief opage 모듈의 model 클래스
**/
class opageModel extends opage {
/**
* @brief 초기화
**/
function init() { }
/**
* @brief 특정 외부 페이지의 정보를 return
* 외부 페이지의 경우 기본 모듈의 정보와 설정정보를 함께 다루기 때문에 별도의 model method를 이용하게 한다
**/
function getOpage($module_srl) {
$oModuleModel = &getModel('module');
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
if($module_info->module_srl != $module_srl) return;
$extra_vars = unserialize($module_info->extra_vars);
if($extra_vars) {
foreach($extra_vars as $key => $val) $module_info->{$key} = $val;
unset($module_info->extra_vars);
}
return $module_info;
}
}
?>

View file

@ -1,164 +1,164 @@
<?php
/**
* @class opageView
* @author zero (zero@nzeo.com)
* @brief opage 모듈의 view 클래스
**/
class opageView extends opage {
var $path;
var $cache_file;
var $caching_interval;
/**
* @brief 초기화
**/
function init() {
// 템플릿 경로 구함 (opage의 경우 tpl에 관리자용 템플릿 모아놓음)
$this->setTemplatePath($this->module_path.'tpl');
// 외부 페이지 모듈의 정보를 구함
$oOpageModel = &getModel('opage');
$module_info = $oOpageModel->getOpage($this->module_srl);
Context::set('module_info', $module_info);
// 외부 페이지에서 명시된 외부 페이지 경로/ 캐싱 간격을 를 구함
$this->path = $module_info->path;
$this->caching_interval = $module_info->caching_interval;
// 캐시 파일 지정
$this->cache_file = sprintf("./files/cache/opage/%d.cache.php", $module_info->module_srl);
}
/**
* @brief 일반 요청시 출력
**/
function dispOpageIndex() {
// http 인지 내부 파일인지 점검
if($this->path) {
if(preg_match("/^([a-z]+):\/\//i",$this->path)) $content = $this->getHtmlPage($this->path, $this->caching_interval, $this->cache_file);
else $content = $this->executeFile($this->path, $this->caching_interval, $this->cache_file);
}
Context::set('opage_content', $content);
// 결과 출력 템플릿 지정
$this->setTemplateFile('content');
}
/**
* @brief 외부 http로 요청되는 파일일 경우 파일을 받아와서 저장 return
**/
function getHtmlPage($path, $caching_interval, $cache_file) {
// 캐시 검사
if($caching_interval > 0 && file_exists($cache_file) && filemtime($cache_file) + $caching_interval*60 > time()) {
$content = FileHandler::readFile($cache_file);
} else {
FileHandler::getRemoteFile($path, $cache_file);
$content = FileHandler::readFile($cache_file);
}
// opage controller 생성
$oOpageController = &getController('opage');
// 외부 서버의 페이지 일 경우 이미지, css, javascript등의 url을 변경
$content = $oOpageController->replaceSrc($content, $path);
// 해당 문서를 utf-8로 변경
$buff->content = $content;
$buff = Context::convertEncoding($buff);
$content = $buff->content;
// title 추출
$title = $oOpageController->getTitle($content);
if($title) Context::setBrowserTitle($title);
// header script 추출
$head_script = $oOpageController->getHeadScript($content);
if($head_script) Context::addHtmlHeader($head_script);
// body 내용 추출
$body_script = $oOpageController->getBodyScript($content);
if(!$body_script) $body_script = $content;
return $content;
}
/**
* @brief 내부 파일일 경우 include하도록 캐시파일을 만들고 처리
**/
function executeFile($path, $caching_interval, $cache_file) {
// 파일이 없으면 취소
if(!file_exists($path)) return;
// 경로와 파일이름을 구함
$tmp_path = explode('/',$cache_file);
$filename = $tmp_path[count($tmp_path)-1];
$filepath = preg_replace('/'.$filename."$/i","",$cache_file);
// 캐시 검사
if($caching_interval <1 || !file_exists($cache_file) || filemtime($cache_file) + $caching_interval*60 <= time() || filemtime($cache_file)<filemtime($path) ) {
if(file_exists($cache_file)) FileHandler::removeFile($cache_file);
// 일단 대상 파일을 읽어서 내용을 구함
ob_start();
@include($path);
$content = ob_get_clean();
// 상대경로를 절대경로로 변경
$path_info = pathinfo($path);
$this->path = str_replace('\\', '/', realpath($path_info['dirname'])).'/';
$content = preg_replace_callback('/(src=|href=|url\()("|\')?([^"\'\)]+)("|\'\))?/is',array($this,'_replacePath'),$content);
$content = preg_replace_callback('/(<!--%import\()(\")([^"]+)(\")/is',array($this,'_replacePath'),$content);
FileHandler::writeFile($cache_file, $content);
// include후 결과를 return
if(!file_exists($cache_file)) return;
// 컴파일 시도
$oTemplate = &TemplateHandler::getInstance();
$script = $oTemplate->compileDirect($filepath, $filename);
FileHandler::writeFile($cache_file, $script);
}
$__Context = &$GLOBALS['__Context__'];
$__Context->tpl_path = $filepath;
if($_SESSION['is_logged']) $__Context->logged_info = $_SESSION['logged_info'];
ob_start();
@include($cache_file);
$content = ob_get_clean();
return $content;
}
function _replacePath($matches) {
$val = trim($matches[3]);
// 외부 또는 /, #, { 로 시작하는 경로라면 그냥 pass
// /=absolute path, #=hash in a page, {=Template syntax
if(preg_match('@^((?:http|https|ftp|telnet|mms)://|(?:mailto|javascript):|[/#{])@i',$val)) return $matches[0];
// .. 와 같은 경우 대상 경로를 구함
elseif(preg_match('/^\.\./i',$val)) {
$p = Context::pathToUrl($this->path);
return sprintf("%s%s%s%s",$matches[1],$matches[2],$p.$val,$matches[4]);
}
if(substr($val,0,2)=='./') $val = substr($val,2);
//$p = '/'.str_replace(_XE_PATH_,'',$this->path);
$p = Context::pathToUrl($this->path);
return sprintf("%s%s%s%s",$matches[1],$matches[2],$p.$val,$matches[4]);
}
}
?>
<?php
/**
* @class opageView
* @author NHN (developers@xpressengine.com)
* @brief opage 모듈의 view 클래스
**/
class opageView extends opage {
var $path;
var $cache_file;
var $caching_interval;
/**
* @brief 초기화
**/
function init() {
// 템플릿 경로 구함 (opage의 경우 tpl에 관리자용 템플릿 모아놓음)
$this->setTemplatePath($this->module_path.'tpl');
// 외부 페이지 모듈의 정보를 구함
$oOpageModel = &getModel('opage');
$module_info = $oOpageModel->getOpage($this->module_srl);
Context::set('module_info', $module_info);
// 외부 페이지에서 명시된 외부 페이지 경로/ 캐싱 간격을 를 구함
$this->path = $module_info->path;
$this->caching_interval = $module_info->caching_interval;
// 캐시 파일 지정
$this->cache_file = sprintf("./files/cache/opage/%d.cache.php", $module_info->module_srl);
}
/**
* @brief 일반 요청시 출력
**/
function dispOpageIndex() {
// http 인지 내부 파일인지 점검
if($this->path) {
if(preg_match("/^([a-z]+):\/\//i",$this->path)) $content = $this->getHtmlPage($this->path, $this->caching_interval, $this->cache_file);
else $content = $this->executeFile($this->path, $this->caching_interval, $this->cache_file);
}
Context::set('opage_content', $content);
// 결과 출력 템플릿 지정
$this->setTemplateFile('content');
}
/**
* @brief 외부 http로 요청되는 파일일 경우 파일을 받아와서 저장 return
**/
function getHtmlPage($path, $caching_interval, $cache_file) {
// 캐시 검사
if($caching_interval > 0 && file_exists($cache_file) && filemtime($cache_file) + $caching_interval*60 > time()) {
$content = FileHandler::readFile($cache_file);
} else {
FileHandler::getRemoteFile($path, $cache_file);
$content = FileHandler::readFile($cache_file);
}
// opage controller 생성
$oOpageController = &getController('opage');
// 외부 서버의 페이지 일 경우 이미지, css, javascript등의 url을 변경
$content = $oOpageController->replaceSrc($content, $path);
// 해당 문서를 utf-8로 변경
$buff->content = $content;
$buff = Context::convertEncoding($buff);
$content = $buff->content;
// title 추출
$title = $oOpageController->getTitle($content);
if($title) Context::setBrowserTitle($title);
// header script 추출
$head_script = $oOpageController->getHeadScript($content);
if($head_script) Context::addHtmlHeader($head_script);
// body 내용 추출
$body_script = $oOpageController->getBodyScript($content);
if(!$body_script) $body_script = $content;
return $content;
}
/**
* @brief 내부 파일일 경우 include하도록 캐시파일을 만들고 처리
**/
function executeFile($path, $caching_interval, $cache_file) {
// 파일이 없으면 취소
if(!file_exists($path)) return;
// 경로와 파일이름을 구함
$tmp_path = explode('/',$cache_file);
$filename = $tmp_path[count($tmp_path)-1];
$filepath = preg_replace('/'.$filename."$/i","",$cache_file);
// 캐시 검사
if($caching_interval <1 || !file_exists($cache_file) || filemtime($cache_file) + $caching_interval*60 <= time() || filemtime($cache_file)<filemtime($path) ) {
if(file_exists($cache_file)) FileHandler::removeFile($cache_file);
// 일단 대상 파일을 읽어서 내용을 구함
ob_start();
@include($path);
$content = ob_get_clean();
// 상대경로를 절대경로로 변경
$path_info = pathinfo($path);
$this->path = str_replace('\\', '/', realpath($path_info['dirname'])).'/';
$content = preg_replace_callback('/(src=|href=|url\()("|\')?([^"\'\)]+)("|\'\))?/is',array($this,'_replacePath'),$content);
$content = preg_replace_callback('/(<!--%import\()(\")([^"]+)(\")/is',array($this,'_replacePath'),$content);
FileHandler::writeFile($cache_file, $content);
// include후 결과를 return
if(!file_exists($cache_file)) return;
// 컴파일 시도
$oTemplate = &TemplateHandler::getInstance();
$script = $oTemplate->compileDirect($filepath, $filename);
FileHandler::writeFile($cache_file, $script);
}
$__Context = &$GLOBALS['__Context__'];
$__Context->tpl_path = $filepath;
if($_SESSION['is_logged']) $__Context->logged_info = $_SESSION['logged_info'];
ob_start();
@include($cache_file);
$content = ob_get_clean();
return $content;
}
function _replacePath($matches) {
$val = trim($matches[3]);
// 외부 또는 /, #, { 로 시작하는 경로라면 그냥 pass
// /=absolute path, #=hash in a page, {=Template syntax
if(preg_match('@^((?:http|https|ftp|telnet|mms)://|(?:mailto|javascript):|[/#{])@i',$val)) return $matches[0];
// .. 와 같은 경우 대상 경로를 구함
elseif(preg_match('/^\.\./i',$val)) {
$p = Context::pathToUrl($this->path);
return sprintf("%s%s%s%s",$matches[1],$matches[2],$p.$val,$matches[4]);
}
if(substr($val,0,2)=='./') $val = substr($val,2);
//$p = '/'.str_replace(_XE_PATH_,'',$this->path);
$p = Context::pathToUrl($this->path);
return sprintf("%s%s%s%s",$matches[1],$matches[2],$p.$val,$matches[4]);
}
}
?>

View file

@ -1,62 +1,62 @@
/**
* @file modules/opage/js/opage_admin.js
* @author zero (zero@nzeo.com)
* @brief opage모듈의 관리자용 javascript
**/
/* 모듈 생성 후 */
function completeInsertOpage(ret_obj) {
var error = ret_obj['error'];
var message = ret_obj['message'];
var opage = ret_obj['opage'];
var module_srl = ret_obj['module_srl'];
alert(message);
var url = '';
if(location.href.getQuery('module')=='admin') {
url = current_url.setQuery('module_srl',module_srl).setQuery('act','dispOpageAdminInsert');
if(opage) url = url.setQuery('opage',opage);
} else {
url = current_url.setQuery('act','').setQuery('module_srl','');
}
location.href = url;
}
/* 모듈 삭제 후 */
function completeDeleteOpage(ret_obj) {
var error = ret_obj['error'];
var message = ret_obj['message'];
var opage = ret_obj['opage'];
alert(message);
var url = current_url.setQuery('act','dispOpageAdminContent');
if(opage) url = url.setQuery('opage',opage);
location.href = url;
}
/* 카테고리 이동 */
function doChangeCategory(fo_obj) {
var module_category_srl = fo_obj.module_category_srl.options[fo_obj.module_category_srl.selectedIndex].value;
if(module_category_srl==-1) {
location.href = current_url.setQuery('act','dispModuleAdminCategory');
return false;
}
return true;
}
/* 일괄 설정 */
function doCartSetup(url) {
var module_srl = new Array();
jQuery('#fo_list input[name=cart]:checked').each(function() {
module_srl[module_srl.length] = jQuery(this).val();
});
if(module_srl.length<1) return;
url += "&module_srls="+module_srl.join(',');
popopen(url,'modulesSetup');
}
/**
* @file modules/opage/js/opage_admin.js
* @author NHN (developers@xpressengine.com)
* @brief opage모듈의 관리자용 javascript
**/
/* 모듈 생성 후 */
function completeInsertOpage(ret_obj) {
var error = ret_obj['error'];
var message = ret_obj['message'];
var opage = ret_obj['opage'];
var module_srl = ret_obj['module_srl'];
alert(message);
var url = '';
if(location.href.getQuery('module')=='admin') {
url = current_url.setQuery('module_srl',module_srl).setQuery('act','dispOpageAdminInsert');
if(opage) url = url.setQuery('opage',opage);
} else {
url = current_url.setQuery('act','').setQuery('module_srl','');
}
location.href = url;
}
/* 모듈 삭제 후 */
function completeDeleteOpage(ret_obj) {
var error = ret_obj['error'];
var message = ret_obj['message'];
var opage = ret_obj['opage'];
alert(message);
var url = current_url.setQuery('act','dispOpageAdminContent');
if(opage) url = url.setQuery('opage',opage);
location.href = url;
}
/* 카테고리 이동 */
function doChangeCategory(fo_obj) {
var module_category_srl = fo_obj.module_category_srl.options[fo_obj.module_category_srl.selectedIndex].value;
if(module_category_srl==-1) {
location.href = current_url.setQuery('act','dispModuleAdminCategory');
return false;
}
return true;
}
/* 일괄 설정 */
function doCartSetup(url) {
var module_srl = new Array();
jQuery('#fo_list input[name=cart]:checked').each(function() {
module_srl[module_srl.length] = jQuery(this).val();
});
if(module_srl.length<1) return;
url += "&module_srls="+module_srl.join(',');
popopen(url,'modulesSetup');
}