issue 63. make it able to use checking is_logged status in menu grant

git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.3.1@10955 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
chschy 2012-07-27 09:49:27 +00:00
parent 339c6e6d29
commit 71aeed5009
4 changed files with 46 additions and 5 deletions

View file

@ -592,4 +592,9 @@ Menu không phải là người quản lý, nhiệm vụ của nó chỉ là li
<value xml:lang="en"><![CDATA[Select Module ID]]></value>
<value xml:lang="zh-TW"><![CDATA[選擇模組 ID]]></value>
</item>
<item name="exposure_limits">
<value xml:lang="ko"><![CDATA[노출 제한]]></value>
<value xml:lang="en"><![CDATA[Exposure limits]]></value>
<value xml:lang="zh-TW"><![CDATA[Exposure limits]]></value>
</item>
</lang>

View file

@ -138,8 +138,11 @@
unset($source_args->act);
if($source_args->menu_open_window!="Y") $source_args->menu_open_window = "N";
if($source_args->menu_expand !="Y") $source_args->menu_expand = "N";
if($source_args->menu_grant_default == -1) $source_args->group_srls = -1;
if(!is_array($source_args->group_srls)) $source_args->group_srls = str_replace('|@|',',',$source_args->group_srls);
else $source_args->group_srls = implode(',', $source_args->group_srls);
$source_args->parent_srl = (int)$source_args->parent_srl;
if($source_args->cType == 'CREATE') $source_args->menu_url = $source_args->create_menu_url;
@ -713,7 +716,7 @@
'$group_srls = array_keys($logged_info->group_list); '.
'} else { '.
'$is_admin = false; '.
'$group_srsl = array(); '.
'$group_srls = array(); '.
'}';
// Create the xml cache file (a separate session is needed for xml cache)
$xml_buff = sprintf(
@ -812,7 +815,7 @@
$link = '<?php print $_names[$lang_type]; ?>';
}
// If the value of node->group_srls exists
if($group_srls) $group_check_code = sprintf('($is_admin==true||(is_array($group_srls)&&count(array_intersect($group_srls, array(%s)))))',$group_srls);
if($group_srls)$group_check_code = sprintf('($is_admin==true||(is_array($group_srls)&&count(array_intersect($group_srls, array(%s))))||($is_logged&&%s))',$group_srls,$group_srls === -1?1:-1);
else $group_check_code = "true";
$attribute = sprintf(
'node_srl="%s" parent_srl="%s" text="<?php if(%s) { %s }?>" url="<?php print(%s?"%s":"")?>" href="<?php print(%s?"%s":"")?>" open_window="%s" expand="%s" normal_btn="%s" hover_btn="%s" active_btn="%s" link="<?php if(%s) {?>%s<?php }?>"',
@ -871,7 +874,7 @@
if($node->url) $child_output['url_list'][] = $node->url;
$output['url_list'] = array_merge($output['url_list'], $child_output['url_list']);
// If node->group_srls value exists
if($node->group_srls) $group_check_code = sprintf('($is_admin==true||(is_array($group_srls)&&count(array_intersect($group_srls, array(%s)))))',$node->group_srls);
if($node->group_srls)$group_check_code = sprintf('($is_admin==true||(is_array($group_srls)&&count(array_intersect($group_srls, array(%s))))||($is_logged && %s))',$node->group_srls,$node->group_srls === -1?1:-1);
else $group_check_code = "true";
// List variables
$href = str_replace(array('&','"','<','>'),array('&amp;','&quot;','&lt;','&gt;'),$node->href);

View file

@ -5,6 +5,11 @@ jQuery(function($){
var $lang = $('#editMenu h2:first span');
xe.lang.add_menu = $lang.eq(0).text();
xe.lang.edit_menu = $lang.eq(1).text();
var $grant_lang = $('#groupList select[name=menu_grant_default] option');
xe.lang.grant_to_all = $grant_lang.eq(0).text();
xe.lang.grant_to_login_user = $grant_lang.eq(1).text();
xe.lang.grant_to_group = $grant_lang.eq(2).text();
$lang.empty();
$('form.siteMap')
@ -96,6 +101,15 @@ $('form.siteMap')
if(menuItem.active_btn) $('#active_btn_preview').html('<img src="'+menuItem.active_btn+'" /><input type="checkbox" name="isActiveDelete" value="Y"> Delete');
var htmlBuffer = '';
htmlBuffer+='<select name="menu_grant_default" class="grant_default" onChange="doShowMenuGrantZone()"><option value="0">'+xe.lang.grant_to_all+'</option><option value="-1"';
if(menuItem.group_srls != null && menuItem.group_srls.item == '-1') htmlBuffer += ' selected="selected" ';
htmlBuffer += '>'+xe.lang.grant_to_login_user+'</option> <option value=""';
if(menuItem.group_srls != null &&menuItem.group_srls.item!='-1') htmlBuffer += ' selected="selected" ';
htmlBuffer += '>'+xe.lang.grant_to_group+'</option></select> <div id="zone_menu_grant"';
if(!menuItem.group_srls == null ||menuItem.group_srls.item=='-1') htmlBuffer +='style="display:none"';
htmlBuffer +='>';
for(x in menuItem.groupList.item)
{
var groupObj = menuItem.groupList.item[x];
@ -104,6 +118,7 @@ $('form.siteMap')
if(groupObj.isChecked) htmlBuffer += ' checked="checked" ';
htmlBuffer += '/> <label for="group_srls_'+groupObj.group_srl+'">'+groupObj.title+'</label>'
}
htmlBuffer +='</div>';
$('#groupList').html(htmlBuffer);
// reset label
@ -305,3 +320,13 @@ function confirmDelete()
if(confirm(xe.lang.confirm_delete)) return true;
return false;
}
/* 메뉴 권한 선택용 */
function doShowMenuGrantZone() {
jQuery(".grant_default").each( function() {
var id = "#zone_menu_grant";
if(!jQuery(this).val()) jQuery(id).css("display","block");
else jQuery(id).css("display","none");
} );
}

View file

@ -1,5 +1,6 @@
<script type="text/javascript">
xe.lang.confirm_delete = "{$lang->confirm_delete}";
jQuery( function() { jQuery('.grant_default').change( function(event) { doShowMenuGrantZone(); } ); doShowMenuGrantZone() } );
</script>
<load target="./js/menu_admin.js" usecdn="true" />
<load target="../../admin/tpl/js/sitemap.js" usecdn="true" />
@ -154,9 +155,16 @@ xe.lang.confirm_delete = "{$lang->confirm_delete}";
</p>
</li>
<li>
<p class="q">{$lang->menu_group_srls}</p>
<p class="q">{$lang->exposure_limits}</p>
<p class="a" id="groupList">
<block loop="$group_list=>$key,$value"><input type="checkbox" name="group_srls[]" id="group_srls_{$value->group_srl}" value="{$value->group_srl}" /> <label for="group_srls_{$value->group_srl}">{$value->title}</label></block>
<select name="menu_grant_default" class="grant_default">
<option value="0" selected="selected">{$lang->grant_to_all}</option>
<option value="-1">{$lang->grant_to_login_user}</option>
<option value="">{$lang->grant_to_group}</option>
</select>
<div id="zone_menu_grant" style="display:none">
<block loop="$group_list=>$key,$value"><input type="checkbox" name="group_srls[]" id="group_srls_{$value->group_srl}" value="{$value->group_srl}" /> <label for="group_srls_{$value->group_srl}">{$value->title}</label></block>
</div>
</p>
</li>
<li>