delete opage module

git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9510 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
devjin 2011-10-06 07:07:24 +00:00
parent c6c8c2199a
commit 3640a3bb95
20 changed files with 0 additions and 1093 deletions

View file

@ -1,37 +0,0 @@
<?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>
<title xml:lang="tr">Harici Sayfa</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>
<description xml:lang="tr">Harici sayfaları, Zeroboard XE\'nin içine yerleştirmek için kullanılan modüldür.</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>
<name xml:lang="tr">NHN</name>
</author>
</module>

View file

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<module>
<grants />
<permissions />
<actions>
<action name="dispOpageIndex" type="view" index="true" />
<action name="dispOpageAdminContent" type="view" admin_index="true" standalone="true" />
<action name="dispOpageAdminGrantInfo" type="view" standalone="true" />
<action name="dispOpageAdminModuleConfig" type="view" standalone="true" />
<action name="dispOpageAdminInsert" type="view" standalone="true" setup_index="true" />
<action name="dispOpageAdminDelete" type="view" standalone="true" />
<action name="dispOpageAdminContentModify" type="view" standalone="true" />
<action name="procOpageAdminRemoveWidgetCache" type="controller" standalone="true" />
<action name="procOpageAdminInsert" type="controller" standalone="true" />
<action name="procOpageAdminDelete" type="controller" standalone="true" />
<action name="procOpageAdminInsertConfig" type="controller" standalone="true" />
</actions>
</module>

View file

@ -1,94 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<lang>
<item name="opage">
<value xml:lang="ko"><![CDATA[외부 페이지]]></value>
<value xml:lang="en"><![CDATA[External Page]]></value>
<value xml:lang="jp"><![CDATA[外部ページ]]></value>
<value xml:lang="zh-CN"><![CDATA[外部页面]]></value>
<value xml:lang="zh-TW"><![CDATA[外部頁面]]></value>
<value xml:lang="fr"><![CDATA[Page Extérieure]]></value>
<value xml:lang="ru"><![CDATA[Внешняя страница]]></value>
<value xml:lang="es"><![CDATA[Page Exteriores]]></value>
<value xml:lang="tr"><![CDATA[Harici Sayfa]]></value>
<value xml:lang="vi"><![CDATA[Trang ngoài]]></value>
</item>
<item name="opage_path">
<value xml:lang="ko"><![CDATA[외부 문서 위치]]></value>
<value xml:lang="en"><![CDATA[Location of External Document]]></value>
<value xml:lang="jp"><![CDATA[外部ドキュメントの場所]]></value>
<value xml:lang="zh-CN"><![CDATA[外部页面路径]]></value>
<value xml:lang="zh-TW"><![CDATA[外部頁面路徑]]></value>
<value xml:lang="fr"><![CDATA[Localisation du Document Extérieur]]></value>
<value xml:lang="ru"><![CDATA[Расположение внешнего документа]]></value>
<value xml:lang="es"><![CDATA[Ubicacion del documento externo]]></value>
<value xml:lang="tr"><![CDATA[Harici Belgenin Konumu]]></value>
<value xml:lang="vi"><![CDATA[Đường dẫn thư mục]]></value>
</item>
<item name="opage_caching_interval">
<value xml:lang="ko"><![CDATA[캐싱 시간 설정]]></value>
<value xml:lang="en"><![CDATA[Caching Time]]></value>
<value xml:lang="jp"><![CDATA[キャッシング時間設定]]></value>
<value xml:lang="zh-CN"><![CDATA[缓冲时间设置]]></value>
<value xml:lang="zh-TW"><![CDATA[暫存時間設置]]></value>
<value xml:lang="fr"><![CDATA[Temps de antémémoire]]></value>
<value xml:lang="ru"><![CDATA[Установить время кеширования]]></value>
<value xml:lang="es"><![CDATA[Establezca el tiempo de cache]]></value>
<value xml:lang="tr"><![CDATA[Önbelleğe Alma Zamanı]]></value>
<value xml:lang="vi"><![CDATA[Thời gian lưu trữ]]></value>
</item>
<item name="about_opage">
<value xml:lang="ko"><![CDATA[XE가 아닌 외부 HTML 또는 PHP파일을 XE에서 사용할 수 있도록 하는 모듈입니다.<br />절대경로, 상대경로를 이용할 수 있으며 http:// 로 시작할 경우 서버 외부의 페이지도 표시할 수 있습니다]]></value>
<value xml:lang="en"><![CDATA[This module enables to use 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.]]></value>
<value xml:lang="jp"><![CDATA[外部のHTMLまたはPHPファイルをXE内部で使用できるようにするモジュールです。<br />絶対パス、相対パスで指定でき、「http://」で始まるサーバの外部ページも表示できます。]]></value>
<value xml:lang="zh-CN"><![CDATA[此模块是一种可以把外部html或php文件插入到XE内部的模块。<br />可以使用绝对路径及相对路径。而且使用以http:// 开头的地址时可以把外部服务器中的页面插入到XE当中。]]></value>
<value xml:lang="zh-TW"><![CDATA[此模組可把外部HTML或PHP檔案插入到XE中的模組。<br />可以使用絕對路徑及相對路徑。而且使用以『http://』開頭的網址時可以把外部主機中的頁面插入到XE當中。]]></value>
<value xml:lang="fr"><![CDATA[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.]]></value>
<value xml:lang="ru"><![CDATA[Этот модуль позволяет использовать внешние HTML или PHP файлы в XE.<br />Требует ввода абсолютного или относительного пути. Если URL начинается с 'http://', внешняя страница с другого сервера будет показана.]]></value>
<value xml:lang="es"><![CDATA[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.]]></value>
<value xml:lang="tr"><![CDATA[Bu modül, harici html veya php dosyalarının XE'nin içinde kullanılmasına olanak tanır.<br />Kesin ya da ilgili yola izin verir ve eğer url 'http://' ile başlıyorsa , modül sunucunun harici sayfasını gösterebilir.]]></value>
<value xml:lang="vi"><![CDATA[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.]]></value>
</item>
<item name="about_opage_path">
<value xml:lang="ko"><![CDATA[외부문서의 위치를 입력해주세요.<br />/path1/path2/sample.php 와 같이 절대경로나 ../path2/sample.php와 같은 상대경로 모두 사용가능합니다.<br />http://url/sample.php 와 같이 사용하면 해당 페이지를 웹으로 전송 받아 출력 하게 됩니다.<br />현재 XE가 설치된 절대경로는 다음과 같습니다.<br />]]></value>
<value xml:lang="en"><![CDATA[Please enter 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 />]]></value>
<value xml:lang="jp"><![CDATA[外部ドキュメントの場所を入力してください。<br />「/path1/path2/sample.php」のような絶対パス、「../path2/sample.php」のような相対パスが使用できます。<br />「http://URL/sample.php」のように使用すると結果を読み込んで表示します。<br />現在XEがインストールされている絶対パスは次のようになっています。<br />]]></value>
<value xml:lang="zh-CN"><![CDATA[请输入外部文件路径。<br />可以使用如同 /path1/path2/sample.php的绝对路径或如 ../path2/sample.php的相对路径。<br />如使用http://url/sample.php之类的地址可以把此页面的输出结果显示到XE内部的指定位置。<br />现安装的XE绝对路径如下:<br />]]></value>
<value xml:lang="zh-TW"><![CDATA[請輸入外部檔案路徑。<br />可以使用像『/path1/path2/sample.php』的絕對路徑或是『../path2/sample.php』的相對路徑。<br />如果是用『http://url/sample.php』之類的網址會將此頁面的結果顯示到XE內部的指定位置。<br />目前安裝的XE絕對路徑如下:<br />]]></value>
<value xml:lang="fr"><![CDATA[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 />]]></value>
<value xml:lang="ru"><![CDATA[Пожалуйста, введите размещение внешнего документа.<br />Абсолютный путь как '/path1/path2/sample.php', так и относительный как '../path2/sample.php' могут быть использованы.<br />Если Вы введете путь как 'http://url/sample.php', результат будет сначала получен и затем показан.<br />Это текущий абсолютный путь к XE.<br />]]></value>
<value xml:lang="es"><![CDATA[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 />]]></value>
<value xml:lang="tr"><![CDATA[Lütfen harici dosyaların konumunu giriniz.<br />'/path1/path2/sample.php' gibi kesin yollar ve '../path2/sample.php' gibi ilgili yollar kullanılabilir.<br />Eğer 'http://url/sample.php' gibi bir yol giriyorsanız, sonuç önce alınacak sonra gösterilecektir.<br />Bu XE'nin kesin yoludur.<br />]]></value>
<value xml:lang="vi"><![CDATA[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 />]]></value>
</item>
<item name="about_opage_caching_interval">
<value xml:lang="ko"><![CDATA[분 단위이며 정해진 시간동안은 임시 저장한 데이터를 출력합니다.<br />다른 서버의 정보를 출력하거나, 데이터 출력하는데 많은 자원이 필요한 경우, 원하시는 분 단위 시간 간격으로 캐싱하는 것을 추천합니다.<br />0 으로 하시면 캐싱을 하지 않습니다.]]></value>
<value xml:lang="en"><![CDATA[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.]]></value>
<value xml:lang="jp"><![CDATA[分単位で指定でき、設定された時間の間は、臨時保存されたデータを出力します。<br />他のサーバの情報を出力したり、データを出力する際、リソースが多く使われるため、数分単位でキャッシングすることをお勧めします。<br />「0」に指定するとキャッシングされません。]]></value>
<value xml:lang="zh-CN"><![CDATA[单位为分。缓冲时间内页面将输出临时储存的数据。<br />输出外部服务器信息或数据时,如消耗资源很大,尽量把缓冲时间设置为大一点的相应值。<br />0 表示无缓冲。]]></value>
<value xml:lang="zh-TW"><![CDATA[單位為分。暫存時間內頁面將輸出臨時儲存的資料。<br />輸出外部主機訊息或資料時,如消耗資源很大,盡量把暫存時間設大一點。<br />『0』表示不暫存。]]></value>
<value xml:lang="fr"><![CDATA[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.]]></value>
<value xml:lang="ru"><![CDATA[Единица измерения равна одной минуте. Это отображает временно сохраненные данные для присвоенного времени.<br />Рекомендуется устанавливать разумное время кеширования, если множество ресурсов нуждаются в показе данных с других серверов.<br />Значение 0 отключает кеширование.]]></value>
<value xml:lang="es"><![CDATA[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.]]></value>
<value xml:lang="tr"><![CDATA[Birim dakikadır ve belirlenen zaman için kaydedilmiş geçici dosyayı gösterir.<br />Diğer sunucuların veri veya bilgileri gösterilirken, eğer fazla sayıda kaynağın gösterilmesi gerekiyorsa, uygun zamanın önbelleğe alınması önerilmiştir. <br />0 değeri verilirse, önbelleğe alınma işlemi gerçekleşmeyecektir.]]></value>
<value xml:lang="vi"><![CDATA[Đơ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.]]></value>
</item>
<item name="opage_mobile_path">
<value xml:lang="ko"><![CDATA[모바일용 외부 문서 위치]]></value>
<value xml:lang="en"><![CDATA[Location of External Document for Mobile View]]></value>
<value xml:lang="jp"><![CDATA[モバイルバージョンドキュメントへのパス]]></value>
<value xml:lang="zh-CN"><![CDATA[移动版外部页面路径]]></value>
<value xml:lang="tr"><![CDATA[Harici Dosyanın Hareketli Görünüm için Konumu]]></value>
</item>
<item name="about_opage_mobile_path">
<value xml:lang="ko"><![CDATA[모바일용 외부문서의 위치를 입력해주세요. 입력하지 않으면 위에서 지정한 외부문서 위치의 페이지를 이용합니다. <br />/path1/path2/sample.php 와 같이 절대경로나 ../path2/sample.php와 같은 상대경로 모두 사용가능합니다.<br />http://url/sample.php 와 같이 사용하면 해당 페이지를 웹으로 전송 받아 출력 하게 됩니다.<br />현재 XE가 설치된 절대경로는 다음과 같습니다.<br />]]></value>
<value xml:lang="en"><![CDATA[Please enter the location of external document for mobile view. If not inputted, it uses 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 />]]></value>
<value xml:lang="jp"><![CDATA[モバイルバージョンドキュメントへのパスを指定してください。 指定してないと一般ドキュメントのパスに指定されます。<br />/path1/path2/sample.php のような絶対パスや ../path2/sample.phpのような相対パス両方とも指定できます。<br />指定すると対応するドキュメントをウェブからダウンロードして表示します。<br />現在、XEの設置されている絶対パスは次のようになります。]]></value>
<value xml:lang="zh-CN"><![CDATA[请输入移动版外部文件路径。留空默认使用上面指定的的普通外部页面。<br />可以使用如同 /path1/path2/sample.php的绝对路径或如 ../path2/sample.php的相对路径。<br />如使用http://url/sample.php之类的地址可以把此页面的输出结果显示到XE内部的指定位置。<br />现安装的XE绝对路径如下:<br />]]></value>
<value xml:lang="zh-TW"><![CDATA[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 />]]></value>
<value xml:lang="fr"><![CDATA[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 />]]></value>
<value xml:lang="ru"><![CDATA[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 />]]></value>
<value xml:lang="es"><![CDATA[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 />]]></value>
<value xml:lang="tr"><![CDATA[Lütfen hareketli görünüm için harici dosyanın konumunu giriniz. Eğer konum girilmediyse, harici belgenin belirlenmişini kullanır.<br />'/path1/path2/sample.php' gibi kesin yol veya '../path2/sample.php' gibi ilgili yol kullanılabilir.<br />Eğer 'http://url/sample.php' gibi bir adres girdiyseniz , sonuç önce alınacak sonra görüntülenecektir.<br />Bu XE'nin kesin yoludur.<br />]]></value>
<value xml:lang="vi"><![CDATA[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 />]]></value>
</item>
</lang>

View file

@ -1,79 +0,0 @@
<?php
/**
* @class opageAdminController
* @author NHN (developers@xpressengine.com)
* @brief admin controller class of the opage module
**/
class opageAdminController extends opage {
/**
* @brief Initialization
**/
function init() {
}
/**
* @brief Add an external page
**/
function procOpageAdminInsert() {
// Create model/controller object of the module module
$oModuleController = &getController('module');
$oModuleModel = &getModel('module');
// Set board module
$args = Context::getRequestVars();
$args->module = 'opage';
$args->mid = $args->opage_name;
unset($args->opage_name);
// Check if an original module exists by using module_srl
if($args->module_srl) {
$columnList = array('module_srl');
$module_info = $oModuleModel->getModuleInfoByModuleSrl($args->module_srl, $columnList);
if($module_info->module_srl != $args->module_srl) unset($args->module_srl);
}
// Insert/update depending on module_srl
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';
// Delete cache files
$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;
// Messages to output when successfully registered
$this->add("module_srl", $output->get('module_srl'));
$this->add("opage", Context::get('opage'));
$this->setMessage($msg_code);
}
/**
* @brief Delete an external page
**/
function procOpageAdminDelete() {
$module_srl = Context::get('module_srl');
// Get an original
$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 Add information of an external page
**/
function procOpageAdminInsertConfig() {
// Get the basic info
$args = Context::gets('test');
}
}
?>

View file

@ -1,159 +0,0 @@
<?php
/**
* @class opageAdminView
* @author NHN (developers@xpressengine.com)
* @brief admin view clas of the opage module
**/
class opageAdminView extends opage {
var $module_srl = 0;
var $list_count = 20;
var $page_count = 10;
/**
* @brief Initialization
**/
function init() {
// Pre-check if module_srl exists. Set module_info if exists
$module_srl = Context::get('module_srl');
// Create module model object
$oModuleModel = &getModel('module');
// Get a list of module categories
$module_category = $oModuleModel->getModuleCategories();
Context::set('module_category', $module_category);
//Security
$security = new Security();
$security->encodeHTML('module_category..title');
// Get a template path (admin templates are collected on the tpl for opage)
$this->setTemplatePath($this->module_path.'tpl');
}
/**
* @brief Display a list of external pages
**/
function dispOpageAdminContent() {
$args->sort_index = "module_srl";
$args->page = Context::get('page');
$args->list_count = 40;
$args->page_count = 10;
$args->s_module_category_srl = Context::get('module_category_srl');
$output = executeQuery('opage.getOpageList', $args);
// context setting to use a template
Context::set('total_count', $output->total_count);
Context::set('total_page', $output->total_page);
Context::set('page', $output->page);
Context::set('opage_list', $output->data);
Context::set('page_navigation', $output->page_navigation);
//Security
$security = new Security();
$security->encodeHTML('opage_list..');
// Set a template file
$this->setTemplateFile('index');
}
/**
* @brief Form to add an external page
**/
function dispOpageAdminInsert() {
// Get a list of groups
$oMemberModel = &getModel('member');
$group_list = $oMemberModel->getGroups();
Context::set('group_list', $group_list);
// Get a list of permissions from the module.xml
$grant_list = $this->xml_info->grant;
Context::set('grant_list', $grant_list);
// Get module_srl
$module_srl = Context::get('module_srl');
// Get and set module information if module_srl exists
if($module_srl) {
$oModuleModel = &getModel('module');
$columnList = array('module_srl', 'mid', 'module_category_srl', 'browser_title', 'layout_srl', 'use_mobile', 'mlayout_srl');
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl, $columnList);
if($module_info->module_srl == $module_srl) Context::set('module_info',$module_info);
else {
unset($module_info);
unset($module_srl);
}
}
// Get a layout list
$oLayoutModel = &getModel('layout');
$layout_list = $oLayoutModel->getLayoutList();
Context::set('layout_list', $layout_list);
$mobile_layout_list = $oLayoutModel->getLayoutList(0,"M");
Context::set('mlayout_list', $mobile_layout_list);
//Security
$security = new Security();
$security->encodeHTML('module_info.');
$security->encodeHTML('layout_list..layout');
$security->encodeHTML('layout_list..title');
$security->encodeHTML('mlayout_list..layout');
$security->encodeHTML('mlayout_list..title');
//group_list 및 grant는 사용되는 곳을 모르겠음.
/*
$security->encodeHTML('group_list..title');
$security->encodeHTML('group_list..description');
$security->encodeHTML('grant_list..');
*/
// Set a template file
$this->setTemplateFile('opage_insert');
}
/**
* @brief Screen to delete an external page
**/
function dispOpageAdminDelete() {
$module_srl = Context::get('module_srl');
if(!$module_srl) return $this->dispContent();
$oModuleModel = &getModel('module');
$columnList = array('module_srl', 'mid', 'module');
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl, $columnList);
Context::set('module_info',$module_info);
//Security
$security = new Security();
$security->encodeHTML('module_info.module');
$security->encodeHTML('module_info.mid');
$security->encodeHTML('module_info.browser_title');
// Set a template file
$this->setTemplateFile('opage_delete');
}
/**
* @brief Display a list of permissions
**/
function dispOpageAdminGrantInfo() {
// Get module_srl
$module_srl = Context::get('module_srl');
// Get and set module information if module_srl exists
if($module_srl) {
$oModuleModel = &getModel('module');
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
if($module_info->module_srl == $module_srl) Context::set('module_info',$module_info);
else {
unset($module_info);
unset($module_srl);
}
}
$this->module_info = $module_info;
// Call a page to set permission for common module
$oModuleAdminModel = &getAdminModel('module');
$grant_content = $oModuleAdminModel->getModuleGrantHTML($this->module_info->module_srl, $this->xml_info->grant);
Context::set('grant_content', $grant_content);
//Security
$security = new Security();
$security->encodeHTML('module_info..');
$this->setTemplateFile('grant_list');
}
}
?>

View file

@ -1,43 +0,0 @@
<?php
/**
* @class opage
* @author NHN (developers@xpressengine.com)
* @brief high class of opage module
**/
class opage extends ModuleObject {
/**
* @brief Implement if additional tasks are necessary when installing
**/
function moduleInstall() {
// Create cache directory to use in the opage
FileHandler::makeDir('./files/cache/opage');
return new Object();
}
/**
* @brief a method to check if successfully installed
**/
function checkUpdate() {
// Create a directory ditectly if no cache directory exists
if(!is_dir('./files/cache/opage')) FileHandler::makeDir('./files/cache/opage');
return false;
}
/**
* @brief Update
**/
function moduleUpdate() {
return new Object(0, 'success_updated');
}
/**
* @brief Re-generate the cache file
**/
function recompileCache() {
}
}
?>

View file

@ -1,102 +0,0 @@
<?php
/**
* @class documentController
* @author NHN (developers@xpressengine.com)
* @brief controller class of the document module
**/
class opageController extends opage {
var $target_path = '';
/**
* @brief Initialization
**/
function init() { }
/**
* @brief Extract a title
**/
function getTitle($content) {
preg_match('!<title([^>]*)>(.*?)<\/title>!is', $content, $buff);
return trim($buff[2]);
}
/**
* @brief Extract header script
**/
function getHeadScript($content) {
// remove the title tag
$content = preg_replace('!<title([^>]*)>(.*?)<\/title>!is','', $content);
// Remove meta tags
$content = preg_replace('!<(\/){0,1}meta([^>]*)>!is','', $content);
// Extract information such as <link, <style, <script and so on
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 Extract the contents of the body
**/
function getBodyScript($content) {
// Extract content
preg_match('!<body([^>]*)>(.*?)<\/body>!is', $content, $body_buff);
$body_script = $body_buff[2];
// Remove link, style, script, etc.
$body_script = preg_replace('!<link([^>]*)>!is', '', $body_script);
$body_script = preg_replace('!<(style|script)(.*?)<\/(style|script)>!is', '', $body_script);
return $body_script;
}
/**
* @brief Change the value of src, href in the content
**/
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,20 +0,0 @@
<?php
require_once(_XE_PATH_.'modules/opage/opage.view.php');
class opageMobile extends opageView {
function init() {
// Get a template path (admin templates are collected on the tpl for opage)
$this->setTemplatePath($this->module_path.'tpl');
$oOpageModel = &getModel('opage');
$module_info = $oOpageModel->getOpage($this->module_srl);
Context::set('module_info', $module_info);
// Get a path/caching interval on the external page
if($module_info->mpath) $this->path = $module_info->mpath;
else $this->path = $module_info->path;
$this->caching_interval = $module_info->caching_interval;
// Specify the cache file
$this->cache_file = sprintf("./files/cache/opage/%d.m.cache.php", $module_info->module_srl);
}
}

View file

@ -1,34 +0,0 @@
<?php
/**
* @class opageModel
* @author NHN (developers@xpressengine.com)
* @brief model class of the opage module
**/
class opageModel extends opage {
/**
* @brief Initialization
**/
function init() { }
/**
* @brief Return information on the external page
* Use a separate model method because external page handles information and configurations of the defaul module either.
**/
function getOpage($module_srl) {
$oModuleModel = &getModel('module');
$columnList = array('module_srl');
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl, $columnList);
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,146 +0,0 @@
<?php
/**
* @class opageView
* @author NHN (developers@xpressengine.com)
* @brief view class of the opage module
**/
class opageView extends opage {
var $path;
var $cache_file;
var $caching_interval;
/**
* @brief Initialization
**/
function init() {
// Get a template path (admin templates are collected on the tpl for opage)
$this->setTemplatePath($this->module_path.'tpl');
// Get information of the external page module
$oOpageModel = &getModel('opage');
$module_info = $oOpageModel->getOpage($this->module_srl);
Context::set('module_info', $module_info);
// Get a path/caching interval on the external page
$this->path = $module_info->path;
$this->caching_interval = $module_info->caching_interval;
// Specify the cache file
$this->cache_file = sprintf("./files/cache/opage/%d.cache.php", $module_info->module_srl);
}
/**
* @brief Display when receiving a request
**/
function dispOpageIndex() {
// check if it is http or internal file
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);
// Set a template for result output
$this->setTemplateFile('content');
}
/**
* @brief Save the file and return if a file is requested by http
**/
function getHtmlPage($path, $caching_interval, $cache_file) {
// Verify cache
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);
}
// Create opage controller
$oOpageController = &getController('opage');
// change url of image, css, javascript and so on if the page is from external server
$content = $oOpageController->replaceSrc($content, $path);
// Change the document to utf-8 format
$buff->content = $content;
$buff = Context::convertEncoding($buff);
$content = $buff->content;
// Extract a title
$title = $oOpageController->getTitle($content);
if($title) Context::setBrowserTitle($title);
// Extract header script
$head_script = $oOpageController->getHeadScript($content);
if($head_script) Context::addHtmlHeader($head_script);
// Extract content from the body
$body_script = $oOpageController->getBodyScript($content);
if(!$body_script) $body_script = $content;
return $content;
}
/**
* @brief Create a cache file in order to include if it is an internal file
**/
function executeFile($path, $caching_interval, $cache_file) {
// Cancel if the file doesn't exist
if(!file_exists($path)) return;
// Get a path and filename
$tmp_path = explode('/',$cache_file);
$filename = $tmp_path[count($tmp_path)-1];
$filepath = preg_replace('/'.$filename."$/i","",$cache_file);
// Verify cache
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);
// Read a target file and get content
ob_start();
@include($path);
$content = ob_get_clean();
// Replace relative path to the absolute path
$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('/(<load[^>]+target=)(")([^"]+)(")/is',array($this,'_replacePath'),$content);
$content = preg_replace_callback('/(<!--%import\()(\")([^"]+)(\")/is',array($this,'_replacePath'),$content);
FileHandler::writeFile($cache_file, $content);
// Include and then Return the result
if(!file_exists($cache_file)) return;
// Attempt to compile
$oTemplate = &TemplateHandler::getInstance();
$script = $oTemplate->compileDirect($filepath, $filename);
FileHandler::writeFile($cache_file, $script);
}
$__Context = &$GLOBALS['__Context__'];
$__Context->tpl_path = $filepath;
ob_start();
@include($cache_file);
$content = ob_get_clean();
return $content;
}
function _replacePath($matches) {
$val = trim($matches[3]);
// Pass if the path is external or starts with /, #, { characters
// /=absolute path, #=hash in a page, {=Template syntax
if(preg_match('@^((?:http|https|ftp|telnet|mms)://|(?:mailto|javascript):|[/#{])@i',$val)) {
return $matches[0];
// In case of .. , get a path
} 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 = Context::pathToUrl($this->path);
$path = sprintf("%s%s%s%s",$matches[1],$matches[2],$p.$val,$matches[4]);
return $path;
}
}
?>

View file

@ -1,24 +0,0 @@
<query id="getOpageList" action="select">
<tables>
<table name="modules" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="equal" column="module" default="opage" />
<group pipe="and">
<condition operation="like" column="mid" var="s_mid" pipe="or" />
<condition operation="like" column="title" var="s_title" pipe="or" />
<condition operation="like" column="comment" var="s_comment" pipe="or" />
<condition operation="equal" column="module" var="s_module" pipe="or" />
<condition operation="equal" column="module_category_srl" var="s_module_category_srl" pipe="or" />
</group>
</conditions>
<navigation>
<index var="sort_index" default="module_srl" order="desc" />
<list_count var="list_count" default="20" />
<page_count var="page_count" default="10" />
<page var="page" default="1" />
</navigation>
</query>

View file

@ -1,8 +0,0 @@
{$opage_content}
<!--@if($grant->is_admin)-->
<!--%import("./js/opage_admin.js")-->
<div class="btnArea">
<span class="btn"><a href="{getUrl('act','dispOpageAdminInsert','module_srl',$module_info->module_srl)}">{$lang->cmd_setup}</a></span>
</div>
<!--@end-->

View file

@ -1,10 +0,0 @@
<filter name="delete_opage" module="opage" act="procOpageAdminDelete">
<form>
<node target="module_srl" required="true" />
</form>
<response callback_func="completeDeleteOpage">
<tag name="error" />
<tag name="message" />
<tag name="opage" />
</response>
</filter>

View file

@ -1,23 +0,0 @@
<filter name="insert_opage" module="opage" act="procOpageAdminInsert" confirm_msg_code="confirm_submit">
<form>
<node target="mid" required="true" maxlength="40" filter="alpha_number" />
<node target="browser_title" required="true" maxlength="250" />
<node target="opage_path" required="true" maxlength="250" />
</form>
<parameter>
<param name="opage_name" target="mid" />
<param name="module_srl" target="module_srl" />
<param name="module_category_srl" target="module_category_srl" />
<param name="layout_srl" target="layout_srl" />
<param name="browser_title" target="browser_title" />
<param name="caching_interval" target="opage_caching_interval" />
<param name="path" target="opage_path" />
<param name="mpath" target="opage_mpath" />
</parameter>
<response callback_func="completeInsertOpage">
<tag name="error" />
<tag name="message" />
<tag name="module_srl" />
<tag name="opage" />
</response>
</filter>

View file

@ -1,3 +0,0 @@
<!--#include("./header.html")-->
{$grant_content}

View file

@ -1,19 +0,0 @@
<!--%import("js/opage_admin.js")-->
<h2 class="h2">{$lang->opage} {$lang->cmd_management}</h2>
<p>{nl2br($lang->about_opage)}</p>
<!--@if($module_info)-->
<!--@if($module_info->mid)-->
<h3 class="h3">
{$module_info->mid} <!--@if($module_info->is_default=='Y')-->({$lang->is_default})<!--@end-->
|
<a href="{getSiteUrl($module_info->domain,'','mid',$module_info->mid)}" target="_blank">View</a>
</h3>
<!--@end-->
<div class="cnb">
<ul>
<li><a href="{getUrl('act','dispOpageAdminContent','module_srl','')}">{$lang->cmd_back}</a></li>
<li <!--@if($act=='dispOpageAdminInsert')-->class="active"<!--@end-->><a href="{getUrl('act','dispOpageAdminInsert')}">{$lang->cmd_setup}</a></li>
<li <!--@if($act=='dispOpageAdminGrantInfo')-->class="active"<!--@end-->><a href="{getUrl('act','dispOpageAdminGrantInfo')}">{$lang->cmd_manage_grant}</a></li>
</ul>
</div>
<!--@end-->

View file

@ -1,85 +0,0 @@
<!--%import("js/opage_admin.js")-->
<!--#include("header.html")-->
<!-- 정보 -->
<form action="./" method="get" onsubmit="return doChangeCategory(this);" id="fo_list">
<!-- 목록 -->
<div class="table">
<table width="100%" border="1" cellspacing="0">
<caption>Total {number_format($total_count)}, page {number_format($page)}/{number_format($total_page)}</caption>
<thead>
<tr>
<th scope="col">{$lang->no}</th>
<th scope="col"><input type="checkbox" onclick="XE.checkboxToggleAll(); return false;" /></th>
<th scope="col">
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="{$act}" />
<select name="module_category_srl">
<option value="">{$lang->module_category}</option>
<option value="0" <!--@if($module_category_srl==="0")-->selected="selected"<!--@end-->>{$lang->not_exists}</option>
<!--@foreach($module_category as $key => $val)-->
<option value="{$key}" <!--@if($module_category_srl==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
<option value="">---------</option>
<option value="-1">{$lang->cmd_management}</option>
</select>
<input type="submit" name="go_button" id="go_button" value="GO" />
</th>
<th scope="col">{$lang->mid}</th>
<th scope="col">{$lang->browser_title}</th>
<th scope="col">{$lang->regdate}</th>
<th scope="col">&nbsp;</th>
</tr>
</thead>
<tbody>
<!--@foreach($opage_list as $no => $val)-->
<tr class="row{$cycle_idx}">
<td>{$no}</td>
<td><input type="checkbox" name="cart" value="{$val->module_srl}" /></td>
<td>
<!--@if(!$val->module_category_srl)-->
{$lang->not_exists}
<!--@else-->
{$module_category[$val->module_category_srl]->title}
<!--@end-->
</td>
<td>{$val->mid}</td>
<td><a href="{getUrl('','mid',$val->mid)}" onclick="window.open(this.href); return false;">{$val->browser_title}</a></td>
<td>{zdate($val->regdate,"Y-m-d")}</td>
<td>
<a href="{getUrl('act','dispOpageAdminInsert','module_srl',$val->module_srl)}">{$lang->cmd_setup}</a>
<a href="./?module=module&act=dispModuleAdminCopyModule&module_srl={$val->module_srl}" onclick="popopen(this.href);return false;">{$lang->cmd_copy}</a>
<a href="{getUrl('act','dispOpageAdminDelete','module_srl', $val->module_srl)}">{$lang->cmd_delete}</a>
</td>
</tr>
<!--@end-->
</tbody>
</table>
</div>
<!-- 버튼 -->
<div class="btnArea">
<div class="etc">
<a href="{getUrl('','module','module','act','dispModuleAdminModuleSetup')}" onclick="doCartSetup(this.href); return false;">{$lang->cmd_setup}</a>
<a href="{getUrl('','module','module','act','dispModuleAdminModuleGrantSetup')}" onclick="doCartSetup(this.href); return false;">{$lang->cmd_manage_grant}</a>
</div>
<span class="btn"><a href="{getUrl('act','dispOpageAdminInsert','module_srl','')}">{$lang->cmd_make}</a></span>
</div>
</form>
<!-- 페이지 네비게이션 -->
<div class="pagination">
<a href="{getUrl('page','','module_srl','')}" class="direction">&lsaquo; {$lang->first_page}</a>
<!--@while($page_no = $page_navigation->getNextPage())-->
<!--@if($page == $page_no)-->
<strong>{$page_no}</strong>
<!--@else-->
<a href="{getUrl('page',$page_no,'module_srl','')}">{$page_no}</a>
<!--@end-->
<!--@end-->
<a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}" class="direction">{$lang->last_page} &rsaquo;</a>
</div>

View file

@ -1,62 +0,0 @@
/**
* @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');
}

View file

@ -1,25 +0,0 @@
<!--%import("filter/delete_opage.xml")-->
<!--%import("js/opage_admin.js")-->
<!--#include("header.html")-->
<form action="./" method="get" onsubmit="return procFilter(this, delete_opage)">
<input type="hidden" name="opage" value="{$opage}" />
<input type="hidden" name="module_srl" value="{$module_info->module_srl}" />
<h3 class="h3">{$lang->confirm_delete}</h3>
<div class="table">
<table width="100%" border="1" cellspacing="0">
<tr>
<th scope="row">{$lang->module_name}</th>
<td >{$module_info->mid}</td>
</tr>
<tr>
<th scope="row">{$lang->module}</th>
<td>{$module_info->module}</td>
</tr>
</table>
</div>
<div class="btnArea">
<span class="btn"><input type="submit" value="{$lang->cmd_delete}" /></span>
</div>
</form>

View file

@ -1,102 +0,0 @@
<!--%import("filter/insert_opage.xml")-->
<!--#include("header.html")-->
<form action="./" method="post" onsubmit="return procFilter(this, insert_opage)" enctype="multipart/form-data">
<input type="hidden" name="opage" value="{$opage}" />
<input type="hidden" name="module_srl" value="{$module_srl}" />
<div class="table">
<table width="100%" border="1" cellspacing="0">
<!--@if($logged_info->is_admin!='Y')-->
<input type="hidden" name="mid" value="{$module_info->mid}" />
<!--@else-->
<tr>
<th scope="row">{$lang->mid}</th>
<td colspan="3">
<input type="text" name="mid" value="{$module_info->mid}" />
<p>{$lang->about_mid}</p>
</td>
</tr>
<!--@end-->
<tr>
<th scope="row">{$lang->module_category}</th>
<td colspan="3">
<select name="module_category_srl">
<option value="0">{$lang->notuse}</option>
<!--@foreach($module_category as $key => $val)-->
<option value="{$key}" <!--@if($module_info->module_category_srl==$key)-->selected="selected"<!--@end-->>{$val->title}</option>
<!--@end-->
</select>
<p>{$lang->about_module_category}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->browser_title}</th>
<td colspan="3">
<input type="text" name="browser_title" value="{$module_info->browser_title}" id="browser_title"/>
<a href="{getUrl('','module','module','act','dispModuleAdminLangcode','target','browser_title')}" onclick="popopen(this.href);return false;" class="buttonSet buttonSetting"><span>{$lang->cmd_find_langcode}</span></a>
<p>{$lang->about_browser_title}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->layout}</th>
<td colspan="3">
<select name="layout_srl">
<option value="0">{$lang->notuse}</option>
<!--@foreach($layout_list as $key => $val)-->
<option value="{$val->layout_srl}" <!--@if($module_info->layout_srl==$val->layout_srl)-->selected="selected"<!--@end-->>{$val->title} ({$val->layout})</option>
<!--@end-->
</select>
<p>{$lang->about_layout}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->mobile_view}</th>
<td>
<input type="checkbox" name="use_mobile" value="Y" <!--@if($module_info->use_mobile == "Y")-->checked="checked"<!--@end--> />
<p>{$lang->about_mobile_view}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->mobile_layout}</th>
<td>
<select name="mlayout_srl">
<option value="0">{$lang->notuse}</option>
<!--@foreach($mlayout_list as $key => $val)-->
<option value="{$val->layout_srl}" <!--@if($module_info->mlayout_srl==$val->layout_srl)-->selected="selected"<!--@end-->>{$val->title} ({$val->layout})</option>
<!--@end-->
</select>
<p>{$lang->about_layout}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->opage_caching_interval}</th>
<td colspan="3">
<input type="text" name="opage_caching_interval" value="{(int)$module_info->caching_interval}" /> {$lang->unit_min}
<p>{$lang->about_opage_caching_interval}</p>
</td>
</tr>
<tr>
<th scope="row">{$lang->opage_path}</th>
<td colspan="3">
<input type="text" name="opage_path" value="{$module_info->path}" />
<p>{$lang->about_opage_path}<b>{realpath("./")}</b></p>
</td>
</tr>
<tr class="row">
<th scope="row">{$lang->opage_mobile_path}</th>
<td colspan="3">
<input type="text" name="opage_mpath" value="{$module_info->mpath}" />
<p>{$lang->about_opage_mobile_path}<b>{realpath("./")}</b></p>
</td>
</tr>
</table>
</div>
<div class="btnArea">
<span class="btn"><input type="submit" value="{$lang->cmd_save}" /></span>
<!--@if($module == 'admin')-->
<span class="btn"><input type="button" value="{$lang->cmd_list}" onclick="location.href='./?module=admin&act=dispOpageAdminContent';return false;" /></span>
<!--@else-->
<span class="btn"><input type="button" value="{$lang->cmd_back}" onclick="location.href=current_url.setQuery('module_srl','').setQuery('act','');return false;" /></span>
<!--@end-->
</div>
</form>