2015-08-23 22:38:18 +02:00
< ? php
require_once ( 'include/menu.php' );
require_once ( 'include/identity.php' );
function menu_init ( & $a ) {
if ( array_key_exists ( 'sys' , $_REQUEST ) && $_REQUEST [ 'sys' ] && is_site_admin ()) {
$sys = get_sys_channel ();
if ( $sys && intval ( $sys [ 'channel_id' ])) {
2016-04-17 16:29:18 +02:00
App :: $is_sys = true ;
2015-08-23 22:38:18 +02:00
}
}
}
function menu_post ( & $a ) {
$uid = local_channel ();
if ( array_key_exists ( 'sys' , $_REQUEST ) && $_REQUEST [ 'sys' ] && is_site_admin ()) {
$sys = get_sys_channel ();
$uid = intval ( $sys [ 'channel_id' ]);
2016-04-17 16:29:18 +02:00
App :: $is_sys = true ;
2015-08-23 22:38:18 +02:00
}
if ( ! $uid )
return ;
$_REQUEST [ 'menu_channel_id' ] = $uid ;
if ( $_REQUEST [ 'menu_bookmark' ])
$_REQUEST [ 'menu_flags' ] |= MENU_BOOKMARK ;
if ( $_REQUEST [ 'menu_system' ])
$_REQUEST [ 'menu_flags' ] |= MENU_SYSTEM ;
$menu_id = (( argc () > 1 ) ? intval ( argv ( 1 )) : 0 );
if ( $menu_id ) {
$_REQUEST [ 'menu_id' ] = intval ( argv ( 1 ));
$r = menu_edit ( $_REQUEST );
if ( $r ) {
2015-10-24 13:04:14 +02:00
menu_sync_packet ( $uid , get_observer_hash (), $menu_id );
2015-08-23 22:38:18 +02:00
//info( t('Menu updated.') . EOL);
2016-04-17 16:29:18 +02:00
goaway ( z_root () . '/mitem/' . $menu_id . (( App :: $is_sys ) ? '?f=&sys=1' : '' ));
2015-08-23 22:38:18 +02:00
}
else
notice ( t ( 'Unable to update menu.' ) . EOL );
}
else {
$r = menu_create ( $_REQUEST );
2015-10-24 13:04:14 +02:00
if ( $r ) {
menu_sync_packet ( $uid , get_observer_hash (), $r );
2015-08-23 22:38:18 +02:00
//info( t('Menu created.') . EOL);
2016-04-17 16:29:18 +02:00
goaway ( z_root () . '/mitem/' . $r . (( App :: $is_sys ) ? '?f=&sys=1' : '' ));
2015-08-23 22:38:18 +02:00
}
else
notice ( t ( 'Unable to create menu.' ) . EOL );
}
}
2015-10-24 13:04:14 +02:00
2015-08-23 22:38:18 +02:00
function menu_content ( & $a ) {
$uid = local_channel ();
2016-04-17 16:29:18 +02:00
if ( App :: $is_sys && is_site_admin ()) {
2015-08-23 22:38:18 +02:00
$sys = get_sys_channel ();
$uid = intval ( $sys [ 'channel_id' ]);
}
if ( ! $uid ) {
notice ( t ( 'Permission denied.' ) . EOL );
return '' ;
}
if ( argc () == 1 ) {
// list menus
$x = menu_list ( $uid );
if ( $x ) {
for ( $y = 0 ; $y < count ( $x ); $y ++ ) {
$m = menu_fetch ( $x [ $y ][ 'menu_name' ], $uid , get_observer_hash ());
if ( $m )
$x [ $y ][ 'element' ] = '[element]' . base64url_encode ( json_encode ( menu_element ( $m ))) . '[/element]' ;
$x [ $y ][ 'bookmark' ] = (( $x [ $y ][ 'menu_flags' ] & MENU_BOOKMARK ) ? true : false );
}
}
$create = replace_macros ( get_markup_template ( 'menuedit.tpl' ), array (
'$menu_name' => array ( 'menu_name' , t ( 'Menu Name' ), '' , t ( 'Unique name (not visible on webpage) - required' ), '*' ),
'$menu_desc' => array ( 'menu_desc' , t ( 'Menu Title' ), '' , t ( 'Visible on webpage - leave empty for no title' ), '' ),
'$menu_bookmark' => array ( 'menu_bookmark' , t ( 'Allow Bookmarks' ), 0 , t ( 'Menu may be used to store saved bookmarks' ), array ( t ( 'No' ), t ( 'Yes' ))),
'$submit' => t ( 'Submit and proceed' ),
2016-04-17 16:29:18 +02:00
'$sys' => App :: $is_sys ,
2015-08-23 22:38:18 +02:00
'$display' => 'none'
));
$o = replace_macros ( get_markup_template ( 'menulist.tpl' ), array (
'$title' => t ( 'Menus' ),
'$create' => $create ,
'$menus' => $x ,
'$nametitle' => t ( 'Menu Name' ),
'$desctitle' => t ( 'Menu Title' ),
'$edit' => t ( 'Edit' ),
'$drop' => t ( 'Drop' ),
'$created' => t ( 'Created' ),
'$edited' => t ( 'Edited' ),
'$new' => t ( 'New' ),
'$bmark' => t ( 'Bookmarks allowed' ),
'$hintnew' => t ( 'Create' ),
'$hintdrop' => t ( 'Delete this menu' ),
'$hintcontent' => t ( 'Edit menu contents' ),
'$hintedit' => t ( 'Edit this menu' ),
2016-04-17 16:29:18 +02:00
'$sys' => App :: $is_sys
2015-08-23 22:38:18 +02:00
));
return $o ;
}
if ( argc () > 1 ) {
if ( intval ( argv ( 1 ))) {
if ( argc () == 3 && argv ( 2 ) == 'drop' ) {
2015-10-24 13:04:14 +02:00
menu_sync_packet ( $uid , get_observer_hash (), intval ( argv ( 1 )), true );
2015-08-23 22:38:18 +02:00
$r = menu_delete_id ( intval ( argv ( 1 )), $uid );
if ( ! $r )
notice ( t ( 'Menu could not be deleted.' ) . EOL );
2016-04-17 16:29:18 +02:00
goaway ( z_root () . '/menu' . (( App :: $is_sys ) ? '?f=&sys=1' : '' ));
2015-08-23 22:38:18 +02:00
}
$m = menu_fetch_id ( intval ( argv ( 1 )), $uid );
if ( ! $m ) {
notice ( t ( 'Menu not found.' ) . EOL );
return '' ;
}
$o = replace_macros ( get_markup_template ( 'menuedit.tpl' ), array (
'$header' => t ( 'Edit Menu' ),
2016-04-17 16:29:18 +02:00
'$sys' => App :: $is_sys ,
2015-08-23 22:38:18 +02:00
'$menu_id' => intval ( argv ( 1 )),
2016-04-17 16:29:18 +02:00
'$menu_edit_link' => 'mitem/' . intval ( argv ( 1 )) . (( App :: $is_sys ) ? '?f=&sys=1' : '' ),
2015-08-23 22:38:18 +02:00
'$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' ), '' ),
'$menu_bookmark' => array ( 'menu_bookmark' , t ( 'Allow bookmarks' ), (( $m [ 'menu_flags' ] & MENU_BOOKMARK ) ? 1 : 0 ), t ( 'Menu may be used to store saved bookmarks' ), array ( t ( 'No' ), t ( 'Yes' ))),
'$menu_system' => (( $m [ 'menu_flags' ] & MENU_SYSTEM ) ? 1 : 0 ),
'$submit' => t ( 'Submit and proceed' )
));
return $o ;
}
else {
notice ( t ( 'Not found.' ) . EOL );
return ;
}
}
}