Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Open sidebar
project
drupal
Commits
a2389f12
Commit
a2389f12
authored
Jul 18, 2005
by
Dries
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Patch
#9178
by mathias: improved menu system integration.
parent
9f67ddf9
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
145 additions
and
0 deletions
+145
-0
CHANGELOG.txt
CHANGELOG.txt
+1
-0
modules/menu.module
modules/menu.module
+72
-0
modules/menu/menu.module
modules/menu/menu.module
+72
-0
No files found.
CHANGELOG.txt
View file @
a2389f12
...
...
@@ -10,6 +10,7 @@ Drupal x.x.x, xxxx-xx-xx (development version)
- usability:
* reworked the 'request new password' functionality.
* reworked the node edit form.
* improve menu system integration.
* added support for auto-complete forms (AJAX).
* reorganized some settings pages.
- profiles:
...
...
modules/menu.module
View file @
a2389f12
...
...
@@ -91,6 +91,40 @@ function menu_block($op = 'list', $delta = 0) {
}
}
/**
* Implementation of hook_nodeapi().
*/
function
menu_nodeapi
(
&
$node
,
$op
)
{
if
(
user_access
(
'administer menu'
))
{
switch
(
$op
)
{
case
'form post'
:
$edit
=
$_POST
[
'edit'
];
$edit
[
'nid'
]
=
$node
->
nid
;
return
menu_node_form
(
$edit
);
break
;
case
'insert'
:
case
'update'
:
if
(
$node
->
menu
[
'delete'
])
{
menu_node_form_delete
(
$node
);
menu_rebuild
();
}
elseif
(
$node
->
menu
[
'title'
])
{
$node
->
menu
[
'path'
]
=
(
$node
->
menu
[
'path'
])
?
$node
->
menu
[
'path'
]
:
"node/
$node->nid
"
;
menu_edit_item_save
(
$node
->
menu
);
menu_rebuild
();
}
break
;
case
'delete'
:
menu_node_form_delete
(
$node
);
menu_rebuild
();
break
;
}
}
}
/**
* Implementation of hook_perm().
*/
...
...
@@ -502,4 +536,42 @@ function menu_parent_options($mid, $pid = 0, $depth = 0) {
return
$options
;
}
/**
* Add menu item fields to the node form.
*/
function
menu_node_form
(
$edit
=
array
())
{
$item
=
array
();
if
(
$edit
[
'nid'
]
>
0
)
{
$item
=
db_fetch_array
(
db_query
(
"SELECT * FROM
{
menu
}
WHERE path = 'node/%d'"
,
$edit
[
'nid'
]));
if
(
is_array
(
$edit
[
'menu'
]))
{
$item
=
(
$_POST
[
'op'
]
==
t
(
'Preview'
))
?
array_merge
(
$item
,
$edit
[
'menu'
])
:
array_merge
(
$edit
[
'menu'
],
$item
);
}
}
$group
=
form_textfield
(
t
(
'Title'
),
'menu][title'
,
$item
[
'title'
],
60
,
128
,
t
(
'The name to display for this link.'
));
// Generate a list of possible parents (not including this item or descendants).
$options
=
menu_parent_options
(
$edit
[
'mid'
]);
$group
.
=
form_select
(
t
(
'Parent item'
),
'menu][pid'
,
$item
[
'pid'
],
$options
);
$group
.
=
form_hidden
(
'menu][description'
,
$item
[
'description'
]);
$group
.
=
form_hidden
(
'menu][path'
,
$item
[
'path'
]);
$group
.
=
form_hidden
(
'menu][weight'
,
(
$item
[
'weight'
])
?
$item
[
'weight'
]
:
0
);
$group
.
=
form_hidden
(
'menu][mid'
,
(
$item
[
'mid'
])
?
$item
[
'mid'
]
:
0
);
$group
.
=
form_hidden
(
'menu][type'
,
(
$item
[
'type'
])
?
$item
[
'type'
]
:
MENU_CUSTOM_ITEM
);
if
(
$item
[
'mid'
]
>
0
)
{
$group
.
=
form_checkbox
(
t
(
'Check to delete this menu item.'
),
'menu][delete'
,
1
,
$item
[
'delete'
],
null
);
}
$form
=
form_group_collapsible
(
t
(
'Menu item settings'
),
$group
,
TRUE
);
return
$form
;
}
/**
* Remove the menu item.
*/
function
menu_node_form_delete
(
$node
)
{
if
(
db_query
(
"DELETE FROM
{
menu
}
WHERE path = 'node/%s'"
,
$node
->
nid
))
{
drupal_set_message
(
t
(
'The menu item has been removed.'
));
}
}
?>
modules/menu/menu.module
View file @
a2389f12
...
...
@@ -91,6 +91,40 @@ function menu_block($op = 'list', $delta = 0) {
}
}
/**
* Implementation of hook_nodeapi().
*/
function
menu_nodeapi
(
&
$node
,
$op
)
{
if
(
user_access
(
'administer menu'
))
{
switch
(
$op
)
{
case
'form post'
:
$edit
=
$_POST
[
'edit'
];
$edit
[
'nid'
]
=
$node
->
nid
;
return
menu_node_form
(
$edit
);
break
;
case
'insert'
:
case
'update'
:
if
(
$node
->
menu
[
'delete'
])
{
menu_node_form_delete
(
$node
);
menu_rebuild
();
}
elseif
(
$node
->
menu
[
'title'
])
{
$node
->
menu
[
'path'
]
=
(
$node
->
menu
[
'path'
])
?
$node
->
menu
[
'path'
]
:
"node/
$node->nid
"
;
menu_edit_item_save
(
$node
->
menu
);
menu_rebuild
();
}
break
;
case
'delete'
:
menu_node_form_delete
(
$node
);
menu_rebuild
();
break
;
}
}
}
/**
* Implementation of hook_perm().
*/
...
...
@@ -502,4 +536,42 @@ function menu_parent_options($mid, $pid = 0, $depth = 0) {
return
$options
;
}
/**
* Add menu item fields to the node form.
*/
function
menu_node_form
(
$edit
=
array
())
{
$item
=
array
();
if
(
$edit
[
'nid'
]
>
0
)
{
$item
=
db_fetch_array
(
db_query
(
"SELECT * FROM
{
menu
}
WHERE path = 'node/%d'"
,
$edit
[
'nid'
]));
if
(
is_array
(
$edit
[
'menu'
]))
{
$item
=
(
$_POST
[
'op'
]
==
t
(
'Preview'
))
?
array_merge
(
$item
,
$edit
[
'menu'
])
:
array_merge
(
$edit
[
'menu'
],
$item
);
}
}
$group
=
form_textfield
(
t
(
'Title'
),
'menu][title'
,
$item
[
'title'
],
60
,
128
,
t
(
'The name to display for this link.'
));
// Generate a list of possible parents (not including this item or descendants).
$options
=
menu_parent_options
(
$edit
[
'mid'
]);
$group
.
=
form_select
(
t
(
'Parent item'
),
'menu][pid'
,
$item
[
'pid'
],
$options
);
$group
.
=
form_hidden
(
'menu][description'
,
$item
[
'description'
]);
$group
.
=
form_hidden
(
'menu][path'
,
$item
[
'path'
]);
$group
.
=
form_hidden
(
'menu][weight'
,
(
$item
[
'weight'
])
?
$item
[
'weight'
]
:
0
);
$group
.
=
form_hidden
(
'menu][mid'
,
(
$item
[
'mid'
])
?
$item
[
'mid'
]
:
0
);
$group
.
=
form_hidden
(
'menu][type'
,
(
$item
[
'type'
])
?
$item
[
'type'
]
:
MENU_CUSTOM_ITEM
);
if
(
$item
[
'mid'
]
>
0
)
{
$group
.
=
form_checkbox
(
t
(
'Check to delete this menu item.'
),
'menu][delete'
,
1
,
$item
[
'delete'
],
null
);
}
$form
=
form_group_collapsible
(
t
(
'Menu item settings'
),
$group
,
TRUE
);
return
$form
;
}
/**
* Remove the menu item.
*/
function
menu_node_form_delete
(
$node
)
{
if
(
db_query
(
"DELETE FROM
{
menu
}
WHERE path = 'node/%s'"
,
$node
->
nid
))
{
drupal_set_message
(
t
(
'The menu item has been removed.'
));
}
}
?>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment