위젯 검출 정규 표현식을 수정

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@2892 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2007-11-01 10:28:42 +00:00
parent f9896fe51a
commit 90aa62a6ac
993 changed files with 9190 additions and 10457 deletions

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<module version="0.1">
<module version="0.1" category="base">
<title xml:lang="ko">모듈</title>
<title xml:lang="zh-CN">模块</title>
<title xml:lang="jp">モジュール</title>

View file

@ -22,12 +22,6 @@
$lang->skin_default_info = 'Default Skin Info';
$lang->skin_maker = 'Skin Developer';
$lang->skin_maker_homepage = "Skin Developer's Homepage";
$lang->open_rss = 'Open RSS';
$lang->open_rss_types = array(
'Y' => 'Open all',
'H' => 'Open summary',
'N' => 'Not open',
);
$lang->module_copy = "Copy module";
$lang->cmd_add_shortcut = "Add Shortcut";
@ -60,8 +54,7 @@
$lang->about_list_count = 'You can set the number of limit to show article in a page.(default is 1)';
$lang->about_page_count = 'You can set the number of page link to move pages in a bottom of page.(default is 10)';
$lang->about_admin_id = 'You can grant a manager to have all permissions to the module.\n You can enter multiple IDs using <br />,(comma) \n(but the module manager cannot access the site admin page.)';
$lang->about_grant = 'If you disable all objects having specific permissions, all members even not logined may have permission.';
$lang->about_open_rss = 'You can select RSS on the current module to be open to the public.\nNo matter the view permission of article , RSS will be open to the public by its option.';
$lang->about_grant = 'If you disable all permissions for a specific object, members who has not logged in would get permission.';
$lang->about_module = "Zeroboard XE consists of modules except basic library.\n [Module Manage] module will show all installed modules and help you to manage them.\nThrough [Add Shortcuts] feature, you can manage frequently used modules easily.";
$lang->about_extra_vars_default_value = 'If multiple default values are needed, you can link them with comma(,).';

View file

@ -22,12 +22,6 @@
$lang->skin_default_info = 'información del tema predefinido';
$lang->skin_maker = 'Desarrollador de temas';
$lang->skin_maker_homepage = "Página Web del desarrollador de temas";
$lang->open_rss = 'Abrir RSS';
$lang->open_rss_types = array(
'Y' => 'Abrir todo',
'H' => 'Abrir el sumario',
'N' => 'No abrir',
);
$lang->module_copy = "Copy Module";
$lang->cmd_add_shortcut = "añadir acceso directo";
@ -61,7 +55,6 @@
$lang->about_page_count = 'Usted puede definir el número de página enlazada para mover páginas en un botón de la página.(Predefinido es 10)';
$lang->about_admin_id = 'Usted puede definir el administrador de atribuciones superiores al módulo.\n Usted puede asignar múltiples IDs,<br />utilizando una ","(coma) \n(pero el administrador del módulo no puede acceder al sitio de la pógina del administrador.)';
$lang->about_grant = 'Si usted desea desactivar a todos los objetos teniendo atribuciones especificas, incluso el usuario no conectado pueden tener atribuciones.';
$lang->about_open_rss = 'Usted puede seleccionar RSS abierto al público en el módulo actual.\nIndependiente de la atribución de ver, dependiendo de la opción de RSS puede ser abierto al público.';
$lang->about_module = "Zeroboard XE consiste de módulos excepto la librería básica.\n Módulo del Manejo del Módulo muestra todos los módulos instalados y ayuda el manejo de ellos.\nLos módulos usados frecuentemente puede manejar fácilmente a través de función de [Añadir acceso directo].";
$lang->about_extra_vars_default_value = 'Si múltiples valores predefinidos son requeridos, usted puede enlazar con la coma(,).';

View file

@ -22,12 +22,6 @@
$lang->skin_default_info = 'スキン基本情報';
$lang->skin_maker = 'スキン作者';
$lang->skin_maker_homepage = '作者ホームページ';
$lang->open_rss = 'RSS配信';
$lang->open_rss_types = array(
'Y' => '全文配信 ',
'H' => '要約配信',
'N' => '配信しない',
);
$lang->module_copy = "Copy module";
$lang->cmd_add_shortcut = "ショットカット追加";
@ -61,7 +55,6 @@
$lang->about_page_count = 'リストの下段に移動できるページのリンク数が指定できます(デフォルト10個)。';
$lang->about_admin_id = '該当するモジュールに対して最高権限を持つ管理者を指定することができます。「,(コンマ)」で区切って多数のIDが指定できます(管理者ページへのアクセスはできません)。';
$lang->about_grant = '特定権限の対象をすべて解除するとログインしていない会員ユーザまで権限が与えられます。';
$lang->about_open_rss = '現在のモジュールに対して「RSS配信」を選択することができます。書き込みの内容が読める権限とは関係なくオプションによってRSSが配信されます。';
$lang->about_module = "ゼロボードXEは、基本ライブラリの他は、すべてモジュールで構成されています。モジュール管理用のモジュールはインストールされたすべてを表示し、管理できるようにします。頻繁に使うモジュールは、【ショットカット追加】で行うと管理しやすなります。";
$lang->about_extra_vars_default_value = '多重・単一選択などのデフォルト値が、複数必要な場合は、「, (コンマ)」でリンクを張ることができます。';

View file

@ -22,12 +22,6 @@
$lang->skin_default_info = '스킨 기본정보';
$lang->skin_maker = '스킨제작자';
$lang->skin_maker_homepage = '제작자 홈페이지';
$lang->open_rss = 'RSS 공개';
$lang->open_rss_types = array(
'Y' => '전문 공개 ',
'H' => '요약 공개',
'N' => '공개하지 않음',
);
$lang->module_copy = "모듈 복사";
$lang->cmd_add_shortcut = "바로가기 추가";
@ -61,7 +55,6 @@
$lang->about_page_count = '목록 하단 페이지 이동 하는 링크의 수를 지정하실 수 있습니다. (기본 10개)';
$lang->about_admin_id = '해당 모듈에 대해 최고 권한을 가지는 관리자를 지정할 수 있습니다.<br />,(콤마)로 다수 아이디 지정이 가능합니다. (관리자페이지 접근은 불가능)';
$lang->about_grant = '특정 권한의 대상을 모두 해제하시면 로그인하지 않은 회원까지 권한을 가질 수 있습니다';
$lang->about_open_rss = '현재 모듈에 대한 RSS 공개를 선택하실 수 있습니다. 글 보는 권한과 상관없이 옵션에 따라 RSS가 공개됩니다';
$lang->about_module = "제로보드XE는 기본 라이브러리를 제외한 나머지는 모두 모듈로 구성되어 있습니다.\n모듈관리 모듈은 설치된 모든 모듈을 보여주고 관리를 도와줍니다.\n자주 쓰는 모듈은 [바로가기 추가]를 통해서 편하게 관리하실 수 있습니다.";
$lang->about_extra_vars_default_value = '다중/단일 선택등 기본값이 여러개가 필요한 경우 , (콤마)로 연결하시면 됩니다';

View file

@ -22,12 +22,6 @@
$lang->skin_default_info = '皮肤默认信息';
$lang->skin_maker = '皮肤作者';
$lang->skin_maker_homepage = '作者主页';
$lang->open_rss = '公开RSS';
$lang->open_rss_types = array(
'Y' => '公开全文',
'H' => '公开摘要',
'N' => '不公开',
);
$lang->module_copy = "Copy Module";
$lang->cmd_add_shortcut = "添加到快捷菜单";
@ -61,7 +55,6 @@
$lang->about_page_count = '可以指定显示在目录下方的页面数。 (默认为10个)';
$lang->about_admin_id = '可以对该模块指定最高管理权限。<br />有多名管理员时,可以用,(逗号)来分隔。 (不能访问管理页面)';
$lang->about_grant = '全部解除特定权限的对象时,没有登录的会员也将具有相关权限。';
$lang->about_open_rss = '可以选择对该模块的RSS公开程度。RSS公开将不受查看内容权限的限制随公开RSS的选项公开RSS。';
$lang->about_module = "除基本library以外Zeroboard XE全部由模块组成。\n模块管理中列出所有已安装的模块,因此易于管理。\n常用模块可以通过『添加到快捷菜单』来方便管理。";
$lang->about_extra_vars_default_value = '复选/单选缺省值需要多个时,用,(逗号)来分隔。';

View file

@ -20,6 +20,7 @@
// module 모듈에서 사용할 디렉토리 생성
FileHandler::makeDir('./files/cache/module_info');
FileHandler::makeDir('./files/cache/triggers');
return new Object();
}
@ -44,6 +45,9 @@
function recompileCache() {
// 모듈 정보 캐시 파일 모두 삭제
FileHandler::removeFilesInDir("./files/cache/module_info");
// 트리거 정보가 있는 파일 모두 삭제
FileHandler::removeFilesInDir("./files/cache/triggers");
}
}
?>

View file

@ -13,6 +13,41 @@
function init() {
}
/**
* @brief action forward 추가
* action foward는 등록된 action이 요청된 모듈에 없을 경우 찾아서 포워딩을 하는 구조이다
* 모듈의 설치시에 사용된다.
**/
function insertActionForward($module, $type, $act) {
$args->module = $module;
$args->type = $type;
$args->act = $act;
$output = executeQuery('module.insertActionFoward', $args);
return $output;
}
/**
* @brief module trigger 추가
* module trigger는 trigger 대상이 등록된 대상을 호출하는 방법이다.
*
**/
function insertTrigger($trigger_name, $module, $type, $called_method, $called_position) {
$args->trigger_name = $trigger_name;
$args->module = $module;
$args->type = $type;
$args->called_method = $called_method;
$args->called_position = $called_position;
$output = executeQuery('module.insertTrigger', $args);
// 트리거 정보가 있는 파일 모두 삭제
FileHandler::removeFilesInDir("./files/cache/triggers");
return $output;
}
/**
* @brief 모듈의 기본 정보 입력
* 모듈의 정보를 입력받은 데이터를 serialize하여 등록한다.
@ -105,16 +140,42 @@
}
/**
* @brief action forward 추가
* action foward는 등록된 action이 요청된 모듈에 없을 경우 찾아서 포워딩을 하는 구조이다
* 모듈설치시에 사용된.
* @brief 모듈을 삭제
*
* 모듈 삭제시는 관련 정보들을 모두 삭제 시도한.
**/
function insertActionForward($module, $type, $act) {
$args->module = $module;
$args->type = $type;
$args->act = $act;
function deleteModule($module_srl) {
// trigger 호출 (before)
$trigger_obj->module_srl = $module_srl;
$output = ModuleHandler::triggerCall('module.deleteModule', 'before', $trigger_obj);
if(!$output->toBool()) return $output;
// begin transaction
$oDB = &DB::getInstance();
$oDB->begin();
$args->module_srl = $module_srl;
// module 정보를 DB에서 삭제
$output = executeQuery('module.deleteModule', $args);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// trigger 호출 (after)
if($output->toBool()) {
$trigger_output = ModuleHandler::triggerCall('module.deleteModule', 'after', $trigger_obj);
if(!$trigger_output->toBool()) {
$oDB->rollback();
return $trigger_output;
}
}
// commit
$oDB->commit();
$output = executeQuery('module.insertActionFoward', $args);
return $output;
}
@ -143,83 +204,6 @@
return $output;
}
/**
* @brief 모듈을 삭제
*
* 모듈 삭제시는 관련 정보들을 모두 삭제 시도한다.
**/
function deleteModule($module_srl) {
// begin transaction
$oDB = &DB::getInstance();
$oDB->begin();
$args->module_srl = $module_srl;
// addon 삭제
// widget 삭제
// document 삭제
$oDocumentController = &getAdminController('document');
$output = $oDocumentController->deleteModuleDocument($module_srl);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// category 삭제
$output = $oDocumentController->deleteModuleCategory($module_srl);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// trackbacks 삭제
$oTrackbackController = &getAdminController('trackback');
$output = $oTrackbackController->deleteModuleTrackbacks($module_srl);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// comments 삭제
$oCommentController = &getAdminController('comment');
$output = $oCommentController->deleteModuleComments($module_srl);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// tags 삭제
$oTagController = &getAdminController('tag');
$output = $oTagController->deleteModuleTags($module_srl);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// 첨부 파일 삭제
$oFileController = &getAdminController('file');
$output = $oFileController->deleteModuleFiles($module_srl);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// module 정보를 DB에서 삭제
$output = executeQuery('module.deleteModule', $args);
if(!$output->toBool()) {
$oDB->rollback();
return $output;
}
// commit
$oDB->commit();
return $output;
}
/**
* @brief 모든 모듈의 is_default값을 N 으로 세팅 (기본 모듈 해제)
**/

View file

@ -110,6 +110,29 @@
return $output->data;
}
/**
* @brief trigger_name에 등록된 모든 목록을 추출
**/
function getTriggers($trigger_name, $called_position) {
$args->trigger_name = $trigger_name;
$args->called_position = $called_position;
$output = executeQueryArray('module.getTriggers',$args);
return $output->data;
}
/**
* @brief 특정 trigger_name의 특정 대상을 추출
**/
function getTrigger($trigger_name, $module, $type, $called_method, $called_position) {
$args->trigger_name = $trigger_name;
$args->module = $module;
$args->type = $type;
$args->called_method = $called_method;
$args->called_position = $called_position;
$output = executeQuery('module.getTrigger',$args);
return $output->data;
}
/**
* @brief DB에 생성된 mid목록을 구해옴
**/
@ -221,10 +244,13 @@
if(!is_array($extra_vars)) $extra_vars = array($extra_vars);
foreach($extra_vars as $var) {
unset($obj);
$name = $var->attrs->name;
$type = $var->attrs->type;
$title = $var->title->body;
$description = $var->description->body;
if($var->default) {
unset($default);
if(is_array($var->default)) {
@ -438,6 +464,8 @@
// 작성자 정보
$module_info->title = $xml_obj->title->body;
$module_info->version = $xml_obj->attrs->version;
$module_info->category = $xml_obj->attrs->category;
if(!$module_info->category) $module_info->category = 'service';
$module_info->author->name = $xml_obj->author->name->body;
$module_info->author->email_address = $xml_obj->author->attrs->email_address;
$module_info->author->homepage = $xml_obj->author->attrs->link;
@ -556,6 +584,7 @@
unset($obj);
$info->module = $module_name;
$info->category = $info->category;
$info->created_table_count = $created_table_count;
$info->table_count = $table_count;
$info->path = $path;

View file

@ -8,7 +8,7 @@
<conditions>
<condition operation="equal" column="module_category_srl" var="module_category_srl" />
<condition operation="equal" column="module" var="module" pipe="and" />
<condition operation="in" column="open_rss" var="open_rss" pipe="and" />
<condition operation="in" column="module_srl" var="module_srls" pipe="and" />
</conditions>
<navigation>
<index var="sort_index" default="mid" order="asc" />

View file

@ -0,0 +1,15 @@
<query id="getTrigger" action="select">
<tables>
<table name="module_trigger" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="equal" column="trigger_name" var="trigger_name" />
<condition operation="equal" column="module" var="module" pipe="and" />
<condition operation="equal" column="type" var="type" pipe="and" />
<condition operation="equal" column="called_method" var="called_method" pipe="and" />
<condition operation="equal" column="called_position" var="called_position" pipe="and" />
</conditions>
</query>

View file

@ -0,0 +1,12 @@
<query id="getTriggers" action="select">
<tables>
<table name="module_trigger" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="equal" column="trigger_name" var="trigger_name" />
<condition operation="equal" column="called_position" var="called_position" pipe="and" />
</conditions>
</query>

View file

@ -0,0 +1,12 @@
<query id="insertTrigger" action="insert">
<tables>
<table name="module_trigger" />
</tables>
<columns>
<column name="trigger_name" var="trigger_name" notnull="notnull" />
<column name="module" var="module" notnull="notnull" />
<column name="type" var="type" notnull="notnull" />
<column name="called_method" var="called_method" notnull="notnull" />
<column name="called_position" var="called_position" notnull="notnull" />
</columns>
</query>

View file

@ -0,0 +1,7 @@
<table name="module_trigger">
<column name="trigger_name" type="varchar" size="80" notnull="notnull" unique="idx_trigger" />
<column name="called_position" type="varchar" size="15" notnull="notnull" unique="idx_trigger" />
<column name="module" type="varchar" size="80" notnull="notnull" unique="idx_trigger" />
<column name="type" type="varchar" size="15" notnull="notnull" unique="idx_trigger" />
<column name="called_method" type="varchar" size="80" notnull="notnull" unique="idx_trigger" />
</table>

View file

@ -9,7 +9,11 @@
<input type="hidden" name="mode" value="" />
</form>
<table cellspacing="0" class="tableType1 gap1">
<table cellspacing="0" class="adminTable">
<col />
<col width="120"/>
<col width="80"/>
<col width="80"/>
<thead>
<tr>
<th scope="col">{$lang->category_title}</th>
@ -41,7 +45,7 @@
<input type="hidden" name="module_srl" value="{$module_srl}" />
<input type="hidden" name="module_category_srl" value="" />
<table cellspacing="0" class="tableType3 gap1">
<table cellspacing="0" class="adminTable">
<col width="150" />
<col />
<tr>

View file

@ -8,13 +8,13 @@
<input type="hidden" name="module_category_srl" value="{$selected_category->module_category_srl}" />
<input type="hidden" name="mode" value="update" />
<table cellspacing="0" class="tableType3 gap1">
<table cellspacing="0" class="adminTable">
<col width="150" />
<col />
<tr>
<th scope="row">{$lang->category_title}</th>
<td>
<input type="text" name="title" value="{$selected_category->title}" class="inputTypeText w100" />
<input type="text" name="title" value="{$selected_category->title}" class="inputTypeText w400" />
</td>
</tr>
</table>

View file

@ -10,7 +10,7 @@
<div id="popBody">
<table cellspacing="0" class="tableType5">
<table cellspacing="0" class="adminTable">
<col width="140" />
<col />
<tr>
@ -28,54 +28,54 @@
</table>
<table cellspacing="0" class="tableType3 gap1">
<col width="50%" />
<col width="50%" />
<tr>
<th scope="col">{$lang->mid}</th>
<th scope="col">{$lang->browser_title}</th>
</tr>
<tr>
<td><input type="text" name="mid_1" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_1" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_2" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_2" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_3" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_3" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_4" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_4" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_5" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_5" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_6" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_6" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_7" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_7" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_8" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_8" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_9" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_9" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_10" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_10" class="inputTypeText w200" /></td>
</tr>
</table>
<table cellspacing="0" class="adminTable">
<col width="50%" />
<col width="50%" />
<tr>
<th scope="col">{$lang->mid}</th>
<th scope="col">{$lang->browser_title}</th>
</tr>
<tr>
<td><input type="text" name="mid_1" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_1" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_2" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_2" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_3" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_3" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_4" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_4" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_5" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_5" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_6" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_6" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_7" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_7" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_8" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_8" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_9" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_9" class="inputTypeText w200" /></td>
</tr>
<tr>
<td><input type="text" name="mid_10" class="inputTypeText w200" /></td>
<td><input type="text" name="browser_title_10" class="inputTypeText w200" /></td>
</tr>
</table>
</div>

View file

@ -4,6 +4,8 @@
<!--@if($act == 'dispModuleAdminContent')-->
<div class="infoText">{nl2br($lang->about_module)}</div>
<!--@else-->
<div class="gap1"></div>
<!--@end-->
<div class="header4">

View file

@ -4,7 +4,7 @@
<div id="popBody">
<table cellspacing="0" class="tableType5">
<table cellspacing="0" class="adminTable">
<col width="100" />
<col />
<tr>
@ -25,7 +25,7 @@
</tr>
<tr>
<th scope="row">{$lang->description}</th>
<td>{nl2br($module_info->author->description)}</td>
<td>{nl2br(trim($module_info->author->description))}</td>
</tr>
</table>

View file

@ -6,7 +6,15 @@
<input type="hidden" name="selected_module" value="" />
</form>
<table cellspacing="0" class="tableType1">
<table cellspacing="0" class="adminTable">
<col width="" />
<col width="40" />
<col width="80" />
<col width="70" />
<col width="70" />
<col width="120" />
<col width="70" />
<col width="110" />
<thead>
<tr>
<th scope="col">{$lang->module_name}</th>
@ -17,7 +25,6 @@
<th scope="col">{$lang->installed_path}</th>
<th scope="col">{$lang->module_info}</th>
<th scope="col">{$lang->module_action}</th>
<th scope="col">{$lang->add_shortcut}</th>
</tr>
</thead>
<tbody>
@ -48,13 +55,6 @@
&nbsp;
<!--@end-->
</td>
<td>
<!--@if(!$shortcut_list[$val->module] && $val->admin_index_act )-->
<a href="#" onclick="doAddShortCut('{$val->module}');return false;" class="button"><span>{$lang->cmd_add_shortcut}</span></a>
<!--@else-->
&nbsp;
<!--@end-->
</td>
</tr>
<!--@end-->
</tbody>

View file

@ -4,7 +4,7 @@
</div>
<div id="popBody">
<table cellspacing="0" class="tableType5">
<table cellspacing="0" class="adminTable">
<col width="100" />
<col />
<tr>
@ -21,11 +21,11 @@
</tr>
<tr>
<th scope="row"><label for="textfield2">{$lang->regdate}</label></th>
<td>{$skin_info->maker->date}<td>
<td>{$skin_info->maker->date}</td>
</tr>
<tr>
<th scope="row" class="borderBottomNone">{$lang->description}</th>
<td class="borderBottomNone">{nl2br($skin_info->maker->description)}</td>
<td class="borderBottomNone">{nl2br(trim($skin_info->maker->description))}</td>
</tr>
</table>
</div>