Commit 79641f53 authored by Gábor Hojtsy's avatar Gábor Hojtsy

#173188 by chx: update aggregator menu items when an aggregator category is changed

parent fee294af
......@@ -1757,6 +1757,38 @@ function _menu_find_router_path($menu, $link_path) {
return $router_path;
}
/**
* Insert, update or delete an uncustomized menu link related to a module.
*
* @param $module
* The name of the module.
* @param $op
* Operation to perform: insert, update or delete.
* @param $link_path
* The path this link points to.
* @param $link_title
* Title of the link to insert or new title to update the link to.
* Unused for delete.
*/
function menu_link_maintain($module, $op, $link_path, $link_title) {
switch ($op) {
case 'insert':
$menu_link = array(
'link_title' => $link_title,
'link_path' => $link_path,
'module' => $module,
);
menu_link_save($menu_link);
break;
case 'update':
db_query("UPDATE {menu_links} SET link_title = '%s' WHERE link_path = '%s' AND customized = 0 AND module = '%s'", $link_title, $link_path, $module);
menu_cache_clear();
break;
case 'delete':
menu_link_delete(NULL, $link_path);
break;
}
}
/**
* Find the depth of an item's children relative to its depth.
......
......@@ -353,15 +353,27 @@ function aggregator_block($op = 'list', $delta = 0, $edit = array()) {
* Add/edit/delete aggregator categories.
*/
function aggregator_save_category($edit) {
if (!empty($edit['cid']) && !empty($edit['title'])) {
db_query("UPDATE {aggregator_category} SET title = '%s', description = '%s' WHERE cid = %d", $edit['title'], $edit['description'], $edit['cid']);
}
else if (!empty($edit['cid'])) {
db_query('DELETE FROM {aggregator_category} WHERE cid = %d', $edit['cid']);
$link_path = 'aggregator/categories/';
if (!empty($edit['cid'])) {
$link_path .= $edit['cid'];
if (!empty($edit['title'])) {
db_query("UPDATE {aggregator_category} SET title = '%s', description = '%s' WHERE cid = %d", $edit['title'], $edit['description'], $edit['cid']);
$op = 'update';
}
else {
db_query('DELETE FROM {aggregator_category} WHERE cid = %d', $edit['cid']);
$edit['title'] = '';
$op = 'delete';
}
}
else if (!empty($edit['title'])) {
// A single unique id for bundles and feeds, to use in blocks
db_query("INSERT INTO {aggregator_category} (title, description, block) VALUES ('%s', '%s', 5)", $edit['title'], $edit['description']);
$link_path .= db_last_insert_id('aggregator', 'cid');
$op = 'insert';
}
if (isset($op)) {
menu_link_maintain('aggregator', $op, $link_path, $edit['title']);
}
}
......
......@@ -39,6 +39,7 @@ function aggregator_page_source($arg1, $arg2 = NULL) {
* Menu callback; displays all the items aggregated in a particular category.
*/
function aggregator_page_category($arg1, $arg2 = NULL) {
drupal_set_breadcrumb(array_merge(drupal_get_breadcrumb(), array(l(t('Categories'), 'aggregator/categories'))));
// If there are two arguments then we are called as a form, $arg1 is
// $form_state and $arg2 is $category. Otherwise, $arg1 is $category.
$category = is_array($arg2) ? $arg2 : $arg1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment