mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-05 09:41:40 +09:00
Fix #2070 add class support to menu items
This commit is contained in:
parent
1ec0d74e77
commit
3ddf1392f9
9 changed files with 70 additions and 20 deletions
|
|
@ -133,3 +133,5 @@ $lang->no_use_skin = 'Will not use any skin';
|
|||
$lang->menu_desc = 'Description';
|
||||
$lang->menu_icon = 'Icon';
|
||||
$lang->about_menu_icon = 'If and how the icon code is interpreted is up to the layout designer.';
|
||||
$lang->menu_class = 'HTML Class';
|
||||
$lang->about_menu_class = 'If and how the class name is interpreted is up to the layout designer.';
|
||||
|
|
|
|||
|
|
@ -24,11 +24,11 @@ $lang->depth = '단계';
|
|||
$lang->parent_menu_name = '상위 메뉴명';
|
||||
$lang->menu_name = '메뉴 이름';
|
||||
$lang->menu_srl = '메뉴 고유 번호';
|
||||
$lang->menu_id = '메뉴 ID';
|
||||
$lang->menu_url = '메뉴 URL';
|
||||
$lang->menu_id = $lang->menu_url;
|
||||
$lang->browser_title = '브라우저 제목';
|
||||
$lang->about_browser_title = '브라우저 제목에 나타나는 값입니다. RSS/Trackback에서도 사용됩니다.';
|
||||
$lang->menu_type = '메뉴 타입';
|
||||
$lang->menu_url = '연결 url';
|
||||
$lang->menu_open_window = '메뉴 클릭시 새 창으로 열기';
|
||||
$lang->menu_self_window = '현재창 열기';
|
||||
$lang->menu_expand = '늘 펼쳐진 상태로 있게 합니다';
|
||||
|
|
@ -149,3 +149,5 @@ $lang->no_use_skin = '스킨 사용 안 함';
|
|||
$lang->menu_desc = '메뉴 설명';
|
||||
$lang->menu_icon = '메뉴 아이콘';
|
||||
$lang->about_menu_icon = '아이콘 코드를 어떻게 해석하는지는 레이아웃에 따라 다를 수 있습니다.';
|
||||
$lang->menu_class = '메뉴 클래스';
|
||||
$lang->about_menu_class = '메뉴 클래스를 어떻게 사용하는지는 레이아웃에 따라 다를 수 있습니다.';
|
||||
|
|
|
|||
|
|
@ -560,6 +560,7 @@ class menuAdminController extends menu
|
|||
}
|
||||
|
||||
$args->icon = trim($request->menu_icon ?? '') ?: '';
|
||||
$args->class = trim(preg_replace('/[^a-z0-9\x20_-]/', '', $request->menu_class ?? ''));
|
||||
$args->desc = trim($request->menu_desc ?? '') ?: '';
|
||||
|
||||
$args->menu_item_srl = getNextSequence();
|
||||
|
|
@ -595,6 +596,7 @@ class menuAdminController extends menu
|
|||
else $args->name = $request->menu_name;
|
||||
|
||||
$args->icon = trim($request->menu_icon ?? '') ?: '';
|
||||
$args->class = trim(preg_replace('/[^a-z0-9\x20_-]/', '', $request->menu_class ?? ''));
|
||||
$args->desc = trim($request->menu_desc ?? '') ?: '';
|
||||
|
||||
if($request->module_id && strncasecmp('http', $request->module_id, 4) === 0)
|
||||
|
|
@ -780,6 +782,7 @@ class menuAdminController extends menu
|
|||
}
|
||||
|
||||
$args->icon = trim($request->menu_icon ?? '') ?: '';
|
||||
$args->class = trim(preg_replace('/[^a-z0-9\x20_-]/', '', $request->menu_class ?? ''));
|
||||
$args->desc = trim($request->menu_desc ?? '') ?: '';
|
||||
|
||||
unset($args->group_srls);
|
||||
|
|
@ -1949,6 +1952,7 @@ class menuAdminController extends menu
|
|||
|
||||
$url = escape($node->url);
|
||||
$icon = Rhymix\Framework\Filters\HTMLFilter::clean($node->icon ?? '', true);
|
||||
$class = Rhymix\Framework\Filters\HTMLFilter::clean($node->class ?? '', true);
|
||||
$desc = Rhymix\Framework\Filters\HTMLFilter::clean($node->desc ?? '', true);
|
||||
$desc = preg_replace('/(\$user_lang)->(userLang[0-9]+)/', '$1->$2', $desc);
|
||||
if(preg_match('/^([0-9a-zA-Z\_\-]+)$/', $node->url))
|
||||
|
|
@ -1997,7 +2001,7 @@ class menuAdminController extends menu
|
|||
}
|
||||
|
||||
$attribute = sprintf(
|
||||
'node_srl="%d" parent_srl="%d" menu_name_key=%s text="<?php if(%s) { %s }?>" url="<?php print(%s?%s:"")?>" href="<?php print(%s?%s:"")?>" is_shortcut=%s icon=%s desc=%s open_window=%s expand=%s normal_btn=%s hover_btn=%s active_btn=%s link="<?php if(%s) {?>%s<?php }?>"',
|
||||
'node_srl="%d" parent_srl="%d" menu_name_key=%s text="<?php if(%s) { %s }?>" url="<?php print(%s?%s:"")?>" href="<?php print(%s?%s:"")?>" is_shortcut=%s icon=%s class=%s desc=%s open_window=%s expand=%s normal_btn=%s hover_btn=%s active_btn=%s link="<?php if(%s) {?>%s<?php }?>"',
|
||||
$menu_item_srl,
|
||||
($node->parent_srl) ? $node->parent_srl : '',
|
||||
var_export(escape($node->name ?: '', true, true), true),
|
||||
|
|
@ -2009,6 +2013,7 @@ class menuAdminController extends menu
|
|||
$href,
|
||||
var_export($is_shortcut, true),
|
||||
var_export($icon, true),
|
||||
var_export($class, true),
|
||||
var_export($desc, true),
|
||||
var_export($open_window, true),
|
||||
var_export($expand, true),
|
||||
|
|
@ -2095,6 +2100,7 @@ class menuAdminController extends menu
|
|||
$href = escape($node->href ?? '', false);
|
||||
$url = escape($node->url ?? '', false);
|
||||
$icon = Rhymix\Framework\Filters\HTMLFilter::clean($node->icon ?? '', true);
|
||||
$class = Rhymix\Framework\Filters\HTMLFilter::clean($node->class ?? '', true);
|
||||
$desc = Rhymix\Framework\Filters\HTMLFilter::clean($node->desc ?? '', true);
|
||||
$desc = preg_replace('/(\$user_lang)->(userLang[0-9]+)/', '$1->$2', $desc);
|
||||
if(preg_match('/^([0-9a-zA-Z\_\-]+)$/i', $node->url))
|
||||
|
|
@ -2157,6 +2163,7 @@ class menuAdminController extends menu
|
|||
"url" => (%s ? %s : ""),
|
||||
"is_shortcut" => %s,
|
||||
"icon" => %s,
|
||||
"class" => %s,
|
||||
"desc" => %s,
|
||||
"open_window" => %s,
|
||||
"normal_btn" => %s,
|
||||
|
|
@ -2178,6 +2185,7 @@ class menuAdminController extends menu
|
|||
var_export($url, true),
|
||||
var_export($is_shortcut, true),
|
||||
var_export($icon, true),
|
||||
var_export($class, true),
|
||||
var_export($desc, true),
|
||||
var_export($open_window, true),
|
||||
var_export($normal_btn, true),
|
||||
|
|
|
|||
|
|
@ -40,6 +40,12 @@ class menu extends ModuleObject
|
|||
return true;
|
||||
}
|
||||
|
||||
// 2023. 09. 12 add column class
|
||||
if(!$oDB->isColumnExists('menu_item', 'class'))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -62,6 +68,12 @@ class menu extends ModuleObject
|
|||
{
|
||||
$oDB->addColumn('menu_item', 'icon', 'varchar', 250, null, false, 'name');
|
||||
}
|
||||
|
||||
// 2023. 09. 12 add column class
|
||||
if(!$oDB->isColumnExists('menu_item', 'class'))
|
||||
{
|
||||
$oDB->addColumn('menu_item', 'class', 'varchar', 250, null, false, 'icon');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
<column name="menu_srl" var="menu_srl" filter="number" notnull="notnull" />
|
||||
<column name="name" var="name" notnull="notnull" />
|
||||
<column name="icon" var="icon" />
|
||||
<column name="class" var="class" />
|
||||
<column name="desc" var="desc" />
|
||||
<column name="url" var="url" />
|
||||
<column name="is_shortcut" var="is_shortcut" notnull="notnull" default="N" />
|
||||
|
|
@ -20,4 +21,4 @@
|
|||
<column name="listorder" var="listorder" notnull="notnull" />
|
||||
<column name="regdate" var="regdate" default="curdate()" />
|
||||
</columns>
|
||||
</query>
|
||||
</query>
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
<column name="parent_srl" var="parent_srl" />
|
||||
<column name="name" var="name" />
|
||||
<column name="icon" var="icon" />
|
||||
<column name="class" var="class" />
|
||||
<column name="desc" var="desc" />
|
||||
<column name="url" var="url" />
|
||||
<column name="is_shortcut" var="is_shortcut" />
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
<column name="menu_srl" type="number" notnull="notnull" index="idx_menu_srl" />
|
||||
<column name="name" type="text" />
|
||||
<column name="icon" type="varchar" size="250" />
|
||||
<column name="class" type="varchar" size="250" />
|
||||
<column name="desc" type="varchar" size="250" />
|
||||
<column name="url" type="varchar" size="250" />
|
||||
<column name="is_shortcut" type="char" size="1" default="N" />
|
||||
|
|
@ -15,4 +16,4 @@
|
|||
<column name="group_srls" type="text" />
|
||||
<column name="listorder" type="number" default="0" index="idx_listorder" />
|
||||
<column name="regdate" type="date" index="idx_regdate" />
|
||||
</table>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ padding:0;list-style:none}
|
|||
.col .clone ul ul{padding-left:8px;margin-left:8px}
|
||||
.col .clone ul ul li{background-position:-90px 10px;background-repeat:repeat-y}
|
||||
.col .clone ul ul li:only-child,
|
||||
.col .clone ul ul li:last-child{background:none}
|
||||
.col .clone ul ul li:last-child{background:none}
|
||||
.col .clone ul ul li:only-child>a:before{background-position:-36px 0}
|
||||
.col .clone li.x_disabled>a{color:#999;text-decoration:none;cursor:not-allowed}
|
||||
.col .clone li.x_selected>a{color:#000;font-weight:bold;text-decoration:underline}
|
||||
|
|
@ -201,7 +201,7 @@ padding:0;list-style:none}
|
|||
.download ._pagination>.x_pagination a:hover,
|
||||
.download ._pagination>.x_pagination a:focus{font-weight:bold}
|
||||
.download ._pagination>.x_pagination .x_active>a{color:#000}
|
||||
.download .starRating,
|
||||
.download .starRating,
|
||||
.download .starRating>i{display:inline-block;height:15px;background:transparent url(../../../admin/tpl/img/starRating.png) no-repeat;overflow:hidden}
|
||||
.download .starRating{width:79px;vertical-align:middle}
|
||||
.download .starRating>i{font-size:0;line-height:0;vertical-align:top;text-indent:-100px;*text-indent:0;background-position:0 -15px}
|
||||
|
|
@ -279,6 +279,7 @@ padding:0;list-style:none}
|
|||
#default [for="lang_menuDesc"],
|
||||
#default [for="lang_pageTitle"],
|
||||
#default [for="menuIcon"],
|
||||
#default [for="menuClass"],
|
||||
#default [for="mid2"]{font-weight:bold;}
|
||||
#default .btnBoth{position:relative;margin:5px 0;box-sizing:border-box;width:100%;}
|
||||
/* Auth */
|
||||
|
|
@ -331,11 +332,11 @@ padding:0;list-style:none}
|
|||
/* Layout */
|
||||
#layout li ul._edit_menu {display:none}
|
||||
#layout li.selected ul._edit_menu {display:block}
|
||||
#layout .list,
|
||||
#layout .list,
|
||||
#skin .list{position:relative}
|
||||
#layout .mask,
|
||||
#layout .mask,
|
||||
#skin .mask{display:none;position:absolute;width:100%;height:100%;left:0;top:0;background:#fff;opacity:.5;filter:alpha(opacity=50);z-index:99}
|
||||
#layout .disabled>.mask,
|
||||
#layout .disabled>.mask,
|
||||
#skin .disabled>.mask{display:block;cursor:not-allowed}
|
||||
/* Full Setup */
|
||||
#fullSetup .x_btn-group{position:absolute;right:4px;margin: 0 5px;}
|
||||
|
|
|
|||
|
|
@ -191,11 +191,20 @@
|
|||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="x_input-append">
|
||||
<label for="menuIcon2">{$lang->menu_icon}</label>
|
||||
<input id="menuIcon2" class="_menuIcon" type="text" />
|
||||
<label for="menuIcon2">{$lang->menu_icon} <a href="#help_menuIcon2" class="x_icon-question-sign" data-admin-toggle="#help_menuIcon2">{$lang->help}</a></label>
|
||||
<div id="help_menuIcon2" class="x_alert x_alert-info">
|
||||
<button type="button" class="x_close" data-admin-hide="#help_menuIcon2">×</button>
|
||||
<p>{$lang->about_menu_icon}</p>
|
||||
</div>
|
||||
<p>{$lang->about_menu_icon}</p>
|
||||
<input id="menuIcon2" class="_menuIcon" type="text" />
|
||||
</li>
|
||||
<li>
|
||||
<label for="menuClass2">{$lang->menu_class} <a href="#help_menuClass2" class="x_icon-question-sign" data-admin-toggle="#help_menuClass2">{$lang->help}</a></label>
|
||||
<div id="help_menuClass2" class="x_alert x_alert-info">
|
||||
<button type="button" class="x_close" data-admin-hide="#help_menuClass2">×</button>
|
||||
<p>{$lang->about_menu_class}</p>
|
||||
</div>
|
||||
<input id="menuClass2" class="_menuClass" type="text" />
|
||||
</li>
|
||||
<li>
|
||||
<div class="multilingual x_input-append">
|
||||
|
|
@ -204,7 +213,7 @@
|
|||
</div>
|
||||
</li>
|
||||
<li class="typePage">
|
||||
<label for="mid1">{$lang->menu_id} <a href="#help_menuId" class="x_icon-question-sign" data-admin-toggle="#mid1_help">{$lang->help}</a></label>
|
||||
<label for="mid1">{$lang->menu_url} <a href="#help_menuId" class="x_icon-question-sign" data-admin-toggle="#mid1_help">{$lang->help}</a></label>
|
||||
<div id="mid1_help" class="x_alert x_alert-info">
|
||||
<button type="button" class="x_close" data-admin-hide="#mid1_help">×</button>
|
||||
<p>{$lang->about_menu_id} {$lang->about_new_menu_id}</p>
|
||||
|
|
@ -261,11 +270,20 @@
|
|||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="x_input-append">
|
||||
<label for="menuIcon">{$lang->menu_icon}</label>
|
||||
<input id="menuIcon" class="_menuIcon" type="text" />
|
||||
<label for="menuIcon">{$lang->menu_icon} <a href="#help_menuIcon" class="x_icon-question-sign" data-admin-toggle="#help_menuIcon">{$lang->help}</a></label>
|
||||
<div id="help_menuIcon" class="x_alert x_alert-info">
|
||||
<button type="button" class="x_close" data-admin-hide="#help_menuIcon">×</button>
|
||||
<p>{$lang->about_menu_icon}</p>
|
||||
</div>
|
||||
<p style="width:220px;min-width:100%">{$lang->about_menu_icon}</p>
|
||||
<input id="menuIcon" class="_menuIcon" type="text" />
|
||||
</li>
|
||||
<li>
|
||||
<label for="menuClass">{$lang->menu_class} <a href="#help_menuClass" class="x_icon-question-sign" data-admin-toggle="#help_menuClass">{$lang->help}</a></label>
|
||||
<div id="help_menuClass" class="x_alert x_alert-info">
|
||||
<button type="button" class="x_close" data-admin-hide="#help_menuClass">×</button>
|
||||
<p>{$lang->about_menu_class}</p>
|
||||
</div>
|
||||
<input id="menuClass" class="_menuClass" type="text" />
|
||||
</li>
|
||||
<li>
|
||||
<div class="multilingual x_input-append">
|
||||
|
|
@ -1867,6 +1885,7 @@ jQuery(function($){
|
|||
$('#add_menu ._save').bind("click", function(){
|
||||
var sMenuName = $('#add_menu ._menuName').val();
|
||||
var sMenuIcon = $('#add_menu ._menuIcon').val();
|
||||
var sMenuClass = $('#add_menu ._menuClass').val();
|
||||
var sMenuDesc = $('#add_menu ._menuDesc').val();
|
||||
var sUrl = $('#add_menu ._mid').val();
|
||||
var sTargetKey = "module_id";
|
||||
|
|
@ -1917,6 +1936,7 @@ jQuery(function($){
|
|||
params['menu_name_key'] = "";
|
||||
params['menu_name'] = sMenuName;
|
||||
params['menu_icon'] = sMenuIcon;
|
||||
params['menu_class'] = sMenuClass;
|
||||
params['menu_desc'] = sMenuDesc;
|
||||
params['module_type'] = sSelectedModuleName;
|
||||
params['menu_open_window'] = "N";
|
||||
|
|
@ -1952,6 +1972,7 @@ jQuery(function($){
|
|||
|
||||
$(this).find('#menuName').val(htInfo.sMenuNameKey.match(/\$user_lang->/) ? htInfo.sMenuNameKey : htInfo.sText);
|
||||
$(this).find('#menuIcon').val(htInfo.icon);
|
||||
$(this).find('#menuClass').val(htInfo.class);
|
||||
$(this).find('#menuDesc').val(htInfo.desc);
|
||||
//menu_name_key
|
||||
|
||||
|
|
@ -2007,6 +2028,7 @@ jQuery(function($){
|
|||
|
||||
var sMenuName = $('#default ._menuName').val();
|
||||
var sMenuIcon = $('#default ._menuIcon').val();
|
||||
var sMenuClass = $('#default ._menuClass').val();
|
||||
var sMenuDesc = $('#default ._menuDesc').val();
|
||||
var sMID;
|
||||
|
||||
|
|
@ -2034,11 +2056,11 @@ jQuery(function($){
|
|||
params['menu_item_srl'] = sSelectedMenuSrl;
|
||||
params['menu_name'] = sMenuName;
|
||||
params['menu_icon'] = sMenuIcon;
|
||||
params['menu_class'] = sMenuClass;
|
||||
params['menu_desc'] = sMenuDesc;
|
||||
params['menu_open_window'] = sNewWindow;
|
||||
params['menu_expand'] = sLeaveUnfolded;
|
||||
params['browser_title'] = sBrowserTitle;
|
||||
//console.log(params);return;
|
||||
$.exec_json("menu.procMenuAdminUpdateItem", params, function(htData){
|
||||
// select currently selected menu
|
||||
$._xeAdminVar.sSelectOnload = $._xeAdminVar.sSelectedMenuSrl;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue