menu management complete (as opposed to menu *content* management, which is not). As usual, this means functionally complete - as theming and presentation have been left for those more suited to the task.
This commit is contained in:
parent
d6c6a2b144
commit
680baff73d
@ -38,6 +38,18 @@ function menu_render($menu) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function menu_fetch_id($menu_id,$channel_id) {
|
||||||
|
|
||||||
|
$r = q("select * from menu where menu_id = %d and menu_channel_id = %d limit 1",
|
||||||
|
intval($menu_id),
|
||||||
|
intval($channel_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
return (($r) ? $r[0] : false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function menu_create($arr) {
|
function menu_create($arr) {
|
||||||
|
|
||||||
|
|
||||||
@ -103,6 +115,17 @@ function menu_edit($arr) {
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
||||||
|
$r = q("select menu_id from menu where menu_name = '%s' and menu_channel_id = %d limit 1",
|
||||||
|
dbesc($menu_name),
|
||||||
|
intval($menu_channel_id)
|
||||||
|
);
|
||||||
|
if(($r) && ($r[0]['menu_id'] != $menu_id)) {
|
||||||
|
logger('menu_edit: duplicate menu name for channel ' . $menu_channel_id);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$menu_channel_id = intval($arr['menu_channel_id']);
|
$menu_channel_id = intval($arr['menu_channel_id']);
|
||||||
|
|
||||||
$r = q("select * from menu where menu_id = %d and menu_channel_id = %d limit 1",
|
$r = q("select * from menu where menu_id = %d and menu_channel_id = %d limit 1",
|
||||||
|
62
mod/menu.php
62
mod/menu.php
@ -7,12 +7,29 @@ function menu_post(&$a) {
|
|||||||
if(! local_user())
|
if(! local_user())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
$channel = $a->get_channel();
|
$_REQUEST['menu_channel_id'] = local_user();
|
||||||
|
|
||||||
$menu_id = ((argc() > 1) ? intval(argv(1)) : 0);
|
$menu_id = ((argc() > 1) ? intval(argv(1)) : 0);
|
||||||
|
if($menu_id) {
|
||||||
|
$_REQUEST['menu_id'] = intval(argv(1));
|
||||||
|
$r = menu_edit($_REQUEST);
|
||||||
|
if($r) {
|
||||||
|
info( t('Menu updated.') . EOL);
|
||||||
|
goaway(z_root() . '/mitem/' . $menu_id);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
notice( t('Unable to update menu.'). EOL);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$r = menu_create($_REQUEST);
|
||||||
|
if($r) {
|
||||||
|
info( t('Menu created.') . EOL);
|
||||||
|
goaway(z_root() . '/mitem/' . $r);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
notice( t('Unable to create menu.'). EOL);
|
||||||
|
|
||||||
$menu_name = (($_REQUEST['menu_name']) ? $_REQUEST['menu_name'] : '');
|
}
|
||||||
$menu_desc = (($_REQUEST['menu_desc']) ? $_REQUEST['menu_desc'] : '');
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,6 +54,7 @@ function menu_content(&$a) {
|
|||||||
'$new' => t('New'),
|
'$new' => t('New'),
|
||||||
'$hintnew' => t('Create a new menu'),
|
'$hintnew' => t('Create a new menu'),
|
||||||
'$hintdrop' => t('Delete this menu'),
|
'$hintdrop' => t('Delete this menu'),
|
||||||
|
'$hintcontent' => t('Edit menu contents'),
|
||||||
'$hintedit' => t('Edit this menu')
|
'$hintedit' => t('Edit this menu')
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@ -51,13 +69,21 @@ function menu_content(&$a) {
|
|||||||
|
|
||||||
if(argc() > 1) {
|
if(argc() > 1) {
|
||||||
if(argv(1) === 'new') {
|
if(argv(1) === 'new') {
|
||||||
// new menu
|
$o = replace_macros(get_markup_template('menuedit.tpl'), array(
|
||||||
|
'$header' => t('New Menu'),
|
||||||
|
'$menu_name' => array('menu_name', t('Menu name'), '', t('Must be unique, only seen by you'), '*'),
|
||||||
|
'$menu_desc' => array('menu_desc', t('Menu title'), '', t('Menu title as seen by others'), ''),
|
||||||
|
'$submit' => t('Create')
|
||||||
|
));
|
||||||
|
return $o;
|
||||||
}
|
}
|
||||||
|
|
||||||
elseif(intval(argv(1))) {
|
elseif(intval(argv(1))) {
|
||||||
|
$m = menu_fetch_id(intval(argv(1)),local_user());
|
||||||
|
if(! $m) {
|
||||||
|
notice( t('Menu not found.') . EOL);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
if(argc() == 3 && argv(2) == 'drop') {
|
if(argc() == 3 && argv(2) == 'drop') {
|
||||||
$r = menu_delete_id(intval(argv(1)),local_user());
|
$r = menu_delete_id(intval(argv(1)),local_user());
|
||||||
if($r)
|
if($r)
|
||||||
@ -68,12 +94,22 @@ function menu_content(&$a) {
|
|||||||
goaway(z_root() . '/menu');
|
goaway(z_root() . '/menu');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// edit menu
|
$o = replace_macros(get_markup_template('menuedit.tpl'), array(
|
||||||
|
'$header' => t('Edit Menu'),
|
||||||
|
'$menu_id' => intval(argv(1)),
|
||||||
|
'$hintedit' => t('Add or remove entries to this menu'),
|
||||||
|
'$editcontents' => t('Edit menu contents'),
|
||||||
|
'$menu_name' => array('menu_name', t('Menu name'), $m['menu_name'], t('Must be unique, only seen by you'), '*'),
|
||||||
|
'$menu_desc' => array('menu_desc', t('Menu title'), $m['menu_desc'], t('Menu title as seen by others'), ''),
|
||||||
|
'$submit' => t('Modify')
|
||||||
|
));
|
||||||
|
return $o;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
notice( t('Not found.') . EOL);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<div class='field input'>
|
<div class='field input'>
|
||||||
<label for='id_{{$field.0}}' id='label_{{$field.0}}'>{{$field.1}}</label>
|
<label for='id_{{$field.0}}' id='label_{{$field.0}}'>{{$field.1}}</label>
|
||||||
<input name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.2}}">
|
<input name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.2}}">{{if $field.4}} <span class="required">{{$field.4}}</span> {{/if}}
|
||||||
<span id='help_{{$field.0}}' class='field_help'>{{$field.3}}</span>
|
<span id='help_{{$field.0}}' class='field_help'>{{$field.3}}</span>
|
||||||
<div id='end_{{$field.0}}' class='field_end'></div>
|
<div id='end_{{$field.0}}' class='field_end'></div>
|
||||||
</div>
|
</div>
|
||||||
|
21
view/tpl/menuedit.tpl
Normal file
21
view/tpl/menuedit.tpl
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
<h2>{{$header}}</h2>
|
||||||
|
|
||||||
|
{{if $menu_id}}
|
||||||
|
<a href="medit/{{$menu_id}}" title="{{$hintedit}}">{{$editcontents}}</a>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
<form id="menuedit" action="menu{{if $menu_id}}/{{$menu_id}}{{/if}}" method="post" >
|
||||||
|
|
||||||
|
{{if $menu_id}}
|
||||||
|
<input type="hidden" name="menu_id" value="{{$menu_id}}" />
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{include file="field_input.tpl" field=$menu_name}}
|
||||||
|
{{include file="field_input.tpl" field=$menu_desc}}
|
||||||
|
|
||||||
|
<div class="menuedit-submit-wrapper" >
|
||||||
|
<input type="submit" name="submit" class="menuedit-submit" value="{{$submit}}" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
@ -7,7 +7,7 @@
|
|||||||
{{if $menus }}
|
{{if $menus }}
|
||||||
<ul id="menulist">
|
<ul id="menulist">
|
||||||
{{foreach $menus as $m }}
|
{{foreach $menus as $m }}
|
||||||
<li>{{$m.menu_name}} <a href="menu/{{$m.menu_id}}" title="{{$hintedit}}">{{$edit}}</a>|<a href="menu/{{$m.menu.id}}/drop" title={{$hintdrop}}>{{$drop}}</a></li>
|
<li><a href="menu/{{$m.menu_id}}" title="{{$hintedit}}">{{$edit}}</a> | <a href="menu/{{$m.menu.id}}/drop" title={{$hintdrop}}>{{$drop}}</a> <a href="medit/{{$m.menu_id}}" title="{{$hintcontent}}">{{$m.menu_name}}</a></li>
|
||||||
{{/foreach}}
|
{{/foreach}}
|
||||||
</ul>
|
</ul>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
Reference in New Issue
Block a user