[177a560] | 1 | <?php |
---|
| 2 | |
---|
| 3 | /** |
---|
| 4 | * @file |
---|
| 5 | * Declare new node and node_revisions fields and filters. |
---|
| 6 | */ |
---|
| 7 | |
---|
| 8 | /** |
---|
| 9 | * Implementation of hook_views_data(). |
---|
| 10 | * |
---|
| 11 | * Ommitted, we're altering existing groups, not creating a new one. |
---|
| 12 | * |
---|
| 13 | function revisioning_views_data() { |
---|
| 14 | } |
---|
| 15 | */ |
---|
| 16 | |
---|
| 17 | /** |
---|
| 18 | * Implementation of hook_views_data_alter(). |
---|
| 19 | * |
---|
| 20 | * We define a pseudo-field 'state' (values: pending, current, archived) for |
---|
| 21 | * both node and node_revisions tables. |
---|
| 22 | */ |
---|
| 23 | function revisioning_views_data_alter(&$data) { |
---|
| 24 | |
---|
| 25 | $data['node']['last_editor'] = array( |
---|
| 26 | 'title' => t('Last edited by'), |
---|
| 27 | 'help' => t('The name of the user who last edited this content.'), |
---|
| 28 | 'field' => array( |
---|
| 29 | 'handler' => 'revisioning_handler_field_node_last_editor', |
---|
| 30 | 'click sortable' => TRUE |
---|
| 31 | ), |
---|
| 32 | /* See WhoWhatWhen for sort ideas |
---|
| 33 | 'filter' => array( |
---|
| 34 | 'handler' => 'revisioning_handler_filter_node_last_editor', |
---|
| 35 | ), |
---|
| 36 | 'sort' => array( |
---|
| 37 | 'handler' => 'revisioning_handler_sort_node_last_editor', |
---|
| 38 | ),*/ |
---|
| 39 | ); |
---|
| 40 | $data['node']['state'] = array( |
---|
| 41 | 'title' => t('State'), |
---|
| 42 | 'help' => t('One of: pending, current, archived'), |
---|
| 43 | 'field' => array( |
---|
| 44 | 'handler' => 'revisioning_handler_field_node_state', |
---|
| 45 | 'click sortable' => TRUE, |
---|
| 46 | ), |
---|
| 47 | 'filter' => array( |
---|
| 48 | 'handler' => 'revisioning_handler_filter_node_state', |
---|
| 49 | ) |
---|
| 50 | // Cannot support sort as 'state' cannot be expressed as ORDER BY clause |
---|
| 51 | ); |
---|
| 52 | $data['node']['number_of_revisions'] = array( |
---|
| 53 | 'title' => t('Revisions'), |
---|
| 54 | 'help' => t('Number of revisions.'), |
---|
| 55 | 'field' => array( |
---|
| 56 | 'handler' => 'revisioning_handler_field_node_number_of_revisions', |
---|
| 57 | 'click sortable' => TRUE, |
---|
| 58 | ), |
---|
| 59 | 'filter' => array( |
---|
| 60 | 'handler' => 'revisioning_handler_filter_node_number_of_revisions', |
---|
| 61 | ), |
---|
| 62 | // Cannot support sort as 'number of revisions' cannot be expressed as ORDER BY clause |
---|
| 63 | ); |
---|
| 64 | $data['node']['revision_moderation'] = array( |
---|
| 65 | 'title' => t('Revision moderation'), |
---|
| 66 | 'help' => t('Whether the node is subject to revision moderation.'), |
---|
| 67 | 'field' => array( |
---|
| 68 | 'handler' => 'revisioning_handler_field_node_revision_moderation', |
---|
| 69 | 'click sortable' => TRUE, |
---|
| 70 | ), |
---|
| 71 | 'filter' => array( |
---|
| 72 | 'handler' => 'revisioning_handler_filter_node_revision_moderation', |
---|
| 73 | ), |
---|
| 74 | // Cannot support sort as this flag cannot be expressed as ORDER BY clause |
---|
| 75 | ); |
---|
| 76 | $data['node_revisions']['latest'] = array( |
---|
| 77 | 'title' => t('Latest revision'), |
---|
| 78 | 'help' => t('Include only the most recent revision of a node.'), |
---|
| 79 | 'filter' => array( |
---|
| 80 | 'handler' => 'revisioning_handler_filter_revision_latest', |
---|
| 81 | ) |
---|
| 82 | // Cannot support sort as 'latest' cannot be expressed as ORDER BY clause |
---|
| 83 | ); |
---|
| 84 | $data['node_revisions']['title']['help'] = t('The title of the revision.'); |
---|
| 85 | $data['node_revisions']['state'] = array( |
---|
| 86 | 'title' => t('State'), |
---|
| 87 | 'help' => t('One of: pending, current, archived'), |
---|
| 88 | 'field' => array( |
---|
| 89 | 'handler' => 'revisioning_handler_field_revision_state', |
---|
| 90 | 'click sortable' => TRUE, |
---|
| 91 | ), |
---|
| 92 | 'filter' => array( |
---|
| 93 | 'handler' => 'revisioning_handler_filter_revision_state', |
---|
| 94 | ) |
---|
| 95 | // Cannot support sort as 'state' cannot be expressed as ORDER BY clause |
---|
| 96 | ); |
---|
| 97 | } |
---|
| 98 | |
---|
| 99 | /** |
---|
| 100 | * Implementation of hook_views_handlers(). |
---|
| 101 | * |
---|
| 102 | * Register all of the handlers (fields and filters) used in Revisioning views. |
---|
| 103 | */ |
---|
| 104 | function revisioning_views_handlers() { |
---|
| 105 | return array( |
---|
| 106 | 'info' => array( |
---|
| 107 | 'path' => drupal_get_path('module', 'revisioning') .'/views', |
---|
| 108 | ), |
---|
| 109 | 'handlers' => array( |
---|
| 110 | 'revisioning_handler_field_node_state' => array('parent' => 'views_handler_field'), |
---|
| 111 | 'revisioning_handler_field_node_last_editor' => array('parent' => 'views_handler_field'), |
---|
| 112 | 'revisioning_handler_field_revision_state' => array('parent' => 'views_handler_field'), |
---|
| 113 | 'revisioning_handler_field_node_number_of_revisions' => array('parent' => 'views_handler_field'), |
---|
| 114 | 'revisioning_handler_field_node_revision_moderation' => array('parent' => 'views_handler_field'), |
---|
| 115 | 'revisioning_handler_filter_node_state' => array('parent' => 'views_handler_filter_in_operator'), |
---|
| 116 | 'revisioning_handler_filter_node_number_of_revisions' => array('parent' => 'views_handler_filter_numeric'), |
---|
| 117 | 'revisioning_handler_filter_node_revision_moderation' => array('parent' => 'views_handler_filter_in_operator'), |
---|
| 118 | 'revisioning_handler_filter_revision_state' => array('parent' => 'views_handler_filter_in_operator'), |
---|
| 119 | 'revisioning_handler_filter_revision_latest' => array('parent' => 'views_handler_filter_boolean_operator'), |
---|
| 120 | ) |
---|
| 121 | ); |
---|
| 122 | } |
---|