List Info

Thread: Re: Question on Drupal 6 menus




Re: Question on Drupal 6 menus
user name
2008-01-03 19:53:40
Khalid,

One thing looks wrong for sure:

'file'           => 'lists.module',

I'm not sure if that's causing the problem, but it instructs
the menu
system to include the module file again.  'file' should only
be used
with .inc files.

Also, don't use t() anywhere - titles, etc are localized
dynamically.

Finally (and most importantly), the access part is wrong. 
Since you
are using the defaullt callback (user_access), you can have
something
like this:


function lists_menu() {
  $items = array();
  $items['lists'] = array(
    'title'          => 'Mailing lists',
    'page callback'  => 'drupal_get_form',
    'page arguments' => array('lists_subscribe_form'),
    'access arguments'         => array('access
content'),
    'type'           => MENU_SUGGESTED_ITEM,
  );
  return $items;
}

> ---------- Forwarded message ----------
> From: "Khalid Baheyeldin" <kb2bits.com>
> To: developmentdrupal.org
> Date: Thu, 3 Jan 2008 20:27:37 -0500
> Subject: [development] Question on Drupal 6 menus
> This is a question for chx, but I posted it publicly so
we all benefit from his reply.
>
> I found a weird problem with the menus in D6. Most
probably I am missing something
> obvious, but I am missing what it is.
>
>  This does work. Note that the lists inherits from
admin, and it is a NORMAL item.
>
> function lists_menu() {
>   $items = array();
>   $items['admin/lists'] = array(
>     'title'          => t('Mailing lists'),
>     'page callback'  => 'drupal_get_form',
>     'page arguments' => array('lists_subscribe'),
>     'access'         => user_access('access
content'),
>     'type'           => MENU_NORMAL_ITEM,
>     'file'           => 'lists.module',
>   );
>   return $items;
> }
>
> This, which is what I want, does not show the lists
path anywhere, not under menu
> as disabled, nothing (I marked the changed lines with
an *).
>
> function lists_menu() {
>   $items = array();
> *  $items['lists'] = array(
>     'title'          => t('Mailing lists'),
>     'page callback'  => 'drupal_get_form',
>     'page arguments' => array('lists_subscribe'),
>     'access'         => user_access('access
content'),
> *    'type'           => MENU_SUGGESTED_ITEM,
>     'file'           => ' lists.module',
>   );
>   return $items;
> }
>
> The latter is the one needed so that the path can be
enabled or disabled in the
> menus as needed. This is the way it works on D5.
>
> What is amiss here?
> --
> Khalid M. Baheyeldin
> 2bits.com, Inc.
> http://2bits.com
> Drupal optimization, development, customization and
consulting.
> --
> [ Drupal development list | http://lists.drupal.org/
]
>

Re: Question on Drupal 6 menus
user name
2008-01-03 20:28:23
Peter

The reason I added the file element is that I got an error on another module
(system.admin.inc ...) and that element made it go away.

It works now with your changes.

Thanks.

On Jan 3, 2008 8:53 PM, Peter Wolanin < pwolaningmail.com">pwolaningmail.com> wrote:
Khalid,

One thing looks wrong for sure:

9;file'           => 'lists.module';,

I'm not sure if that's causing the problem, but it instructs the menu
system to include the module file again.  ';file' should only be used
with .inc files.

Also, don't use t() anywhere - titles, etc are localized dynamically.

Finally (and most importantly), the access part is wrong.  Since you
are using the defaullt callback (user_access), you can have something
like this:


function lists_menu() {
 $items = array();
 $items['lists'] = array(
   ';title'          =>; 'Mailing lists',
   ';page callback&#39;  =>; 'drupal_get_form&#39;,
   ';page arguments&#39; => array(';lists_subscribe_form&#39;),
   ';access arguments&#39;         => array(';access content9;),
   ';type'           => MENU_SUGGESTED_ITEM,
 );
 return $items;
}

> ---------- Forwarded message ----------
> From: "Khalid Baheyeldin" < kb2bits.com">kb2bits.com>
> To: developmentdrupal.org">developmentdrupal.org
> Date: Thu, 3 Jan 2008 20:27:37 -0500
> Subject: [development] Question on Drupal 6 menus
&gt; This is a question for chx, but I posted it publicly so we all benefit from his reply.
>;
> I found a weird problem with the menus in D6. Most probably I am missing something
> obvious, but I am missing what it is.
>
>  This does work. Note that the lists inherits from admin, and it is a NORMAL item.
>
> function lists_menu() {
>   $items = array();
&gt;   $items[9;admin/lists'] = array(
>;     'title'          =>; t('Mailing lists'),
>     'page callback&#39;  =>; 'drupal_get_form&#39;,
>     'page arguments&#39; => array(';lists_subscribe'),
>     'access'         => user_access('access content9;),
>     'type&#39;           => MENU_NORMAL_ITEM,
>;     'file&#39;           => 'lists.module';,
>   );
>   return $items;
&gt; }
>
>; This, which is what I want, does not show the lists path anywhere, not under menu
>; as disabled, nothing (I marked the changed lines with an *).
>
&gt; function lists_menu() {
>   $items = array();
&gt; *  $items['lists'] = array(
>;     'title'          =>; t('Mailing lists'),
>     'page callback&#39;  =>; 'drupal_get_form&#39;,
>     'page arguments&#39; => array(';lists_subscribe'),
>     'access'         => user_access('access content9;),
> *    ';type'           => MENU_SUGGESTED_ITEM,
>     'file&#39;           => ' lists.module',
&gt;   );
>   return $items;
&gt; }
>
>; The latter is the one needed so that the path can be enabled or disabled in the
> menus as needed. This is the way it works on D5.
>
&gt; What is amiss here?
> --
> Khalid M. Baheyeldin
> 2bits.com, Inc.
> http://2bits.com
&gt; Drupal optimization, development, customization and consulting.
> --
> [ Drupal development list | http://lists.drupal.org/ ]
>



--
Khalid M. Baheyeldin
2bits.com, Inc.
http://2bits.com
Drupal optimization, development, customization and consulting.
Re: Question on Drupal 6 menus
country flaguser name
United States
2008-01-04 16:46:23
On Jan 3, 2008, at 6:28 PM, Khalid Baheyeldin wrote:

> The reason I added the file element is that I got an
error on  
> another module
> (system.admin.inc ...) and that element made it go
away.

For clarity:

system.admin.inc is not a "module".  It's an
include file that should  
be included by system.module when it's doing admin-related
things.   
system.module is a module.  The .module files for every
enabled  
module are always loaded when bootstrapping Drupal.  The
performance  
gain from splitting modules up into .inc files (made easier
by the D6  
menu changes) is that you don't have to load all the code
that's only  
rarely used in your .module files.

Peter's point is that you should never tell the menu system
to  
include a .module file again, since those are *always*
loaded.  You  
should only tell the menu system to include a .inc file,
never  
a .module file.

Cheers,
-Derek (dww)




Re: Question on Drupal 6 menus
user name
2008-01-04 17:05:32
On Jan 4, 2008 5:46 PM, Derek Wright < drupaldwwright.net">drupaldwwright.net> wrote:

On Jan 3, 2008, at 6:28 PM, Khalid Baheyeldin wrote:

&gt; The reason I added the file element is that I got an error on
> another module
>; (system.admin.inc ...) and that element made it go away.

For clarity:

system.admin.inc is not a "module".  It&#39;s an include file that should
be included by system.module when it's doing admin-related things.
system.module is a module.  The .module files for every enabled
module are always loaded when bootstrapping Drupal.  The performance
gain from splitting modules up into .inc files (made easier by the D6
menu changes) is that you don't have to load all the code that's only
rarely used in your .module files.

 I realize it is not a module. What I meant was that another module spat out an error message
about system.admin.inc, and when adding the 'file&#39; element (wrongly) that error went away.

When I changed the other things Peter pointed out, all was well.

Peter';s point is that you should never tell the menu system to
include a .module file again, since those are *always* loaded.  You
should only tell the menu system to include a .inc file, never
a .module file.

Yup.

Thanks for the extra explanations.

--
Khalid M. Baheyeldin
2bits.com, Inc.
http://2bits.com
Drupal optimization, development, customization and consulting.
[1-4]

about | contact  Other archives ( Real Estate discussion Medical topics )