[geeklog-cvs] geeklog-1.3/public_html lib-common.php,1.326,1.327

dhaun at iowaoutdoors.org dhaun at iowaoutdoors.org
Sat May 29 11:46:58 EDT 2004


Update of /var/cvs/geeklog-1.3/public_html
In directory www:/tmp/cvs-serv23780/public_html

Modified Files:
	lib-common.php 
Log Message:
The contents and order of the entries in {menu_elements} in header.thtml is now configurable in config.php (new $_CONF['menu_elements'] variable).


Index: lib-common.php
===================================================================
RCS file: /var/cvs/geeklog-1.3/public_html/lib-common.php,v
retrieving revision 1.326
retrieving revision 1.327
diff -C2 -d -r1.326 -r1.327
*** lib-common.php	29 May 2004 11:48:07 -0000	1.326
--- lib-common.php	29 May 2004 15:46:56 -0000	1.327
***************
*** 717,720 ****
--- 717,940 ----
  
  /**
+ * Create the menu, i.e. replace {menu_elements} in the site header with the
+ * actual menu entries.
+ *
+ * @param    Template    $header     reference to the header template
+ * @param    array       $plugin_menu    array of plugin menu entries, if any
+ *
+ */
+ function COM_renderMenu( &$header, $plugin_menu )
+ {
+     global $_CONF, $_USER, $LANG01, $topic;
+ 
+     if( empty( $_CONF['menu_elements'] ))
+     {
+         $_CONF['menu_elements'] = array( // default set of links
+                 'contribute', 'links', 'polls', 'calendar', 'search', 'stats' );
+     }
+ 
+     $anon = ( empty( $_USER['uid'] ) || ( $_USER['uid'] <= 1 )) ? true : false;
+     $allowedCounter = 0;
+     $counter = 0;
+ 
+     $num_plugins = sizeof( $plugin_menu );
+     if( ( $num_plugins == 0 ) && in_array( 'plugins', $_CONF['menu_elements'] ))
+     {
+         $key = array_search( 'plugins', $_CONF['menu_elements'] );
+         unset( $_CONF['menu_elements'][$key] );
+     }
+ 
+     if( in_array( 'custom', $_CONF['menu_elements'] ))
+     {
+         $custom_entries = array();
+         if( function_exists( 'CUSTOM_menuEntries' ))
+         {
+             $custom_entries = CUSTOM_menuEntries ();
+         }
+         if( sizeof( $custom_entries ) == 0 )
+         {
+             $key = array_search( 'custom', $_CONF['menu_elements'] );
+             unset( $_CONF['menu_elements'][$key] );
+         }
+     }
+ 
+     $num_elements = sizeof( $_CONF['menu_elements'] );
+ 
+     foreach( $_CONF['menu_elements'] as $item )
+     {
+         $counter++;
+         $allowed = true;
+         $last_entry = ( $counter == $num_elements ) ? true : false;
+ 
+         switch( $item )
+         {
+             case 'calendar':
+                 $url = $_CONF['site_url'] . '/calendar.php';
+                 $label = $LANG01[74];
+                 if( $anon && ( $_CONF['loginrequired'] ||
+                         $_CONF['calendarloginrequired'] ))
+                 {
+                     $allowed = false;
+                 }
+                 break;
+ 
+             case 'contribute':
+                 if( empty( $topic ))
+                 {
+                     $url = $_CONF['site_url'] . '/submit.php?type=story';
+                     $header->set_var( 'current_topic', '' );
+                 }
+                 else
+                 {
+                     $url = $_CONF['site_url']
+                          . '/submit.php?type=story&topic=' . $topic;
+                     $header->set_var( 'current_topic', '&topic=' . $topic );
+                 }
+                 $label = $LANG01[71];
+                 if( $anon && ( $_CONF['loginrequired'] ||
+                         $_CONF['submitloginrequired'] ))
+                 {
+                     $allowed = false;
+                 }
+                 break;
+ 
+             case 'custom':
+                 $custom_count = 0;
+                 $custom_size = sizeof( $custom_entries );
+                 foreach( $custom_entries as $entry )
+                 {
+                     $custom_count++;
+ 
+                     if( empty( $entry['url'] ) || empty( $entry['label'] ))
+                     {
+                         continue;
+                     }
+ 
+                     $header->set_var( 'menuitem_url',  $entry['url'] );
+                     $header->set_var( 'menuitem_text', $entry['label'] );
+ 
+                     if( $last_entry && ( $custom_count == $custom_size ))
+                     {
+                         $header->parse( 'menu_elements', 'menuitem_last',
+                                         true );
+                     }
+                     else
+                     {
+                         $header->parse( 'menu_elements', 'menuitem', true );
+                     }
+                 }
+                 $url = '';
+                 $label = '';
+                 break;
+ 
+             case 'home':
+                 $url = $_CONF['site_url'] . '/';
+                 $label = $LANG01[90];
+                 break;
+ 
+             case 'links':
+                 $url = $_CONF['site_url'] . '/links.php';
+                 $label = $LANG01[72];
+                 if( $anon &&
+                     ( $_CONF['loginrequired'] || $_CONF['linksloginrequired'] ))
+                 {
+                     $allowed = false;
+                 }
+                 break;
+ 
+             case 'plugins':
+                 for( $i = 1; $i <= $num_plugins; $i++ )
+                 {
+                     $header->set_var( 'menuitem_url', current( $plugin_menu ));
+                     $header->set_var( 'menuitem_text', key( $plugin_menu ));
+ 
+                     if( $last_entry && ( $i == $num_plugins ))
+                     {
+                         $header->parse( 'menu_elements', 'menuitem_last',
+                                         true );
+                     }
+                     else
+                     {
+                         $header->parse( 'menu_elements', 'menuitem', true );
+                     }
+ 
+                     next( $plugin_menu );
+                 }
+                 $url = '';
+                 $label = '';
+                 break;
+ 
+             case 'polls':
+                 $url = $_CONF['site_url'] . '/pollbooth.php';
+                 $label = $LANG01[73];
+                 if( $anon &&
+                     ( $_CONF['loginrequired'] || $_CONF['pollsloginrequired'] ))
+                 {
+                     $allowed = false;
+                 }
+                 break;
+ 
+             case 'prefs':
+                 $url = $_CONF['site_url'] . '/usersettings.php?mode=edit';
+                 $label = $LANG01[48];
+                 break;
+ 
+             case 'search':
+                 $url = $_CONF['site_url'] . '/search.php';
+                 $label = $LANG01[75];
+                 if( $anon && ( $_CONF['loginrequired'] ||
+                         $_CONF['searchloginrequired'] ))
+                 {
+                     $allowed = false;
+                 }
+                 break;
+ 
+             case 'stats':
+                 $url = $_CONF['site_url'] . '/stats.php';
+                 $label = $LANG01[76];
+                 if( $anon &&
+                     ( $_CONF['loginrequired'] || $_CONF['statsloginrequired'] ))
+                 {
+                     $allowed = false;
+                 }
+                 break;
+         }
+ 
+         if( !empty( $url ) && !empty( $label ))
+         {
+             $header->set_var( 'menuitem_url',  $url );
+             $header->set_var( 'menuitem_text', $label );
+             if( $last_entry )
+             {
+                 $header->parse( 'menu_elements', 'menuitem_last', true );
+             }
+             else
+             {
+                 $header->parse( 'menu_elements', 'menuitem', true );
+             }
+ 
+             if( $allowed )
+             {
+                 if( $last_entry )
+                 {
+                     $header->parse( 'allowed_menu_elements', 'menuitem_last',
+                                     true );
+                 }
+                 else
+                 {
+                     $header->parse( 'allowed_menu_elements', 'menuitem', true );
+                 }
+                 $allowedCounter++;
+             }
+         }
+     }
+ 
+     if( $allowedCounter == 0 )
+     {
+         $header->parse( 'allowed_menu_elements', 'menuitem_none', true );
+     }
+ }
+ 
+ /**
  * Returns the site header
  *
***************
*** 855,917 ****
      $header->set_var( 'button_advsearch', $LANG_BUTTONS[10] );
  
-     // Now add nested template for menu items
- 
-     // contribute link
-     if( empty( $topic ))
-     {
-         $contributelink = $_CONF['site_url'] . '/submit.php?type=story';
-         $header->set_var( 'current_topic', '' );
-     }
-     else
-     {
-         $contributelink = $_CONF['site_url']
-                         . '/submit.php?type=story&topic=' . $topic;
-         $header->set_var( 'current_topic', '&topic=' . $topic );
-     }
- 
-     $allowedCounter = 0;
-     $header->set_var( 'menuitem_url', $contributelink );
-     $header->set_var( 'menuitem_text', $LANG01[71] );
-     $header->parse( 'menu_elements', 'menuitem', true );
-     if(( isset( $_USER['uid'] ) && ( $_USER['uid'] > 1 )) ||
-         (( $_CONF['loginrequired'] == 0 ) && ( $_CONF['submitloginrequired'] == 0 )))
-     {
-         $header->parse( 'allowed_menu_elements', 'menuitem', true );
-         $allowedCounter++;
-     }
- 
-     // links link
-     $header->set_var( 'menuitem_url', $_CONF['site_url'] . '/links.php' );
-     $header->set_var( 'menuitem_text', $LANG01[72] );
-     $header->parse( 'menu_elements', 'menuitem', true );
-     if(( isset( $_USER['uid'] ) && ( $_USER['uid'] > 1 )) ||
-         (( $_CONF['loginrequired'] == 0 ) && ( $_CONF['linksloginrequired'] == 0 )))
-     {
-         $header->parse( 'allowed_menu_elements', 'menuitem', true );
-         $allowedCounter++;
-     }
- 
-     // polls link
-     $header->set_var( 'menuitem_url', $_CONF['site_url'] . '/pollbooth.php' );
-     $header->set_var( 'menuitem_text', $LANG01[73] );
-     $header->parse( 'menu_elements', 'menuitem', true );
-     if(( isset( $_USER['uid'] ) && ( $_USER['uid'] > 1 )) ||
-         (( $_CONF['loginrequired'] == 0 ) && ( $_CONF['pollsloginrequired'] == 0 )))
-     {
-         $header->parse( 'allowed_menu_elements', 'menuitem', true );
-         $allowedCounter++;
-     }
- 
-     // calendar link
-     $header->set_var( 'menuitem_url', $_CONF['site_url'] . '/calendar.php' );
-     $header->set_var( 'menuitem_text', $LANG01[74] );
-     $header->parse( 'menu_elements', 'menuitem', true );
-     if(( isset( $_USER['uid'] ) && ( $_USER['uid'] > 1 )) ||
-         (( $_CONF['loginrequired'] == 0 ) && ( $_CONF['calendarloginrequired'] == 0 )))
-     {
-         $header->parse( 'allowed_menu_elements', 'menuitem', true );
-         $allowedCounter++;
-     }
- 
      // Get plugin menu options
      $plugin_menu = PLG_getMenuItems();
--- 1075,1078 ----
***************
*** 922,925 ****
--- 1083,1089 ----
      }
  
+     // Now add nested template for menu items
+     COM_renderMenu( $header, $plugin_menu );
+ 
      if( count( $plugin_menu ) == 0 )
      {
***************
*** 946,976 ****
      }
  
-     // Search link
-     $header->set_var( 'menuitem_url', $_CONF['site_url'] . '/search.php' );
-     $header->set_var( 'menuitem_text', $LANG01[75] );
-     $header->parse( 'menu_elements', 'menuitem', true );
-     if(( isset( $_USER['uid'] ) && ( $_USER['uid'] > 1 )) ||
-         (( $_CONF['loginrequired'] == 0 ) && ( $_CONF['searchloginrequired'] == 0 )))
-     {
-         $header->parse( 'allowed_menu_elements', 'menuitem', true );
-         $allowedCounter++;
-     }
- 
-     // Stats link
-     $header->set_var( 'menuitem_url', $_CONF['site_url'] . '/stats.php' );
-     $header->set_var( 'menuitem_text', $LANG01[76] );
-     $header->parse( 'menu_elements', 'menuitem_last', true );
-     if(( isset( $_USER['uid'] ) && ( $_USER['uid'] > 1 )) ||
-         (( $_CONF['loginrequired'] == 0 ) && ( $_CONF['statsloginrequired'] == 0 )))
-     {
-         $header->parse( 'allowed_menu_elements', 'menuitem', true );
-         $allowedCounter++;
-     }
- 
-     if( $allowedCounter == 0 )
-     {
-         $header->set_var( 'allowed_menu_elements', '' );
-     }
- 
      if( $what <> 'none' )
      {
--- 1110,1113 ----




More information about the geeklog-cvs mailing list