array( 'left_field' => 'nid', 'field' => 'nid', ), 'files' => array( 'left_field' => 'fid', 'field' => 'fid', ), ); /** * {image} table alias, using {files} as base table. */ $data['image_file']['table']['group'] = t('Image'); $data['image_file']['table']['join'] = array( 'files' => array( 'table' => 'image', 'left_field' => 'fid', 'field' => 'fid', ), ); // The preset size of the image. $data['image_file']['image_size'] = array( 'title' => t('Image preset size'), 'help' => t('The preset image size of an image, e.g. Original, Thumbnail, etc.'), 'field' => array( 'handler' => 'image_handler_field_image_size', 'click sortable' => TRUE, ), 'argument' => array( 'handler' => 'image_handler_argument_image_size', 'parent' => 'views_handler_argument_string', ), 'filter' => array( 'handler' => 'image_handler_filter_image_size', ), ); // Relationship to the node base. // Allows us to go {files} --> {image} --> {node}. $data['image_file']['nid'] = array( 'relationship' => array( 'title' => t('Node'), 'label' => t('Image node'), 'help' => t('A relationship to gain access to the corresponding node of an image file uploaded via Image module.'), 'base' => 'node', 'field' => 'nid', 'relationship table' => 'image', 'relationship field' => 'nid', 'base field' => 'nid', 'handler' => 'views_handler_relationship', ), ); /** * {image} table alias, using {node} as base table. */ $data['image_node']['table']['group'] = t('Image'); $data['image_node']['table']['join'] = array( 'node' => array( 'table' => 'image', 'left_field' => 'nid', 'field' => 'nid', ), ); // Relationship to the files base. // Allows us to go {node} --> {image} --> {files}. $data['image_node']['nid'] = array( 'relationship' => array( 'title' => t('File'), 'label' => t('Image file'), 'help' => t('A relationship to gain access to the corresponding file(s) of an image node.'), 'base' => 'files', 'field' => 'fid', 'relationship table' => 'image', 'relationship field' => 'fid', 'base field' => 'fid', 'handler' => 'image_handler_relationship_node_image_file', ), ); return $data; } /** * Implementation of hook_views_data_alter(). */ function image_views_data_alter(&$data) { // {node} table, prefixed with 'image' to avoid potential clashes. // The image for an image node. This could technically be #global, but adding // on {node} allows this field to be used through relationships if needed // (e.g. through a CCK nodereference field). $data['node']['image_image'] = array( 'group' => t('Image'), 'field' => array( 'title' => t('Image'), 'help' => t('The rendered image of an Image node, shown at a chosen size. This field can be added without a relationship.'), 'handler' => 'image_handler_field_image_node_image', ), 'argument' => array( 'title' => t('Image size'), 'help' => t('Allows the size of the Image node image field to be set with the argument.'), 'handler' => 'image_handler_argument_image_node_image_size', ), ); } /** * Implementation of hook_views_handlers(). */ function image_views_handlers() { return array( 'info' => array( 'path' => drupal_get_path('module', 'image') . '/views', ), 'handlers' => array( 'image_handler_field_image_node_image' => array( 'parent' => 'views_handler_field_node', ), 'image_handler_field_image_size' => array( 'parent' => 'views_handler_field', ), 'image_handler_argument_image_size' => array( 'parent' => 'views_handler_argument_string', ), 'image_handler_argument_image_node_image_size' => array( 'parent' => 'views_handler_argument_string', ), 'image_handler_filter_image_size' => array( 'parent' => 'views_handler_filter_in_operator', ), 'image_handler_relationship_node_image_file' => array( 'parent' => 'views_handler_relationship', ), ), ); } /** * Implementation of hook_views_plugins(). */ function image_views_plugins() { return array( 'style' => array( /** * A fluid grid view style for gallery items. */ 'image_gallery' => array( 'title' => 'Gallery', 'help' => t('Displays items in a fluid grid.'), 'parent' => 'list', 'handler' => 'views_plugin_style_list', 'theme path' => drupal_get_path('module', 'image') . '/views/theme', 'theme file' => 'theme.inc', 'theme' => 'image_view_image_gallery', 'uses row plugin' => TRUE, 'uses options' => TRUE, 'type' => 'normal', 'help topic' => 'style-list', ), ), 'argument validator' => array( 'image_size' => array( 'title' => t('Image size'), 'handler' => 'image_plugin_argument_validate_image_size', 'path' => drupal_get_path('module', 'image') . '/views', ), ), 'argument default' => array( 'image_size' => array( 'title' => t('Image size'), 'handler' => 'image_plugin_argument_default_image_size', 'path' => drupal_get_path('module', 'image') . '/views', 'parent' => 'fixed', // so that the parent class is included ), ), ); }