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:
		| @@ -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) { | ||||
|  | ||||
|  | ||||
| @@ -103,6 +115,17 @@ function menu_edit($arr) { | ||||
| 		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']); | ||||
|  | ||||
| 	$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()) | ||||
| 		return; | ||||
|  | ||||
| 	$channel = $a->get_channel(); | ||||
| 	$_REQUEST['menu_channel_id'] = local_user(); | ||||
|  | ||||
| 	$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'), | ||||
| 				'$hintnew' => t('Create a new menu'), | ||||
| 				'$hintdrop' => t('Delete this menu'), | ||||
| 				'$hintcontent' => t('Edit menu contents'), | ||||
| 				'$hintedit' => t('Edit this menu') | ||||
| 				)); | ||||
| 		} | ||||
| @@ -50,14 +68,22 @@ function menu_content(&$a) { | ||||
|  | ||||
|  | ||||
| 	if(argc() > 1) { | ||||
| 		if(argv(1) === 'new') { | ||||
| 			// new menu | ||||
|  | ||||
|  | ||||
|  | ||||
| 		if(argv(1) === 'new') {			 | ||||
| 			$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))) { | ||||
| 			$m = menu_fetch_id(intval(argv(1)),local_user()); | ||||
| 			if(! $m) { | ||||
| 				notice( t('Menu not found.') . EOL); | ||||
| 				return ''; | ||||
| 			} | ||||
| 			if(argc() == 3 && argv(2) == 'drop') { | ||||
| 				$r = menu_delete_id(intval(argv(1)),local_user()); | ||||
| 				if($r) | ||||
| @@ -68,12 +94,22 @@ function menu_content(&$a) { | ||||
| 				goaway(z_root() . '/menu'); | ||||
| 			} | ||||
| 			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'> | ||||
| 		<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> | ||||
| 		<div id='end_{{$field.0}}' class='field_end'></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 }} | ||||
| <ul id="menulist"> | ||||
| {{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}} | ||||
| </ul> | ||||
| {{/if}} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user