1 |
8ff851c6
|
Andreas Kohlbecker
|
<?php
|
2 |
|
|
|
3 |
|
|
define(NODETYPE_TAXON, 'taxon');
|
4 |
|
|
define(NODETYPE_MEDIA, 'media');
|
5 |
|
|
define(NODETYPE_REFERENCE, 'reference');
|
6 |
57e2ea1f
|
f.revilla
|
define(NODETYPE_NAME, 'name');
|
7 |
8ff851c6
|
Andreas Kohlbecker
|
|
8 |
90f6855c
|
Andreas Kohlbecker
|
/**
|
9 |
|
|
* Implementation of hook_cdm_nodetypes().
|
10 |
|
|
*/
|
11 |
|
|
function cdm_dataportal_cdm_nodetypes(){
|
12 |
c7e36592
|
Andreas Kohlbecker
|
static $nodetypes;
|
13 |
|
|
if(!$nodetypes){
|
14 |
|
|
$nodetypes = array('cdm_'.NODETYPE_REFERENCE => NODETYPE_REFERENCE, 'cdm_'.NODETYPE_TAXON => NODETYPE_TAXON, 'cdm_'.NODETYPE_MEDIA => NODETYPE_MEDIA, 'cdm_'.NODETYPE_NAME => NODETYPE_NAME);
|
15 |
|
|
}
|
16 |
|
|
return $nodetypes;
|
17 |
|
|
}
|
18 |
|
|
|
19 |
8ff851c6
|
Andreas Kohlbecker
|
/**
|
20 |
|
|
* Implementation of hook_node_info().
|
21 |
|
|
*/
|
22 |
|
|
function cdm_dataportal_node_info() {
|
23 |
c7e36592
|
Andreas Kohlbecker
|
|
24 |
8ff851c6
|
Andreas Kohlbecker
|
$nodeinfo = array();
|
25 |
90f6855c
|
Andreas Kohlbecker
|
foreach( cdm_get_nodetypes() as $nodeType=>$type){
|
26 |
c7e36592
|
Andreas Kohlbecker
|
$nodeinfo[$nodeType] = array(
|
27 |
8ff851c6
|
Andreas Kohlbecker
|
'name' => t(ucfirst($type)),
|
28 |
|
|
'has_title' => TRUE,
|
29 |
|
|
'module' => 'cdm_dataportal',
|
30 |
90f6855c
|
Andreas Kohlbecker
|
'description' => t('This node type is being used internally to create peer nodes in drupal for cdm entities of the type ' . $type . '.')
|
31 |
8ff851c6
|
Andreas Kohlbecker
|
);
|
32 |
|
|
}
|
33 |
|
|
|
34 |
|
|
return $nodeinfo;
|
35 |
|
|
}
|
36 |
|
|
|
37 |
c7e36592
|
Andreas Kohlbecker
|
|
38 |
8ff851c6
|
Andreas Kohlbecker
|
/**
|
39 |
|
|
* Implementation of hook_form()
|
40 |
|
|
*/
|
41 |
|
|
function cdm_dataportal_form(&$node) {
|
42 |
|
|
|
43 |
|
|
$type = node_get_types('type', $node);
|
44 |
|
|
|
45 |
|
|
if(is_numeric($node->nid)){
|
46 |
|
|
$cdm_node_notice = t('In order to edit CDM content, please use the '). l(t('Taxonomic Editor'), 'http://dev.e-taxonomy.eu/trac/wiki/TaxonomicEditor', NULL, NULL, TRUE);
|
47 |
|
|
} else {
|
48 |
|
|
$cdm_node_notice = t('You cannot manually create a node of type ').$type->name . '. '. t('This node type is only created internally');
|
49 |
|
|
}
|
50 |
|
|
$form['cdm'] = array(
|
51 |
|
|
'#value' => '<div class="cdm_node_notice warning">' . $cdm_node_notice . '</div>',
|
52 |
|
|
'#weight' => -5
|
53 |
|
|
);
|
54 |
|
|
// We need to define form elements for the node's title and body.
|
55 |
|
|
$form['title'] = array(
|
56 |
|
|
'#type' => 'textfield',
|
57 |
|
|
'#title' => check_plain($type->title_label),
|
58 |
|
|
'#required' => TRUE,
|
59 |
|
|
'#disabled' => TRUE,
|
60 |
|
|
'#default_value' => $node->title,
|
61 |
|
|
'#weight' => -5
|
62 |
|
|
);
|
63 |
|
|
|
64 |
|
|
return $form;
|
65 |
|
|
}
|
66 |
|
|
|
67 |
|
|
|
68 |
|
|
/**
|
69 |
|
|
* Implementation of hook_nodeapi().
|
70 |
|
|
*/
|
71 |
|
|
function cdm_dataportal_nodeapi(&$node, $op, $teaser, $page) {
|
72 |
|
|
switch ($op) {
|
73 |
|
|
case 'view':
|
74 |
|
|
switch($node->type){
|
75 |
|
|
case 'cdm_'.NODETYPE_TAXON :
|
76 |
|
|
if(arg(0) == 'node'){
|
77 |
|
|
$cdmnode = db_fetch_object(db_query('SELECT * FROM {node_cdm} WHERE nid = \'%d\''
|
78 |
|
|
, $node->nid));
|
79 |
|
|
$taxonpage = cdm_dataportal_taxon_view($cdmnode->uuid);
|
80 |
|
|
drupal_set_title($taxonpage->title);
|
81 |
|
|
cdm_add_node_content($node, $taxonpage->content, variable_get('cdm_content_weight', -1));
|
82 |
|
|
}
|
83 |
|
|
break;
|
84 |
57e2ea1f
|
f.revilla
|
case 'cdm_'.NODETYPE_NAME :
|
85 |
|
|
if(arg(0) == 'node'){
|
86 |
|
|
$cdmnode = db_fetch_object(db_query('SELECT * FROM {node_cdm} WHERE nid = \'%d\''
|
87 |
|
|
, $node->nid));
|
88 |
|
|
$namepage = cdm_dataportal_name_view($cdmnode->uuid);
|
89 |
|
|
drupal_set_title($namepage->title);
|
90 |
|
|
cdm_add_node_content($node, $namepage->content, variable_get('cdm_content_weight', -1));
|
91 |
|
|
}
|
92 |
|
|
break;
|
93 |
8ff851c6
|
Andreas Kohlbecker
|
}
|
94 |
90f6855c
|
Andreas Kohlbecker
|
break;
|
95 |
|
|
|
96 |
|
|
case 'delete':
|
97 |
|
|
if(array_key_exists($node->type, cdm_get_nodetypes())){
|
98 |
|
|
db_query("DELETE FROM {node_cdm} WHERE nid = %d", $node->nid);
|
99 |
|
|
}
|
100 |
8ff851c6
|
Andreas Kohlbecker
|
}
|
101 |
|
|
}
|