Daniel Lamb
10 years ago
5 changed files with 200 additions and 54 deletions
@ -0,0 +1,71 @@
|
||||
<?php |
||||
|
||||
/** |
||||
* @file |
||||
* Utility functions for defining collection bundles. |
||||
*/ |
||||
|
||||
/** |
||||
* Defines bundles (content types) for this module. |
||||
*/ |
||||
function islandora_collection_define_bundles() { |
||||
module_load_include('inc', 'islandora_dcterms', 'include/fields'); |
||||
|
||||
$t = get_t(); |
||||
|
||||
// Create basic_image bundle. |
||||
$collection_content_type = array( |
||||
'type' => ISLANDORA_COLLECTION_BUNDLE, |
||||
'name' => $t('Collection'), |
||||
'base' => 'node_content', |
||||
'description' => $t('A collection in Fedora'), |
||||
'custom' => 1, |
||||
'modified' => 1, |
||||
'locked' => 0, |
||||
'disabled' => 0, |
||||
); |
||||
|
||||
$collection_content_type = node_type_set_defaults($collection_content_type); |
||||
|
||||
$status = node_type_save($collection_content_type); |
||||
|
||||
$t_args = array('%name' => $collection_content_type->name); |
||||
|
||||
if ($status == SAVED_UPDATED) { |
||||
drupal_set_message($t('Updated %name content type.', $t_args)); |
||||
} |
||||
elseif ($status == SAVED_NEW) { |
||||
drupal_set_message($t('Created %name content type.', $t_args)); |
||||
} |
||||
|
||||
// Add thumbnail field. |
||||
if (field_info_field(ISLANDORA_TN_FIELD)) { |
||||
$tn_field_instance = array( |
||||
'field_name' => ISLANDORA_TN_FIELD, |
||||
'entity_type' => 'node', |
||||
'bundle' => ISLANDORA_COLLECTION_BUNDLE, |
||||
'label' => $t("Thumbnail"), |
||||
'description' => $t("A thumbnail for the Fedora resource"), |
||||
'required' => FALSE, |
||||
); |
||||
field_create_instance($tn_field_instance); |
||||
drupal_set_message($t('Field %name was created successfully', array('%name' => ISLANDORA_TN_FIELD))); |
||||
} |
||||
|
||||
// Add MODS field. |
||||
if (field_info_field(ISLANDORA_MODS_FIELD)) { |
||||
$mods_field_instance = array( |
||||
'field_name' => ISLANDORA_MODS_FIELD, |
||||
'entity_type' => 'node', |
||||
'bundle' => ISLANDORA_COLLECTION_BUNDLE, |
||||
'label' => $t("MODS"), |
||||
'description' => $t("A MODS record for the Fedora resource"), |
||||
'required' => FALSE, |
||||
); |
||||
field_create_instance($mods_field_instance); |
||||
drupal_set_message($t('Field %name was created successfully', array('%name' => ISLANDORA_MODS_FIELD))); |
||||
} |
||||
|
||||
// Add dcterms fields. |
||||
islandora_dcterms_attach_fields_to_bundle(ISLANDORA_COLLECTION_BUNDLE); |
||||
} |
@ -0,0 +1,78 @@
|
||||
<?php |
||||
|
||||
/** |
||||
* @file |
||||
* Exported views code for this module. |
||||
*/ |
||||
|
||||
/** |
||||
* Implements hook_views_default_views(). |
||||
*/ |
||||
function islandora_collection_views_default_views() { |
||||
$view = new view(); |
||||
$view->name = 'collection_view'; |
||||
$view->description = 'Shows all members of a collection'; |
||||
$view->tag = 'default'; |
||||
$view->base_table = 'node'; |
||||
$view->human_name = 'Collection View'; |
||||
$view->core = 7; |
||||
$view->api_version = '3.0'; |
||||
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */ |
||||
|
||||
/* Display: Master */ |
||||
$handler = $view->new_display('default', 'Master', 'default'); |
||||
$handler->display->display_options['title'] = 'Members'; |
||||
$handler->display->display_options['use_more_always'] = FALSE; |
||||
$handler->display->display_options['access']['type'] = 'perm'; |
||||
$handler->display->display_options['cache']['type'] = 'none'; |
||||
$handler->display->display_options['query']['type'] = 'views_query'; |
||||
$handler->display->display_options['exposed_form']['type'] = 'basic'; |
||||
$handler->display->display_options['pager']['type'] = 'full'; |
||||
$handler->display->display_options['pager']['options']['items_per_page'] = '10'; |
||||
$handler->display->display_options['style_plugin'] = 'default'; |
||||
$handler->display->display_options['row_plugin'] = 'node'; |
||||
/* Relationship: Content: Relation: pcdm:hasMember (node → node) */ |
||||
$handler->display->display_options['relationships']['relation_pcdm_hasmember_node']['id'] = 'relation_pcdm_hasmember_node'; |
||||
$handler->display->display_options['relationships']['relation_pcdm_hasmember_node']['table'] = 'node'; |
||||
$handler->display->display_options['relationships']['relation_pcdm_hasmember_node']['field'] = 'relation_pcdm_hasmember_node'; |
||||
$handler->display->display_options['relationships']['relation_pcdm_hasmember_node']['required'] = TRUE; |
||||
$handler->display->display_options['relationships']['relation_pcdm_hasmember_node']['r_index'] = '1'; |
||||
$handler->display->display_options['relationships']['relation_pcdm_hasmember_node']['entity_deduplication_left'] = 0; |
||||
$handler->display->display_options['relationships']['relation_pcdm_hasmember_node']['entity_deduplication_right'] = 0; |
||||
/* Field: Content: Title */ |
||||
$handler->display->display_options['fields']['title']['id'] = 'title'; |
||||
$handler->display->display_options['fields']['title']['table'] = 'node'; |
||||
$handler->display->display_options['fields']['title']['field'] = 'title'; |
||||
$handler->display->display_options['fields']['title']['label'] = ''; |
||||
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = FALSE; |
||||
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = FALSE; |
||||
/* Sort criterion: Content: Post date */ |
||||
$handler->display->display_options['sorts']['created']['id'] = 'created'; |
||||
$handler->display->display_options['sorts']['created']['table'] = 'node'; |
||||
$handler->display->display_options['sorts']['created']['field'] = 'created'; |
||||
$handler->display->display_options['sorts']['created']['order'] = 'DESC'; |
||||
/* Contextual filter: Content: Node UUID */ |
||||
$handler->display->display_options['arguments']['uuid']['id'] = 'uuid'; |
||||
$handler->display->display_options['arguments']['uuid']['table'] = 'node'; |
||||
$handler->display->display_options['arguments']['uuid']['field'] = 'uuid'; |
||||
$handler->display->display_options['arguments']['uuid']['relationship'] = 'relation_pcdm_hasmember_node'; |
||||
$handler->display->display_options['arguments']['uuid']['default_argument_type'] = 'fixed'; |
||||
$handler->display->display_options['arguments']['uuid']['summary']['number_of_records'] = '0'; |
||||
$handler->display->display_options['arguments']['uuid']['summary']['format'] = 'default_summary'; |
||||
$handler->display->display_options['arguments']['uuid']['summary_options']['items_per_page'] = '25'; |
||||
$handler->display->display_options['arguments']['uuid']['limit'] = '0'; |
||||
/* Filter criterion: Content: Published */ |
||||
$handler->display->display_options['filters']['status']['id'] = 'status'; |
||||
$handler->display->display_options['filters']['status']['table'] = 'node'; |
||||
$handler->display->display_options['filters']['status']['field'] = 'status'; |
||||
$handler->display->display_options['filters']['status']['value'] = 1; |
||||
$handler->display->display_options['filters']['status']['group'] = 1; |
||||
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE; |
||||
|
||||
/* Display: Page */ |
||||
$handler = $view->new_display('page', 'Page', 'page'); |
||||
$handler->display->display_options['path'] = 'collection-view/%'; |
||||
|
||||
$views[$view->name] = $view; |
||||
return $views; |
||||
} |
@ -0,0 +1,35 @@
|
||||
<?php |
||||
|
||||
/** |
||||
* @file |
||||
* Utility functions for defining collection relationships. |
||||
*/ |
||||
|
||||
/** |
||||
* Utility function to define relation types using CTools export code. |
||||
*/ |
||||
function islandora_collection_define_relations() { |
||||
$relation_type = new stdClass(); |
||||
$relation_type->disabled = FALSE; /* Edit this to true to make a default relation_type disabled initially */ |
||||
$relation_type->api_version = 1; |
||||
$relation_type->relation_type = 'pcdm_hasmember'; |
||||
$relation_type->label = 'pcdm:hasMember'; |
||||
$relation_type->reverse_label = 'fedora:hasParent'; |
||||
$relation_type->directional = 1; |
||||
$relation_type->transitive = 0; |
||||
$relation_type->r_unique = 0; |
||||
$relation_type->min_arity = 2; |
||||
$relation_type->max_arity = 2; |
||||
$relation_type->source_bundles = array( |
||||
0 => 'node:basic_image', |
||||
1 => 'node:collection', |
||||
); |
||||
$relation_type->target_bundles = array( |
||||
0 => 'node:basic_image', |
||||
1 => 'node:collection', |
||||
); |
||||
// Relation type create adds default keys. It also handles casting to array. |
||||
$relation_type = relation_type_create($relation_type); |
||||
// Yes, in relation.module 'save' is a distinct step from 'create'. |
||||
relation_type_save($relation_type); |
||||
} |
Loading…
Reference in new issue