mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-17 02:10:02 +09:00
merge from branch luminous (version 1.5.4.2, ~r12561)
git-svn-id: http://xe-core.googlecode.com/svn/trunk@12611 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
2263200ce4
commit
cc47d2b247
196 changed files with 3655 additions and 2033 deletions
|
|
@ -216,6 +216,54 @@
|
|||
return $this->setRedirectUrl(Context::get('error_return_url'), $output);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleanning favorite
|
||||
* @return Object
|
||||
*/
|
||||
function cleanFavorite()
|
||||
{
|
||||
$oModel = getAdminModel('admin');
|
||||
$output = $oModel->getFavoriteList();
|
||||
if(!$output->toBool())
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
|
||||
$favoriteList = $output->get('favoriteList');
|
||||
if(!$favoriteList)
|
||||
{
|
||||
return new Object();
|
||||
}
|
||||
|
||||
$deleteTargets = array();
|
||||
foreach($favoriteList as $favorite)
|
||||
{
|
||||
if($favorite->type == 'module')
|
||||
{
|
||||
$modulePath = './modules/' . $favorite->module;
|
||||
$modulePath = FileHandler::getRealPath($modulePath);
|
||||
if(!is_dir($modulePath))
|
||||
{
|
||||
$deleteTargets[] = $favorite->admin_favorite_srl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!count($deleteTargets))
|
||||
{
|
||||
return new Object();
|
||||
}
|
||||
|
||||
$args->admin_favorite_srls = $deleteTargets;
|
||||
$output = executeQuery('admin.deleteFavorites', $args);
|
||||
if(!$output->toBool())
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* Enviroment gathering agreement
|
||||
* @return void
|
||||
|
|
|
|||
|
|
@ -462,41 +462,54 @@
|
|||
*/
|
||||
function getSiteAllList()
|
||||
{
|
||||
if(Context::get('domain')) $args->domain = Context::get('domain');
|
||||
$columnList = array('domain', 'site_srl');
|
||||
|
||||
$siteList = array();
|
||||
$output = executeQueryArray('admin.getSiteAllList', $args, $columnList);
|
||||
if($output->toBool()) $siteList = $output->data;
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
foreach($siteList as $key => $value)
|
||||
{
|
||||
$args->site_srl = $value->site_srl;
|
||||
$list = $oModuleModel->getModuleSrlList($args);
|
||||
|
||||
if(!is_array($list))
|
||||
{
|
||||
$list = array($list);
|
||||
}
|
||||
|
||||
foreach($list as $k => $v)
|
||||
{
|
||||
if(!is_dir('./modules/' . $v->module))
|
||||
{
|
||||
unset($list[$k]);
|
||||
}
|
||||
}
|
||||
|
||||
if(!count($list))
|
||||
{
|
||||
unset($siteList[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
$this->add('site_list', $siteList);
|
||||
if(Context::get('domain')) $domain = Context::get('domain');
|
||||
$siteList = $this->getAllSitesThatHaveModules($domain);
|
||||
$this->add('site_list', $siteList);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of all sites that contain modules
|
||||
* For each site domain and site_srl are retrieved
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function getAllSitesThatHaveModules($domain = null)
|
||||
{
|
||||
$args = new stdClass();
|
||||
if($domain) $args->domain = $domain;
|
||||
$columnList = array('domain', 'site_srl');
|
||||
|
||||
$siteList = array();
|
||||
$output = executeQueryArray('admin.getSiteAllList', $args, $columnList);
|
||||
if($output->toBool()) $siteList = $output->data;
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
foreach($siteList as $key => $value)
|
||||
{
|
||||
$args->site_srl = $value->site_srl;
|
||||
$list = $oModuleModel->getModuleSrlList($args);
|
||||
|
||||
if(!is_array($list))
|
||||
{
|
||||
$list = array($list);
|
||||
}
|
||||
|
||||
foreach($list as $k => $v)
|
||||
{
|
||||
if(!is_dir('./modules/' . $v->module))
|
||||
{
|
||||
unset($list[$k]);
|
||||
}
|
||||
}
|
||||
|
||||
if(!count($list))
|
||||
{
|
||||
unset($siteList[$key]);
|
||||
}
|
||||
}
|
||||
return $siteList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return site count
|
||||
* @param string $date
|
||||
|
|
|
|||
|
|
@ -468,7 +468,7 @@
|
|||
unset($layout_info);
|
||||
$layout_info = $oLayoutModel->getLayout($val->layout_srl);
|
||||
if (!$layout_info) continue;
|
||||
$layout_parse = explode('.', $layout_info->layout);
|
||||
$layout_parse = explode('|@|', $layout_info->layout);
|
||||
if (count($layout_parse) == 2){
|
||||
$thumb_path = sprintf('./themes/%s/layouts/%s/thumbnail.png', $layout_parse[0], $layout_parse[1]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -712,16 +712,16 @@
|
|||
</item>
|
||||
</item>
|
||||
<item name="about_use_ssl">
|
||||
<value xml:lang="ko"><![CDATA['선택적으로'는 회원가입, 정보수정 등의 지정된 동작(action)에서 보안접속(SSL)을 사용합니다.<br /> '항상 사용'은 모든 서비스에 SSL을 사용 합니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Select 'Optional' to use SSL for the specified actions such as signing up and changing information.<br /> 'Always' to use SSL for all services.]]></value>
|
||||
<value xml:lang="jp"><![CDATA[「部分的に使う」は、「会員登録/会員情報変更」など指定のアクションでSSLを利用する場合。「常に使う」は、すべてのサービスにSSLを使う場合に選択します。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[选择性使用选项应用于新用户注册/修改用户信息等已指定的action当中,使用选项应用于所有服务。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[選擇手動時,在會員註冊或修改資料等動作時才會使用 SSL功能。<br/>選擇開啟時,所有的服務都會使用 SSL功能。]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Si l'on choisit 'Optionnel' , on utilise protocole SSL seulement dans quelques services comme inscription ou modification. Si l'on choisit 'Toujours', on utilise protocole SSL dans tous les services.]]></value>
|
||||
<value xml:lang="ru"><![CDATA[In case of "Optional", SSL will be used for actions such as signing up / changing information. And for "Always", your site will be served only via https]]></value>
|
||||
<value xml:lang="es"><![CDATA[Opcionalmente, la composición de suscripción / editar la información y el uso de SSL especificada en la acción es siempre el uso de SSL para todos los servicios que se utilizarán]]></value>
|
||||
<value xml:lang="tr"><![CDATA['İsteği Bağlı' seçiminde; SSL, kayıt olma/bilgi değiştirme gibi eylemler için kullanılacaktır. 'Her zaman' seçiminde, siteniz sadece http yoluyla hizmet verecektir.]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Nếu bạn chọn 'Tùy chỉnh', SSL sẽ sử dụng và những công việc như đăng kí, sửa thông tin thành viên, .<br />Chỉ chọn 'Luôn luôn' khi Website của bạn đang chạy trên Server có hỗ trợ https.]]></value>
|
||||
<value xml:lang="ko"><![CDATA['선택적으로'는 회원가입, 정보수정 등의 지정된 동작(action)에서 보안접속(SSL)을 사용합니다.<br /> '항상 사용'은 모든 서비스에 SSL을 사용 합니다.<br /><span style="color:red">SSL 환경이 갖춰지지 않은 상태에서 SSL을 사용할 경우 접속이 되지 않을 수 있으니 주의하시기 바랍니다.</span>]]></value>
|
||||
<value xml:lang="en"><![CDATA[Select 'Optional' to use SSL for the specified actions such as signing up and changing information.<br /> 'Always' to use SSL for all services.<br /><span style="color:red">SSL 환경이 갖춰지지 않은 상태에서 SSL을 사용할 경우 접속이 되지 않을 수 있으니 주의하시기 바랍니다.</span>]]></value>
|
||||
<value xml:lang="jp"><![CDATA[「部分的に使う」は、「会員登録/会員情報変更」など指定のアクションでSSLを利用する場合。「常に使う」は、すべてのサービスにSSLを使う場合に選択します。<br /><span style="color:red">SSL 환경이 갖춰지지 않은 상태에서 SSL을 사용할 경우 접속이 되지 않을 수 있으니 주의하시기 바랍니다.</span>]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[选择性使用选项应用于新用户注册/修改用户信息等已指定的action当中,使用选项应用于所有服务。<br /><span style="color:red">SSL 환경이 갖춰지지 않은 상태에서 SSL을 사용할 경우 접속이 되지 않을 수 있으니 주의하시기 바랍니다.</span>]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[選擇手動時,在會員註冊或修改資料等動作時才會使用 SSL功能。<br/>選擇開啟時,所有的服務都會使用 SSL功能。<br /><span style="color:red">SSL 환경이 갖춰지지 않은 상태에서 SSL을 사용할 경우 접속이 되지 않을 수 있으니 주의하시기 바랍니다.</span>]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Si l'on choisit 'Optionnel' , on utilise protocole SSL seulement dans quelques services comme inscription ou modification. Si l'on choisit 'Toujours', on utilise protocole SSL dans tous les services.<br /><span style="color:red">SSL 환경이 갖춰지지 않은 상태에서 SSL을 사용할 경우 접속이 되지 않을 수 있으니 주의하시기 바랍니다.</span>]]></value>
|
||||
<value xml:lang="ru"><![CDATA[In case of "Optional", SSL will be used for actions such as signing up / changing information. And for "Always", your site will be served only via https<br /><span style="color:red">SSL 환경이 갖춰지지 않은 상태에서 SSL을 사용할 경우 접속이 되지 않을 수 있으니 주의하시기 바랍니다.</span>]]></value>
|
||||
<value xml:lang="es"><![CDATA[Opcionalmente, la composición de suscripción / editar la información y el uso de SSL especificada en la acción es siempre el uso de SSL para todos los servicios que se utilizarán<br /><span style="color:red">SSL 환경이 갖춰지지 않은 상태에서 SSL을 사용할 경우 접속이 되지 않을 수 있으니 주의하시기 바랍니다.</span>]]></value>
|
||||
<value xml:lang="tr"><![CDATA['İsteği Bağlı' seçiminde; SSL, kayıt olma/bilgi değiştirme gibi eylemler için kullanılacaktır. 'Her zaman' seçiminde, siteniz sadece http yoluyla hizmet verecektir.<br /><span style="color:red">SSL 환경이 갖춰지지 않은 상태에서 SSL을 사용할 경우 접속이 되지 않을 수 있으니 주의하시기 바랍니다.</span>]]></value>
|
||||
<value xml:lang="vi"><![CDATA[Nếu bạn chọn 'Tùy chỉnh', SSL sẽ sử dụng và những công việc như đăng kí, sửa thông tin thành viên, .<br />Chỉ chọn 'Luôn luôn' khi Website của bạn đang chạy trên Server có hỗ trợ https.<br /><span style="color:red">SSL 환경이 갖춰지지 않은 상태에서 SSL을 사용할 경우 접속이 되지 않을 수 있으니 주의하시기 바랍니다.</span>]]></value>
|
||||
</item>
|
||||
<item name="server_ports">
|
||||
<value xml:lang="ko"><![CDATA[서버 포트 지정]]></value>
|
||||
|
|
@ -1484,4 +1484,4 @@
|
|||
<value xml:lang="zh-CN"><![CDATA[管理设置]]></value>
|
||||
<value xml:lang="tr"><![CDATA[Yönetici Ayarları]]></value>
|
||||
</item>
|
||||
</lang>
|
||||
</lang>
|
||||
|
|
|
|||
8
modules/admin/queries/deleteFavorites.xml
Normal file
8
modules/admin/queries/deleteFavorites.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="deleteFavorite" action="delete">
|
||||
<tables>
|
||||
<table name="admin_favorite" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="in" column="admin_favorite_srl" var="admin_favorite_srls" filter="number" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -58,7 +58,7 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di
|
|||
.x .table caption .side{float:right;font-weight:normal;margin-left:1em}
|
||||
.x .table th,
|
||||
.x .table td{border:0;padding:8px;vertical-align:top;text-align:left;border-bottom:1px solid #ddd}
|
||||
.x .table th{background:#f8f8f8;white-space:nowrap}
|
||||
.x .table th{background:#f8f8f8}
|
||||
.x .table thead th{border-bottom:1px solid #999}
|
||||
.x .table tfoot td{font-weight:bold;background:#f8f8f8}
|
||||
.x .table.even tbody tr:nth-of-type(even){background-color:#fafafa}
|
||||
|
|
@ -68,10 +68,6 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di
|
|||
.x .table em{font-style:normal;font-weight:normal;color:#e00}
|
||||
.x .table th.nowr,
|
||||
.x .table td.nowr{white-space:nowrap}
|
||||
.x .table th.title,
|
||||
.x .table td.title,
|
||||
.x .table th.text,
|
||||
.x .table td.text{width:100%}
|
||||
/* Form */
|
||||
.x .form{margin:0 0 1em 0;padding:0}
|
||||
.x .form fieldset{margin:0 0 2em 0;padding:0;border:0}
|
||||
|
|
@ -149,7 +145,7 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di
|
|||
.x .gnb .mnv{display:block}
|
||||
}
|
||||
/* Local Navigation */
|
||||
.x .lnb{position:relative;float:left;width:210px;margin:0 0 1em -230px;line-height:normal;zoom:1;display:inline}
|
||||
.x .lnb{position:relative;float:left;width:210px;left:-230px;margin:0 0 20px 0;line-height:normal;zoom:1;display:inline}
|
||||
.x .lnb .h2{position:relative;z-index:2;margin:0 0 -1px 0;padding:0 10px;border:1px solid #444;border-bottom:0;border-radius:4px 4px 0 0;background:#555;font-size:13px;color:#fff;line-height:36px}
|
||||
.x .lnb ul{margin:0 !important;padding:0;list-style:none;position:relative;z-index:1}
|
||||
.x .lnb li{position:relative;margin:0 0 -1px 0;vertical-align:top;zoom:1}
|
||||
|
|
@ -170,11 +166,11 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di
|
|||
.x .lnb li:last-child a,
|
||||
.x .lnb li.active:last-child{border-radius:0 0 4px 4px !important}
|
||||
/* Shortcut */
|
||||
.x .sct{float:right;width:138px;position:relative;right:-160px;margin:0 0 0 -140px;padding:8px 0}
|
||||
.x .sct h2{margin:0 0 5px 15px;font-size:13px}
|
||||
.x .sct{float:left;width:210px;position:relative;left:-230px;margin:0;padding:8px 0;border:0;box-shadow:inset 0 0 1px rgba(0,0,0,0.5)}
|
||||
.x .sct h2{margin:0 0 5px 10px;font-size:13px}
|
||||
.x .sct ul{margin:0;font-size:12px}
|
||||
.x .sct li{position:relative}
|
||||
.x .sct a{text-decoration:none}
|
||||
.x .sct a{text-decoration:none;padding:3px 18px 3px 10px}
|
||||
.x .sct form{position:absolute;margin:0;padding:0;top:2px;right:-10px}
|
||||
.x .sct .text{text-decoration:none;font-weight:bold;color:#999 !important;width:16px;height:16px;margin:0}
|
||||
.x .sct .text:hover,
|
||||
|
|
@ -305,10 +301,10 @@ body.modalContainer{_height:100%;_width:100%} /* IE6 only */
|
|||
.x .footer .cache{float:right}
|
||||
.x .footer .vr{color:#ccc}
|
||||
/* Body */
|
||||
.x .body{position:relative;z-index:1;padding:30px 170px 30px 240px;zoom:1}
|
||||
.x .body{position:relative;z-index:1;padding:30px 10px 30px 240px;zoom:1}
|
||||
.x .body:after{content:"";display:block;clear:both}
|
||||
/* Content */
|
||||
.x .content{float:right;width:100%;margin-left:-100%;zoom:1;outline:0}
|
||||
.x .content{float:right;width:100%;margin-left:-210px;zoom:1;outline:0;min-height:500px}
|
||||
.x .content:after{content:"";display:block;clear:both}
|
||||
.x .content a{color:#33a}
|
||||
.x .content a:hover,
|
||||
|
|
@ -320,15 +316,12 @@ body.modalContainer{_height:100%;_width:100%} /* IE6 only */
|
|||
.x .content .portlet a:focus{text-decoration:underline}
|
||||
/* Dashboard */
|
||||
.x .dashboard .section{margin-top:0}
|
||||
.x .dashboard .portlet{float:left;width:48%;margin-right:1em;margin-top:0}
|
||||
.x .dashboard .portlet{float:left;width:48%;margin-right:1em;margin-top:0;min-height:188px}
|
||||
.x .dashboard .portlet:nth-of-type(odd){float:left;width:49%;margin-right:0}
|
||||
.x .dashboard .portlet:nth-of-type(even){float:right;width:49%;margin-right:0}
|
||||
@media all and (min-width:1300px){
|
||||
.x .dashboard .portlet{float:left !important;width:32% !important;margin-right:1em !important}
|
||||
}
|
||||
/* Single Column*/
|
||||
.x .single{padding-left:10px}
|
||||
.x .single .content{position:relative;float:left;width:100%;margin:0}
|
||||
/* Search */
|
||||
.x .search{zoom:1}
|
||||
.x .search:after{content:"";display:block;clear:both}
|
||||
|
|
@ -587,7 +580,7 @@ body.modalContainer{_height:100%;_width:100%} /* IE6 only */
|
|||
.x .header .account ul{padding-right:10px}
|
||||
.x .body{padding:1em 0 0 0}
|
||||
.x .content{float:none;margin-left:0}
|
||||
.x .lnb{float:none;width:auto;margin:1em 0}
|
||||
.x .lnb{float:none;width:auto;margin:1em 0;left:auto}
|
||||
.x .dashboard .portlet{float:none !important;width:auto !important;margin-right:0}
|
||||
.modal .fg,
|
||||
.wfsr .fg{width:auto}
|
||||
|
|
|
|||
12
modules/admin/tpl/css/admin.min.css
vendored
12
modules/admin/tpl/css/admin.min.css
vendored
File diff suppressed because one or more lines are too long
|
|
@ -23,19 +23,6 @@ jQuery(function($){
|
|||
.parent()
|
||||
.css('position', 'relative');
|
||||
|
||||
// Make selected checkbox elements bold
|
||||
var $rc_label = $('input:radio+label,input:checkbox+label'), $input_rc = $rc_label.prev('input');
|
||||
$input_rc
|
||||
.change(function(){
|
||||
var name = $(this).attr('name');
|
||||
$input_rc
|
||||
.filter(function(){ return this.name == name })
|
||||
.next('label').css('font-weight', 'normal').end()
|
||||
.filter(':checked')
|
||||
.next('label').css('font-weight', 'bold').end();
|
||||
})
|
||||
.change();
|
||||
|
||||
// Toogle checkbox all
|
||||
$('.form th>input:checkbox')
|
||||
.change(function() {
|
||||
|
|
@ -1388,22 +1375,19 @@ function completeInstallModule(ret_obj) {
|
|||
|
||||
jQuery(function($){
|
||||
$('body').ajaxComplete(function(){ hideWaitingFogLayer() });
|
||||
// admin single column layout
|
||||
if($('.x>.body .lnb').length == 0){ // When it have no lnb
|
||||
$('.x>.body').addClass('single'); // Add class single
|
||||
}
|
||||
// Details toggle in admin table
|
||||
var viewBtn = $('.x .dsTg span.side>button.text');
|
||||
var tdTitle = $('.x .dsTg td.title');
|
||||
tdTitle.each(function(){
|
||||
var $t = $(this)
|
||||
if($t.find('p.update').length==0){
|
||||
$t.addClass('tg').find('>p:not(:first-child)').hide();
|
||||
$t.addClass('tg').find('>*:not(:first-child)').hide();
|
||||
} else {
|
||||
$t.addClass('up');
|
||||
}
|
||||
});
|
||||
var details = $('.x .dsTg td.tg>p:not(:first-child)');
|
||||
$('.x .dsTg .thumb').hide();
|
||||
var details = $('.x .dsTg td.tg>*:not(:first-child), .x .dsTg .thumb');
|
||||
viewBtn.click(function(){
|
||||
viewBtn.toggleClass('details');
|
||||
details.slideToggle(200);
|
||||
|
|
|
|||
47
modules/admin/tpl/js/admin.min.js
vendored
47
modules/admin/tpl/js/admin.min.js
vendored
File diff suppressed because one or more lines are too long
4
modules/admin/tpl/js/sitemap.min.js
vendored
4
modules/admin/tpl/js/sitemap.min.js
vendored
|
|
@ -1,5 +1,5 @@
|
|||
jQuery(function(c){function o(a,c){for(var b=0,g=0;a&&a!=c;)b+=a.offsetTop,g+=a.offsetLeft,a=a.offsetParent;return{top:b,left:g}}var l=!1,k=c('<li class="placeholder">');c("form.siteMap").delegate("li:not(.placeholder)",{"mousedown.st":function(a){var d,b,g,h,n,p,i,m,j;if(!(c(a.target).is("a,input,label,textarea")||1!=a.which)){l=!0;b=c(this);p=b.height();n=b.width();g=b.parentsUntil(".siteMap").filter("ul");h=g.eq(-1);h.css("position","relative");d=a.pageY;i=o(this,h.get(0));$clone=b.clone(!0).attr("target",
|
||||
!0);for(a=g.length-1;a;a--)$clone=$clone.wrap("<li><ul /></li>").parent().parent();m=[];h.find("li").each(function(){if(b[0]===this||b.has(this).length)return!0;var a=o(this,h.get(0));m.push({top:a.top,bottom:a.top+32,item:this})});$clone.find(".side,input").remove().end().addClass("draggable").css({position:"absolute",opacity:0.6,width:n,height:p,left:i.left,top:i.top,zIndex:100}).appendTo(h.eq(0));k.css({position:"absolute",opacity:0.6,width:n,height:"5px",left:i.left,top:i.top,zIndex:99}).appendTo(h.eq(0));
|
||||
jQuery(function(c){function p(a,c){for(var b=0,g=0;a&&a!=c;)b+=a.offsetTop,g+=a.offsetLeft,a=a.offsetParent;return{top:b,left:g}}var l=!1,k=c('<li class="placeholder">');c("form.siteMap").delegate("li:not(.placeholder)",{"mousedown.st":function(a){var d,b,g,h,n,q,i,m,j;if(!(c(a.target).is("a,input,label,textarea")||1!=a.which)){l=!0;b=c(this);q=b.height();n=b.width();g=b.parentsUntil(".siteMap").filter("ul");h=g.eq(-1);h.css("position","relative");d=a.pageY;i=p(this,h.get(0));$clone=b.clone(!0).attr("target",
|
||||
!0);for(a=g.length-1;a;a--)$clone=$clone.wrap("<li><ul /></li>").parent().parent();m=[];h.find("li").each(function(){if(b[0]===this||b.has(this).length)return!0;var a=p(this,h.get(0));m.push({top:a.top,bottom:a.top+32,item:this})});$clone.find(".side,input").remove().end().addClass("draggable").css({position:"absolute",opacity:0.6,width:n,height:q,left:i.left,top:i.top,zIndex:100}).appendTo(h.eq(0));k.css({position:"absolute",opacity:0.6,width:n,height:"5px",left:i.left,top:i.top,zIndex:99}).appendTo(h.eq(0));
|
||||
b.css("opacity",0.6);c(document).unbind("mousemove.st mouseup.st").bind("mousemove.st",function(a){var b,c,e,f;j=null;a=i.top-(d-a.pageY);b=0;for(c=m.length;b<c;b++)if(f=a,e=m[b],0==b&&f<e.top&&(f=e.top),b==c-1&&f>e.bottom&&(f=e.bottom),e.top<=f&&e.bottom>=f){b=e.item;3>=Math.abs(e.top-f)?(k.css({top:e.top-3,height:"5px"}),f="before"):3>=Math.abs(e.bottom-f)?(k.css({top:e.bottom-3,height:"5px"}),f="after"):(k.css({top:e.top+3,height:"27px"}),f="prepend");j={element:b,state:f};break}$clone.css({top:a})}).bind("mouseup.st",
|
||||
function(){var a,d;l=!1;c(document).unbind("mousemove.st mouseup.st");b.css("opacity","");$clone.remove();k.remove();d=c("<li />").height(b.height());if(j){a=c(j.element);b.before(d);if("prepend"==j.state)a.find(">ul").length||a.find(">.side").after("<ul>"),a.find(">ul").prepend(b.hide());else a[j.state](b.hide());b.slideDown(100,function(){b.removeClass("active")});d.slideUp(100,function(){var a=d.parent();d.remove();a.children("li").length||a.remove()});b.trigger("dropped.st")}});return!1}},"mouseover.st":function(){l||
|
||||
c(this).addClass("active");return!1},"mouseout.st":function(){l||c(this).removeClass("active");return!1}}).find("li").prepend('<button type="button" class="moveTo">Move to</button>').append('<span class="vr"></span><span class="hr"></span>').find("input:text").focus(function(){var a=c(this),d=a.prev("label"),b=a.parent();a.width(b.width()-(parseInt(b.css("text-indent"))||0)-a.next(".side").width()-60).css("opacity","");d.hide()}).blur(function(){var a=c(this),d=a.prev("label"),b=a.val();a.width(0).css("opacity",
|
||||
|
|
|
|||
|
|
@ -70,6 +70,9 @@
|
|||
$this->updateCategory($xmlDoc);
|
||||
$this->updatePackages($xmlDoc);
|
||||
$this->checkInstalled();
|
||||
|
||||
$oAdminController = &getAdminController('admin');
|
||||
$output = $oAdminController->cleanFavorite();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -259,10 +259,23 @@
|
|||
$res = array();
|
||||
foreach($package_list as $package_srl => $package)
|
||||
{
|
||||
$res[] = $item_list[$package_srl];
|
||||
if($item_list[$package_srl])
|
||||
{
|
||||
$res[] = $item_list[$package_srl];
|
||||
}
|
||||
}
|
||||
Context::set('item_list', $res);
|
||||
}
|
||||
|
||||
if(count($package_list) != count($res))
|
||||
{
|
||||
$localPackageSrls = array_keys($package_list);
|
||||
$remotePackageSrls = array_keys($item_list);
|
||||
$targetPackageSrls = array_diff($localPackageSrls, $remotePackageSrls);
|
||||
$countDiff = count($targetPackageSrls);
|
||||
$output->page_navigation->total_count -= $countDiff;
|
||||
}
|
||||
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('index');
|
||||
|
|
|
|||
|
|
@ -150,11 +150,14 @@
|
|||
$schema_dir = sprintf('%s/schemas/', $this->package->path);
|
||||
$schema_files = FileHandler::readDir($schema_dir);
|
||||
$oDB =& DB::getInstance();
|
||||
foreach($schema_files as $file)
|
||||
if(is_array($schema_files))
|
||||
{
|
||||
$filename_arr = explode(".", $file);
|
||||
$filename = array_shift($filename_arr);
|
||||
$oDB->dropTable($filename);
|
||||
foreach($schema_files as $file)
|
||||
{
|
||||
$filename_arr = explode(".", $file);
|
||||
$filename = array_shift($filename_arr);
|
||||
$oDB->dropTable($filename);
|
||||
}
|
||||
}
|
||||
return new Object();
|
||||
}
|
||||
|
|
@ -399,22 +402,25 @@
|
|||
if(!$output->toBool()) return $output;
|
||||
$target_dir = $this->ftp_info->ftp_root_path.$this->target_path;
|
||||
|
||||
foreach($file_list as $k => $file){
|
||||
$org_file = $file;
|
||||
if($this->package->path == ".")
|
||||
{
|
||||
$file = substr($file,3);
|
||||
}
|
||||
$path = FileHandler::getRealPath("./".$this->target_path."/".$file);
|
||||
$pathname = dirname($target_dir."/".$file);
|
||||
if(is_array($file_list))
|
||||
{
|
||||
foreach($file_list as $k => $file){
|
||||
$org_file = $file;
|
||||
if($this->package->path == ".")
|
||||
{
|
||||
$file = substr($file,3);
|
||||
}
|
||||
$path = FileHandler::getRealPath("./".$this->target_path."/".$file);
|
||||
$pathname = dirname($target_dir."/".$file);
|
||||
|
||||
if(!file_exists(FileHandler::getRealPath($real_path)))
|
||||
{
|
||||
ssh2_sftp_mkdir($this->sftp, $pathname, 0755, true);
|
||||
}
|
||||
if(!file_exists(FileHandler::getRealPath($real_path)))
|
||||
{
|
||||
ssh2_sftp_mkdir($this->sftp, $pathname, 0755, true);
|
||||
}
|
||||
|
||||
ssh2_scp_send($this->connection, FileHandler::getRealPath($this->download_path."/".$org_file), $target_dir."/".$file);
|
||||
}
|
||||
ssh2_scp_send($this->connection, FileHandler::getRealPath($this->download_path."/".$org_file), $target_dir."/".$file);
|
||||
}
|
||||
}
|
||||
return new Object();
|
||||
}
|
||||
}
|
||||
|
|
@ -550,54 +556,57 @@
|
|||
}
|
||||
$target_dir = $this->ftp_info->ftp_root_path.$this->target_path;
|
||||
|
||||
foreach($file_list as $k => $file){
|
||||
if(!$file) continue;
|
||||
$org_file = $file;
|
||||
if($this->package->path == ".")
|
||||
{
|
||||
$file = substr($file,3);
|
||||
}
|
||||
$path = FileHandler::getRealPath("./".$this->target_path."/".$file);
|
||||
$path_list = explode('/', dirname($this->target_path."/".$file));
|
||||
if(is_array($file_list))
|
||||
{
|
||||
foreach($file_list as $k => $file){
|
||||
if(!$file) continue;
|
||||
$org_file = $file;
|
||||
if($this->package->path == ".")
|
||||
{
|
||||
$file = substr($file,3);
|
||||
}
|
||||
$path = FileHandler::getRealPath("./".$this->target_path."/".$file);
|
||||
$path_list = explode('/', dirname($this->target_path."/".$file));
|
||||
|
||||
$real_path = "./";
|
||||
$ftp_path = $this->ftp_info->ftp_root_path;
|
||||
$real_path = "./";
|
||||
$ftp_path = $this->ftp_info->ftp_root_path;
|
||||
|
||||
for($i=0;$i<count($path_list);$i++)
|
||||
{
|
||||
if($path_list=="") continue;
|
||||
$real_path .= $path_list[$i]."/";
|
||||
$ftp_path .= $path_list[$i]."/";
|
||||
if(!file_exists(FileHandler::getRealPath($real_path)))
|
||||
{
|
||||
if(!@ftp_mkdir($this->connection, $ftp_path))
|
||||
{
|
||||
return new Object(-1, "msg_make_directory_failed");
|
||||
}
|
||||
for($i=0;$i<count($path_list);$i++)
|
||||
{
|
||||
if($path_list=="") continue;
|
||||
$real_path .= $path_list[$i]."/";
|
||||
$ftp_path .= $path_list[$i]."/";
|
||||
if(!file_exists(FileHandler::getRealPath($real_path)))
|
||||
{
|
||||
if(!@ftp_mkdir($this->connection, $ftp_path))
|
||||
{
|
||||
return new Object(-1, "msg_make_directory_failed");
|
||||
}
|
||||
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')
|
||||
{
|
||||
if (function_exists('ftp_chmod')) {
|
||||
if(!ftp_chmod($this->connection, 0755, $ftp_path))
|
||||
{
|
||||
return new Object(-1, "msg_permission_adjust_failed");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!ftp_site($this->connection, "CHMOD 755 ".$ftp_path))
|
||||
{
|
||||
return new Object(-1, "msg_permission_adjust_failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!ftp_put($this->connection, $target_dir .'/'. $file, FileHandler::getRealPath($this->download_path."/".$org_file), FTP_BINARY))
|
||||
{
|
||||
return new Object(-1, "msg_ftp_upload_failed");
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')
|
||||
{
|
||||
if (function_exists('ftp_chmod')) {
|
||||
if(!ftp_chmod($this->connection, 0755, $ftp_path))
|
||||
{
|
||||
return new Object(-1, "msg_permission_adjust_failed");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!ftp_site($this->connection, "CHMOD 755 ".$ftp_path))
|
||||
{
|
||||
return new Object(-1, "msg_permission_adjust_failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!ftp_put($this->connection, $target_dir .'/'. $file, FileHandler::getRealPath($this->download_path."/".$org_file), FTP_BINARY))
|
||||
{
|
||||
return new Object(-1, "msg_ftp_upload_failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->_close();
|
||||
return new Object();
|
||||
}
|
||||
|
|
@ -718,31 +727,34 @@
|
|||
$oFtp =& $this->oFtp;
|
||||
$target_dir = $this->ftp_info->ftp_root_path.$this->target_path;
|
||||
|
||||
foreach($file_list as $k => $file){
|
||||
$org_file = $file;
|
||||
if($this->package->path == ".")
|
||||
{
|
||||
$file = substr($file,3);
|
||||
}
|
||||
$path = FileHandler::getRealPath("./".$this->target_path."/".$file);
|
||||
$path_list = explode('/', dirname($this->target_path."/".$file));
|
||||
if(is_array($file_list))
|
||||
{
|
||||
foreach($file_list as $k => $file){
|
||||
$org_file = $file;
|
||||
if($this->package->path == ".")
|
||||
{
|
||||
$file = substr($file,3);
|
||||
}
|
||||
$path = FileHandler::getRealPath("./".$this->target_path."/".$file);
|
||||
$path_list = explode('/', dirname($this->target_path."/".$file));
|
||||
|
||||
$real_path = "./";
|
||||
$ftp_path = $this->ftp_info->ftp_root_path;
|
||||
$real_path = "./";
|
||||
$ftp_path = $this->ftp_info->ftp_root_path;
|
||||
|
||||
for($i=0;$i<count($path_list);$i++)
|
||||
{
|
||||
if($path_list=="") continue;
|
||||
$real_path .= $path_list[$i]."/";
|
||||
$ftp_path .= $path_list[$i]."/";
|
||||
if(!file_exists(FileHandler::getRealPath($real_path)))
|
||||
{
|
||||
$oFtp->ftp_mkdir($ftp_path);
|
||||
$oFtp->ftp_site("CHMOD 755 ".$ftp_path);
|
||||
}
|
||||
}
|
||||
$oFtp->ftp_put($target_dir .'/'. $file, FileHandler::getRealPath($this->download_path."/".$org_file));
|
||||
}
|
||||
for($i=0;$i<count($path_list);$i++)
|
||||
{
|
||||
if($path_list=="") continue;
|
||||
$real_path .= $path_list[$i]."/";
|
||||
$ftp_path .= $path_list[$i]."/";
|
||||
if(!file_exists(FileHandler::getRealPath($real_path)))
|
||||
{
|
||||
$oFtp->ftp_mkdir($ftp_path);
|
||||
$oFtp->ftp_site("CHMOD 755 ".$ftp_path);
|
||||
}
|
||||
}
|
||||
$oFtp->ftp_put($target_dir .'/'. $file, FileHandler::getRealPath($this->download_path."/".$org_file));
|
||||
}
|
||||
}
|
||||
|
||||
$this->_close();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<include target="category.html" />
|
||||
|
||||
<div class="table even easyList">
|
||||
<div class="table even easyList dsTg">
|
||||
<table width="100%" border="1" cellspacing="0">
|
||||
<caption>
|
||||
<block cond="$current_category">{$current_category}</block>
|
||||
|
|
@ -28,11 +28,12 @@
|
|||
<a href="{getUrl('order_target','download','order_type',$_download_order_type)}">{$lang->order_download}<!--@if($order_target == 'download')--><!--@if($_download_order_type == 'asc')-->▼<!--@else-->▲<!--@end--><!--@end--></a> |
|
||||
<a href="{getUrl('order_target','popular','order_type',$_popular_order_type)}">{$lang->order_popular}<!--@if($order_target == 'popular')--><!--@if($_popular_order_type == 'asc')-->▼<!--@else-->▲<!--@end--><!--@end--></a>
|
||||
</span>
|
||||
<span class="side"><button type="button" class="text"><span class="hide">{$lang->simple_view}</span><span class="show">{$lang->detail_view}</span></button></span>
|
||||
</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="nowr">{$lang->category}</th>
|
||||
<th scope="col">{$lang->thumbnail}</th>
|
||||
<th scope="col" class="thumb">{$lang->thumbnail}</th>
|
||||
<th scope="col" class="title">{$lang->name}</th>
|
||||
<th scope="col" class="nowr">{$lang->distribute_version}</th>
|
||||
<th scope="col" class="nowr">{$lang->current_version}</th>
|
||||
|
|
@ -43,7 +44,7 @@
|
|||
<tr loop="$item_list => $key, $item">
|
||||
{@ $target_url = $original_site."?mid=download&package_srl=".$item->package_srl; }
|
||||
<td class="nowr">{$item->category}</td>
|
||||
<td><img src="{str_replace('./', $uri, $item->item_screenshot_url)}" alt="" width="100" height="100" /></td>
|
||||
<td class="thumb"><img src="{str_replace('./', $uri, $item->item_screenshot_url)}" alt="" width="100" height="100" /></td>
|
||||
<td class="title">
|
||||
<p><a href="{$target_url}">{htmlspecialchars($item->title)}</a></p>
|
||||
<p>{cut_str(htmlspecialchars($item->package_description),200)}</p>
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@
|
|||
// get a list by using comment->getCommentList.
|
||||
$oCommentModel = &getModel('comment');
|
||||
$secretNameList = $oCommentModel->getSecretNameList();
|
||||
$columnList = array('comment_srl', 'document_srl', 'is_secret', 'status', 'content', 'comments.member_srl', 'comments.nick_name', 'comments.regdate', 'ipaddress');
|
||||
$columnList = array('comment_srl', 'document_srl', 'is_secret', 'status', 'content', 'comments.member_srl', 'comments.nick_name', 'comments.regdate', 'ipaddress', 'voted_count', 'blamed_count');
|
||||
$output = $oCommentModel->getTotalCommentList($args, $columnList);
|
||||
|
||||
$oCommentModel = &getModel("comment");
|
||||
|
|
|
|||
|
|
@ -69,7 +69,10 @@
|
|||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// 2012. 08. 29 Add a trigger to copy additional setting when the module is copied
|
||||
if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'comment', 'controller', 'triggerCopyModule', 'after')) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -128,6 +131,12 @@
|
|||
array("status", "comment_srl", "module_srl", "document_srl"),
|
||||
true
|
||||
);
|
||||
|
||||
// 2012. 08. 29 Add a trigger to copy additional setting when the module is copied
|
||||
if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'comment', 'controller', 'triggerCopyModule', 'after'))
|
||||
{
|
||||
$oModuleController->insertTrigger('module.procModuleAdminCopyModule', 'comment', 'controller', 'triggerCopyModule', 'after');
|
||||
}
|
||||
|
||||
return new Object(0, 'success_updated');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -112,8 +112,13 @@
|
|||
* @param int $module_srl
|
||||
* @return bool
|
||||
*/
|
||||
function isModuleUsingPublishValidation($document_srl=null, $module_srl=null)
|
||||
function isModuleUsingPublishValidation($module_srl=null)
|
||||
{
|
||||
if(!$module_srl == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl);
|
||||
$module_part_config = $oModuleModel->getModulePartConfig('comment',$module_info->module_srl);
|
||||
|
|
@ -956,36 +961,51 @@
|
|||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get comment all list
|
||||
* @return void
|
||||
*/
|
||||
function procCommentGetList()
|
||||
{
|
||||
if(!Context::get('is_logged')) return new Object(-1,'msg_not_permitted');
|
||||
$commentSrls = Context::get('comment_srls');
|
||||
if($commentSrls) $commentSrlList = explode(',', $commentSrls);
|
||||
/**
|
||||
* Get comment all list
|
||||
* @return void
|
||||
*/
|
||||
function procCommentGetList()
|
||||
{
|
||||
if(!Context::get('is_logged')) return new Object(-1,'msg_not_permitted');
|
||||
$commentSrls = Context::get('comment_srls');
|
||||
if($commentSrls) $commentSrlList = explode(',', $commentSrls);
|
||||
|
||||
if(count($commentSrlList) > 0) {
|
||||
$oCommentModel = &getModel('comment');
|
||||
$commentList = $oCommentModel->getComments($commentSrlList);
|
||||
if(count($commentSrlList) > 0) {
|
||||
$oCommentModel = &getModel('comment');
|
||||
$commentList = $oCommentModel->getComments($commentSrlList);
|
||||
|
||||
if(is_array($commentList))
|
||||
{
|
||||
foreach($commentList AS $key=>$value)
|
||||
if(is_array($commentList))
|
||||
{
|
||||
$value->content = strip_tags($value->content);
|
||||
foreach($commentList AS $key=>$value)
|
||||
{
|
||||
$value->content = strip_tags($value->content);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
global $lang;
|
||||
$commentList = array();
|
||||
$this->setMessage($lang->no_documents);
|
||||
}
|
||||
|
||||
$this->add('comment_list', $commentList);
|
||||
}
|
||||
|
||||
function triggerCopyModule(&$obj)
|
||||
{
|
||||
$oModuleModel = &getModel('module');
|
||||
$commentConfig = $oModuleModel->getModulePartConfig('comment', $obj->originModuleSrl);
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
if(is_array($obj->moduleSrlList))
|
||||
{
|
||||
foreach($obj->moduleSrlList AS $key=>$moduleSrl)
|
||||
{
|
||||
$oModuleController->insertModulePartConfig('comment', $moduleSrl, $commentConfig);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
global $lang;
|
||||
$commentList = array();
|
||||
$this->setMessage($lang->no_documents);
|
||||
}
|
||||
|
||||
$this->add('comment_list', $commentList);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -314,7 +314,7 @@
|
|||
if(!$this->get('uploaded_count')) return;
|
||||
|
||||
$oFileModel = &getModel('file');
|
||||
$file_list = $oFileModel->getFiles($this->comment_srl, $is_admin);
|
||||
$file_list = $oFileModel->getFiles($this->comment_srl, array(), 'file_srl', true);
|
||||
return $file_list;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -280,27 +280,30 @@
|
|||
if(is_array($obj->module_srl)) $args->module_srl = implode(',', $obj->module_srl);
|
||||
else $args->module_srl = $obj->module_srl;
|
||||
$args->list_count = $obj->list_count;
|
||||
// cache controll
|
||||
// cache controll
|
||||
$oCacheHandler = &CacheHandler::getInstance('object');
|
||||
if($oCacheHandler->isSupport()){
|
||||
$object_key = 'object_newest_comment_list:'.$obj->module_srl;
|
||||
$cache_key = $oCacheHandler->getGroupKey('newestCommentsList', $object_key);
|
||||
$cache_key = $oCacheHandler->getGroupKey('newestCommentsList', $object_key);
|
||||
$output = $oCacheHandler->get($cache_key);
|
||||
}
|
||||
if(!$output){
|
||||
|
||||
if(!$output)
|
||||
{
|
||||
if(strpos($args->module_srl,",")===false)
|
||||
{
|
||||
// check if module is using comment validation system
|
||||
$oCommentController = &getController("comment");
|
||||
$is_using_validation = $oCommentController->isModuleUsingPublishValidation($obj->module_srl);
|
||||
if($is_using_validation)
|
||||
if($args->module_srl)
|
||||
{
|
||||
$args->status = 1;
|
||||
// check if module is using comment validation system
|
||||
$oCommentController = &getController("comment");
|
||||
$is_using_validation = $oCommentController->isModuleUsingPublishValidation($obj->module_srl);
|
||||
if($is_using_validation)
|
||||
{
|
||||
$args->status = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
$output = executeQuery('comment.getNewestCommentList', $args, $columnList);
|
||||
if($oCacheHandler->isSupport()) $oCacheHandler->put($cache_key,$output);
|
||||
$output = executeQuery('comment.getNewestCommentList', $args, $columnList);
|
||||
if($oCacheHandler->isSupport()) $oCacheHandler->put($cache_key,$output);
|
||||
}
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@
|
|||
<condition operation="in" column="module_srl" var="module_srl" filter="number" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="status" order="desc" />
|
||||
<index var="sort_index" default="list_order" order="asc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
</navigation>
|
||||
|
|
|
|||
|
|
@ -24,6 +24,6 @@
|
|||
<column name="last_update" var="last_update" default="curdate()" />
|
||||
<column name="ipaddress" var="ipaddress" default="ipaddress()" />
|
||||
<column name="list_order" var="list_order" default="0" />
|
||||
<column name="status" var="status" notnull="notnull" default="0" />
|
||||
<column name="status" var="status" notnull="notnull" default="1" />
|
||||
</columns>
|
||||
</query>
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
|
|||
<tr>
|
||||
<td class="text"><a href="{getUrl('','document_srl',$val->document_srl)}#comment_{$val->comment_srl}" target="_blank"><!--@if(strlen($comment))-->{$comment}<!--@else--><em>{$lang->no_text_comment}</em><!--@end--></a></td>
|
||||
<td class="nowr"><a href="#popup_menu_area" class="member_{$val->member_srl}">{$val->nick_name}</a></td>
|
||||
<td class="nowr">0/0</td>
|
||||
<td class="nowr">{number_format($val->get('voted_count'))}/{number_format($val->get('blamed_count'))}</td>
|
||||
<td class="nowr">{(zdate($val->regdate,"Y-m-d\nH:i:s"))}</td>
|
||||
<td class="nowr"><a href="{getUrl('search_target','ipaddress','search_keyword',$val->ipaddress)}">{$val->ipaddress}</a></td>
|
||||
<td class="nowr"><!--@if($val->isSecret())-->{$secret_name_list['Y']}<!--@else-->{$secret_name_list['N']}<!--@end--></td>
|
||||
|
|
|
|||
|
|
@ -19,12 +19,13 @@
|
|||
**/
|
||||
function procCommunicationAdminInsertConfig() {
|
||||
// get the default information
|
||||
$args = Context::gets('skin','colorset','editor_skin','editor_colorset', 'mskin');
|
||||
$args = Context::gets('skin','colorset','editor_skin','editor_colorset', 'mskin', 'layout_srl', 'mlayout_srl');
|
||||
|
||||
if(!$args->skin) $args->skin = 'default';
|
||||
if(!$args->colorset) $args->colorset = 'white';
|
||||
if(!$args->editor_skin) $args->editor_skin = 'default';
|
||||
if(!$args->mskin) $args->mskin = 'default';
|
||||
if(!$args->layout_srl) $args->layout_srl = null;
|
||||
|
||||
// create the module module Controller object
|
||||
$oModuleController = &getController('module');
|
||||
|
|
|
|||
|
|
@ -17,13 +17,17 @@
|
|||
* configuration to manage messages and friends
|
||||
* @return void
|
||||
**/
|
||||
function dispCommunicationAdminConfig() {
|
||||
function dispCommunicationAdminConfig()
|
||||
{
|
||||
// Creating an object
|
||||
$oEditorModel = &getModel('editor');
|
||||
$oModuleModel = &getModel('module');
|
||||
$oLayoutModel = &getModel('layout');
|
||||
$oCommunicationModel = &getModel('communication');
|
||||
// get the configurations of communication module
|
||||
Context::set('communication_config', $oCommunicationModel->getConfig() );
|
||||
// get a list of layout
|
||||
Context::set('layout_list', $oLayoutModel->getLayoutList() );
|
||||
// get a list of editor skins
|
||||
Context::set('editor_skin_list', $oEditorModel->getEditorSkinList() );
|
||||
// get a list of communication skins
|
||||
|
|
@ -31,8 +35,16 @@
|
|||
// get a list of communication skins
|
||||
Context::set('communication_mobile_skin_list', $oModuleModel->getSkins($this->module_path, 'm.skins') );
|
||||
|
||||
// Get a layout list
|
||||
$layout_list = $oLayoutModel->getLayoutList();
|
||||
Context::set('layout_list', $layout_list);
|
||||
|
||||
$mlayout_list = $oLayoutModel->getLayoutList(0, 'M');
|
||||
Context::set('mlayout_list', $mlayout_list);
|
||||
|
||||
$security = new Security();
|
||||
$security->encodeHTML('communication_config..');
|
||||
$security->encodeHTML('layout_list..');
|
||||
$security->encodeHTML('editor_skin_list..');
|
||||
$security->encodeHTML('communication_skin_list..title');
|
||||
$security->encodeHTML('communication_mobile_skin_list..title');
|
||||
|
|
|
|||
|
|
@ -195,12 +195,16 @@
|
|||
$oCommunicationModel = &getModel('communication');
|
||||
$message = $oCommunicationModel->getSelectedMessage($message_srl);
|
||||
if(!$message) return new Object(-1,'msg_invalid_request');
|
||||
// Check a message type if 'S' or 'R'
|
||||
if($message->sender_srl == $member_srl && $message->message_type == 'S') {
|
||||
if(!$message_srl) return new Object(-1, 'msg_invalid_request');
|
||||
} elseif($message->receiver_srl == $member_srl && $message->message_type == 'R') {
|
||||
if(!$message_srl) return new Object(-1, 'msg_invalid_request');
|
||||
}
|
||||
// Check the grant
|
||||
switch($message->message_type)
|
||||
{
|
||||
case 'S':
|
||||
if($message->sender_srl != $member_srl) return new Object(-1, 'msg_invalid_request');
|
||||
break;
|
||||
case 'R':
|
||||
if($message->receiver_srl != $member_srl) return new Object(-1, 'msg_invalid_request');
|
||||
break;
|
||||
}
|
||||
// Delete
|
||||
$args->message_srl = $message_srl;
|
||||
$output = executeQuery('communication.deleteMessage', $args);
|
||||
|
|
@ -290,15 +294,27 @@
|
|||
* Move a group of the friend
|
||||
* @return void|Object (success : void, fail : Object)
|
||||
**/
|
||||
function procCommunicationMoveFriend() {
|
||||
function procCommunicationMoveFriend()
|
||||
{
|
||||
// Check login information
|
||||
if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged');
|
||||
if(!Context::get('is_logged'))
|
||||
{
|
||||
return new Object(-1, 'msg_not_logged');
|
||||
}
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
// Check variables
|
||||
$friend_srl_list = trim(Context::get('friend_srl_list'));
|
||||
if(!$friend_srl_list) return new Object(-1, 'msg_cart_is_null');
|
||||
$friend_srl_list = Context::get('friend_srl_list');
|
||||
if(!$friend_srl_list)
|
||||
{
|
||||
return new Object(-1, 'msg_cart_is_null');
|
||||
}
|
||||
|
||||
if(!is_array($friend_srl_list))
|
||||
{
|
||||
$friend_srl_list = explode('|@|', $friend_srl_list);
|
||||
}
|
||||
|
||||
$friend_srl_list = explode('|@|', $friend_srl_list);
|
||||
if(!count($friend_srl_list)) return new Object(-1, 'msg_cart_is_null');
|
||||
|
||||
$friend_count = count($friend_srl_list);
|
||||
|
|
|
|||
|
|
@ -11,6 +11,14 @@ class communicationMobile extends communicationView {
|
|||
|
||||
$tpl_path = sprintf('%sm.skins/%s', $this->module_path, $skin);
|
||||
$this->setTemplatePath($tpl_path);
|
||||
|
||||
$oLayoutModel = &getModel('layout');
|
||||
$layout_info = $oLayoutModel->getLayout($this->communication_config->mlayout_srl);
|
||||
if($layout_info)
|
||||
{
|
||||
$this->module_info->mlayout_srl = $this->communication_config->mlayout_srl;
|
||||
$this->setLayoutPath($layout_info->path);
|
||||
}
|
||||
}
|
||||
|
||||
function dispCommunicationMessages()
|
||||
|
|
|
|||
|
|
@ -26,6 +26,14 @@
|
|||
$tpl_path = sprintf('%sskins/%s', $this->module_path, $skin);
|
||||
}
|
||||
$this->setTemplatePath($tpl_path);
|
||||
|
||||
$oLayoutModel = &getModel('layout');
|
||||
$layout_info = $oLayoutModel->getLayout($this->communication_config->layout_srl);
|
||||
if($layout_info)
|
||||
{
|
||||
$this->module_info->layout_srl = $this->communication_config->layout_srl;
|
||||
$this->setLayoutPath($layout_info->path);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -54,6 +62,27 @@
|
|||
if($message_srl) {
|
||||
$columnList = array('message_srl', 'sender_srl', 'receiver_srl', 'message_type', 'title', 'content', 'readed', 'regdate');
|
||||
$message = $oCommunicationModel->getSelectedMessage($message_srl, $columnList);
|
||||
switch($message->message_type)
|
||||
{
|
||||
case 'R':
|
||||
if($message->receiver_srl != $logged_info->member_srl)
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
}
|
||||
break;
|
||||
case 'S':
|
||||
if($message->sender_srl != $logged_info->member_srl)
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
}
|
||||
break;
|
||||
case 'T':
|
||||
if($message->receiver_srl != $logged_info->member_srl && $message->sender_srl != $logged_info->member_srl)
|
||||
{
|
||||
return $this->stop('msg_invalid_request');
|
||||
}
|
||||
break;
|
||||
}
|
||||
if($message->message_srl == $message_srl && ($message->receiver_srl == $logged_info->member_srl || $message->sender_srl == $logged_info->member_srl) ) {
|
||||
stripEmbedTagForAdmin($message->content, $message->sender_srl);
|
||||
Context::set('message', $message);
|
||||
|
|
@ -81,6 +110,7 @@
|
|||
* @return void|Object (void : success, Object : fail)
|
||||
**/
|
||||
function dispCommunicationNewMessage() {
|
||||
$this->setLayoutPath('./common/tpl/');
|
||||
$this->setLayoutFile('popup_layout');
|
||||
// Error appears if not logged-in
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
|
|
@ -108,6 +138,7 @@
|
|||
* @return void|Object (void : success, Object : fail)
|
||||
**/
|
||||
function dispCommunicationSendMessage() {
|
||||
$this->setLayoutPath('./common/tpl/');
|
||||
$this->setLayoutFile("popup_layout");
|
||||
$oCommunicationModel = &getModel('communication');
|
||||
$oMemberModel = &getModel('member');
|
||||
|
|
@ -201,6 +232,7 @@
|
|||
* @return void|Object (void : success, Object : fail)
|
||||
**/
|
||||
function dispCommunicationAddFriend() {
|
||||
$this->setLayoutPath('./common/tpl/');
|
||||
$this->setLayoutFile("popup_layout");
|
||||
// error appears if not logged-in
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
|
|
@ -226,6 +258,7 @@
|
|||
* @return void|Object (void : success, Object : fail)
|
||||
**/
|
||||
function dispCommunicationAddFriendGroup() {
|
||||
$this->setLayoutPath('./common/tpl/');
|
||||
$this->setLayoutFile("popup_layout");
|
||||
// error apprears if not logged-in
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
|
|
|
|||
|
|
@ -25,6 +25,15 @@
|
|||
//]]></script>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->layout}</th>
|
||||
<td>
|
||||
<select id="layout" name="layout_srl">
|
||||
<option value="0">{$lang->notuse}</option>
|
||||
<option loop="$layout_list => $key,$val" value="{$val->layout_srl}" selected="selected"|cond="$val->layout_srl == $communication_config->layout_srl">{$val->title} ({$val->layout})</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->skin}</th>
|
||||
<td>
|
||||
|
|
@ -39,6 +48,15 @@
|
|||
<th scope="row">{$lang->colorset}</th>
|
||||
<td><div id="communication_colorset"></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{$lang->mobile_layout}</th>
|
||||
<td>
|
||||
<select id="layout" name="mlayout_srl">
|
||||
<option value="0">{$lang->notuse}</option>
|
||||
<option loop="$mlayout_list => $key,$val" value="{$val->layout_srl}" selected="selected"|cond="$val->layout_srl == $communication_config->mlayout_srl">{$val->title} ({$val->layout})</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{$lang->mobile_skin}</th>
|
||||
<td>
|
||||
|
|
|
|||
|
|
@ -267,7 +267,7 @@
|
|||
}
|
||||
|
||||
// Write a post
|
||||
$output = $oDocumentController->insertDocument($obj, true);
|
||||
$output = $oDocumentController->insertDocument($obj, true, true);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
|
|
@ -361,6 +361,7 @@
|
|||
}
|
||||
|
||||
// Call a trigger (before)
|
||||
$triggerObj->copied_srls = $copied_srls;
|
||||
$output = ModuleHandler::triggerCall('document.copyDocumentModule', 'after', $triggerObj);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
|
|
@ -480,7 +481,7 @@
|
|||
$type = Context::get('type');
|
||||
$is_required = Context::get('is_required');
|
||||
$default = Context::get('default');
|
||||
$desc = Context::get('desc');
|
||||
$desc = Context::get('desc') ? Context::get('desc') : '';
|
||||
$search = Context::get('search');
|
||||
$eid = Context::get('eid');
|
||||
|
||||
|
|
@ -709,7 +710,7 @@
|
|||
$oDB->begin();
|
||||
|
||||
//DB restore
|
||||
$output = $oDocumentController->insertDocument($originObject, false, true);
|
||||
$output = $oDocumentController->insertDocument($originObject, false, true, false);
|
||||
if(!$output->toBool()) return new Object(-1, $output->getMessage());
|
||||
|
||||
//FILE restore
|
||||
|
|
|
|||
|
|
@ -59,6 +59,9 @@
|
|||
Context::set('status_name_list', $statusNameList);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$oSecurity = new Security();
|
||||
$oSecurity->encodeHTML('document_list..variables.');
|
||||
|
||||
// set a search option used in the template
|
||||
$count_search_option = count($this->search_option);
|
||||
for($i=0;$i<$count_search_option;$i++) {
|
||||
|
|
|
|||
|
|
@ -120,6 +120,9 @@ class document extends ModuleObject
|
|||
// 2012. 02. 27 Add a trigger to copy extra keys when the module is copied
|
||||
if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'document', 'controller', 'triggerCopyModuleExtraKeys', 'after')) return true;
|
||||
|
||||
// 2012. 08. 29 Add a trigger to copy additional setting when the module is copied
|
||||
if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'document', 'controller', 'triggerCopyModule', 'after')) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -296,6 +299,12 @@ class document extends ModuleObject
|
|||
$oModuleController->insertTrigger('module.procModuleAdminCopyModule', 'document', 'controller', 'triggerCopyModuleExtraKeys', 'after');
|
||||
}
|
||||
|
||||
// 2012. 08. 29 Add a trigger to copy additional setting when the module is copied
|
||||
if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'document', 'controller', 'triggerCopyModule', 'after'))
|
||||
{
|
||||
$oModuleController->insertTrigger('module.procModuleAdminCopyModule', 'document', 'controller', 'triggerCopyModule', 'after');
|
||||
}
|
||||
|
||||
return new Object(0,'success_updated');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -174,7 +174,12 @@ class documentController extends document {
|
|||
* @param bool $isRestore
|
||||
* @return object
|
||||
*/
|
||||
function insertDocument($obj, $manual_inserted = false, $isRestore = false) {
|
||||
function insertDocument($obj, $manual_inserted = false, $isRestore = false, $isLatest = true) {
|
||||
if(!checkCSRF())
|
||||
{
|
||||
return new Object(-1, 'msg_invalid_request');
|
||||
}
|
||||
|
||||
// begin transaction
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
|
@ -212,7 +217,7 @@ class documentController extends document {
|
|||
}
|
||||
// Set the read counts and update order.
|
||||
if(!$obj->readed_count) $obj->readed_count = 0;
|
||||
if(!$isRestore) $obj->update_order = $obj->list_order = getNextSequence() * -1;
|
||||
if($isLatest) $obj->update_order = $obj->list_order = getNextSequence() * -1;
|
||||
else $obj->update_order = $obj->list_order;
|
||||
// Check the status of password hash for manually inserting. Apply md5 hashing for otherwise.
|
||||
if($obj->password && !$obj->password_is_hashed) $obj->password = md5($obj->password);
|
||||
|
|
@ -309,6 +314,11 @@ class documentController extends document {
|
|||
* @return object
|
||||
*/
|
||||
function updateDocument($source_obj, $obj) {
|
||||
if(!checkCSRF())
|
||||
{
|
||||
return new Object(-1, 'msg_invalid_request');
|
||||
}
|
||||
|
||||
if(!$source_obj->document_srl || !$obj->document_srl) return new Object(-1,'msg_invalied_request');
|
||||
if(!$obj->status && $obj->is_secret == 'Y') $obj->status = 'SECRET';
|
||||
if(!$obj->status) $obj->status = 'PUBLIC';
|
||||
|
|
@ -745,6 +755,8 @@ class documentController extends document {
|
|||
$cache_key = 'object_document_item:'.$document_srl;
|
||||
$oCacheHandler->delete($cache_key);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1616,6 +1628,7 @@ class documentController extends document {
|
|||
$xml_buff = sprintf(
|
||||
'<?php '.
|
||||
'define(\'__ZBXE__\', true); '.
|
||||
'define(\'__XE__\', true); '.
|
||||
'require_once(\''.FileHandler::getRealPath('./config/config.inc.php').'\'); '.
|
||||
'$oContext = &Context::getInstance(); '.
|
||||
'$oContext->init(); '.
|
||||
|
|
@ -1862,6 +1875,11 @@ class documentController extends document {
|
|||
set_time_limit(0);
|
||||
if(!Context::get('is_logged')) return new Object(-1,'msg_not_permitted');
|
||||
|
||||
if(!checkCSRF())
|
||||
{
|
||||
return new Object(-1, 'msg_invalid_request');
|
||||
}
|
||||
|
||||
$type = Context::get('type');
|
||||
$target_module = Context::get('target_module');
|
||||
$module_srl = Context::get('module_srl');
|
||||
|
|
@ -1918,14 +1936,14 @@ class documentController extends document {
|
|||
$msg_code = 'success_moved';
|
||||
|
||||
}
|
||||
elseif($type == 'copy') {
|
||||
elseif($type == 'copy')
|
||||
{
|
||||
if(!$module_srl) return new Object(-1, 'fail_to_move');
|
||||
|
||||
$output = $oDocumentAdminController->copyDocumentModule($document_srl_list, $module_srl, $category_srl);
|
||||
if(!$output->toBool()) return new Object(-1, 'fail_to_move');
|
||||
|
||||
$msg_code = 'success_copy';
|
||||
|
||||
$msg_code = 'success_copied';
|
||||
}
|
||||
elseif($type =='delete') {
|
||||
$oDB = &DB::getInstance();
|
||||
|
|
@ -2130,5 +2148,20 @@ class documentController extends document {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
function triggerCopyModule(&$obj)
|
||||
{
|
||||
$oModuleModel = &getModel('module');
|
||||
$documentConfig = $oModuleModel->getModulePartConfig('document', $obj->originModuleSrl);
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
if(is_array($obj->moduleSrlList))
|
||||
{
|
||||
foreach($obj->moduleSrlList AS $key=>$moduleSrl)
|
||||
{
|
||||
$oModuleController->insertModulePartConfig('document', $moduleSrl, $documentConfig);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -454,42 +454,52 @@
|
|||
return $content;
|
||||
}
|
||||
|
||||
function getRegdate($format = 'Y.m.d H:i:s') {
|
||||
return zdate($this->get('regdate'), $format);
|
||||
}
|
||||
function getRegdate($format = 'Y.m.d H:i:s') {
|
||||
return zdate($this->get('regdate'), $format);
|
||||
}
|
||||
|
||||
function getRegdateTime() {
|
||||
$regdate = $this->get('regdate');
|
||||
$year = substr($regdate,0,4);
|
||||
$month = substr($regdate,4,2);
|
||||
$day = substr($regdate,6,2);
|
||||
$hour = substr($regdate,8,2);
|
||||
$min = substr($regdate,10,2);
|
||||
$sec = substr($regdate,12,2);
|
||||
return mktime($hour,$min,$sec,$month,$day,$year);
|
||||
}
|
||||
function getRegdateTime() {
|
||||
$regdate = $this->get('regdate');
|
||||
$year = substr($regdate,0,4);
|
||||
$month = substr($regdate,4,2);
|
||||
$day = substr($regdate,6,2);
|
||||
$hour = substr($regdate,8,2);
|
||||
$min = substr($regdate,10,2);
|
||||
$sec = substr($regdate,12,2);
|
||||
return mktime($hour,$min,$sec,$month,$day,$year);
|
||||
}
|
||||
|
||||
function getRegdateGM() {
|
||||
return $this->getRegdate('D, d M Y H:i:s').' '.$GLOBALS['_time_zone'];
|
||||
}
|
||||
function getRegdateGM() {
|
||||
return $this->getRegdate('D, d M Y H:i:s').' '.$GLOBALS['_time_zone'];
|
||||
}
|
||||
|
||||
function getUpdate($format = 'Y.m.d H:i:s') {
|
||||
return zdate($this->get('last_update'), $format);
|
||||
}
|
||||
function getRegdateDT()
|
||||
{
|
||||
return $this->getRegdate('Y-m-d').'T'.$this->getRegdate('H:i:s').substr($GLOBALS['_time_zone'],0,3).':'.substr($GLOBALS['_time_zone'],3,2);
|
||||
}
|
||||
|
||||
function getUpdateTime() {
|
||||
$year = substr($this->get('last_update'),0,4);
|
||||
$month = substr($this->get('last_update'),4,2);
|
||||
$day = substr($this->get('last_update'),6,2);
|
||||
$hour = substr($this->get('last_update'),8,2);
|
||||
$min = substr($this->get('last_update'),10,2);
|
||||
$sec = substr($this->get('last_update'),12,2);
|
||||
return mktime($hour,$min,$sec,$month,$day,$year);
|
||||
}
|
||||
function getUpdate($format = 'Y.m.d H:i:s') {
|
||||
return zdate($this->get('last_update'), $format);
|
||||
}
|
||||
|
||||
function getUpdateGM() {
|
||||
return gmdate("D, d M Y H:i:s", $this->getUpdateTime());
|
||||
}
|
||||
function getUpdateTime() {
|
||||
$year = substr($this->get('last_update'),0,4);
|
||||
$month = substr($this->get('last_update'),4,2);
|
||||
$day = substr($this->get('last_update'),6,2);
|
||||
$hour = substr($this->get('last_update'),8,2);
|
||||
$min = substr($this->get('last_update'),10,2);
|
||||
$sec = substr($this->get('last_update'),12,2);
|
||||
return mktime($hour,$min,$sec,$month,$day,$year);
|
||||
}
|
||||
|
||||
function getUpdateGM() {
|
||||
return gmdate("D, d M Y H:i:s", $this->getUpdateTime());
|
||||
}
|
||||
|
||||
function getUpdateDT()
|
||||
{
|
||||
return $this->getUpdate('Y-m-d').'T'.$this->getUpdate('H:i:s').substr($GLOBALS['_time_zone'],0,3).':'.substr($GLOBALS['_time_zone'],3,2);
|
||||
}
|
||||
|
||||
function getPermanentUrl() {
|
||||
return getFullUrl('','document_srl',$this->get('document_srl'));
|
||||
|
|
@ -499,7 +509,7 @@
|
|||
if(!$this->document_srl) return;
|
||||
// Generate a key to prevent spams
|
||||
$oTrackbackModel = &getModel('trackback');
|
||||
return $oTrackbackModel->getTrackbackUrl($this->document_srl);
|
||||
return $oTrackbackModel->getTrackbackUrl($this->document_srl, $this->getDocumentMid());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -665,7 +675,7 @@
|
|||
// Find an iamge file among attached files if exists
|
||||
if($this->get('uploaded_count')) {
|
||||
$oFileModel = &getModel('file');
|
||||
$file_list = $oFileModel->getFiles($this->document_srl);
|
||||
$file_list = $oFileModel->getFiles($this->document_srl, array(), 'file_srl', true);
|
||||
if(count($file_list)) {
|
||||
foreach($file_list as $file) {
|
||||
if($file->direct_download!='Y') continue;
|
||||
|
|
@ -809,7 +819,7 @@
|
|||
if(!$this->uploadedFiles[$sortIndex])
|
||||
{
|
||||
$oFileModel = &getModel('file');
|
||||
$this->uploadedFiles[$sortIndex] = $oFileModel->getFiles($this->document_srl, array(), $sortIndex);
|
||||
$this->uploadedFiles[$sortIndex] = $oFileModel->getFiles($this->document_srl, array(), $sortIndex, true);
|
||||
}
|
||||
|
||||
return $this->uploadedFiles[$sortIndex];
|
||||
|
|
|
|||
|
|
@ -19,10 +19,19 @@ var slideShow = xe.createPlugin('slideShow', {
|
|||
|
||||
API_SHOW_SLIDE : function(sender, params) {
|
||||
var self=this, srl = params[0], key = '@'+srl, imgs, $zone, $thumb, $holder, i, c;
|
||||
|
||||
var p = params;
|
||||
imgs = this.cast('GET_IMAGES', [srl]);
|
||||
if(!imgs.length) return;
|
||||
|
||||
for(var i=0, nLen=imgs.length; i<nLen; i++){
|
||||
if(!imgs[i].loaded){
|
||||
setTimeout(function(){
|
||||
self.cast('SHOW_SLIDE', params);
|
||||
}, 200);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$zone = $('#zone_slide_gallery_'+srl);
|
||||
$holder = $zone.find('.slide_gallery_placeholder').css('overflow', 'hidden');
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
* @brief Slideshow type image gallery plugin
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
**/
|
||||
(function(k){var m=xe.createPlugin("slideShow",{_holders:{},_thumbs:{},_current:{},init:function(){this._holders={};this._thumbs={};this._current={}},API_SHOW_SLIDE:function(g,f){var b=this,a=f[0],c="@"+a,d,e,j,i,h,l;d=this.cast("GET_IMAGES",[a]);if(d.length){e=k("#zone_slide_gallery_"+a);i=e.find(".slide_gallery_placeholder").css("overflow","hidden");e.find(".slide_gallery_loading_text").remove();j=e.find(".slide_gallery_thumbnail_image_box").show();h=0;for(l=d.length;h<l;h++)d[h].$obj.clone().css({cursor:"pointer",
|
||||
width:"60px",height:"60px",margin:"5px",opacity:0.5}).click({idx:h},function(c){b.cast("SET_SLIDE",[a,c.data.idx])}).appendTo(j);k("#zone_gallery_navigator_status_"+a).click(function(){j.toggle()});e.find(".__prev").click(function(){b.cast("PREV_SLIDE",[a]);return!1}).end().find(".__next").click(function(){b.cast("NEXT_SLIDE",[a]);return!1});this._holders[c]=i;this._thumbs[c]=j;this._current[c]=0;this.cast("SET_SLIDE",[a,0])}},_showSideSlide:function(g,f){var b,a;b=this.cast("GET_IMAGES",[g]);b.length&&
|
||||
(a=this._current["@"+g],a+=f,0>a?a=b.length-1:a>=b.length&&(a=0),this.cast("SET_SLIDE",[g,a]))},API_NEXT_SLIDE:function(g,f){this._showSideSlide(f[0],1)},API_PREV_SLIDE:function(g,f){this._showSideSlide(f[0],-1)},API_SET_SLIDE:function(g,f){var b=f[0],a=f[1],c,d,e;c=this.cast("GET_IMAGES",[b]);if(c.length&&is_def(d=c[a]))this._current["@"+b]=a,k("#zone_gallery_navigator_status_"+b).text(a+1+"/"+c.length),this._thumbs["@"+b].find("img").eq(a).animate({opacity:1}).end().not(":eq("+a+")").animate({opacity:0.5}),
|
||||
b=this._holders["@"+b],c=b.parent().innerWidth(),a=d.$obj.prop("width"),e=d.$obj.prop("height"),0==a&&(a=d.$obj.attr("width")),0==e&&(e=d.$obj.attr("height")),a>c-20&&(c-=20,e=Math.floor(e*(c/a)),a=c,d.$obj.css("cursor","pointer"),d.$obj.attr("rel","xe_gallery")),d.$obj.css({width:a,height:e,margin:"0 10px"}),b.empty().append(d.$obj)}}),i=xe.getApp("Gallery")[0];i&&i.registerPlugin(new m)})(jQuery);
|
||||
(function(k){var m=xe.createPlugin("slideShow",{_holders:{},_thumbs:{},_current:{},init:function(){this._holders={};this._thumbs={};this._current={}},API_SHOW_SLIDE:function(h,f){var b=this,a=f[0],d="@"+a,c,e,j,i,g,l;c=this.cast("GET_IMAGES",[a]);if(c.length){g=0;for(e=c.length;g<e;g++)if(!c[g].loaded){setTimeout(function(){b.cast("SHOW_SLIDE",f)},200);return}e=k("#zone_slide_gallery_"+a);i=e.find(".slide_gallery_placeholder").css("overflow","hidden");e.find(".slide_gallery_loading_text").remove();
|
||||
j=e.find(".slide_gallery_thumbnail_image_box").show();g=0;for(l=c.length;g<l;g++)c[g].$obj.clone().css({cursor:"pointer",width:"60px",height:"60px",margin:"5px",opacity:0.5}).click({idx:g},function(c){b.cast("SET_SLIDE",[a,c.data.idx])}).appendTo(j);k("#zone_gallery_navigator_status_"+a).click(function(){j.toggle()});e.find(".__prev").click(function(){b.cast("PREV_SLIDE",[a]);return!1}).end().find(".__next").click(function(){b.cast("NEXT_SLIDE",[a]);return!1});this._holders[d]=i;this._thumbs[d]=j;
|
||||
this._current[d]=0;this.cast("SET_SLIDE",[a,0])}},_showSideSlide:function(h,f){var b,a;b=this.cast("GET_IMAGES",[h]);b.length&&(a=this._current["@"+h],a+=f,0>a?a=b.length-1:a>=b.length&&(a=0),this.cast("SET_SLIDE",[h,a]))},API_NEXT_SLIDE:function(h,f){this._showSideSlide(f[0],1)},API_PREV_SLIDE:function(h,f){this._showSideSlide(f[0],-1)},API_SET_SLIDE:function(h,f){var b=f[0],a=f[1],d,c,e;d=this.cast("GET_IMAGES",[b]);if(d.length&&is_def(c=d[a]))this._current["@"+b]=a,k("#zone_gallery_navigator_status_"+
|
||||
b).text(a+1+"/"+d.length),this._thumbs["@"+b].find("img").eq(a).animate({opacity:1}).end().not(":eq("+a+")").animate({opacity:0.5}),b=this._holders["@"+b],d=b.parent().innerWidth(),a=c.$obj.prop("width"),e=c.$obj.prop("height"),0==a&&(a=c.$obj.attr("width")),0==e&&(e=c.$obj.attr("height")),a>d-20&&(d-=20,e=Math.floor(e*(d/a)),a=d,c.$obj.css("cursor","pointer"),c.$obj.attr("rel","xe_gallery")),c.$obj.css({width:a,height:e,margin:"0 10px"}),b.empty().append(c.$obj)}}),i=xe.getApp("Gallery")[0];i&&i.registerPlugin(new m)})(jQuery);
|
||||
|
|
|
|||
|
|
@ -60,6 +60,9 @@
|
|||
// 2009. 06. 19 Remove unused trigger
|
||||
if($oModuleModel->getTrigger('file.getIsPermitted', 'editor', 'controller', 'triggerSrlSetting', 'before')) return true;
|
||||
|
||||
// 2012. 08. 29 Add a trigger to copy additional setting when the module is copied
|
||||
if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'editor', 'controller', 'triggerCopyModule', 'after')) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -93,6 +96,12 @@
|
|||
if($oModuleModel->getTrigger('file.getIsPermitted', 'editor', 'controller', 'triggerSrlSetting', 'before'))
|
||||
$oModuleController->deleteTrigger('file.getIsPermitted', 'editor', 'controller', 'triggerSrlSetting', 'before');
|
||||
|
||||
// 2012. 08. 29 Add a trigger to copy additional setting when the module is copied
|
||||
if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'editor', 'controller', 'triggerCopyModule', 'after'))
|
||||
{
|
||||
$oModuleController->insertTrigger('module.procModuleAdminCopyModule', 'editor', 'controller', 'triggerCopyModule', 'after');
|
||||
}
|
||||
|
||||
return new Object(0, 'success_updated');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -426,5 +426,20 @@
|
|||
FileHandler::removeFile($oEditorModel->getCacheFile(true, $site_srl));
|
||||
FileHandler::removeFile($oEditorModel->getCacheFile(false, $site_srl));
|
||||
}
|
||||
|
||||
function triggerCopyModule(&$obj)
|
||||
{
|
||||
$oModuleModel = &getModel('module');
|
||||
$editorConfig = $oModuleModel->getModulePartConfig('editor', $obj->originModuleSrl);
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
if(is_array($obj->moduleSrlList))
|
||||
{
|
||||
foreach($obj->moduleSrlList AS $key=>$moduleSrl)
|
||||
{
|
||||
$oModuleController->insertModulePartConfig('editor', $moduleSrl, $editorConfig);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@
|
|||
.xpress-editor .tool:after{content:"";display:block;clear:both}
|
||||
.xpress-editor .tool ul{position:relative;overflow:visible;float:left;margin:0 5px 2px 0 !important;z-index:2;border:0 !important}
|
||||
.xpress-editor .tool ul.action{width:43px}
|
||||
.xpress-editor .tool ul.type{width:auto;white-space:nowrap}
|
||||
.xpress-editor .tool ul.type{width:auto;white-space:nowrap;height:21px}
|
||||
.xpress-editor .tool ul.style{width:169px;z-index:6}
|
||||
.xpress-editor .tool ul.paragraph{width:169px;z-index:5}
|
||||
.xpress-editor .tool ul.extra1{width:69px;z-index:4}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -88,6 +88,11 @@ function start(cfg) {
|
|||
uploaderStatusID : cfg.uploaderStatusID
|
||||
};
|
||||
|
||||
if(typeof(enforce_ssl)!=="undefined" && enforce_ssl)
|
||||
{
|
||||
settings.upload_url = request_uri+'index.php';
|
||||
};
|
||||
|
||||
// preview
|
||||
$('#'+cfg.fileListAreaID).click(previewFiles);
|
||||
|
||||
|
|
@ -137,7 +142,7 @@ function _true(){ return true };
|
|||
|
||||
defaultHandlers = {
|
||||
onFileQueued : _true,
|
||||
onFileQueueError : function(flie, errorCode, message) {
|
||||
onFileQueueError : function(file, errorCode, message) {
|
||||
try {
|
||||
switch(errorCode) {
|
||||
case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED :
|
||||
|
|
|
|||
|
|
@ -70,6 +70,9 @@
|
|||
// A column to determine a target type
|
||||
if(!$oDB->isColumnExists('files', 'upload_target_type')) return true;
|
||||
|
||||
// 2012. 08. 29 Add a trigger to copy additional setting when the module is copied
|
||||
if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'file', 'controller', 'triggerCopyModule', 'after')) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -124,6 +127,12 @@
|
|||
// A column to determine a target type
|
||||
if(!$oDB->isColumnExists('files', 'upload_target_type')) $oDB->addColumn('files', 'upload_target_type', 'char', '3');
|
||||
|
||||
// 2012. 08. 29 Add a trigger to copy additional setting when the module is copied
|
||||
if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'file', 'controller', 'triggerCopyModule', 'after'))
|
||||
{
|
||||
$oModuleController->insertTrigger('module.procModuleAdminCopyModule', 'file', 'controller', 'triggerCopyModule', 'after');
|
||||
}
|
||||
|
||||
return new Object(0, 'success_updated');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -777,5 +777,20 @@
|
|||
function printUploadedFileList($editor_sequence, $upload_target_srl) {
|
||||
return;
|
||||
}
|
||||
|
||||
function triggerCopyModule(&$obj)
|
||||
{
|
||||
$oModuleModel = &getModel('module');
|
||||
$fileConfig = $oModuleModel->getModulePartConfig('file', $obj->originModuleSrl);
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
if(is_array($obj->moduleSrlList))
|
||||
{
|
||||
foreach($obj->moduleSrlList AS $key=>$moduleSrl)
|
||||
{
|
||||
$oModuleController->insertModulePartConfig('file', $moduleSrl, $fileConfig);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -177,9 +177,10 @@
|
|||
* @param string $sortIndex The column that used as sort index
|
||||
* @return array Returns array of object that contains file information. If no result returns null.
|
||||
**/
|
||||
function getFiles($upload_target_srl, $columnList = array(), $sortIndex = 'file_srl') {
|
||||
function getFiles($upload_target_srl, $columnList = array(), $sortIndex = 'file_srl', $ckValid = false) {
|
||||
$args->upload_target_srl = $upload_target_srl;
|
||||
$args->sort_index = $sortIndex;
|
||||
if($ckValid) $args->isvalid = 'Y';
|
||||
$output = executeQuery('file.getFiles', $args, $columnList);
|
||||
if(!$output->data) return;
|
||||
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@
|
|||
<value xml:lang="ko"><![CDATA[허용 확장자]]></value>
|
||||
<value xml:lang="en"><![CDATA[Allowed extentsions]]></value>
|
||||
<value xml:lang="jp"><![CDATA[ここで指定された種類のファイルのみ添付できます。]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[只允许上传指定的扩展名。></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[只允许上传指定的扩展名。]]></value>
|
||||
<value xml:lang="zh-TW"><![CDATA[設定允許上傳的檔案類型。]]></value>
|
||||
<value xml:lang="fr"><![CDATA[Extensions consentis seulement peuvent etre attaches.]]></value>
|
||||
<value xml:lang="ru"><![CDATA[Только файлы с разрешенными расширениями могут быть вложены.]]></value>
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="upload_target_srl" var="upload_target_srl" filter="number" notnull="notnull" />
|
||||
<condition operation="equal" column="isvalid" var="isvalid" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" defualt="source_filename" order="asc" />
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@
|
|||
$buff = '<?php if(!defined("__ZBXE__")) exit();'."\n";
|
||||
foreach($ftp_info as $key => $val) {
|
||||
if(!$val) continue;
|
||||
if(preg_match('/(<\?|<\?php|\?>)/xsm', preg_replace('/\s/', '', $val)))
|
||||
if(preg_match('/(<\?|<\?php|\?>|fputs|fopen|fwrite|fgets|fread|\/\*|\*\/|chr\()/xsm', preg_replace('/\s/', '', $val)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<p>We recommend you to delete this demo page before launching the site.<br />Please check the following list to verify whether the installation has been properly completed.<br />You can see all the components on the administration page.</p>
|
||||
<ol>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminContent')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminAllInstanceList')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
</li>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module', 'admin', 'act', 'dispMenuAdminContent')}" target="_blank">Menu module</a></strong> has been successfully installed, you can see both <strong>global and local navigations</strong>.
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<p>We recommend you to delete this demo page before launching the site.<br />Please check the following list to verify whether the installation has been properly completed.<br />You can see all the components on the administration page.</p>
|
||||
<ol>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminContent')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminAllInstanceList')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
</li>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module', 'admin', 'act', 'dispMenuAdminContent')}" target="_blank">Menu module</a></strong> has been successfully installed, you can see both <strong>global and local navigations</strong>.
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<p>We recommend you to delete this demo page before launching the site.<br />Please check the following list to verify whether the installation has been properly completed.<br />You can see all the components on the administration page.</p>
|
||||
<ol>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminContent')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminAllInstanceList')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
</li>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module', 'admin', 'act', 'dispMenuAdminContent')}" target="_blank">Menu module</a></strong> has been successfully installed, you can see both <strong>global and local navigations</strong>.
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<p>ウェブサイトを始める前にこのページを削除してください。<br />以下のリストの格項目をチェックして設置状態を確認することができます。<br />管理ページから全てのコンポネントを確認することができます。</p>
|
||||
<ol>
|
||||
<li>
|
||||
画面の構成から <strong>header</strong>, <strong>body</strong>, <strong>footer</strong>が見えたら、<strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminContent')}" target="_blank">レイアウト</a></strong>は正常に設置されたことです。
|
||||
画面の構成から <strong>header</strong>, <strong>body</strong>, <strong>footer</strong>が見えたら、<strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminAllInstanceList')}" target="_blank">レイアウト</a></strong>は正常に設置されたことです。
|
||||
</li>
|
||||
<li>
|
||||
<strong>画面上端と左に位置する二つのメニュー</strong>が見えたら、<strong><a href="{getUrl('', 'module', 'admin', 'act', 'dispMenuAdminContent')}" target="_blank">メニューモジュール</a></strong>は正常に設置されたことです
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<p>XE core설치가 성공적으로 완료되었습니다.<br />이 페이지는 데모 페이지 이므로 추후 사이트 운영시 삭제 가능합니다.<br />모든 설치요소는 관리자로 로그인하셔야 확인할 수 있습니다.</p>
|
||||
<ol>
|
||||
<li>
|
||||
<strong>헤더</strong>, <strong>본문</strong>, <strong>풋터</strong>로 구성된 화면이 보인다면 <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminContent')}" target="_blank">레이아웃</a></strong>이 정상적으로 설치된 것입니다.
|
||||
<strong>헤더</strong>, <strong>본문</strong>, <strong>풋터</strong>로 구성된 화면이 보인다면 <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminAllInstanceList')}" target="_blank">레이아웃</a></strong>이 정상적으로 설치된 것입니다.
|
||||
</li>
|
||||
<li>
|
||||
<strong>글로벌 네비게이션</strong>과 <strong>로컬 네비게이션</strong>이 보인다면 <strong><a href="{getUrl('', 'module', 'admin', 'act', 'dispMenuAdminContent')}" target="_blank">메뉴 모듈</a></strong>이 설치된 것입니다.
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<p>We recommend you to delete this demo page before launching the site.<br />Please check the following list to verify whether the installation has been properly completed.<br />You can see all the components on the administration page.</p>
|
||||
<ol>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminContent')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminAllInstanceList')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
</li>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module', 'admin', 'act', 'dispMenuAdminContent')}" target="_blank">Menu module</a></strong> has been successfully installed, you can see both <strong>global and local navigations</strong>.
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<p>We recommend you to delete this demo page before launching the site.<br />Please check the following list to verify whether the installation has been properly completed.<br />You can see all the components on the administration page.</p>
|
||||
<ol>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminContent')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminAllInstanceList')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
</li>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module', 'admin', 'act', 'dispMenuAdminContent')}" target="_blank">Menu module</a></strong> has been successfully installed, you can see both <strong>global and local navigations</strong>.
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<p>We recommend you to delete this demo page before launching the site.<br />Please check the following list to verify whether the installation has been properly completed.<br />You can see all the components on the administration page.</p>
|
||||
<ol>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminContent')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminAllInstanceList')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
</li>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module', 'admin', 'act', 'dispMenuAdminContent')}" target="_blank">Menu module</a></strong> has been successfully installed, you can see both <strong>global and local navigations</strong>.
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<p>We recommend you to delete this demo page before launching the site.<br />Please check the following list to verify whether the installation has been properly completed.<br />You can see all the components on the administration page.</p>
|
||||
<ol>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminContent')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminAllInstanceList')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
</li>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module', 'admin', 'act', 'dispMenuAdminContent')}" target="_blank">Menu module</a></strong> has been successfully installed, you can see both <strong>global and local navigations</strong>.
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<p>We recommend you to delete this demo page before launching the site.<br />Please check the following list to verify whether the installation has been properly completed.<br />You can see all the components on the administration page.</p>
|
||||
<ol>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminContent')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
When <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminAllInstanceList')}" target="_blank">the layout</a></strong> has been successfully installed, you can see the screen containing a <strong>header</strong>, a <strong>content body</strong>, and a <strong>footer</strong>.
|
||||
</li>
|
||||
<li>
|
||||
When <strong><a href="{getUrl('', 'module', 'admin', 'act', 'dispMenuAdminContent')}" target="_blank">Menu module</a></strong> has been successfully installed, you can see both <strong>global and local navigations</strong>.
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<p>瞍艘惴孙亍匮笞颀铖,綦嗷撷鸲螽闫埕<EFBFBD>攸。<br />綦塔?欷<><E6ACB7>偻<EFBFBD>煦憷茭飓镝<E9A393>颌涮睇枨圜。<br />师瞍畏租戡<EFBFBD>攸耖首谈岫牦疒遂。</p>
|
||||
<ol>
|
||||
<li>
|
||||
幼 <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminContent')}" target="_blank">鼹攸噔酮</a></strong> 飓圜晚颌涮睇懔,师首谈镖肆匮<E88286>钴 <strong><EFBFBD>庀</strong>,<strong>耶榛瘾赭</strong>妯 <strong><EFBFBD>诃</strong>。
|
||||
幼 <strong><a href="{getUrl('', 'module','admin', 'act', 'dispLayoutAdminAllInstanceList')}" target="_blank">鼹攸噔酮</a></strong> 飓圜晚颌涮睇懔,师首谈镖肆匮<E88286>钴 <strong><EFBFBD>庀</strong>,<strong>耶榛瘾赭</strong>妯 <strong><EFBFBD>诃</strong>。
|
||||
</li>
|
||||
<li>
|
||||
幼 <strong><a href="{getUrl('', 'module', 'admin', 'act', 'dispMenuAdminContent')}" target="_blank">嘣婴偌疒</a></strong> 飓圜晚颌涮睇懔,师首谈 <strong>瘾嘣婴<EFBFBD>憝嘣婴</strong>。
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
<!--%import("white.css")-->
|
||||
<!--@end-->
|
||||
|
||||
<!--%import("is.js")-->
|
||||
|
||||
<div id="spot">
|
||||
<form action="{getUrl()}" method="post" class="search" id="fo_is" no-error-return-url="true" >
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
|
|
|
|||
|
|
@ -272,9 +272,6 @@
|
|||
return new Object(-1, 'msg_invalid_request');
|
||||
}
|
||||
|
||||
$code = preg_replace('/<\?.*(\?>)?/Usm', '', $code);
|
||||
$code = preg_replace('/<script[\s]*language[\s]*=("|\')php("|\')[\s]*>.*<\/script>/Usm', '', $code);
|
||||
|
||||
$oLayoutModel = &getModel('layout');
|
||||
$layout_file = $oLayoutModel->getUserLayoutHtml($layout_srl);
|
||||
FileHandler::writeFile($layout_file, $code);
|
||||
|
|
@ -630,7 +627,8 @@
|
|||
$oLayoutModel = &getModel('layout');
|
||||
$layout = $oLayoutModel->getLayout($sourceArgs->layout_srl);
|
||||
|
||||
$args->extra_vars = $oLayoutModel->getLayoutRawData($sourceArgs->layout_srl, array('extra_vars'));
|
||||
$output = $oLayoutModel->getLayoutRawData($sourceArgs->layout_srl, array('extra_vars'));
|
||||
$args->extra_vars = $output->extra_vars;
|
||||
$extra_vars = unserialize($args->extra_vars);
|
||||
|
||||
$oModuleController = &getController('module');
|
||||
|
|
|
|||
|
|
@ -101,6 +101,8 @@
|
|||
$layout_list[$item->layout][] = $item;
|
||||
}
|
||||
|
||||
usort($layout_list, array($this, 'sortLayoutInstance'));
|
||||
|
||||
Context::set('layout_list', $layout_list);
|
||||
|
||||
$this->setTemplateFile('layout_all_instance_list');
|
||||
|
|
@ -109,6 +111,22 @@
|
|||
$security->encodeHTML('layout_list..');
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort layout instance by layout name, instance name
|
||||
*/
|
||||
function sortLayoutInstance($a, $b)
|
||||
{
|
||||
$aTitle = strtolower($a['title']);
|
||||
$bTitle = strtolower($b['title']);
|
||||
|
||||
if($aTitle == $bTitle)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ($aTitle < $bTitle) ? -1 : 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Display list of pc layout instance
|
||||
* @return void|Object (void : success, Object : fail)
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@
|
|||
if(!$output->toBool())
|
||||
return;
|
||||
|
||||
return $output->data->extra_vars;
|
||||
return $output->data;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -143,7 +143,7 @@
|
|||
$searched_count = count($searched_list);
|
||||
if(!$searched_count) return;
|
||||
|
||||
natcasesort($searched_list);
|
||||
// natcasesort($searched_list);
|
||||
// Return information for looping searched list of layouts
|
||||
$list = array();
|
||||
for($i=0;$i<$searched_count;$i++) {
|
||||
|
|
@ -152,6 +152,11 @@
|
|||
// Get information of the layout
|
||||
$layout_info = $this->getLayoutInfo($layout, null, $layout_type);
|
||||
|
||||
if(!$layout_info)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($withAutoinstallInfo)
|
||||
{
|
||||
// get easyinstall remove url
|
||||
|
|
@ -170,9 +175,37 @@
|
|||
}
|
||||
$list[] = $layout_info;
|
||||
}
|
||||
|
||||
usort($list, array($this, 'sortLayoutByTitle'));
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort layout by title
|
||||
*/
|
||||
function sortLayoutByTitle($a, $b)
|
||||
{
|
||||
if(!$a->title)
|
||||
{
|
||||
$a->title = $a->layout;
|
||||
}
|
||||
|
||||
if(!$b->title)
|
||||
{
|
||||
$b->title = $b->layout;
|
||||
}
|
||||
|
||||
$aTitle = strtolower($a->title);
|
||||
$bTitle = strtolower($b->title);
|
||||
|
||||
if($aTitle == $bTitle)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ($aTitle < $bTitle) ? -1 : 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a count of layout
|
||||
* @param string $layoutType (P : PC, M : Mobile)
|
||||
|
|
@ -238,6 +271,7 @@
|
|||
// Read the xml file for module skin information
|
||||
if(!$xml_file) $xml_file = sprintf("%sconf/info.xml", $layout_path);
|
||||
if(!file_exists($xml_file)) {
|
||||
$layout_info->title = $layout;
|
||||
$layout_info->layout = $layout;
|
||||
$layout_info->path = $layout_path;
|
||||
$layout_info->layout_title = $layout_title;
|
||||
|
|
@ -254,6 +288,7 @@
|
|||
if(file_exists($cache_file)&&filemtime($cache_file)>filemtime($xml_file)) {
|
||||
@include($cache_file);
|
||||
|
||||
|
||||
if($layout_info->extra_var && $vars) {
|
||||
foreach($vars as $key => $value) {
|
||||
if(!$layout_info->extra_var->{$key} && !$layout_info->{$key}) {
|
||||
|
|
@ -261,6 +296,12 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!$layout_info->title)
|
||||
{
|
||||
$layout_info->title = $layout;
|
||||
}
|
||||
|
||||
return $layout_info;
|
||||
}
|
||||
// If no cache file exists, parse the xml and then return the variable.
|
||||
|
|
@ -484,13 +525,18 @@
|
|||
|
||||
if($header_script)
|
||||
{
|
||||
$header_script = str_replace('"','\\"',$header_script);
|
||||
$buff .= sprintf(' $layout_info->header_script = "%s"; ', str_replace('$','\$',$header_script));
|
||||
$buff .= sprintf(' $layout_info->header_script = "%s"; ', str_replace(array('$','"'),array('\$','\\"'),$header_script));
|
||||
}
|
||||
|
||||
$buff = '<?php if(!defined("__ZBXE__")) exit(); '.$buff.' ?>';
|
||||
FileHandler::writeFile($cache_file, $buff);
|
||||
if(file_exists($cache_file)) @include($cache_file);
|
||||
|
||||
if(!$layout_info->title)
|
||||
{
|
||||
$layout_info->title = $layout;
|
||||
}
|
||||
|
||||
return $layout_info;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -44,9 +44,6 @@
|
|||
$layout_srl = Context::get('layout_srl');
|
||||
$code = Context::get('code');
|
||||
|
||||
$code = preg_replace('/<\?.*(\?>)?/Usm', '', $code);
|
||||
$code = preg_replace('/<script[\s]*language[\s]*=("|\')php("|\')[\s]*>.*<\/script>/Usm', '', $code);
|
||||
|
||||
$code_css = Context::get('code_css');
|
||||
if(!$layout_srl || !$code) return new Object(-1, 'msg_invalid_request');
|
||||
// Get the layout information
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
var ConfirmCheck = xe.createPlugin('confirm_check', {
|
||||
API_BEFORE_VALIDATE: function(sender, params){
|
||||
return confirm(xe.lang.confirm_delete);
|
||||
if(params[0].className == 'layout_delete_form'){
|
||||
return confirm(xe.lang.confirm_delete);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var Validator = xe.getApp('Validator')[0];
|
||||
Validator.registerPlugin(new ConfirmCheck());
|
||||
Validator.registerPlugin(new ConfirmCheck());
|
||||
|
|
|
|||
|
|
@ -38,5 +38,46 @@
|
|||
</table>
|
||||
</div>
|
||||
<div cond="$layout_info->layout != 'faceoff'" class="btnArea">
|
||||
<span class="btn"><a href="{getUrl('act', 'dispLayoutAdminInsert', 'layout', $layout_info->layout)}">{$lang->cmd_insert}...</a></span>
|
||||
<span class="btn"><a href="#insertLayout" class="modalAnchor">{$lang->cmd_insert}...</a></span>
|
||||
</div>
|
||||
<div id="insertLayout" class="modal">
|
||||
<div class="fg">
|
||||
<h2></h2>
|
||||
|
||||
<form ruleset="insertLayout" action="./" class="form">
|
||||
<input type="hidden" name="module" value="layout" />
|
||||
<input type="hidden" name="act" value="procLayoutAdminInsert" />
|
||||
<input type="hidden" name="layout" value="{$layout_info->layout}" />
|
||||
<input type="hidden" name="_layout_type" value="{$type}" />
|
||||
<input type="hidden" name="success_return_url" value="{getUrl('act', 'dispLayoutAdminInstanceList')}" />
|
||||
<ul>
|
||||
<li>
|
||||
<p class="q">{$lang->layout}</p>
|
||||
<p class="a">{$layout_info->title} ver {$layout_info->version} ({$layout_info->layout})</p>
|
||||
</li>
|
||||
<li cond="$layout_info->path">
|
||||
<p class="q">{$lang->path}</p>
|
||||
<p class="a">{$layout_info->path}</p>
|
||||
</li>
|
||||
<li cond="$layout_info->description">
|
||||
<p class="q">{$lang->description}</p>
|
||||
<p class="a">{$layout_info->description}</p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="q">{$lang->author}</p>
|
||||
<p class="a"><a href="{$layout_info->author->homepage}" target="_blank">{$layout_info->layout->author->name}</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="q">{$lang->title}</p>
|
||||
<p class="a">
|
||||
<input type="text" name="title" value="" />
|
||||
</p>
|
||||
<p class="desc">{$lang->about_title}</p>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="btnArea">
|
||||
<span class="btn"><input type="submit" value="{$lang->cmd_insert}" /></span>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -2,11 +2,10 @@
|
|||
<load target="js/layout_modify.js" />
|
||||
|
||||
<h2 cond="$act == 'dispLayoutAdminModify'" class="h2">{$selected_layout->layout_title}</h2>
|
||||
<h2 cond="$act == 'dispLayoutAdminInsert'" class="h2">{$selected_layout->title}</h2>
|
||||
|
||||
<form id="config_form" ruleset="updateLayout"|cond="$act == 'dispLayoutAdminModify'" ruleset="insertLayout"|cond="$act == 'dispLayoutAdminInsert'" action="./" class="form" enctype="multipart/form-data" method="post">
|
||||
<form id="config_form" ruleset="updateLayout"|cond="$act == 'dispLayoutAdminModify'" action="./" class="form" enctype="multipart/form-data" method="post">
|
||||
<input type="hidden" name="module" value="layout" />
|
||||
<input type="hidden" name="act" value="procLayoutAdminUpdate"|cond="$act == 'dispLayoutAdminModify'" value="procLayoutAdminInsert"|cond="$act == 'dispLayoutAdminInsert'" />
|
||||
<input type="hidden" name="act" value="procLayoutAdminUpdate"|cond="$act == 'dispLayoutAdminModify'" />
|
||||
<input type="hidden" name="layout_srl" value="{$layout_srl}" />
|
||||
<input type="hidden" name="layout" value="{$selected_layout->layout}" />
|
||||
<input type="hidden" name="_layout_type" value="{$selected_layout->layout_type}" />
|
||||
|
|
@ -97,6 +96,12 @@
|
|||
<option loop="$var->options => $key, $val" value="{$key}" selected="selected"|cond="$key == $var->value">{$val->val}</option>
|
||||
</select>
|
||||
|
||||
<block cond="$var->type == 'checkbox'">
|
||||
<block loop="$var->options => $key, $val">
|
||||
<label><input type="checkbox" name="{$name}[]" value="{$key}" checked="checked"|cond="@in_array($key, $var->value)" /> {$val->val}</label>
|
||||
</block>
|
||||
</block>
|
||||
|
||||
<block cond="$var->type == 'radio'">
|
||||
<block loop="$var->options => $key, $val">
|
||||
<block cond="$val->thumbnail">
|
||||
|
|
@ -177,4 +182,4 @@
|
|||
<include target="include.multilang.html" />
|
||||
<include target="include.multilang.textarea.html" />
|
||||
</div>
|
||||
<iframe name="hiddenIframe" src="about:blank" width="0" height="0" frameborder="0"></iframe>
|
||||
<iframe name="hiddenIframe" src="about:blank" width="1000px" height="1000px" frameborder="0" style="position:absolute;top:-9999px;left:-9999px"></iframe>
|
||||
|
|
|
|||
|
|
@ -897,7 +897,7 @@
|
|||
<value xml:lang="vi"><![CDATA[Sửa đổi mật khẩu]]></value>
|
||||
</item>
|
||||
<item name="cmd_view_member_info">
|
||||
<value xml:lang="ko"><![CDATA[회원 정보 보기]]></value>
|
||||
<value xml:lang="ko"><![CDATA[회원정보 보기]]></value>
|
||||
<value xml:lang="en"><![CDATA[View Member Info]]></value>
|
||||
<value xml:lang="jp"><![CDATA[会員情報確認]]></value>
|
||||
<value xml:lang="zh-CN"><![CDATA[个人资料]]></value>
|
||||
|
|
@ -1576,6 +1576,7 @@
|
|||
</item>
|
||||
<item name="about_rechecked_password">
|
||||
<value xml:lang="ko"><![CDATA[회원의 정보를 안전하게 보호하기 위해 비밀번호를 다시 한번 확인 합니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Confirm your password before editing account information.]]></value>
|
||||
</item>
|
||||
<item name="about_user_id">
|
||||
<value xml:lang="ko"><![CDATA[회원 ID는 3~20자 사이의 영문+숫자로 이루어져야 하며 영문으로 시작해야 합니다.]]></value>
|
||||
|
|
@ -2486,18 +2487,23 @@ Bạn có thể quản lý thành viên bằng cách tạo những nhóm mới,
|
|||
<value xml:lang="en"><![CDATA[Group]]></value>
|
||||
</item>
|
||||
<item name="retrieve_password">
|
||||
<value xml:lang="ko"><![CDATA[비밀번호 찾기]]></value>
|
||||
<value xml:lang="en"><![CDATA[Retrieve password]]></value>
|
||||
</item>
|
||||
<item name="excess_ip_access_count">
|
||||
<value xml:lang="ko"><![CDATA[로그인 가능 횟수를 초과하셨습니다. %s 간 로그인 하실 수 없습니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[There was too much sign in trial from your devices in a short time. You can not sign in for %s.]]></value>
|
||||
</item>
|
||||
<item name="enable_login_fail_report">
|
||||
<value xml:lang="ko"><![CDATA[계정 무한 대입 방지 사용]]></value>
|
||||
<value xml:lang="en"><![CDATA[Sign in failure]]></value>
|
||||
</item>
|
||||
<item name="login_fail_report">
|
||||
<value xml:lang="ko"><![CDATA[로그인 실패 기록 보고 입니다.]]></value>
|
||||
<value xml:lang="en"><![CDATA[Sign in failure report.]]></value>
|
||||
</item>
|
||||
<item name="login_fail_report_contents">
|
||||
<value xml:lang="ko"><![CDATA[<h2>확인하지 않은 로그인 실패 기록이 있습니다.</h2><div>%1$s</div><p>* 이 알림은 한번만 보입니다.<br />* 이 메시지는 쪽지와 이메일로 발송됩니다.<br />* 이 메시지는 로그인이 성공한 순간, 로그인 성공 이전 실패 기록을 모아서 발송합니다.<br />발송 시각: %2$s</p>]]></value>
|
||||
<value xml:lang="en"><![CDATA[<h2>There is unfolded sign in failure report</h2><div>%1$s</div><p>* This notification is shown once.<br />* This message will be send to your email and message.<br />* This message contains sign in failure records, before a ID sign in success.<br />Sending: %2$s</p>]]></value>
|
||||
<value xml:lang="ko"><![CDATA[<h2>로그인 실패 기록을 알려드립니다.</h2><div>%1$s</div><p>* 비밀번호를 틀리는 등의 일이 없었는데 이 메시지를 보신다면, 계정 관리에 유의해주시기 바랍니다.<br />* 이 메시지는 로그인이 성공한 순간 누적 로그인 실패 기록이 많을 경우, 로그인 성공 이전 실패 기록을 모아서 발송합니다.<br />발송 시각: %2$s</p>]]></value>
|
||||
<value xml:lang="en"><![CDATA[<h2>There is recorded sign in failures.</h2><div>%1$s</div><p>* This notification is shown once.<br />* This message contains sign in failure records, before a ID sign in success.<br />Sending: %2$s</p>]]></value>
|
||||
</item>
|
||||
</lang>
|
||||
|
|
|
|||
34
modules/member/m.skins/default/css/member.css
Normal file
34
modules/member/m.skins/default/css/member.css
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
@charset "utf-8";
|
||||
/* Element Reset */
|
||||
.xm,
|
||||
.xm table,
|
||||
.xm input,
|
||||
.xm textarea,
|
||||
.xm select,
|
||||
.xm button{font-family:Tahoma,Geneva,sans-serif;font-size:12px;color:#333}
|
||||
.xm button,
|
||||
.xm input[type=submit],
|
||||
.xm input[type=reset],
|
||||
.xm input[type=button]{cursor:pointer;overflow:visible}
|
||||
.xm img{border:0}
|
||||
.xm p{line-height:1.5}
|
||||
/* Heading */
|
||||
.xm .hx{position:relative;border-bottom:1px solid #ccc8be;padding:8px 10px;margin:0}
|
||||
.xm .hx:after{content:"";margin:0 -10px;position:relative;top:10px;display:block;clear:both;height:1px;background:#fff}
|
||||
.xm .hx.h2{background:#e5e5e5;text-shadow:1px 1px 0 #fff;position:relative;zoom:1}
|
||||
.xm .hx>h2{margin:0 10px 0 0;display:inline;font-size:16px;line-height:1.4}
|
||||
.xm .hx a{color:#000}
|
||||
/* Content */
|
||||
.xm .co{margin: 10px;line-height: 1.4;font-size: 14px;color:#333}
|
||||
/* DL */
|
||||
.xm .dl{margin:15px 0}
|
||||
.xm .dl>dt{font-weight:bold;margin-top:10px}
|
||||
.xm .dl>dt>em{font-style:normal;color:#e00}
|
||||
.xm .dl>dd{margin-left:20px}
|
||||
/* Button Area */
|
||||
.xm .ba{margin:15px 0;padding:0;list-style:none;border:1px solid #ddd;border-radius:4px}
|
||||
.xm .ba li{border-top:1px solid #ddd}
|
||||
.xm .ba li:first-child{border:0}
|
||||
.xm .ba li>a,
|
||||
.xm .ba li>button,
|
||||
.xm .ba li>input{display:block;white-space:nowrap;padding:7px 10px;text-decoration:none;color:#000;background:#f4f4f4;text-shadow:0 1px 0 #fff;overflow:hidden;text-overflow:ellipsis}
|
||||
48
modules/member/m.skins/default/css/mlogin.css
Normal file
48
modules/member/m.skins/default/css/mlogin.css
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
/* Mobile XE Login (/modules/member/tpl/login_form.html) */
|
||||
body{margin:0;background:#fff;color:#000;word-wrap:break-word}
|
||||
body,input,textarea,select,button,table{font-family:Tahoma,Geneva,sans-serif}
|
||||
img{border:0}
|
||||
em{font-style:normal}
|
||||
form{margin:0;padding:0}
|
||||
fieldset{margin:0;padding:0;border:0}
|
||||
textarea{resize:vertical}
|
||||
input[type=checkbox],
|
||||
input[type=radio]{width:13px;height:13px;margin:0;padding:0}
|
||||
/* Common */
|
||||
.fl{float:left}
|
||||
.fr{float:right}
|
||||
/* Body */
|
||||
.bd{background:#f8f8f8;padding:1px 0;border-bottom:1px solid #ccc8be}
|
||||
.bd:after{content:"";margin:0;position:relative;top:3px;display:block;clear:both;height:1px;background:#fff}
|
||||
/* Hx */
|
||||
.hx{position:relative;border-bottom:1px solid #ccc8be;padding:8px 10px;margin:0}
|
||||
.hx:after{content:"";margin:0 -10px;position:relative;top:10px;display:block;clear:both;height:1px;background:#fff}
|
||||
.hx.h2{background:#e5e5e5}
|
||||
.hx h2{margin:0 10px 0 0;display:inline}
|
||||
.hx h2{font-size:16px;line-height:1.4}
|
||||
/* Form Field */
|
||||
.ff{margin:0;padding:10px 0}
|
||||
.ff ul{margin:0 10px 10px 10px;padding:10px 0 0 0;list-style:none}
|
||||
.ff li{margin:0 0 5px 0;padding:0}
|
||||
.ff label+input[type=text],
|
||||
.ff label+input[type=password],
|
||||
.ff label+textarea,
|
||||
.ff label+select{display:block;width:96%;font-size:14px;margin:0 0 5px 0}
|
||||
.ff label+input[type=text],
|
||||
.ff label+input[type=password],
|
||||
.ff label+textarea{padding:5px}
|
||||
/* Help */
|
||||
.hp{background:#eee;border-top:1px solid #ddd;padding:12px 10px !important;margin:10px 0px !important;}
|
||||
.hp li{margin:0;display:inline;border-left:1px solid #ccc;padding:0 4px 0 8px;}
|
||||
.hp li:first-child{border:0;}
|
||||
.hp a{color:#333;text-decoration:none}
|
||||
/* Button Area */
|
||||
.bna{text-align:center;padding:0 10px;margin:10px 0}
|
||||
.bna:after{content:"";display:block;clear:both}
|
||||
.bn{display:inline-block;line-height:26px !important;padding:0 10px;font-size:12px;font-weight:bold;border:1px solid;text-decoration:none;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;cursor:pointer;vertical-align:middle}
|
||||
.bn[type=submit],
|
||||
.bn[type=button]{height:28px}
|
||||
.bn[href]{height:26px}
|
||||
.bn.dark{border-color:#666;background:#777 -webkit-gradient(linear,0% 0%,0% 100%,from(#7e7c78),to(#5c5b58));background:#777 -moz-linear-gradient(top,#7e7c78,#5c5b58);background-color:#777;color:#fff;box-shadow:0 0 1px #fff inset;-moz-box-shadow:0 0 1px #fff inset;-webkit-box-shadow:0 0 1px #fff inset}
|
||||
.bn.white{border-color:#b5b5b5;background:#1b1b1b -webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#f6f6f6),color-stop(0.5,#f0f0f0),color-stop(0.5,#e4e4e4));background:#1b1b1b -moz-linear-gradient(top,#fff,#e4e4e4);background-color:#fff;color:#000}
|
||||
.message{border:1px solid #ddd;background:#f8f8f8;margin:1em 0;padding:0 1em;border-radius:5px;line-height:1.4;font-size:12px}.message p{margin:1em 0!important}.message em{font-style:normal;color:#e00}.message.info,.message.error,.message.update{padding-left:55px}.message.info{border-color:#e0e8ec;background:#edf9ff url(../../../../../common/img/msg.Info.png) no-repeat 1em .5em}.message.error{border-color:#efdcdc;background:#ffecec url(../../../../../../common/img/msg.error.png) no-repeat 1em .5em}.message.update{border-color:#eae9dc;background:#fffdef url(../../../../../common/img/msg.update.png) no-repeat 1em .5em}
|
||||
60
modules/member/m.skins/default/css/msignup.css
Normal file
60
modules/member/m.skins/default/css/msignup.css
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
@charset "utf-8";
|
||||
/* Mobile XE (/modules/member/tpl/signup_form.html) */
|
||||
body{margin:0;background:#fff;color:#000;word-wrap:break-word}
|
||||
body,input,textarea,select,button,table{font-family:Tahoma,Geneva,sans-serif}
|
||||
img{border:0}
|
||||
em{font-style:normal}
|
||||
form{margin:0;padding:0}
|
||||
fieldset{margin:0;padding:0;border:0}
|
||||
textarea{resize:vertical}
|
||||
input[type=checkbox],
|
||||
input[type=radio]{width:13px;height:13px;margin:0;padding:0}
|
||||
/* Body */
|
||||
.bd{background:#f8f8f8;padding:1px 0}
|
||||
/* Hx */
|
||||
.hx{position:relative;border-bottom:1px solid #ccc8be;padding:8px 10px;margin:0}
|
||||
.hx:after{content:"";margin:0 -10px;position:relative;top:10px;display:block;clear:both;height:1px;background:#fff}
|
||||
.hx.h2{background:#e5e5e5;text-shadow:1px 1px 0 #fff}
|
||||
.hx.h2 em{font-size:12px;color:#6352d2}
|
||||
.hx.h3{background:#868686;color:#fff}
|
||||
.hx.h3 em{font-size:12px}
|
||||
.hx h2, .hx h3{margin:0 10px 0 0;display:inline}
|
||||
.hx h2{font-size:16px;line-height:1.4}
|
||||
.hx h3{font-size:14px}
|
||||
.hx a{color:#000}
|
||||
.hx .ex{font-size:12px}
|
||||
.hx .tg{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;overflow:visible;border:0;cursor:pointer;opacity:0;background:none}
|
||||
.hx .ca{font-size:12px;text-decoration:underline;color:#333}
|
||||
.hx .ca:after{content:"";display:inline-block;position:relative;left:4px;width:0;height:0;border:4px solid;border-color:transparent;border-left-color:#8d7de1;margin:0 -8px 0 0}
|
||||
.hx .write{position:absolute;top:8px;right:10px;background-position:0 0;display:inline-block;width:28px;height:27px;font-size:0;overflow:hidden;text-indent:28px}
|
||||
/* Form Field */
|
||||
.ff{margin:0;padding:10px 0}
|
||||
.ff ul{margin:0 10px 10px 10px;padding:10px 0 0 0;list-style:none}
|
||||
.ff li{margin:0 0 5px 0;padding:0}
|
||||
.ff li p{color:#666}
|
||||
.ff li>label:first-child{display:block;font-weight:bold}
|
||||
.ff label+input[type=text],
|
||||
.ff label+input[type=password],
|
||||
.ff label+textarea,
|
||||
.ff label+select,
|
||||
.ff label+select+input[type=text],
|
||||
.ff .inputText{display:block;width:96%;font-size:14px;margin:0 0 5px 0}
|
||||
.ff label+input[type=text],
|
||||
.ff label+input[type=password],
|
||||
.ff label+textarea,
|
||||
.ff label+select+input[type=text],
|
||||
.ff .inputText,
|
||||
.ff .tel input[type=text]{padding:5px}
|
||||
.ff .krZip input[type=text]{width:77%;font-size:14px;margin:0 0 5px 0;padding:5px}
|
||||
/* Button Area */
|
||||
.bna{text-align:center;padding:0 10px;margin:10px 0}
|
||||
.bna:after{content:"";display:block;clear:both}
|
||||
.bn{display:inline-block;line-height:26px !important;padding:0 10px;font-size:12px;font-weight:bold;border:1px solid;text-decoration:none;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;cursor:pointer;vertical-align:middle}
|
||||
.bn[type=submit],
|
||||
.bn[type=button]{height:28px}
|
||||
.bn[href]{height:26px}
|
||||
.bn.dark{border-color:#666;background:#777 -webkit-gradient(linear,0% 0%,0% 100%,from(#7e7c78),to(#5c5b58));background:#777 -moz-linear-gradient(top,#7e7c78,#5c5b58);background-color:#777;color:#fff;box-shadow:0 0 1px #fff inset;-moz-box-shadow:0 0 1px #fff inset;-webkit-box-shadow:0 0 1px #fff inset}
|
||||
.bn.white{border-color:#b5b5b5;background:#1b1b1b -webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#f6f6f6),color-stop(0.5,#f0f0f0),color-stop(0.5,#e4e4e4));background:#1b1b1b -moz-linear-gradient(top,#fff,#e4e4e4);background-color:#fff;color:#000}
|
||||
.message{border:1px solid #ddd;background:#f8f8f8;margin:1em 0;padding:0 1em;border-radius:5px;line-height:1.4;font-size:12px}.message p{margin:1em 0!important}.message em{font-style:normal;color:#e00}.message.info,.message.error,.message.update{padding-left:55px}.message.info{border-color:#e0e8ec;background:#edf9ff url(../../../../common/img/msg.Info.png) no-repeat 1em .5em}.message.error{border-color:#efdcdc;background:#ffecec url(../../../../common/img/msg.error.png) no-repeat 1em .5em}.message.update{border-color:#eae9dc;background:#fffdef url(../../../../common/img/msg.update.png) no-repeat 1em .5em}
|
||||
.agreement .text{height:200px;overflow-y:auto;}
|
||||
.bn a{text-decoration:none;}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<load target="./../../../common/js/jquery.min.js" usecdn="true" index="-1000000" />
|
||||
<load target="./../../../common/js/xe.min.js" usecdn="true" index="-1000000" />
|
||||
<load target="./../../../../common/js/jquery.min.js" usecdn="true" index="-1000000" />
|
||||
<load target="./../../../../common/js/xe.min.js" usecdn="true" index="-1000000" />
|
||||
<load target="css/msignup.css" usecdn="true" />
|
||||
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
27
modules/member/m.skins/default/leave_form.html
Normal file
27
modules/member/m.skins/default/leave_form.html
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<load target="./../../../../common/js/jquery.min.js" usecdn="true" index="-1000000" />
|
||||
<load target="./../../../../common/js/xe.min.js" usecdn="true" index="-1000000" />
|
||||
<load target="css/msignup.css" usecdn="true" />
|
||||
<h2 class="h2">{$member_title = $lang->msg_leave_member}</h2>
|
||||
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<form ruleset="leaveMember" id="fo_insert_member" class="ff" action="./" method="post">
|
||||
<input type="hidden" name="module" value="member" />
|
||||
<input type="hidden" name="act" value="procMemberLeave" />
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<input type="hidden" name="document_srl" value="{$document_srl}" />
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<ul>
|
||||
<li>
|
||||
<label for="identifier">{Context::getLang($identifier)}</label>
|
||||
<p id="identifier">{$formValue}</p>
|
||||
</li>
|
||||
<li>
|
||||
<label for="cpw">{$lang->password}</label>
|
||||
<input type="password" name="password" id="cpw" />
|
||||
</li>
|
||||
</ul>
|
||||
<div class="bna">
|
||||
<input type="submit" class="bn dark" value="{$lang->cmd_leave}" />
|
||||
</div>
|
||||
</form>
|
||||
44
modules/member/m.skins/default/login_form.html
Normal file
44
modules/member/m.skins/default/login_form.html
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
<load target="./../../../../common/js/jquery.min.js" usecdn="true" index="-1000000" />
|
||||
<load target="css/mlogin.css" usecdn="true" />
|
||||
<div class="bd">
|
||||
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<div class="hx h2">
|
||||
<h2>{$lang->cmd_login}</h2>
|
||||
</div>
|
||||
<form action="./" method="POST" class="ff">
|
||||
<input type="hidden" name="module" value="member" />
|
||||
<input type="hidden" name="act" value="procMemberLogin" />
|
||||
<input type="hidden" name="redirect_url" value="{getUrl('act','')}" />
|
||||
<ul>
|
||||
<li><label for="id"><!--@if($identifier == 'user_id')-->{$lang->user_id}<!--@else-->{$lang->email_address}<!--@end--></label><input name="user_id" type="text" id="id" value="" /></li>
|
||||
<li><label for="pw">{$lang->password}</label><input name="password" type="password" id="pw" value="" /></li>
|
||||
</ul>
|
||||
<div class="message info" id="keep_msg" style="display:none;">
|
||||
<p>{$lang->about_keep_warning}</p>
|
||||
</div>
|
||||
<div class="bna">
|
||||
<div class="fl"><input name="keep_signed" type="checkbox" value="Y" id="autoLogin" /> <label for="autoLogin">{$lang->keep_signed}</label></div>
|
||||
<div class="fr"><button type="submit" class="bn dark">{$lang->cmd_login}</button></div>
|
||||
</div>
|
||||
<ul class="hp">
|
||||
<li><a href="{getUrl('','act','dispMemberFindAccount')}"><span>{$lang->cmd_find_member_account}</span></a></li>
|
||||
<li><a href="{getUrl('','act','dispMemberSignUpForm')}"><span>{$lang->cmd_signup}</span></a></li>
|
||||
</ul>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
jQuery(function($){
|
||||
var keep_msg = $('#keep_msg');
|
||||
keep_msg.hide();
|
||||
$('#autoLogin').change(function(){
|
||||
if($(this).is(':checked')){
|
||||
keep_msg.slideDown(200);
|
||||
} else {
|
||||
keep_msg.slideUp(200);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
28
modules/member/m.skins/default/member_info.html
Normal file
28
modules/member/m.skins/default/member_info.html
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<load target="css/member.css" />
|
||||
<div class="xm">
|
||||
<div class="hx h2">
|
||||
<h2>{$lang->member_info}</h2>
|
||||
</div>
|
||||
<div class="co">
|
||||
<dl class="dl">
|
||||
<block loop="$displayDatas => $item">
|
||||
<dt>{$item->title} <em cond="$item->required || $item->mustRequired">*</em></dt>
|
||||
<dd>{$item->value}</dd>
|
||||
</block>
|
||||
<dt>{$lang->member_group}</dt>
|
||||
<dd>{implode(', ', $memberInfo['group_list'])}</dd>
|
||||
<dt>{$lang->signup_date}</dt>
|
||||
<dd>{zdate($memberInfo[regdate],"Y-m-d")}</dd>
|
||||
<block cond="$memberInfo[member_srl] == $logged_info->member_srl || $logged_info->is_admin == 'Y'">
|
||||
<dt>{$lang->last_login}</dt>
|
||||
<dd>{zdate($memberInfo[last_login],"Y-m-d")}</dd>
|
||||
</block>
|
||||
</dl>
|
||||
<ul class="ba" cond="$memberInfo['member_srl'] == $logged_info->member_srl">
|
||||
<li cond="$member_config->identifier == 'email_address'"><a href="{getUrl('act', 'dispMemberModifyEmailAddress')}">{$lang->cmd_modify_member_email_address}</a></li>
|
||||
<li><a href="{getUrl('act','dispMemberModifyInfo','member_srl','')}">{$lang->cmd_modify_member_info}</a></li>
|
||||
<li><a href="{getUrl('act','dispMemberModifyPassword','member_srl','')}">{$lang->cmd_modify_member_password}</a></li>
|
||||
<li><a href="{getUrl('act','dispMemberLeave','member_srl','')}">{$lang->cmd_leave}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
22
modules/member/m.skins/default/modify_email_address.html
Normal file
22
modules/member/m.skins/default/modify_email_address.html
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<load target="./../../../../common/js/jquery.min.js" usecdn="true" index="-1000000" />
|
||||
<load target="./../../../../common/js/xe.min.js" usecdn="true" index="-1000000" />
|
||||
<load target="css/msignup.css" usecdn="true" />
|
||||
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<form ruleset="modifyEmailAddress" class="ff" action="./" method="post">
|
||||
<input type="hidden" name="module" value="member" />
|
||||
<input type="hidden" name="act" value="procMemberModifyEmailAddress" />
|
||||
<input type="hidden" name="success_return_url" value="{getRequestUriByServerEnviroment()}" />
|
||||
<h2 class="h2">{$lang->cmd_modify_member_email_address}</h2>
|
||||
<p>{$lang->about_modify_member_email_address}</p>
|
||||
<ul>
|
||||
<li>
|
||||
<label for="email_address">{$lang->email_address}</label>
|
||||
<input type="text" id="email_address" name="email_address" value="" />
|
||||
</li>
|
||||
</ul>
|
||||
<div class="bna">
|
||||
<input type="submit" class="bn dark" value="{$lang->cmd_send_auth_new_emaill_address}" />
|
||||
</div>
|
||||
</form>
|
||||
48
modules/member/m.skins/default/modify_info.html
Normal file
48
modules/member/m.skins/default/modify_info.html
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
{@ Context::loadFile(array("./common/js/jquery.js", 'head', '', -100000), true) }
|
||||
{@ Context::loadFile(array("./common/js/js_app.js", 'head', '', -100000), true) }
|
||||
{@ Context::loadFile(array("./common/js/common.js", 'head', '', -100000), true) }
|
||||
{@ Context::loadFile(array("./common/js/xml_handler.js", 'head', '', -100000), true) }
|
||||
{@ Context::loadFile(array("./common/js/xml_js_filter.js", 'head', '', -100000), true) }
|
||||
|
||||
<load target="../../tpl/js/signup_check.js" />
|
||||
<load target="../../tpl/js/member_admin.js" />
|
||||
<load target="css/msignup.css" usecdn="true" />
|
||||
|
||||
<script type="text/javascript" >
|
||||
xe.lang.deleteProfileImage = '{$lang->msg_delete_extend_form}';
|
||||
xe.lang.deleteImageMark = '{$lang->msg_delete_extend_form}';
|
||||
xe.lang.deleteImageName = '{$lang->msg_delete_extend_form}';
|
||||
</script>
|
||||
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<div class="bd">
|
||||
<h2 class="h2">{$lang->msg_update_member}</h2>
|
||||
<form ruleset="@insertMember" id="fo_insert_member" class="ff" action="./" method="POST">
|
||||
<input type="hidden" name="act" value="procMemberModifyInfo" />
|
||||
<input type="hidden" name="module" value="member" />
|
||||
<input type="hidden" name="member_srl" value="{$member_info->member_srl}" />
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
|
||||
<fieldset class="sn">
|
||||
<ul>
|
||||
<li>
|
||||
<label for="identifierForm">{$identifierForm->title} <em style="color:red">*</em></label>
|
||||
<input id="identifierForm" type="text" name="{$identifierForm->name}" value="{$identifierForm->value}" disabled="disabled" />
|
||||
<input type="hidden" name="{$identifierForm->name}" value="{$identifierForm->value}" />
|
||||
</li>
|
||||
<li loop="$formTags=>$formTag">
|
||||
<label for="{$formTag->name}">{$formTag->title}</label>
|
||||
<div id="{$formTag->name}" cond="$formTag->name != 'signature' && $formTag->type != 'date'" class="tel"|cond="$formTag->type == 'tel'">{$formTag->inputTag}</div>
|
||||
<textarea id="{$formTag->name}" cond="$formTag->name == 'signature'" name="signature" rows="8" cols="42" class="itxx">{$member_info->signature}</textarea>
|
||||
<input id="{$formTag->name}" class="inputText" type="date" name="{$formTag->name}" value="{$oMemberInfo[$formTag->name]}" cond="$formTag->type == 'date'" />
|
||||
</li>
|
||||
<li><label for="mailing" class="db fb al">{$lang->allow_mailing}</label><input id="mailing" type="checkbox" name="allow_mailing" value="Y" class="checkbox" <!--@if($member_info->allow_mailing!='N')-->checked="checked"<!--@end--> /> <p style="color:#666">{$lang->about_allow_mailing}</p></li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
<div class="cm">
|
||||
<input type="submit" value="{$lang->cmd_registration}" class="bn"/>
|
||||
<a href="{getUrl('act','dispMemberInfo','member_srl','')}" class="bn"><span>{$lang->cmd_cancel}</span></a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
32
modules/member/m.skins/default/modify_password.html
Normal file
32
modules/member/m.skins/default/modify_password.html
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<load target="./../../../../common/js/jquery.min.js" usecdn="true" index="-1000000" />
|
||||
<load target="./../../../../common/js/xe.min.js" usecdn="true" index="-1000000" />
|
||||
<load target="css/msignup.css" usecdn="true" />
|
||||
<h2 class="h2">{$member_title = $lang->cmd_modify_member_password}</h2>
|
||||
<form ruleset="modifyPassword" id="fo_insert_member" class="ff" action="./" method="post">
|
||||
<input type="hidden" name="module" value="member" />
|
||||
<input type="hidden" name="act" value="procMemberModifyPassword" />
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<input type="hidden" name="document_srl" value="{$document_srl}" />
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<ul>
|
||||
<li>
|
||||
<label for="uid">{Context::getLang($identifier)}</label>
|
||||
<input type="text" disabled="disabled" value="{$formValue}" id="uid" />
|
||||
</li>
|
||||
<li>
|
||||
<label for="cpw">{$lang->current_password}</label>
|
||||
<input type="password" name="current_password" id="cpw" />
|
||||
</li>
|
||||
<li>
|
||||
<label for="npw1">{$lang->password1}</label>
|
||||
<input type="password" name="password1" id="npw1" /> <span class="desc">{$lang->about_password}</span>
|
||||
</li>
|
||||
<li>
|
||||
<label for="npw2">{$lang->password2}</label>
|
||||
<input type="password" name="password2" id="npw2" />
|
||||
</li>
|
||||
</ul>
|
||||
<div class="bna">
|
||||
<input type="submit" class="bn" value="{$lang->cmd_registration}" />
|
||||
</div>
|
||||
</form>
|
||||
24
modules/member/m.skins/default/rechecked_password.html
Normal file
24
modules/member/m.skins/default/rechecked_password.html
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<load target="css/msignup.css" usecdn="true" />
|
||||
<h2 class="h2">{$lang->msg_rechecked_password}</h2>
|
||||
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<form class="ff" action="./index.php" method="post" ruleset="recheckedPassword">
|
||||
<input type="hidden" name="act" value="procMemberModifyInfoBefore" />
|
||||
<input type="hidden" name="module" value="member" />
|
||||
<ul>
|
||||
<li>
|
||||
<label for="identifier">{$identifierTitle}</label>
|
||||
<p id="identifier">{$identifierValue}</p>
|
||||
</li>
|
||||
<li>
|
||||
<label for="password">{$lang->password}</label>
|
||||
<input id ="password" type="password" name="password" />
|
||||
<p class="desc">{$lang->about_rechecked_password}</p>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="bna">
|
||||
<input class="bn white" type="submit" value="{$lang->cmd_confirm}" />
|
||||
<span class="bn white"><a href="{getUrl('act','dispMemberInfo','member_srl','')}">{$lang->cmd_cancel}</a></span>
|
||||
</div>
|
||||
</form>
|
||||
60
modules/member/m.skins/default/signup_form.html
Normal file
60
modules/member/m.skins/default/signup_form.html
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
<load target="./../../../../common/js/jquery.min.js" usecdn="true" index="-1000000" />
|
||||
<load target="./../../../../common/js/xe.min.js" usecdn="true" index="-1000000" />
|
||||
<load target="css/msignup.css" usecdn="true" />
|
||||
<load target="../../tpl/js/signup_check.js" />
|
||||
<div class="bd">
|
||||
<div class="hx h2">
|
||||
<h2>{$lang->cmd_signup}</h2>
|
||||
</div>
|
||||
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<form ruleset="@insertMember" id="fo_insert_member" class="ff" action="./" method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" name="module" value="member" />
|
||||
<input type="hidden" name="act" value="procMemberInsert" />
|
||||
<!--@if(!$is_logged && $member_config->agreement)-->
|
||||
<div class="agreement">
|
||||
<div class="text">
|
||||
{$member_config->agreement}
|
||||
</div>
|
||||
<div class="confirm">
|
||||
<input type="checkbox" name="accept_agreement" value="Y" id="accept_agree" />
|
||||
<label for="accept_agree">{$lang->about_accept_agreement}</label>
|
||||
</div>
|
||||
</div>
|
||||
<!--@end-->
|
||||
<ul>
|
||||
<li>
|
||||
<label for="{$identifierForm->name}">{$identifierForm->title} <em style="color:red">*</em></label>
|
||||
<input type="text" name="{$identifierForm->name}" id="{$identifierForm->name}" value="{$identifierForm->value}" />
|
||||
</li>
|
||||
<li>
|
||||
<label for="password">{$lang->password} <em style="color:red">*</em></label>
|
||||
<input type="password" name="password" id="password" value=""/>
|
||||
</li>
|
||||
<li>
|
||||
<label for="password2">{$lang->password3} <em style="color:red">*</em></label>
|
||||
<input type="password" name="password2" id="password2" value=""/>
|
||||
</li>
|
||||
<li loop="$formTags=>$formTag">
|
||||
<label for="{$formTag->name}">{$formTag->title}</label>
|
||||
<div id="{$formTag->name}" cond="$formTag->name != 'signature' && $formTag->type != 'date'" class="tel"|cond="$formTag->type == 'tel'">{$formTag->inputTag}</div>
|
||||
<input id="{$formTag->name}" class="inputText" type="date" value="{$oMemberInfo[$formTag->name]}" cond="$formTag->type == 'date'" />
|
||||
</li>
|
||||
<li>
|
||||
<label>{$lang->allow_mailing}</label>
|
||||
<input type="radio" name="allow_mailing" id="mailingYes" value="Y" checked="checked"|cond="$member_info->allow_mailing == 'Y'" /> <label for="mailingYes">{$lang->cmd_yes}</label>
|
||||
<input type="radio" name="allow_mailing" id="mailingNo" value="N" checked="checked"|cond="$member_info->allow_mailing != 'Y'" /> <label for="mailingNo">{$lang->cmd_no}</label>
|
||||
</li>
|
||||
<li>
|
||||
<label>{$lang->allow_message}</label>
|
||||
<block loop="$lang->allow_message_type=>$key,$val">
|
||||
<input type="radio" name="allow_message" value="{$key}" checked="checked"|cond="$member_info->allow_message == $key || (!$member_info && $key == 'Y')" id="allow_{$key}" /> <label for="allow_{$key}">{$val}</label>
|
||||
</block>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="bna">
|
||||
<input type="submit" class="bn dark" value="{$lang->cmd_registration}" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
19
modules/member/m.skins/default/skin.xml
Normal file
19
modules/member/m.skins/default/skin.xml
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<skin version="0.2">
|
||||
<title xml:lang="ko">회원 기본 모바일 스킨</title>
|
||||
<title xml:lang="en">XE Basic Member Mobile Skin</title>
|
||||
<description xml:lang="ko">
|
||||
XE 기본 모바일 스킨 입니다.
|
||||
NHN (developers@xpressengine.com)
|
||||
</description>
|
||||
<version>0.1</version>
|
||||
<date>2012-09-21</date>
|
||||
|
||||
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
|
||||
<name xml:lang="ko">NHN</name>
|
||||
<name xml:lang="en">NHN</name>
|
||||
<name xml:lang="zh-TW">NHN</name>
|
||||
<name xml:lang="tr">NHN</name>
|
||||
</author>
|
||||
<extra_vars />
|
||||
</skin>
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
$config = $oMemberModel->getMemberConfig ();
|
||||
$getVars = array();
|
||||
if ($config->signupForm){
|
||||
foreach($config->signupForm as $formInfo){
|
||||
foreach($config->signupForm as $formInfo) {
|
||||
if($formInfo->isDefaultForm && ($formInfo->isUse || $formInfo->required || $formInfo->mustRequired)){
|
||||
$getVars[] = $formInfo->name;
|
||||
}
|
||||
|
|
@ -138,6 +138,7 @@
|
|||
'webmaster_email',
|
||||
'limit_day',
|
||||
'change_password_date',
|
||||
'enable_login_fail_report',
|
||||
'max_error_count','max_error_count_time',
|
||||
'agreement',
|
||||
'after_login_url',
|
||||
|
|
@ -146,6 +147,8 @@
|
|||
'layout_srl',
|
||||
'skin',
|
||||
'colorset',
|
||||
'mlayout_srl',
|
||||
'mskin',
|
||||
'profile_image', 'profile_image_max_width', 'profile_image_max_height',
|
||||
'image_name', 'image_name_max_width', 'image_name_max_height',
|
||||
'image_mark', 'image_mark_max_width', 'image_mark_max_height',
|
||||
|
|
@ -160,91 +163,91 @@
|
|||
$oMemberModel = &getModel('member');
|
||||
|
||||
// default setting start
|
||||
if($input_args->enable_join != 'Y'){
|
||||
$args->enable_join = 'N';
|
||||
}else{
|
||||
$args = $input_args;
|
||||
$args->enable_join = 'Y';
|
||||
if($args->enable_confirm !='Y') $args->enable_confirm = 'N';
|
||||
$args->limit_day = (int)$args->limit_day;
|
||||
if(!$args->change_password_date) $args->change_password_date = 0;
|
||||
if(!trim(strip_tags($args->agreement)))
|
||||
{
|
||||
$agreement_file = _XE_PATH_.'files/member_extra_info/agreement_' . Context::get('lang_type') . '.txt';
|
||||
FileHandler::removeFile($agreement_file);
|
||||
$args->agreement = null;
|
||||
}
|
||||
if(!trim(strip_tags($args->after_login_url))) $args->after_login_url = null;
|
||||
if(!trim(strip_tags($args->after_logout_url))) $args->after_logout_url = null;
|
||||
if(!trim(strip_tags($args->redirect_url))) $args->redirect_url = null;
|
||||
|
||||
if(!$args->skin) $args->skin = "default";
|
||||
if(!$args->colorset) $args->colorset = "white";
|
||||
|
||||
$args->profile_image = $args->profile_image?'Y':'N';
|
||||
$args->image_name = $args->image_name?'Y':'N';
|
||||
$args->image_mark = $args->image_mark?'Y':'N';
|
||||
if($args->signature!='Y') $args->signature = 'N';
|
||||
$args->identifier = $all_args->identifier;
|
||||
|
||||
// set default
|
||||
$all_args->is_nick_name_public = 'Y';
|
||||
$all_args->is_find_account_question_public = 'N';
|
||||
|
||||
// signupForm
|
||||
global $lang;
|
||||
$signupForm = array();
|
||||
$items = array('user_id', 'password', 'user_name', 'nick_name', 'email_address', 'find_account_question', 'homepage', 'blog', 'birthday', 'signature', 'profile_image', 'image_name', 'image_mark', 'profile_image_max_width', 'profile_image_max_height', 'image_name_max_width', 'image_name_max_height', 'image_mark_max_width', 'image_mark_max_height');
|
||||
$mustRequireds = array('email_address', 'nick_name', 'password', 'find_account_question');
|
||||
$extendItems = $oMemberModel->getJoinFormList();
|
||||
foreach($list_order as $key){
|
||||
unset($signupItem);
|
||||
$signupItem->isIdentifier = ($key == $all_args->identifier);
|
||||
$signupItem->isDefaultForm = in_array($key, $items);
|
||||
|
||||
$signupItem->name = $key;
|
||||
if(!in_array($key, $items)) $signupItem->title = $key;
|
||||
else $signupItem->title = $lang->{$key};
|
||||
$signupItem->mustRequired = in_array($key, $mustRequireds);
|
||||
$signupItem->imageType = (strpos($key, 'image') !== false);
|
||||
$signupItem->required = ($all_args->{$key} == 'required') || $signupItem->mustRequired || $signupItem->isIdentifier;
|
||||
$signupItem->isUse = in_array($key, $usable_list) || $signupItem->required;
|
||||
|
||||
$signupItem->isPublic = ($all_args->{'is_'.$key.'_public'} == 'Y' && $signupItem->isUse) ? 'Y' : 'N';
|
||||
|
||||
if ($signupItem->imageType){
|
||||
$signupItem->max_width = $all_args->{$key.'_max_width'};
|
||||
$signupItem->max_height = $all_args->{$key.'_max_height'};
|
||||
}
|
||||
|
||||
// set extends form
|
||||
if (!$signupItem->isDefaultForm){
|
||||
$extendItem = $extendItems[$all_args->{$key.'_member_join_form_srl'}];
|
||||
$signupItem->type = $extendItem->column_type;
|
||||
$signupItem->member_join_form_srl = $extendItem->member_join_form_srl;
|
||||
$signupItem->title = $extendItem->column_title;
|
||||
$signupItem->description = $extendItem->description;
|
||||
|
||||
// check usable value change, required/option
|
||||
if ($signupItem->isUse != ($extendItem->is_active == 'Y') || $signupItem->required != ($extendItem->required == 'Y')){
|
||||
unset($update_args);
|
||||
$update_args->member_join_form_srl = $extendItem->member_join_form_srl;
|
||||
$update_args->is_active = $signupItem->isUse?'Y':'N';
|
||||
$update_args->required = $signupItem->required?'Y':'N';
|
||||
|
||||
$update_output = executeQuery('member.updateJoinForm', $update_args);
|
||||
}
|
||||
unset($extendItem);
|
||||
}
|
||||
$signupForm[] = $signupItem;
|
||||
}
|
||||
$args->signupForm = $signupForm;
|
||||
|
||||
// create Ruleset
|
||||
$this->_createSignupRuleset($signupForm, $args->agreement);
|
||||
$this->_createLoginRuleset($args->identifier);
|
||||
$this->_createFindAccountByQuestion($args->identifier);
|
||||
$args = $input_args;
|
||||
$args->enable_join = $args->enable_join != 'N' ? 'Y' : 'N';
|
||||
if($args->enable_confirm !='Y') $args->enable_confirm = 'N';
|
||||
$args->limit_day = (int)$args->limit_day;
|
||||
if(!$args->change_password_date) $args->change_password_date = 0;
|
||||
if(!trim(strip_tags($args->agreement)))
|
||||
{
|
||||
$agreement_file = _XE_PATH_.'files/member_extra_info/agreement_' . Context::get('lang_type') . '.txt';
|
||||
FileHandler::removeFile($agreement_file);
|
||||
$args->agreement = null;
|
||||
}
|
||||
if(!trim(strip_tags($args->after_login_url))) $args->after_login_url = null;
|
||||
if(!trim(strip_tags($args->after_logout_url))) $args->after_logout_url = null;
|
||||
if(!trim(strip_tags($args->redirect_url))) $args->redirect_url = null;
|
||||
|
||||
if(!$args->skin) $args->skin = 'default';
|
||||
if(!$args->colorset) $args->colorset = 'white';
|
||||
|
||||
if(!$args->mskin) $args->mskin = 'default';
|
||||
|
||||
$args->profile_image = $args->profile_image?'Y':'N';
|
||||
$args->image_name = $args->image_name?'Y':'N';
|
||||
$args->image_mark = $args->image_mark?'Y':'N';
|
||||
if($args->signature!='Y') $args->signature = 'N';
|
||||
$args->identifier = $all_args->identifier;
|
||||
$args->layout_srl = $args->layout_srl ? $args->layout_srl : null;
|
||||
$args->mlayout_srl = $args->mlayout_srl ? $args->mlayout_srl : null;
|
||||
|
||||
// set default
|
||||
$all_args->is_nick_name_public = 'Y';
|
||||
$all_args->is_find_account_question_public = 'N';
|
||||
|
||||
// signupForm
|
||||
global $lang;
|
||||
$signupForm = array();
|
||||
$items = array('user_id', 'password', 'user_name', 'nick_name', 'email_address', 'find_account_question', 'homepage', 'blog', 'birthday', 'signature', 'profile_image', 'image_name', 'image_mark', 'profile_image_max_width', 'profile_image_max_height', 'image_name_max_width', 'image_name_max_height', 'image_mark_max_width', 'image_mark_max_height');
|
||||
$mustRequireds = array('email_address', 'nick_name', 'password', 'find_account_question');
|
||||
$extendItems = $oMemberModel->getJoinFormList();
|
||||
foreach($list_order as $key){
|
||||
unset($signupItem);
|
||||
$signupItem->isIdentifier = ($key == $all_args->identifier);
|
||||
$signupItem->isDefaultForm = in_array($key, $items);
|
||||
|
||||
$signupItem->name = $key;
|
||||
if(!in_array($key, $items)) $signupItem->title = $key;
|
||||
else $signupItem->title = $lang->{$key};
|
||||
$signupItem->mustRequired = in_array($key, $mustRequireds);
|
||||
$signupItem->imageType = (strpos($key, 'image') !== false);
|
||||
$signupItem->required = ($all_args->{$key} == 'required') || $signupItem->mustRequired || $signupItem->isIdentifier;
|
||||
$signupItem->isUse = in_array($key, $usable_list) || $signupItem->required;
|
||||
|
||||
$signupItem->isPublic = ($all_args->{'is_'.$key.'_public'} == 'Y' && $signupItem->isUse) ? 'Y' : 'N';
|
||||
|
||||
if ($signupItem->imageType){
|
||||
$signupItem->max_width = $all_args->{$key.'_max_width'};
|
||||
$signupItem->max_height = $all_args->{$key.'_max_height'};
|
||||
}
|
||||
|
||||
// set extends form
|
||||
if (!$signupItem->isDefaultForm){
|
||||
$extendItem = $extendItems[$all_args->{$key.'_member_join_form_srl'}];
|
||||
$signupItem->type = $extendItem->column_type;
|
||||
$signupItem->member_join_form_srl = $extendItem->member_join_form_srl;
|
||||
$signupItem->title = $extendItem->column_title;
|
||||
$signupItem->description = $extendItem->description;
|
||||
|
||||
// check usable value change, required/option
|
||||
if ($signupItem->isUse != ($extendItem->is_active == 'Y') || $signupItem->required != ($extendItem->required == 'Y')){
|
||||
unset($update_args);
|
||||
$update_args->member_join_form_srl = $extendItem->member_join_form_srl;
|
||||
$update_args->is_active = $signupItem->isUse?'Y':'N';
|
||||
$update_args->required = $signupItem->required?'Y':'N';
|
||||
|
||||
$update_output = executeQuery('member.updateJoinForm', $update_args);
|
||||
}
|
||||
unset($extendItem);
|
||||
}
|
||||
$signupForm[] = $signupItem;
|
||||
}
|
||||
$args->signupForm = $signupForm;
|
||||
|
||||
// create Ruleset
|
||||
$this->_createSignupRuleset($signupForm, $args->agreement);
|
||||
$this->_createLoginRuleset($args->identifier);
|
||||
$this->_createFindAccountByQuestion($args->identifier);
|
||||
|
||||
// check agreement value exist
|
||||
if($args->agreement)
|
||||
|
|
@ -493,7 +496,8 @@
|
|||
* Add a join form
|
||||
* @return void|Object (void : success, Object : fail)
|
||||
**/
|
||||
function procMemberAdminInsertJoinForm() {
|
||||
function procMemberAdminInsertJoinForm()
|
||||
{
|
||||
$args->member_join_form_srl = Context::get('member_join_form_srl');
|
||||
|
||||
$args->column_type = Context::get('column_type');
|
||||
|
|
@ -503,13 +507,25 @@
|
|||
$args->required = Context::get('required');
|
||||
$args->is_active = (isset($args->required));
|
||||
if(!in_array(strtoupper($args->required), array('Y','N')))$args->required = 'N';
|
||||
$args->description = Context::get('description');
|
||||
$args->description = Context::get('description') ? Context::get('description') : '';
|
||||
// Default values
|
||||
if(in_array($args->column_type, array('checkbox','select','radio')) && count($args->default_value) ) {
|
||||
$args->default_value = serialize($args->default_value);
|
||||
} else {
|
||||
$args->default_value = '';
|
||||
}
|
||||
|
||||
// Check ID duplicated
|
||||
$oMemberModel = &getModel('member');
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
foreach($config->signupForm as $item)
|
||||
{
|
||||
if($item->name == $args->column_name)
|
||||
{
|
||||
if($args->member_join_form_srl && $args->member_join_form_srl == $item->member_join_form_srl) continue;
|
||||
return new Object(-1,'msg_exists_user_id');
|
||||
}
|
||||
}
|
||||
// Fix if member_join_form_srl exists. Add if not exists.
|
||||
$isInsert;
|
||||
if(!$args->member_join_form_srl){
|
||||
|
|
@ -534,6 +550,7 @@
|
|||
|
||||
$oMemberModel = &getModel('member');
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
unset($config->agreement);
|
||||
|
||||
if($isInsert){
|
||||
$config->signupForm[] = $signupItem;
|
||||
|
|
@ -563,6 +580,7 @@
|
|||
|
||||
$oMemberModel = &getModel('member');
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
unset($config->agreement);
|
||||
|
||||
foreach($config->signupForm as $key=>$val){
|
||||
if ($val->member_join_form_srl == $member_join_form_srl){
|
||||
|
|
@ -940,6 +958,7 @@
|
|||
// group image mark option
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
$config->group_image_mark = $vars->group_image_mark;
|
||||
unset($config->agreement);
|
||||
$output = $oModuleController->updateModuleConfig('member', $config);
|
||||
|
||||
// group data save
|
||||
|
|
|
|||
|
|
@ -245,6 +245,16 @@
|
|||
Context::set('formInfo', $output->data);
|
||||
}
|
||||
|
||||
$oMemberModel = &getModel('member');
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
foreach($config->signupForm as $item)
|
||||
{
|
||||
$list[] = $item->name;
|
||||
}
|
||||
|
||||
$id_list = implode(',',$list);
|
||||
Context::set('id_list',$id_list);
|
||||
|
||||
$oTemplate = &TemplateHandler::getInstance();
|
||||
$tpl = $oTemplate->compile($this->module_path.'tpl', 'insert_join_form');
|
||||
|
||||
|
|
|
|||
|
|
@ -115,10 +115,18 @@
|
|||
|
||||
Context::set('layout_list', $layout_list);
|
||||
|
||||
$mlayout_list = $oLayoutModel->getLayoutList(0, 'M');
|
||||
|
||||
Context::set('mlayout_list', $mlayout_list);
|
||||
|
||||
// list of skins for member module
|
||||
$skin_list = $oModuleModel->getSkins($this->module_path);
|
||||
Context::set('skin_list', $skin_list);
|
||||
|
||||
// list of skins for member module
|
||||
$mskin_list = $oModuleModel->getSkins($this->module_path, 'm.skins');
|
||||
Context::set('mskin_list', $mskin_list);
|
||||
|
||||
// retrieve skins of editor
|
||||
$oEditorModel = &getModel('editor');
|
||||
Context::set('editor_skin_list', $oEditorModel->getEditorSkinList());
|
||||
|
|
@ -269,6 +277,7 @@
|
|||
|
||||
if($formInfo->isDefaultForm){
|
||||
if($formInfo->imageType){
|
||||
$formTag->type = 'image';
|
||||
if($formInfo->name == 'profile_image'){
|
||||
$target = $memberInfo['profile_image'];
|
||||
$functionName = 'doDeleteProfileImage';
|
||||
|
|
@ -300,12 +309,14 @@
|
|||
,$member_config->{$formInfo->name.'_max_height'});
|
||||
}//end imageType
|
||||
elseif($formInfo->name == 'birthday'){
|
||||
$formTag->type = 'date';
|
||||
$inputTag = sprintf('<input type="hidden" name="birthday" id="date_birthday" value="%s" /><input type="text" class="inputDate" id="birthday" value="%s" /> <input type="button" value="%s" class="dateRemover" />'
|
||||
,$memberInfo['birthday']
|
||||
,zdate($memberInfo['birthday'], 'Y-m-d', false)
|
||||
,$lang->cmd_delete);
|
||||
}elseif($formInfo->name == 'find_account_question'){
|
||||
$inputTag = '<select name="find_account_question" style="width:290px; display:block;">%s</select>';
|
||||
$formTag->type = 'select';
|
||||
$inputTag = '<select name="find_account_question" id="find_account_question" style="width:290px; display:block;">%s</select>';
|
||||
$optionTag = array();
|
||||
foreach($lang->find_account_question_items as $key=>$val){
|
||||
if($key == $memberInfo['find_account_question']) $selected = 'selected="selected"';
|
||||
|
|
@ -316,9 +327,11 @@
|
|||
,$val);
|
||||
}
|
||||
$inputTag = sprintf($inputTag, implode('', $optionTag));
|
||||
$inputTag .= '<input type="text" name="find_account_answer" title="'.Context::getLang('find_account_answer').'" value="'.$memberInfo['find_account_answer'].'" class="inputText long tall" />';
|
||||
$inputTag .= '<input type="text" name="find_account_answer" id="find_account_answer" title="'.Context::getLang('find_account_answer').'" value="'.$memberInfo['find_account_answer'].'" class="inputText long tall" />';
|
||||
}else{
|
||||
$inputTag = sprintf('<input type="text" name="%s" value="%s" class="inputText long tall" />'
|
||||
$formTag->type = 'text';
|
||||
$inputTag = sprintf('<input type="text" name="%s" id="%s" value="%s" class="inputText long tall" />'
|
||||
,$formInfo->name
|
||||
,$formInfo->name
|
||||
,$memberInfo[$formInfo->name]);
|
||||
}
|
||||
|
|
@ -329,8 +342,9 @@
|
|||
'value' => $extendForm->value);
|
||||
$extentionReplace = array();
|
||||
|
||||
$formTag->type = $extendForm->column_type;
|
||||
if($extendForm->column_type == 'text' || $extendForm->column_type == 'homepage' || $extendForm->column_type == 'email_address'){
|
||||
$template = '<input type="text" name="%column_name%" value="%value%" />';
|
||||
$template = '<input type="text" name="%column_name%" id="%column_name%" value="%value%" />';
|
||||
}elseif($extendForm->column_type == 'tel'){
|
||||
$extentionReplace = array('tel_0' => $extendForm->value[0],
|
||||
'tel_1' => $extendForm->value[1],
|
||||
|
|
@ -362,7 +376,7 @@
|
|||
$template = sprintf($template, implode('', $optionTag));
|
||||
}
|
||||
}elseif($extendForm->column_type == 'select'){
|
||||
$template = '<select name="'.$formInfo->name.'">%s</select>';
|
||||
$template = '<select name="'.$formInfo->name.'" id="'.$formInfo->name.'">%s</select>';
|
||||
$optionTag = array();
|
||||
if($extendForm->default_value){
|
||||
foreach($extendForm->default_value as $v){
|
||||
|
|
@ -404,7 +418,7 @@
|
|||
<script type="text/javascript">jQuery(function($){ $.krzip('%column_name%') });</script>
|
||||
EOD;
|
||||
}elseif($extendForm->column_type == 'jp_zip'){
|
||||
$template = '<input type="text" name="%column_name%" value="%value%" />';
|
||||
$template = '<input type="text" name="%column_name%" id="%column_name%" value="%value%" />';
|
||||
}elseif($extendForm->column_type == 'date'){
|
||||
$extentionReplace = array('date' => zdate($extendForm->value, 'Y-m-d'),
|
||||
'cmd_delete' => $lang->cmd_delete);
|
||||
|
|
|
|||
|
|
@ -355,19 +355,20 @@
|
|||
function recordLoginError($error = 0, $message = 'success')
|
||||
{
|
||||
if($error == 0) return new Object($error, $message);
|
||||
|
||||
// Create a member model object
|
||||
$oMemberModel = &getModel('member');
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
|
||||
// Check if there is recoding table.
|
||||
$oDB = &DB::getInstance();
|
||||
if(!$oDB->isTableExists('member_login_count')) return new Object($error, $message);
|
||||
|
||||
if(!$oDB->isTableExists('member_login_count') || $config->enable_login_fail_report == 'N') return new Object($error, $message);
|
||||
|
||||
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
|
||||
|
||||
$output = executeQuery('member.getLoginCountByIp', $args);
|
||||
if($output->data && $output->data->count)
|
||||
{
|
||||
// Create a member model object
|
||||
$oMemberModel = &getModel('member');
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
$last_update = strtotime($output->data->last_update);
|
||||
$term = intval(time()-$last_update);
|
||||
//update, if IP address access in a short time, update count. If not, make count 1.
|
||||
|
|
@ -398,10 +399,14 @@
|
|||
function recordMemberLoginError($error = 0, $message = 'success', $args = NULL)
|
||||
{
|
||||
if($error == 0 || !$args->member_srl) return new Object($error, $message);
|
||||
|
||||
// Create a member model object
|
||||
$oMemberModel = &getModel('member');
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
|
||||
// Check if there is recoding table.
|
||||
$oDB = &DB::getInstance();
|
||||
if(!$oDB->isTableExists('member_count_history')) return new Object($error, $message);
|
||||
|
||||
if(!$oDB->isTableExists('member_count_history') || $config->enable_login_fail_report == 'N') return new Object($error, $message);
|
||||
|
||||
$output = executeQuery('member.getLoginCountHistoryByMemberSrl', $args);
|
||||
if($output->data && $output->data->content)
|
||||
|
|
|
|||
|
|
@ -388,7 +388,7 @@
|
|||
$memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl, 0, $columnList);
|
||||
$this->memberInfo->password = $memberInfo->password;
|
||||
}
|
||||
// Verify the cuttent password
|
||||
// Verify the current password
|
||||
if(!$oMemberModel->isValidPassword($this->memberInfo->password, $password))
|
||||
{
|
||||
return new Object(-1, 'invalid_password');
|
||||
|
|
@ -396,7 +396,7 @@
|
|||
|
||||
$_SESSION['rechecked_password_step'] = 'VALIDATE_PASSWORD';
|
||||
|
||||
$redirectUrl = getUrl('', 'act', 'dispMemberModifyInfo');
|
||||
$redirectUrl = getNotEncodedUrl('', 'act', 'dispMemberModifyInfo');
|
||||
$this->setRedirectUrl($redirectUrl);
|
||||
|
||||
}
|
||||
|
|
@ -436,6 +436,7 @@
|
|||
// Login Information
|
||||
$logged_info = Context::get('logged_info');
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->birthday = strtr($args->birthday, array('-'=>'', '/'=>'', '.'=>'', ' '=>''));
|
||||
// Remove some unnecessary variables from all the vars
|
||||
$all_args = Context::getRequestVars();
|
||||
unset($all_args->module);
|
||||
|
|
@ -1020,7 +1021,7 @@
|
|||
}
|
||||
// Get content of the email to send a member
|
||||
Context::set('auth_args', $auth_args);
|
||||
Context::set('member_info', $member_info);
|
||||
Context::set('memberInfo', $member_info);
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$member_config = $oModuleModel->getModuleConfig('member');
|
||||
|
|
@ -1081,7 +1082,7 @@
|
|||
if(!$output->data || !$output->data[0]->auth_key) return new Object(-1, 'msg_invalid_request');
|
||||
$auth_info = $output->data[0];
|
||||
// Get content of the email to send a member
|
||||
Context::set('member_info', $memberInfo);
|
||||
Context::set('memberInfo', $memberInfo);
|
||||
$oModuleModel = &getModel('module');
|
||||
$member_config = $oModuleModel->getModuleConfig('member');
|
||||
if(!$member_config->skin) $member_config->skin = "default";
|
||||
|
|
@ -1555,37 +1556,45 @@
|
|||
// Update the latest login time
|
||||
$args->member_srl = $this->memberInfo->member_srl;
|
||||
$output = executeQuery('member.updateLastLogin', $args);
|
||||
// check if there is login fail records.
|
||||
$output = executeQuery('member.getLoginCountHistoryByMemberSrl', $args);
|
||||
if($output->data && $output->data->content)
|
||||
{
|
||||
$title = Context::getLang('login_fail_report');
|
||||
$message = '<ul>';
|
||||
$content = unserialize($output->data->content);
|
||||
foreach($content as $val)
|
||||
{
|
||||
$message .= '<li>'.date('Y-m-d H:i:s P',$val[2]).'<br /> Access IP: '.$val[0].'<br /> Message: '.$val[1].'</li>';
|
||||
}
|
||||
$message .= '</ul>';
|
||||
$content = sprintf(Context::getLang('login_fail_report_contents'),$message,date('Y-m-d H:i:s P'));
|
||||
|
||||
//send message
|
||||
$oCommunicationController = &getController('communication');
|
||||
$oCommunicationController->sendMessage($args->member_srl, $args->member_srl, $title, $content, true);
|
||||
|
||||
if($this->memberInfo->email_address && $this->memberInfo->allow_mailing == 'Y')
|
||||
// Check if there is recoding table.
|
||||
$oDB = &DB::getInstance();
|
||||
if($oDB->isTableExists('member_count_history') && $config->enable_login_fail_report != 'N')
|
||||
{
|
||||
// check if there is login fail records.
|
||||
$output = executeQuery('member.getLoginCountHistoryByMemberSrl', $args);
|
||||
if($output->data && $output->data->content)
|
||||
{
|
||||
$view_url = Context::getRequestUri();
|
||||
$title = sprintf("%s @ %s",$title,$view_url);
|
||||
$content = sprintf("%s<hr /><p>From: <a href=\"%s\" target=\"_blank\">%s</a><br />To: %s(%s)</p>",$content, $view_url, $view_url, $this->memberInfo->nick_name, $this->memberInfo->email_id);
|
||||
$oMail = new Mail();
|
||||
$oMail->setTitle($title);
|
||||
$oMail->setContent($content);
|
||||
$oMail->setSender($this->memberInfo->email_id.'('.$this->memberInfo->nick_name.')', $this->memberInfo->email_address);
|
||||
$oMail->setReceiptor($this->memberInfo->email_id.'('.$this->memberInfo->nick_name.')', $this->memberInfo->email_address);
|
||||
$oMail->send();
|
||||
$title = Context::getLang('login_fail_report');
|
||||
$message = '<ul>';
|
||||
$content = unserialize($output->data->content);
|
||||
if(count($content) > $config->max_error_count)
|
||||
{
|
||||
foreach($content as $val)
|
||||
{
|
||||
$message .= '<li>'.date('Y-m-d H:i:s P',$val[2]).'<br /> Access IP: '.$val[0].'<br /> Message: '.$val[1].'</li>';
|
||||
}
|
||||
$message .= '</ul>';
|
||||
$content = sprintf(Context::getLang('login_fail_report_contents'),$message,date('Y-m-d H:i:s P'));
|
||||
|
||||
//send message
|
||||
$oCommunicationController = &getController('communication');
|
||||
$oCommunicationController->sendMessage($args->member_srl, $args->member_srl, $title, $content, true);
|
||||
|
||||
if($this->memberInfo->email_address && $this->memberInfo->allow_mailing == 'Y')
|
||||
{
|
||||
$view_url = Context::getRequestUri();
|
||||
$content = sprintf("%s<hr /><p>From: <a href=\"%s\" target=\"_blank\">%s</a><br />To: %s(%s)</p>",$content, $view_url, $view_url, $this->memberInfo->nick_name, $this->memberInfo->email_id);
|
||||
$oMail = new Mail();
|
||||
$oMail->setTitle($title);
|
||||
$oMail->setContent($content);
|
||||
$oMail->setSender($config->webmaster_name?$config->webmaster_name:'webmaster', $config->webmaster_email);
|
||||
$oMail->setReceiptor($this->memberInfo->email_id.'('.$this->memberInfo->nick_name.')', $this->memberInfo->email_address);
|
||||
$oMail->send();
|
||||
}
|
||||
$output = executeQuery('member.deleteLoginCountHistoryByMemberSrl', $args);
|
||||
}
|
||||
}
|
||||
$output = executeQuery('member.deleteLoginCountHistoryByMemberSrl', $args);
|
||||
}
|
||||
// Call a trigger after successfully log-in (after)
|
||||
$trigger_output = ModuleHandler::triggerCall('member.doLogin', 'after', $this->memberInfo);
|
||||
|
|
@ -2047,6 +2056,10 @@
|
|||
**/
|
||||
function destroySessionInfo() {
|
||||
if(!$_SESSION || !is_array($_SESSION)) return;
|
||||
|
||||
$memberInfo = Context::get('logged_info');
|
||||
$memberSrl = $memberInfo->member_srl;
|
||||
|
||||
foreach($_SESSION as $key => $val) {
|
||||
$_SESSION[$key] = '';
|
||||
}
|
||||
|
|
@ -2054,10 +2067,11 @@
|
|||
setcookie(session_name(), '', time()-42000, '/');
|
||||
setcookie('sso','',time()-42000, '/');
|
||||
|
||||
if($_COOKIE['xeak']) {
|
||||
$args->autologin_key = $_COOKIE['xeak'];
|
||||
executeQuery('member.deleteAutologin', $args);
|
||||
}
|
||||
if($memberSrl)
|
||||
{
|
||||
$args->member_srl = $memberSrl;
|
||||
$output = executeQuery('member.deleteAutologin', $args);
|
||||
}
|
||||
}
|
||||
|
||||
function _updatePointByGroup($memberSrl, $groupSrlList)
|
||||
|
|
|
|||
|
|
@ -1,223 +1,67 @@
|
|||
<?php
|
||||
|
||||
class memberMobile extends member
|
||||
require_once(_XE_PATH_.'modules/member/member.view.php');
|
||||
class memberMobile extends memberView
|
||||
{
|
||||
/**
|
||||
* Support method are
|
||||
* dispMemberInfo, dispMemberSignUpForm, dispMemberFindAccount, dispMemberGetTempPassword, dispMemberModifyInfo, dispMemberModifyInfoBefore
|
||||
*/
|
||||
var $memberInfo;
|
||||
|
||||
function init() {
|
||||
// Get the member configuration
|
||||
$oModuleModel = &getModel('module');
|
||||
$this->member_config = $oModuleModel->getModuleConfig('member');
|
||||
function init()
|
||||
{
|
||||
// Get the member configuration
|
||||
$oMemberModel = &getModel('member');
|
||||
$this->member_config = $oMemberModel->getMemberConfig();
|
||||
Context::set('member_config', $this->member_config);
|
||||
|
||||
$mskin = $this->member_config->mskin;
|
||||
// Set the template path
|
||||
if(!$mskin)
|
||||
{
|
||||
$mskin = 'default';
|
||||
$template_path = sprintf('%sm.skins/%s', $this->module_path, $mskin);
|
||||
}
|
||||
else
|
||||
{
|
||||
$template_path = sprintf('%sm.skins/%s', $this->module_path, $mskin);
|
||||
}
|
||||
|
||||
// if member_srl exists, set memberInfo
|
||||
$member_srl = Context::get('member_srl');
|
||||
if($member_srl) {
|
||||
if($member_srl)
|
||||
{
|
||||
$oMemberModel = &getModel('member');
|
||||
$this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
if(!$this->memberInfo) Context::set('member_srl','');
|
||||
else Context::set('member_info',$this->memberInfo);
|
||||
if(!$this->memberInfo)
|
||||
{
|
||||
Context::set('member_srl','');
|
||||
}
|
||||
else
|
||||
{
|
||||
Context::set('member_info',$this->memberInfo);
|
||||
}
|
||||
}
|
||||
|
||||
Context::set('member_config', $this->member_config);
|
||||
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
}
|
||||
$this->setTemplatePath($template_path);
|
||||
|
||||
function dispMemberLoginForm() {
|
||||
if(Context::get('is_logged')) {
|
||||
Context::set('redirect_url', getUrl('act',''));
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
$this->setTemplateFile('redirect.html');
|
||||
return;
|
||||
}
|
||||
|
||||
// get member module configuration.
|
||||
$oMemberModel = &getModel('member');
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
Context::set('identifier', $config->identifier);
|
||||
|
||||
// Set a template file
|
||||
Context::set('referer_url', htmlspecialchars($_SERVER['HTTP_REFERER']));
|
||||
$this->setTemplateFile('login_form');
|
||||
}
|
||||
|
||||
function dispMemberSignUpForm(){
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
if($oMemberModel->isLogged()) return $this->stop('msg_already_logged');
|
||||
|
||||
$trigger_output = ModuleHandler::triggerCall('member.dispMemberSignUpForm', 'before', $this->member_config);
|
||||
if(!$trigger_output->toBool()) return $trigger_output;
|
||||
|
||||
if ($this->member_config->enable_join != 'Y') return $this->stop('msg_signup_disabled');
|
||||
$oMemberAdminView = &getAdminView('member');
|
||||
$formTags = $oMemberAdminView->_getMemberInputTag($member_info);
|
||||
Context::set('formTags', $formTags);
|
||||
|
||||
$member_config = $oMemberModel->getMemberConfig();
|
||||
Context::set('member_config', $member_config);
|
||||
|
||||
global $lang;
|
||||
$identifierForm->title = $lang->{$member_config->identifier};
|
||||
$identifierForm->name = $member_config->identifier;
|
||||
$identifierForm->value = $member_info->{$member_config->identifier};
|
||||
Context::set('identifierForm', $identifierForm);
|
||||
// Set a template file
|
||||
$this->setTemplateFile('signup_form');
|
||||
}
|
||||
|
||||
function dispMemberInfo() {
|
||||
$oMemberModel = &getModel('member');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// Don't display member info to non-logged user
|
||||
if(!$logged_info->member_srl) return $this->stop('msg_not_permitted');
|
||||
$member_srl = Context::get('member_srl');
|
||||
if(!$member_srl && Context::get('is_logged')) {
|
||||
$member_srl = $logged_info->member_srl;
|
||||
} elseif(!$member_srl) {
|
||||
return $this->dispMemberSignUpForm();
|
||||
}
|
||||
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
if(!$this->memberInfo)
|
||||
$oLayoutModel = &getModel('layout');
|
||||
$layout_info = $oLayoutModel->getLayout($this->member_config->mlayout_srl);
|
||||
if($layout_info)
|
||||
{
|
||||
$columnList = array('user_name', 'nick_name', 'homepage', 'blog', 'birthday', 'regdate', 'last_login');
|
||||
$this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl, $site_module_info->site_srl, $columnList);
|
||||
$this->module_info->mlayout_srl = $this->member_config->mlayout_srl;
|
||||
$this->setLayoutPath($layout_info->path);
|
||||
}
|
||||
unset($this->memberInfo->password);
|
||||
unset($this->memberInfo->email_id);
|
||||
unset($this->memberInfo->email_host);
|
||||
unset($this->memberInfo->email_address);
|
||||
|
||||
if(!$this->memberInfo->member_srl) return $this->dispMemberSignUpForm();
|
||||
|
||||
Context::set('member_info', $this->memberInfo);
|
||||
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($this->memberInfo));
|
||||
$this->setTemplateFile('member_info_mobile');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Find user ID and password
|
||||
**/
|
||||
function dispMemberFindAccount() {
|
||||
if(Context::get('is_logged')) return $this->stop('already_logged');
|
||||
|
||||
$oMemberModel = &getModel('member');
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
Context::set('identifier', $config->identifier);
|
||||
|
||||
$this->setTemplateFile('find_member_account');
|
||||
function dispMemberModifyInfo()
|
||||
{
|
||||
parent::dispMemberModifyInfo();
|
||||
|
||||
if($this->member_info)
|
||||
{
|
||||
Context::set('oMemberInfo', get_object_vars($this->member_info));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Generate a temporary password
|
||||
**/
|
||||
function dispMemberGetTempPassword() {
|
||||
if(Context::get('is_logged')) return $this->stop('already_logged');
|
||||
|
||||
$oMemberModel = &getModel('member');
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
Context::set('identifier', $config->identifier);
|
||||
|
||||
$user_id = Context::get('user_id');
|
||||
$temp_password = $_SESSION['xe_temp_password_'.$user_id];
|
||||
unset($_SESSION['xe_temp_password_'.$user_id]);
|
||||
|
||||
if(!$user_id||!$temp_password) return new Object(-1,'msg_invaild_request');
|
||||
Context::set('temp_password', $temp_password);
|
||||
|
||||
$this->setTemplateFile('find_temp_password');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Edit member profile
|
||||
**/
|
||||
function dispMemberModifyInfo() {
|
||||
$oMemberModel = &getModel('member');
|
||||
$oModuleModel = &getModel('module');
|
||||
$memberModuleConfig = $oModuleModel->getModuleConfig('member');
|
||||
|
||||
// A message appears if the user is not logged-in
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
if(!$this->memberInfo) $this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
$this->memberInfo->signature = $oMemberModel->getSignature($member_srl);
|
||||
Context::set('member_info',$this->memberInfo);
|
||||
|
||||
// Receive a member join form
|
||||
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($this->memberInfo));
|
||||
|
||||
// Call getEditor of the editor module and set it for signiture
|
||||
if($this->memberInfo->member_srl) {
|
||||
$oEditorModel = &getModel('editor');
|
||||
$option->primary_key_name = 'member_srl';
|
||||
$option->content_key_name = 'signature';
|
||||
$option->allow_fileupload = false;
|
||||
$option->enable_autosave = false;
|
||||
$option->enable_default_component = true;
|
||||
$option->enable_component = false;
|
||||
$option->resizable = false;
|
||||
$option->disable_html = true;
|
||||
$option->height = 200;
|
||||
$option->skin = $this->member_config->editor_skin;
|
||||
$option->colorset = $this->member_config->editor_colorset;
|
||||
$editor = $oEditorModel->getEditor($this->memberInfo->member_srl, $option);
|
||||
Context::set('editor', $editor);
|
||||
}
|
||||
|
||||
// Set a template file
|
||||
$this->setTemplateFile('modify_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Change the user password
|
||||
**/
|
||||
function dispMemberModifyPassword() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// A message appears if the user is not logged-in
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
Context::set('identifier', $config->identifier);
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
if(!$this->memberInfo) {
|
||||
$columnList = array('member_srl', 'user_id');
|
||||
$this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl, 0, $columnList);
|
||||
}
|
||||
Context::set('member_info',$this->memberInfo);
|
||||
|
||||
// Set a template file
|
||||
$this->setTemplateFile('modify_password');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Member withdrawl
|
||||
**/
|
||||
function dispMemberLeave() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// A message appears if the user is not logged-in
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
if(!$this->memberInfo) {
|
||||
$columnList = array('member_srl', 'user_id');
|
||||
$this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl, 0, $columnList);
|
||||
}
|
||||
Context::set('member_info',$this->memberInfo);
|
||||
|
||||
// Set a template file
|
||||
$this->setTemplateFile('leave_form');
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
{
|
||||
foreach($config->signupForm AS $key=>$value)
|
||||
{
|
||||
$config->signupForm[$key]->title = Context::getLang($value->title);
|
||||
$config->signupForm[$key]->title = ($value->isDefaultForm) ? Context::getLang($value->name) : $value->title;
|
||||
if($config->signupForm[$key]->isPublic != 'N') $config->signupForm[$key]->isPublic = 'Y';
|
||||
if($value->name == 'find_account_question') $config->signupForm[$key]->isPublic = 'N';
|
||||
}
|
||||
|
|
@ -63,12 +63,6 @@
|
|||
|
||||
if (!$config->max_error_count) $config->max_error_count = 10;
|
||||
if (!$config->max_error_count_time) $config->max_error_count_time = 300;
|
||||
if (!$config->layout_srl)
|
||||
{
|
||||
$oModuleModel = &getModel('module');
|
||||
$defaultModuleInfo = $oModuleModel->getDefaultMid();
|
||||
$config->layout_srl = $defaultModuleInfo->layout_srl;
|
||||
}
|
||||
|
||||
if (!$config->signature_editor_skin || $config->signature_editor_skin == 'default') $config->signature_editor_skin = 'xpresseditor';
|
||||
if (!$config->sel_editor_colorset) $config->sel_editor_colorset = 'white';
|
||||
|
|
|
|||
|
|
@ -98,6 +98,7 @@
|
|||
|
||||
function _getDisplayedMemberInfo($memberInfo, $extendFormInfo, $memberConfig)
|
||||
{
|
||||
$logged_info = Context::get('logged_info');
|
||||
$displayDatas = array();
|
||||
foreach($memberConfig->signupForm as $no=>$formInfo)
|
||||
{
|
||||
|
|
@ -270,6 +271,7 @@
|
|||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl, 0, $columnList);
|
||||
$member_info->signature = $oMemberModel->getSignature($member_srl);
|
||||
Context::set('member_info',$member_info);
|
||||
|
||||
// Get a list of extend join form
|
||||
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info));
|
||||
|
||||
|
|
@ -291,6 +293,8 @@
|
|||
Context::set('editor', $editor);
|
||||
}
|
||||
|
||||
$this->member_info = $member_info;
|
||||
|
||||
$oMemberAdminView = &getAdminView('member');
|
||||
$formTags = $oMemberAdminView->_getMemberInputTag($member_info);
|
||||
Context::set('formTags', $formTags);
|
||||
|
|
@ -382,7 +386,7 @@
|
|||
**/
|
||||
function dispMemberLoginForm() {
|
||||
if(Context::get('is_logged')) {
|
||||
Context::set('redirect_url', getUrl('act',''));
|
||||
Context::set('redirect_url', getNotEncodedUrl('act',''));
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
$this->setTemplateFile('redirect.html');
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
<table name="member_autologin" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="autologin_key" var="autologin_key" notnull="notnull" />
|
||||
<condition operation="equal" column="autologin_key" var="autologin_key" />
|
||||
<condition operation="equal" column="member_srl" var="member_srl" pipe="or" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
|
|||
|
|
@ -6,6 +6,6 @@
|
|||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="email_address" var="email_address" notnull="notnull" />
|
||||
<condition operation="equal" column="lower(email_address)" var="email_address" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<table name="member_scrap" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="count(*)" alias="count" />
|
||||
<column name="count(document_srl)" alias="count" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" />
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
<include target="./common_header.html" />
|
||||
<load target="filter/find_member_account.xml" />
|
||||
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
</div>
|
||||
<h2 class="h2">{$lang->cmd_find_member_account_with_email}</h2>
|
||||
<p>{$lang->about_find_member_account}</p>
|
||||
<form action="./" method="get" class="form" onsubmit="return procFilter(this, find_member_account)">
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
<input type="hidden" name="join_form_id_list" value="{$id_list}" />
|
||||
<input type="hidden" name="old_column_id" value="{$formInfo->column_name}" />
|
||||
<input type="hidden" name="member_join_form_srl" value="{$formInfo->member_join_form_srl}" />
|
||||
<h2 class="h2">{$lang->cmd_input_extend_form}</h2>
|
||||
<ul>
|
||||
|
|
|
|||
|
|
@ -64,23 +64,6 @@ jQuery(function($){
|
|||
// hide form if enable_join is setted "No"
|
||||
var suSetting = $('fieldset.suSetting'); // 회원가입 설정
|
||||
var suForm = $('fieldset.suForm'); // 회원가입 양식
|
||||
var isEnable = suSetting.find(':radio[name=enable_join]:checked').val();
|
||||
if (isEnable == 'N'){
|
||||
suSetting.find('>ul>li:gt(0)').hide();
|
||||
suForm.hide();
|
||||
}
|
||||
|
||||
suSetting.find(':radio[name=enable_join]').change(function(){
|
||||
if($('#enable_join_yes').is(':checked')){
|
||||
// 회원 가입을 허용하지 않는 경우 불필요한 항목을 모두 감춘다
|
||||
suSetting.find('>ul>li:gt(0)').slideDown(200);
|
||||
suForm.slideDown(200);
|
||||
} else {
|
||||
// 회원 가입을 허용하는 경우 필요한 항목을 모두 펼친다
|
||||
suSetting.find('>ul>li:gt(0)').slideUp(200);
|
||||
suForm.slideUp(200);
|
||||
}
|
||||
});
|
||||
suForm.find(':checkbox[name="usable_list[]"]').each(function(){
|
||||
var $i = $(this);
|
||||
$i.change(function(){
|
||||
|
|
@ -241,4 +224,17 @@ jQuery(function($){
|
|||
resp = ['error','message'] // response tags
|
||||
);
|
||||
});
|
||||
|
||||
$('#userDefine form').submit(function(e) {
|
||||
var id_list = $(this).find('input[name=join_form_id_list]').val();
|
||||
var id_list_arr = id_list.split(',');
|
||||
|
||||
var column_id = $(this).find('input[name=column_id]').val();
|
||||
var old_column_id = $(this).find('input[name=old_column_id]').val();
|
||||
if($.inArray(column_id, id_list_arr) > -1 && column_id != old_column_id) {
|
||||
alert(xe.lang.msg_exists_user_id);
|
||||
return false;
|
||||
}
|
||||
else return true;
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
{@ Context::loadFile(array("./common/js/jquery.js", 'head', '', -100000), true) }
|
||||
{@ Context::loadFile(array("./common/js/js_app.js", 'head', '', -100000), true) }
|
||||
{@ Context::loadFile(array("./common/js/common.js", 'head', '', -100000), true) }
|
||||
{@ Context::loadFile(array("./common/js/xml_handler.js", 'head', '', -100000), true) }
|
||||
{@ Context::loadFile(array("./common/js/xml_js_filter.js", 'head', '', -100000), true) }
|
||||
|
||||
<load target="css/msignup.css" usecdn="true" />
|
||||
<!--%import("../skins/default/filter/leave_member.xml")-->
|
||||
<load target="../skins/default/js/member.js" usecdn="true" />
|
||||
<div class="bd">
|
||||
<h2 class="h2">{$member_title = $lang->msg_leave_member}</h2>
|
||||
<form id="fo_insert_member" action="./" method="get" onsubmit="return procFilter(this, leave_member)">
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<input type="hidden" name="document_srl" value="{$document_srl}" />
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
<fieldset class="sn">
|
||||
<ul>
|
||||
<li><label for="uid" class="db fb al">{$lang->user_id}</label><div id="uid">{$member_info->user_id}</div></li>
|
||||
<li><label for="pw" class="db fb al">{$lang->password}</label><input id="pw" type="password" name="password" class="itx" /></li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
<div class="cm">
|
||||
<input type="submit" value="{$lang->cmd_leave}" class="bn"/>
|
||||
<a href="{getUrl('act','dispMemberInfo','member_srl','')}" class="bn"><span>{$lang->cmd_back}</span></a>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
|
@ -6,6 +6,7 @@
|
|||
xe.lang.cmd_delete = '{$lang->cmd_delete}';
|
||||
xe.lang.msg_null_prohibited_id = '{$lang->msg_null_prohibited_id}';
|
||||
xe.lang.msg_null_prohibited_nick_name = '{$lang->msg_null_prohibited_nick_name}';
|
||||
xe.lang.msg_exists_user_id= '{$lang->msg_exists_user_id}';
|
||||
</script>
|
||||
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
|
||||
<p>{$XE_VALIDATOR_MESSAGE}</p>
|
||||
|
|
@ -54,6 +55,13 @@
|
|||
<p class="q"><label for="change_password_date">{$lang->change_password_date}</label></p>
|
||||
<p class="a"><input type="text" id="change_password_date" name="change_password_date" value="{$config->change_password_date}" style="width:30px" /><span class="desc">{$lang->unit_day}({$lang->about_change_password_date})</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="q">{$lang->enable_login_fail_report}</p>
|
||||
<p class="a">
|
||||
<input type="radio" name="enable_login_fail_report" id="enable_login_fail_report_yes" value="Y" checked="checked"|cond="$config->enable_login_fail_report != 'N'" /><label for="enable_login_fail_report_yes">{$lang->cmd_yes}</label>
|
||||
<input type="radio" name="enable_login_fail_report" id="enable_login_fail_report_no" value="N" checked="checked"|cond="$config->enable_login_fail_report == 'N'" /><label for="enable_join_no">{$lang->cmd_no}</label>
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="q"><label for="max_error_count">{$lang->login_trial_limit1}</label></p>
|
||||
<p class="a"><input type="text" id="max_error_count" name="max_error_count" value="{$config->max_error_count}" style="width:30px" /><span class="desc">{$lang->about_login_trial_limit1}</span></p>
|
||||
|
|
@ -85,9 +93,10 @@
|
|||
<p class="desc">{$lang->about_redirect_url}</p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="q"><label for="skin">{$lang->layout}</label></p>
|
||||
<p class="q"><label for="layout">{$lang->layout}</label></p>
|
||||
<p class="a">
|
||||
<select name="layout_srl">
|
||||
<select id="layout" name="layout_srl">
|
||||
<option value="0">{$lang->notuse}</option>
|
||||
<option loop="$layout_list => $key,$val" value="{$val->layout_srl}" selected="selected"|cond="$val->layout_srl == $config->layout_srl">{$val->title} ({$val->layout})</option>
|
||||
</select>
|
||||
</p>
|
||||
|
|
@ -104,6 +113,23 @@
|
|||
<p class="q"><label for="member_colorset">{$lang->colorset}</label></p>
|
||||
<p class="a"><div id="member_colorset"></div></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="q"><label for="mlayout">{$lang->mobile_layout}</label></p>
|
||||
<p class="a">
|
||||
<select id="mlayout" name="mlayout_srl">
|
||||
<option value="0">{$lang->notuse}</option>
|
||||
<option loop="$mlayout_list => $key,$val" value="{$val->layout_srl}" selected="selected"|cond="$val->layout_srl == $config->mlayout_srl">{$val->title} ({$val->layout})</option>
|
||||
</select>
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="q"><label for="mskin">{$lang->mobile_skin}</label></p>
|
||||
<p class="a">
|
||||
<select id="mskin" name="mskin">
|
||||
<option loop="$mskin_list=>$key,$val" value="{$key}" selected="selected"|cond="$config->mskin==$key">{$val->title} ({$key})</option>
|
||||
</select>
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="q"><label for="prohibited_nick_name">{$lang->cmd_manage_nick_name}({sprintf($lang->count_manage_nick_name, count($deniedNickNames))})</label></p>
|
||||
<div class="a">
|
||||
|
|
@ -261,5 +287,6 @@
|
|||
<input type="hidden" name="success_return_url" value="{getUrl('act', $act)}" />
|
||||
<div id="extendForm">
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,185 +0,0 @@
|
|||
{@ Context::loadFile(array("./common/js/jquery.js", 'head', '', -100000), true) }
|
||||
{@ Context::loadFile(array("./common/js/js_app.js", 'head', '', -100000), true) }
|
||||
{@ Context::loadFile(array("./common/js/common.js", 'head', '', -100000), true) }
|
||||
{@ Context::loadFile(array("./common/js/xml_handler.js", 'head', '', -100000), true) }
|
||||
{@ Context::loadFile(array("./common/js/xml_js_filter.js", 'head', '', -100000), true) }
|
||||
|
||||
<load target="css/msignup.css" usecdn="true" />
|
||||
<load target="js/signup_check.js" usecdn="true" />
|
||||
<load target="js/krzip_search.js" usecdn="true" />
|
||||
<!--%import("../skins/default/filter/modify_info.xml")-->
|
||||
<load target="../skins/default/js/member.js" usecdn="true" />
|
||||
|
||||
<!--@if($member_config->profile_image == 'Y')-->
|
||||
<!--%import("../skins/default/filter/delete_profile_image.xml")-->
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($member_config->image_name == 'Y')-->
|
||||
<!--%import("../skins/default/filter/delete_image_name.xml")-->
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($member_config->image_mark == 'Y')-->
|
||||
<!--%import("../skins/default/filter/delete_image_mark.xml")-->
|
||||
<!--@end-->
|
||||
|
||||
<div class="bd">
|
||||
<h2 class="h2">{$lang->msg_update_member}</h2>
|
||||
<h3 class="h3">{$lang->member_default_info}</h3>
|
||||
<form id="fo_insert_member" action="./" method="GET" onsubmit="return procFilter(this, modify_info)" <!--@if($member_config->profile_image == 'Y' || $member_config->image_name=='Y' || $member_config->image_mark=='Y')-->enctype="multipart/form-data"<!--@end--> target="tmp_upload_iframe">
|
||||
<input type="hidden" name="act" value="" />
|
||||
<input type="hidden" name="module" value="member" />
|
||||
<input type="hidden" name="member_srl" value="{$member_info->member_srl}" />
|
||||
<input type="hidden" name="signature" value="{htmlspecialchars($member_info->signature)}" />
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
|
||||
<fieldset class="sn">
|
||||
<ul>
|
||||
<li><label for="uid" class="db fb al">{$lang->user_id}</label><div id="uid">{htmlspecialchars($member_info->user_id)}</div></li>
|
||||
<li><label for="uname" class="db fb al">{$lang->user_name}</label><input type="text" name="user_name" id="uname" class="itx" value="{htmlspecialchars($member_info->user_name)}" /> <p style="color:#666">{$lang->about_user_name}</p></li>
|
||||
<li><label for="nname" class="db fb al">{$lang->nick_name}</label><input type="text" name="nick_name" id="nname" class="itx" value="{htmlspecialchars($member_info->nick_name)}" /> <p style="color:#666">{$lang->about_nick_name}</p></li>
|
||||
<li><label for="email" class="db fb al">{$lang->email_address}</label><input type="text" name="email_address" id="email" class="itx" value="{htmlspecialchars($member_info->email_address)}" /><p style="color:#666">{$lang->about_email_address}</p></li>
|
||||
<!--@if($member_config->profile_image == 'Y')-->
|
||||
<li><label for="p_image" class="db fb al">{$lang->profile_image}</label>
|
||||
<!--@if($member_info->profile_image->src)-->
|
||||
<div id="p_image">
|
||||
<img src="{$member_info->profile_image->src}" border="0" alt="profile_image" />
|
||||
<button type="button" onclick="doDeleteProfileImage({$member_info->member_srl});">{$lang->cmd_delete}</button>
|
||||
</div>
|
||||
<!--@end-->
|
||||
<div id="p_image">
|
||||
<input type="file" name="profile_image" value="" />
|
||||
<a href="#" onclick="doUploadProfileImage();return false;" class="bn"><span>{$lang->cmd_registration}</span></a>
|
||||
</div>
|
||||
<p style="color:#666">{$lang->profile_image_max_width} : {$member_config->profile_image_max_width}px, {$lang->profile_image_max_height} : {$member_config->profile_image_max_height}px</p>
|
||||
</li>
|
||||
<!--@end-->
|
||||
<!--@if($member_config->image_name == 'Y')-->
|
||||
<li><label for="p_image" class="db fb al">{$lang->image_name}</label>
|
||||
<!--@if($member_info->image_name->src)-->
|
||||
<div id="p_image">
|
||||
<div><img src="{$member_info->image_name->src}" border="0" alt="image_name" /></div>
|
||||
<button type="button" onclick="doDeleteImageName({$member_info->member_srl});">{$lang->cmd_delete}</button>
|
||||
</div>
|
||||
<!--@end-->
|
||||
<div id="p_image">
|
||||
<input type="file" name="image_name" value="" />
|
||||
<a href="#" onclick="doUploadImageName();return false;" class="bn"><span>{$lang->cmd_registration}</span></a>
|
||||
</div>
|
||||
<p style="color:#666">{$lang->image_name_max_width} : {$member_config->image_name_max_width}px, {$lang->image_name_max_height} : {$member_config->image_name_max_height}px</p>
|
||||
</li>
|
||||
<!--@end-->
|
||||
<!--@if($member_config->image_mark == 'Y')-->
|
||||
<li><label for="image_mark" class="db fb al">{$lang->image_mark}</label>
|
||||
<!--@if($member_info->image_mark->src)-->
|
||||
<div id="image_mark">
|
||||
<img src="{$member_info->image_mark->src}" border="0" alt="image_mark" />
|
||||
<button type="button" onclick="doDeleteImageMark({$member_info->member_srl});return false;">{$lang->cmd_delete}</button>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
<div id="image_mark">
|
||||
<input type="file" name="image_mark" value="" />
|
||||
<a href="#" onclick="doUploadImageMark();return false;" class="bn"><span>{$lang->cmd_registration}</span></a>
|
||||
</div>
|
||||
<p style="color:#666">{$lang->image_mark_max_width} : {$member_config->image_mark_max_width}px, {$lang->image_mark_max_height} : {$member_config->image_mark_max_height}px</p>
|
||||
</li>
|
||||
<!--@end-->
|
||||
<li><label for="hpage" class="db fb al">{$lang->homepage}</label><input type="text" id="hpage" name="homepage" value="{htmlspecialchars($member_info->homepage)}" class="itx" /> <p style="color:#666">{$lang->about_homepage}</p></li>
|
||||
<li><label for="bpage" class="db fb al">{$lang->blog}</label><input type="text" id="bpage" name="blog" value="{htmlspecialchars($member_info->blog)}" class="itx" /> <p style="color:#666">{$lang->about_blog_url}</p></li>
|
||||
<li><label for="bday" class="db fb al">{$lang->birthday}</label><input name="birthday" type="text" id="bday" class="itx" value="{$member_info->birthday}" /><p style="color:#666">{$lang->about_birthday}</p></li>
|
||||
|
||||
<li><label for="mailing" class="db fb al">{$lang->allow_mailing}</label><input id="mailing" type="checkbox" name="allow_mailing" value="Y" class="checkbox" <!--@if($member_info->allow_mailing!='N')-->checked="checked"<!--@end--> /> <p style="color:#666">{$lang->about_allow_mailing}</p></li>
|
||||
<!--@if($member_config->signature != 'N')-->
|
||||
<li><label for="signature" class="db fb al">{$lang->signature}</label><textarea name="signature" rows="8" cols="42" class="itxx" value=""></textarea></li>
|
||||
<!--@end-->
|
||||
</ul>
|
||||
</fieldset>
|
||||
<!--@if($extend_form_list)-->
|
||||
<h3 class="h3">{$lang->member_extend_info}</h3>
|
||||
<fieldset class="sn">
|
||||
<ul>
|
||||
<!--@foreach($extend_form_list as $key => $val)--><!--@if($val->is_active=='Y')-->
|
||||
<li><label class="db fb al">{htmlspecialchars($val->column_title)}</label>
|
||||
<!--// 일반 text -->
|
||||
<!--@if($val->column_type == 'text')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="itx" />
|
||||
<!--// 홈페이지 주소 -->
|
||||
<!--@elseif($val->column_type == 'homepage')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="itx" />
|
||||
<!--// Email 주소 -->
|
||||
<!--@elseif($val->column_type == 'email_address')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="itx" />
|
||||
<!--// 전화번호 -->
|
||||
<!--@elseif($val->column_type == 'tel')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[0])}" size="4"/>
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[1])}" size="4"/>
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[2])}" size="4"/>
|
||||
<!--// textarea -->
|
||||
<!--@elseif($val->column_type == 'textarea')-->
|
||||
<textarea name="{$val->column_name}" rows="8" cols="42" class="itxx">{htmlspecialchars($val->value)}</textarea>
|
||||
<!--// 다중 선택 -->
|
||||
<!--@elseif($val->column_type == 'checkbox')-->
|
||||
<!--@if($val->default_value)-->
|
||||
<!--@foreach($val->default_value as $v)-->
|
||||
<input type="checkbox" id="{$v}" name="{$val->column_name}" value="{$v}" <!--@if(is_array($val->value)&&in_array($v, $val->value))-->checked="checked"<!--@end-->/><label for="{$v}">{$v}</label>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<!--@elseif($val->column_type == 'radio')-->
|
||||
<!--@if($val->default_value)-->
|
||||
<!--@foreach($val->default_value as $v)-->
|
||||
<input type="radio" name="{$val->column_name}" value="{$v}" <!--@if(is_array($val->value)&&in_array($v, $val->value))-->checked="checked"<!--@end-->/><label for="{$v}">{$v}</label>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
|
||||
<!--// 단일 선택 -->
|
||||
<!--@elseif($val->column_type == 'select')-->
|
||||
<select name="{$val->column_name}">
|
||||
<!--@if($val->default_value)-->
|
||||
<!--@foreach($val->default_value as $v)-->
|
||||
<option value="{$v}" <!--@if($v == $val->value)-->selected="selected"<!--@end-->>{$v}</option>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</select>
|
||||
|
||||
<!--// 한국 주소 검색 -->
|
||||
<!--@elseif($val->column_type == 'kr_zip')-->
|
||||
<div class="krZip">
|
||||
<div id="zone_address_1_{$val->column_name}" style="display:<!--@if($val->value[0])-->inline<!--@else-->none<!--@end-->;">
|
||||
<input type="text" name="{$val->column_name}" value="{$val->value[0]}" class="itx"/>
|
||||
<a href="#" onclick="doHideKrZipList('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_cancel}</span></a>
|
||||
</div>
|
||||
<div id="zone_address_list_{$val->column_name}" style="display:none">
|
||||
<select name="_tmp_address_list_{$val->column_name}"></select>
|
||||
<a href="#" onclick="doSelectKrZip('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_select}</span></a>
|
||||
<a href="#" onclick="doHideKrZipList('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_cancel}</span></a>
|
||||
</div>
|
||||
<div id="zone_address_search_{$val->column_name}" style="display:<!--@if($val->value[0])-->none<!--@else-->inline<!--@end-->;">
|
||||
<input type="text" name="_tmp_address_search_{$val->column_name}" class="itx" value="" />
|
||||
<a href="#" onclick="doSearchKrZip('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_search}</span></a>
|
||||
</div>
|
||||
|
||||
<div class="address2">
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[1])}" class="itx" />
|
||||
</div>
|
||||
</div>
|
||||
<!--// 일본 주소 검색 -->
|
||||
<!--@elseif($val->column_type == 'jp_zip')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" />
|
||||
<!--// 날짜 입력 -->
|
||||
<!--@elseif($val->column_type == 'date')-->
|
||||
<input type="hidden" name="{$val->column_name}" id="date_{$val->column_name}" value="{$val->value}" />
|
||||
<input type="text" class="inputDate" value="" />
|
||||
<!--@end-->
|
||||
<p style="color:#666">{$val->description}</p>
|
||||
<!--// 공개 필드 css확인 필요 -->
|
||||
<!--input type="checkbox" class="checkbox" name="open_{$val->column_name}" value="Y" id="open_{$val->column_name}" /><label for="open_{$val->column_name}">{$lang->public}</label--></li>
|
||||
<!--@end--><!--@end-->
|
||||
</ul>
|
||||
</fieldset>
|
||||
<!--@end-->
|
||||
<div class="cm">
|
||||
<input type="submit" value="{$lang->cmd_registration}" class="bn"/>
|
||||
<a href="{getUrl('act','dispMemberInfo','member_srl','')}" class="bn"><span>{$lang->cmd_cancel}</span></a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
@ -606,16 +606,24 @@
|
|||
//$info = $oModuleModel->getModuleInfoXml($moduleName);
|
||||
$info = $oModuleModel->getModuleActionXml($moduleName);
|
||||
|
||||
$url = getNotEncodedUrl('', 'module', 'admin', 'act', $info->menu->{$menuName}->index);
|
||||
if(empty($url)) $url = getNotEncodedUrl('', 'module', 'admin', 'act', $info->admin_index_act);
|
||||
if(empty($url)) $url = getNotEncodedUrl('', 'module', 'admin');
|
||||
$url = getNotEncodedFullUrl('', 'module', 'admin', 'act', $info->menu->{$menuName}->index);
|
||||
if(empty($url)) $url = getNotEncodedFullUrl('', 'module', 'admin', 'act', $info->admin_index_act);
|
||||
if(empty($url)) $url = getNotEncodedFullUrl('', 'module', 'admin');
|
||||
$dbInfo = Context::getDBInfo();
|
||||
|
||||
$args->menu_item_srl = (!$requestArgs->menu_item_srl) ? getNextSequence() : $requestArgs->menu_item_srl;
|
||||
$args->parent_srl = $requestArgs->parent_srl;
|
||||
$args->menu_srl = $requestArgs->menu_srl;
|
||||
$args->name = sprintf('{$lang->menu_gnb_sub[\'%s\']}', $menuName);
|
||||
$args->url = str_replace($dbInfo->default_url, '', $url);
|
||||
//if now page is https...
|
||||
if(strpos($url, 'https') !== false)
|
||||
{
|
||||
$args->url = str_replace('https'.substr($dbInfo->default_url, 4), '', $url);
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->url = str_replace($dbInfo->default_url, '', $url);
|
||||
}
|
||||
$args->open_window = 'N';
|
||||
$args->expand = 'N';
|
||||
$args->normal_btn = '';
|
||||
|
|
@ -722,6 +730,7 @@
|
|||
$xml_buff = sprintf(
|
||||
'<?php '.
|
||||
'define(\'__ZBXE__\', true); '.
|
||||
'define(\'__XE__\', true); '.
|
||||
'require_once(\''.FileHandler::getRealPath('./config/config.inc.php').'\'); '.
|
||||
'$oContext = &Context::getInstance(); '.
|
||||
'$oContext->init(); '.
|
||||
|
|
@ -743,6 +752,7 @@
|
|||
$php_buff = sprintf(
|
||||
'<?php '.
|
||||
'if(!defined("__ZBXE__")) exit(); '.
|
||||
'if(!defined("__XE__")) exit(); '.
|
||||
'%s; '.
|
||||
'%s; '.
|
||||
'$menu->list = array(%s); '.
|
||||
|
|
|
|||
|
|
@ -183,6 +183,20 @@
|
|||
$layoutList = $oLayoutModel->getLayoutList();
|
||||
Context::set('layout_list', $layoutList);
|
||||
|
||||
// choice theme file
|
||||
$theme_file = _XE_PATH_.'files/theme/theme_info.php';
|
||||
if(is_readable($theme_file))
|
||||
{
|
||||
@include($theme_file);
|
||||
Context::set('current_layout', $theme_info->layout);
|
||||
}
|
||||
else
|
||||
{
|
||||
$oModuleModel = &getModel('module');
|
||||
$default_mid = $oModuleModel->getDefaultMid();
|
||||
Context::set('current_layout', $default_mid->layout_srl);
|
||||
}
|
||||
|
||||
// get default group list
|
||||
$oMemberModel = &getModel('member');
|
||||
$output = $oMemberModel->getGroups();
|
||||
|
|
@ -208,7 +222,7 @@
|
|||
function _menuInfoSetting(&$menu)
|
||||
{
|
||||
$oModuleModel = &getModel('module');
|
||||
if(!preg_match('/^http/i', $menu['url']))
|
||||
if($menu['url'] && !preg_match('/^http/i', $menu['url']))
|
||||
{
|
||||
unset($midInfo);
|
||||
unset($moduleInfo);
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ $('form.siteMap')
|
|||
editForm.find('input[name=menu_srl]').val(menuItem.menu_srl);
|
||||
editForm.find('input[name=menu_item_srl]').val(menuItem.menu_item_srl);
|
||||
editForm.find('input[name=parent_srl]').val(menuItem.parent_srl);
|
||||
editForm.find('input[name=menu_name_key]').val(menuName);
|
||||
editForm.find('input[name=menu_name_key]').val(menuItem.name_key);
|
||||
editForm.find('input[name=menu_name]').val(menuName);
|
||||
editForm.find('input[name=success_return_url]').val(successReturnUrl);
|
||||
|
||||
|
|
@ -161,7 +161,7 @@ $('form.siteMap')
|
|||
editForm.find('input[name=menu_name]').val('');
|
||||
editForm.find('input[name=cType]').attr('checked', false);
|
||||
editForm.find('input[name=create_menu_url]').val('');
|
||||
editForm.find('select[name=layout_srl]')[0].options[0].selected = true;
|
||||
editForm.find('select[name=layout_srl]').val(xe.current_layout);
|
||||
editForm.find('input[name=menu_url]').val('');
|
||||
editForm.find('input[name=menu_open_window]')[0].checked = true;
|
||||
editForm.find('input[name=group_srls\\[\\]]').attr('checked', false);
|
||||
|
|
@ -292,7 +292,7 @@ $('form.siteMap')
|
|||
}
|
||||
else if(checkedValue == 'CREATE')
|
||||
{
|
||||
$('#layoutSrl').val('0');
|
||||
$('#layoutSrl').val(xe.current_layout);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue