diff --git a/feeds.info b/feeds.info index 956abb661635065ad99eef228dc167b4ee553c91..d95f6aa33cd1648cd97122a39fe325def07083ea 100644 --- a/feeds.info +++ b/feeds.info @@ -66,3 +66,4 @@ files[] = views/feeds_views_handler_field_log_message.inc files[] = views/feeds_views_handler_field_severity.inc files[] = views/feeds_views_handler_field_source.inc files[] = views/feeds_views_handler_filter_severity.inc +files[] = views/feeds_views_plugin_argument_validate_feed_nid.inc diff --git a/views/feeds.views.inc b/views/feeds.views.inc index 2fd7298982f1aed87bb194037e23375e920fc4e6..ce62dc00cab73ce6bc2101db063ec0f215cc6b21 100644 --- a/views/feeds.views.inc +++ b/views/feeds.views.inc @@ -319,3 +319,17 @@ function feeds_views_data() { return $data; } + +/** + * Implements hook_views_plugins(). + */ +function feeds_views_plugins() { + return array( + 'argument validator' => array( + 'feed_nid' => array( + 'title' => t('Feed node id'), + 'handler' => 'feeds_views_plugin_argument_validate_feed_nid', + ), + ), + ); +} diff --git a/views/feeds.views_default.inc b/views/feeds.views_default.inc index 75dd53cfa268b9ada4e31129fc74fe62ed03fd90..fb208d3c2619f9b6183a3a38c6f7b5f08dc192d3 100644 --- a/views/feeds.views_default.inc +++ b/views/feeds.views_default.inc @@ -125,7 +125,6 @@ function feeds_views_default_views() { $handler->display->display_options['arguments']['id']['summary']['format'] = 'default_summary'; $handler->display->display_options['arguments']['id']['summary_options']['items_per_page'] = '25'; $handler->display->display_options['arguments']['id']['specify_validation'] = TRUE; - $handler->display->display_options['arguments']['id']['validate']['fail'] = 'empty'; $handler->display->display_options['arguments']['id']['limit'] = '0'; /* Filter criterion: Feeds log: Feed node id */ $handler->display->display_options['filters']['feed_nid']['id'] = 'feed_nid'; @@ -164,6 +163,8 @@ function feeds_views_default_views() { $handler->display->display_options['arguments']['feed_nid']['summary']['number_of_records'] = '0'; $handler->display->display_options['arguments']['feed_nid']['summary']['format'] = 'default_summary'; $handler->display->display_options['arguments']['feed_nid']['summary_options']['items_per_page'] = '25'; + $handler->display->display_options['arguments']['feed_nid']['specify_validation'] = TRUE; + $handler->display->display_options['arguments']['feed_nid']['validate']['type'] = 'feed_nid'; $handler->display->display_options['defaults']['filter_groups'] = FALSE; $handler->display->display_options['defaults']['filters'] = FALSE; /* Filter criterion: Feeds log: Severity */ @@ -175,7 +176,6 @@ function feeds_views_default_views() { $handler->display->display_options['filters']['severity']['expose']['label'] = 'Severity'; $handler->display->display_options['filters']['severity']['expose']['operator'] = 'severity_op'; $handler->display->display_options['filters']['severity']['expose']['identifier'] = 'severity'; - $handler->display->display_options['path'] = 'node/%/log'; $handler->display->display_options['menu']['type'] = 'tab'; $handler->display->display_options['menu']['title'] = 'Log'; @@ -240,7 +240,6 @@ function feeds_views_default_views() { $handler->display->display_options['filters']['severity']['expose']['label'] = 'Severity'; $handler->display->display_options['filters']['severity']['expose']['operator'] = 'severity_op'; $handler->display->display_options['filters']['severity']['expose']['identifier'] = 'severity'; - $handler->display->display_options['path'] = 'admin/reports/feeds'; $handler->display->display_options['menu']['type'] = 'normal'; $handler->display->display_options['menu']['title'] = 'Feeds log'; @@ -248,6 +247,33 @@ function feeds_views_default_views() { $handler->display->display_options['menu']['weight'] = '0'; $handler->display->display_options['menu']['name'] = 'management'; $handler->display->display_options['menu']['context'] = 0; + $translatables['feeds_log'] = array( + t('Defaults'), + t('more'), + t('Apply'), + t('Reset'), + t('Sort by'), + t('Asc'), + t('Desc'), + t('Items per page'), + t('- All -'), + t('Offset'), + t('« first'), + t('‹ previous'), + t('next ›'), + t('last »'), + t('There are no log messages.'), + t('Log time'), + t('Request time'), + t('Message'), + t('Severity'), + t('Standalone importer page'), + t('Feed node page'), + t('All entries'), + t('Feeds log'), + t('Feed node'), + t('Importer'), + ); $views[$view->name] = $view; diff --git a/views/feeds_views_plugin_argument_validate_feed_nid.inc b/views/feeds_views_plugin_argument_validate_feed_nid.inc new file mode 100644 index 0000000000000000000000000000000000000000..de5af1f775d8332a36127be4f45b2b474417c4b1 --- /dev/null +++ b/views/feeds_views_plugin_argument_validate_feed_nid.inc @@ -0,0 +1,25 @@ +<?php + +/** + * @file + * Contains the 'Feeds node id' argument validator plugin. + */ + +/** + * Validates whether an argument is a valid Feed node. + */ +class feeds_views_plugin_argument_validate_feed_nid extends views_plugin_argument_validate { + /** + * Validates if argument is a valid Feed node. + */ + public function validate_argument($argument) { + $node = node_load($argument); + if ($node) { + $importer_id = feeds_get_importer_id($node->type); + if ($importer_id) { + return TRUE; + } + } + return FALSE; + } +}