1 |
806baeb2
|
Andreas Kohlbecker
|
<?php
|
2 |
|
|
// $Id$
|
3 |
|
|
|
4 |
|
|
/**
|
5 |
78805714
|
f.revilla
|
* Copyright (C) 2007 EDIT
|
6 |
|
|
* European Distributed Institute of Taxonomy
|
7 |
|
|
* http://www.e-taxonomy.eu
|
8 |
|
|
*
|
9 |
|
|
* The contents of this file are subject to the Mozilla Public License Version 1.1
|
10 |
|
|
* See http://www.mozilla.org/MPL/MPL-1.1.html for the full license terms.
|
11 |
|
|
*/
|
12 |
806baeb2
|
Andreas Kohlbecker
|
|
13 |
|
|
function theme_cdm_search_results($pager, $path, $parameters){
|
14 |
|
|
|
15 |
|
|
|
16 |
b9438135
|
Andreas Kohlbecker
|
$showThumbnails = $_SESSION['pageoptions']['searchtaxa']['showThumbnails'];
|
17 |
|
|
if( !is_numeric($showThumbnails)){
|
18 |
|
|
$showThumbnails = 1;
|
19 |
|
|
}
|
20 |
|
|
$setSessionUri = url('cdm_api/setvalue/session', "var=[pageoption][searchtaxa][showThumbnails]&val=");
|
21 |
|
|
drupal_add_js('$(document).ready(function() {
|
22 |
d74aa4df
|
Andreas Kohlbecker
|
|
23 |
806baeb2
|
Andreas Kohlbecker
|
// init
|
24 |
|
|
if('.$showThumbnails.' == 1){
|
25 |
|
|
$(\'.media_gallery\').show(20);
|
26 |
|
|
} else {
|
27 |
|
|
$(\'.media_gallery\').hide(20);
|
28 |
|
|
}
|
29 |
|
|
// add change hander
|
30 |
|
|
$(\'#showThumbnails\').change(
|
31 |
|
|
function(event){
|
32 |
|
|
var state = 0;
|
33 |
|
|
if($(this).is(\':checked\')){
|
34 |
|
|
$(\'.media_gallery\').show(20);
|
35 |
|
|
state = 1;
|
36 |
|
|
} else {
|
37 |
|
|
$(\'.media_gallery\').hide(20);
|
38 |
|
|
}
|
39 |
|
|
// store state in session variable
|
40 |
|
|
var uri = \''.$setSessionUri.'\' + state;
|
41 |
|
|
jQuery.get(uri);
|
42 |
|
|
});
|
43 |
|
|
});', "inline");
|
44 |
|
|
|
45 |
b9438135
|
Andreas Kohlbecker
|
drupal_set_title(t('Search results'));
|
46 |
806baeb2
|
Andreas Kohlbecker
|
|
47 |
b9438135
|
Andreas Kohlbecker
|
$out = ''; //l('Advanced Search', '/cdm_dataportal/search');
|
48 |
806baeb2
|
Andreas Kohlbecker
|
|
49 |
b9438135
|
Andreas Kohlbecker
|
$out = '<div class="page_options"><form name="pageoptions"><input id="showThumbnails" type="checkbox" name="showThumbnails" '.($showThumbnails == 1? 'checked="checked"': '').'> '.t('Show Thumbnails').'</form></div>';
|
50 |
|
|
if(count($pager->records) > 0){
|
51 |
|
|
$out .= '<div id="search_results">';
|
52 |
|
|
$out .= theme('cdm_list_of_taxa', $pager->records);
|
53 |
|
|
$out .= '</div>';
|
54 |
|
|
$out .= theme('cdm_pager', $pager, $path, $parameters);
|
55 |
|
|
} else {
|
56 |
|
|
$out = '<h4 class="error">Sorry, no matching entries found.</h4>';
|
57 |
|
|
}
|
58 |
|
|
return $out;
|
59 |
806baeb2
|
Andreas Kohlbecker
|
}
|
60 |
|
|
|
61 |
|
|
|
62 |
|
|
/**
|
63 |
|
|
* renders misapplied names and invalid designations.
|
64 |
|
|
* Both relation types are currently treated the same!
|
65 |
|
|
*
|
66 |
|
|
* @param unknown_type $taxonRelationships
|
67 |
|
|
* @return unknown
|
68 |
|
|
*/
|
69 |
b9438135
|
Andreas Kohlbecker
|
function theme_cdm_taxonRelationships($taxonRelationships, $focusedTaxon){
|
70 |
|
|
|
71 |
|
|
if(!$taxonRelationships){
|
72 |
|
|
return;
|
73 |
|
|
}
|
74 |
|
|
|
75 |
|
|
RenderHints::pushToRenderStack('taxonRelationships');
|
76 |
|
|
$footnoteListKey = 'taxonRelationships';
|
77 |
|
|
RenderHints::setFootnoteListKey($footnoteListKey);
|
78 |
|
|
|
79 |
|
|
$misapplied = array();
|
80 |
|
|
$joinedAuthorTeams = array();
|
81 |
|
|
|
82 |
|
|
$taxon_relationship_types = variable_get(CDM_TAXON_RELATIONSHIP_TYPES, unserialize(CDM_TAXON_RELATIONSHIP_TYPES_DEFAULT));
|
83 |
|
|
|
84 |
|
|
// aggregate misapplied names having the same fullname:
|
85 |
|
|
foreach($taxonRelationships as $taxonRelation){
|
86 |
|
|
|
87 |
|
|
if( in_array($taxonRelation->type->uuid, $taxon_relationship_types)) {
|
88 |
|
|
|
89 |
|
|
if( $taxonRelation->type->uuid == UUID_MISAPPLIED_NAME_FOR || $taxonRelation->type->uuid == UUID_INVALID_DESIGNATION_FOR ){
|
90 |
|
|
|
91 |
|
|
$name = $taxonRelation->fromTaxon->name->titleCache;
|
92 |
|
|
|
93 |
5606901a
|
Andreas Kohlbecker
|
$authorteam = cdm_ws_get(CDM_WS_REFERENCE_AUTHORTEAM, $taxonRelation->fromTaxon->sec->uuid);
|
94 |
|
|
$authorteam = $authorteam->titleCache;
|
95 |
b9438135
|
Andreas Kohlbecker
|
|
96 |
|
|
if(!isset($misapplied[$name])){
|
97 |
|
|
$misapplied[$name]['out'] =
|
98 |
|
|
'<span class="misapplied">'
|
99 |
|
|
.cdm_related_taxon($taxonRelation->fromTaxon, UUID_MISAPPLIED_NAME_FOR).
|
100 |
|
|
'</span>';
|
101 |
|
|
}
|
102 |
|
|
|
103 |
|
|
// collect all authors for this fullname
|
104 |
|
|
if(isset($authorteam)){
|
105 |
|
|
$misapplied[$name]['authorteam'][$authorteam] = '';
|
106 |
|
|
$joinedAuthorTeams[$authorteam] = 'sensu '.theme('cdm_reference', $taxonRelation->fromTaxon->sec);
|
107 |
|
|
}
|
108 |
|
|
|
109 |
5606901a
|
Andreas Kohlbecker
|
} else {
|
110 |
|
|
// all relationsship types but misapplied_name_for invalid_designation_for
|
111 |
|
|
$taxonRelationshipsLines[] = cdm_taxonRelationship($taxonRelation, true, _is_invers_taxonRelationship($taxonRelation, $focusedTaxon), true);
|
112 |
|
|
}
|
113 |
|
|
}
|
114 |
b9438135
|
Andreas Kohlbecker
|
}
|
115 |
|
|
|
116 |
|
|
// sort the joinedAuthorTeams and create footnotes and footnotekeys
|
117 |
|
|
ksort($joinedAuthorTeams);
|
118 |
|
|
foreach($joinedAuthorTeams as $authorteam=>$sensuCitation){
|
119 |
|
|
$footnoteKey = FootnoteManager::addNewFootnote($footnoteListKey, $sensuCitation);
|
120 |
|
|
$joinedAuthorTeams[$authorteam] = '<span class="sensu">sensu '.$authorteam. theme('cdm_footnote_key', $footnoteKey).'</span>';
|
121 |
|
|
}
|
122 |
|
|
|
123 |
|
|
// generate output
|
124 |
|
|
if(is_array($misapplied) && count($misapplied) >0 ){
|
125 |
|
|
$out .= '<ul class="misapplied">';
|
126 |
|
|
foreach($misapplied as $misapplied_name){
|
127 |
|
|
|
128 |
|
|
$out .= '<li class="synonym">'.$misapplied_name['out'] . " ";
|
129 |
|
|
if(isset($misapplied_name['authorteam'])){
|
130 |
|
|
// fill authors with the renderedFootnoteKey and sorting 'em
|
131 |
|
|
foreach($misapplied_name['authorteam'] as $authorteam=>&$renderedFootnoteKey) {
|
132 |
|
|
$renderedFootnoteKey = $joinedAuthorTeams[$authorteam];
|
133 |
|
|
}
|
134 |
|
|
ksort($misapplied_name['authorteam']);
|
135 |
|
|
$out .= join('; ', $misapplied_name['authorteam']);
|
136 |
|
|
}
|
137 |
|
|
$out .= '</li>';
|
138 |
|
|
|
139 |
|
|
}
|
140 |
|
|
$out .= '</ul>';
|
141 |
|
|
}
|
142 |
|
|
|
143 |
|
|
if(is_array($taxonRelationshipsLines) && count($taxonRelationshipsLines) >0 ){
|
144 |
|
|
$out .= '<ul class="taxonRelationships">';
|
145 |
|
|
foreach($taxonRelationshipsLines as $taxonRelationshipLine){
|
146 |
|
|
$out .= '<li class="synonym">'. $taxonRelationshipLine . '</li>';
|
147 |
|
|
}
|
148 |
|
|
$out .= '</ul>';
|
149 |
|
|
}
|
150 |
|
|
|
151 |
|
|
|
152 |
|
|
$tr_footnotes = theme('cdm_footnotes', $footnoteListKey, 'li');
|
153 |
|
|
$tr_footnotes_exploded = explode('sensu', $tr_footnotes);
|
154 |
|
|
$tr_footnotes_aux = '';
|
155 |
|
|
foreach ($tr_footnotes_exploded as $element){
|
156 |
|
|
$tr_footnotes_aux .= $element;
|
157 |
|
|
}
|
158 |
|
|
$out .= '<ul>' . $tr_footnotes_aux . '</ul>';
|
159 |
5606901a
|
Andreas Kohlbecker
|
|
160 |
b9438135
|
Andreas Kohlbecker
|
RenderHints::popFromRenderStack();
|
161 |
|
|
return $out;
|
162 |
806baeb2
|
Andreas Kohlbecker
|
}
|
163 |
|
|
|
164 |
8983be45
|
Andreas Kohlbecker
|
|
165 |
|
|
|
166 |
80e0aa8e
|
Andreas Kohlbecker
|
function theme_cdm_acceptedFor(){
|
167 |
b9438135
|
Andreas Kohlbecker
|
RenderHints::pushToRenderStack('acceptedFor');
|
168 |
|
|
|
169 |
|
|
$out = '';
|
170 |
|
|
if(isset($_REQUEST['acceptedFor'])){
|
171 |
|
|
|
172 |
|
|
$synonym = cdm_ws_get(CDM_WS_PORTAL_TAXON, $_REQUEST['acceptedFor']);
|
173 |
|
|
|
174 |
|
|
if($synonym){
|
175 |
|
|
$out .= '<span class="acceptedFor">';
|
176 |
|
|
$out .= t('is accepted for ');
|
177 |
|
|
if(isset($synonym->name->nomenclaturalReference)){
|
178 |
|
|
$referenceUri = url(path_to_reference($synonym->name->nomenclaturalReference->uuid));
|
179 |
|
|
}
|
180 |
|
|
$out .= theme('cdm_taxonName', $synonym->name, null, $referenceUri);
|
181 |
|
|
$out .= theme('cdm_annotations_as_footnotekeys', $synonym);
|
182 |
|
|
$out .= '</span>';
|
183 |
|
|
}
|
184 |
|
|
}
|
185 |
|
|
RenderHints::popFromRenderStack();
|
186 |
|
|
return $out;
|
187 |
806baeb2
|
Andreas Kohlbecker
|
}
|
188 |
|
|
|
189 |
8983be45
|
Andreas Kohlbecker
|
|
190 |
|
|
|
191 |
806baeb2
|
Andreas Kohlbecker
|
function theme_cdm_list_of_taxa($records, $showMedia = false){
|
192 |
|
|
|
193 |
b9438135
|
Andreas Kohlbecker
|
RenderHints::pushToRenderStack('list_of_taxa');
|
194 |
a40ad0d2
|
Andreas Kohlbecker
|
|
195 |
b9438135
|
Andreas Kohlbecker
|
$form_name = 'search_gallery';
|
196 |
|
|
//$default_values = unserialize(CDM_DATAPORTAL_GALLERY_SETTINGS);
|
197 |
43a9b844
|
f.revilla
|
//$gallery_settings = variable_get($form_name, $default_values);
|
198 |
a40ad0d2
|
Andreas Kohlbecker
|
|
199 |
43a9b844
|
f.revilla
|
$gallery_settings = getGallerySettings(CDM_DATAPORTAL_SEARCH_GALLERY_NAME);
|
200 |
a40ad0d2
|
Andreas Kohlbecker
|
|
201 |
b9438135
|
Andreas Kohlbecker
|
$showMedia_taxa = $gallery_settings['cdm_dataportal_show_taxon_thumbnails'];
|
202 |
|
|
$showMedia_synonyms = $gallery_settings['cdm_dataportal_show_synonym_thumbnails'];
|
203 |
|
|
//$showMedia_taxa = variable_get('cdm_dataportal_findtaxa_show_taxon_thumbnails', 1);
|
204 |
|
|
//$showMedia_synonyms = variable_get('cdm_dataportal_findtaxa_show_synonym_thumbnails', 0);
|
205 |
|
|
|
206 |
|
|
$classification_uuid = get_taxonomictree_uuid_selected();
|
207 |
|
|
|
208 |
|
|
// .. well, for sure not as performant as before, but better than nothing.
|
209 |
|
|
$synonym_uuids = array();
|
210 |
|
|
foreach($records as $taxon){
|
211 |
|
|
if($taxon->class != "Taxon"){
|
212 |
|
|
if(!array_key_exists($taxon->uuid, $synonym_uuids)){
|
213 |
|
|
$synonym_uuids[$taxon->uuid] = $taxon->uuid;
|
214 |
|
|
}
|
215 |
|
|
}
|
216 |
|
|
}
|
217 |
|
|
// batch service not jet implemented:
|
218 |
|
|
// $table_of_accepted = cdm_ws_property(CDM_WS_PORTAL_TAXON_ACCEPTED, join(',', $synonym_uuids));
|
219 |
|
|
// thus ...
|
220 |
|
|
$table_of_accepted = array();
|
221 |
|
|
|
222 |
|
|
foreach($synonym_uuids as $synUuid){
|
223 |
|
|
$table_of_accepted[$synUuid] = cdm_ws_get(CDM_WS_PORTAL_TAXON_ACCEPTED, array($synUuid, $classification_uuid));
|
224 |
|
|
}
|
225 |
|
|
|
226 |
|
|
$out = '<ul class="cdm_names" style="background-image: none;">';
|
227 |
|
|
|
228 |
|
|
foreach($records as $taxon){
|
229 |
|
|
// its a Taxon
|
230 |
|
|
if($taxon->class == "Taxon"){
|
231 |
|
|
$taxonUri = url(path_to_taxon($taxon->uuid));
|
232 |
|
|
if(isset($taxon->name->nomenclaturalReference)){
|
233 |
|
|
$referenceUri = url(path_to_reference($taxon->name->nomenclaturalReference->uuid));
|
234 |
|
|
}
|
235 |
|
|
$out .= '<li class="Taxon">'.theme('cdm_taxonName', $taxon->name, $taxonUri, $referenceUri);
|
236 |
|
|
$out .= theme('cdm_annotations_as_footnotekeys', $taxon);
|
237 |
|
|
|
238 |
|
|
if($showMedia_taxa){
|
239 |
|
|
$out .= theme('cdm_taxon_list_thumbnails', $taxon);
|
240 |
|
|
}
|
241 |
|
|
$out .= '</li>';
|
242 |
|
|
} else {
|
243 |
|
|
// its a synonym
|
244 |
|
|
$uuid = $taxon->uuid;
|
245 |
|
|
$acceptedTaxa = $table_of_accepted[$uuid];
|
246 |
|
|
if(count($acceptedTaxa) == 1){
|
247 |
|
|
$acceptedTaxon = $acceptedTaxa[0];
|
248 |
3d526ffb
|
Andreas Kohlbecker
|
$taxonUri = uri_to_synonym($taxon->uuid, $acceptedTaxon->uuid, 'synonymy');
|
249 |
b9438135
|
Andreas Kohlbecker
|
if(isset($acceptedTaxon->name->nomenclaturalReference)){
|
250 |
|
|
$referenceUri = url(path_to_reference($acceptedTaxon->name->nomenclaturalReference->uuid));
|
251 |
|
|
}
|
252 |
|
|
$out .= '<li class="Synonym">'.theme('cdm_taxonName', $taxon->name, $taxonUri, $referenceUri);
|
253 |
|
|
$out .= theme('cdm_annotations_as_footnotekeys', $taxon);
|
254 |
|
|
if($showMedia_synonyms){
|
255 |
|
|
$out .= theme('cdm_taxon_list_thumbnails', $acceptedTaxon);
|
256 |
|
|
}
|
257 |
|
|
$out .= '</li>';
|
258 |
|
|
} else {
|
259 |
|
|
//TODO avoid using Ajax in the cdm_dynabox .... why?
|
260 |
|
|
//TODO add media
|
261 |
|
|
$out .= cdm_dynabox(
|
262 |
|
|
theme('cdm_taxonName', $taxon->name, null, null, false),
|
263 |
|
|
cdm_compose_url(CDM_WS_PORTAL_TAXON_ACCEPTED, array($taxon->uuid, $classification_uuid)),
|
264 |
|
|
'cdm_list_of_taxa',
|
265 |
|
|
'Click for accepted taxon');
|
266 |
|
|
}
|
267 |
|
|
}
|
268 |
|
|
}
|
269 |
|
|
|
270 |
|
|
$out .= '</ul>';
|
271 |
|
|
RenderHints::popFromRenderStack();
|
272 |
|
|
return $out;
|
273 |
806baeb2
|
Andreas Kohlbecker
|
}
|
274 |
|
|
|
275 |
b9438135
|
Andreas Kohlbecker
|
/**
|
276 |
|
|
* renders a representation of the given taxon relationship.
|
277 |
|
|
* According name relatinships are also being rendered.
|
278 |
|
|
*
|
279 |
|
|
*
|
280 |
|
|
* @param unknown_type $taxon
|
281 |
|
|
* @param unknown_type $reltype_uuid
|
282 |
|
|
* @param unknown_type $taxonRelationType
|
283 |
|
|
* @param unknown_type $doLinkTaxon
|
284 |
|
|
*/
|
285 |
5606901a
|
Andreas Kohlbecker
|
function cdm_taxonRelationship($taxonRelationship, $doLinkTaxon = false, $inverse = false, $showSecReference = false){
|
286 |
b9438135
|
Andreas Kohlbecker
|
|
287 |
|
|
// validate object
|
288 |
|
|
if( ! (isset($taxonRelationship->toTaxon) && isset($taxonRelationship->fromTaxon) && isset($taxonRelationship->type)) ) {
|
289 |
|
|
return;
|
290 |
|
|
}
|
291 |
|
|
|
292 |
|
|
$reltype_uuid = $taxonRelationship->type->uuid;
|
293 |
|
|
$taxonRelationType = $taxonRelationship->type;
|
294 |
806baeb2
|
Andreas Kohlbecker
|
|
295 |
b9438135
|
Andreas Kohlbecker
|
|
296 |
|
|
$reltype_representation = '';
|
297 |
|
|
|
298 |
|
|
if($inverse) {
|
299 |
3d526ffb
|
Andreas Kohlbecker
|
$toTaxon = $taxonRelationship->fromTaxon;
|
300 |
|
|
$fromTaxon = $taxonRelationship->toTaxon;
|
301 |
b9438135
|
Andreas Kohlbecker
|
$relsign = $taxonRelationType->inverseRepresentation_L10n_abbreviatedLabel;
|
302 |
|
|
$reltype_representation = $taxonRelationType->inverseRepresentation_L10n;
|
303 |
|
|
} else {
|
304 |
3d526ffb
|
Andreas Kohlbecker
|
$toTaxon = $taxonRelationship->toTaxon;
|
305 |
|
|
$fromTaxon = $taxonRelationship->fromTaxon;
|
306 |
b9438135
|
Andreas Kohlbecker
|
$relsign = $taxonRelationType->representation_L10n_abbreviatedLabel;
|
307 |
|
|
$reltype_representation = $taxonRelationType->representation_L10n;
|
308 |
|
|
}
|
309 |
|
|
|
310 |
5606901a
|
Andreas Kohlbecker
|
return cdm_related_taxon($toTaxon, null, $relsign, $reltype_representation, $doLinkTaxon, $showSecReference);
|
311 |
b9438135
|
Andreas Kohlbecker
|
}
|
312 |
|
|
|
313 |
|
|
/**
|
314 |
|
|
* renders a representation of the given taxon relationship.
|
315 |
|
|
* According name relatinships are also being rendered.
|
316 |
|
|
*
|
317 |
|
|
*
|
318 |
|
|
* @param unknown_type $taxon
|
319 |
|
|
* @param unknown_type $reltype_uuid
|
320 |
|
|
* @param unknown_type $taxonRelationType
|
321 |
|
|
* @param unknown_type $doLinkTaxon
|
322 |
|
|
*/
|
323 |
5606901a
|
Andreas Kohlbecker
|
function cdm_related_taxon($taxon, $reltype_uuid = null, $relsign = null, $reltype_representation = null, $doLinkTaxon = false, $showSecReference = false){
|
324 |
b9438135
|
Andreas Kohlbecker
|
|
325 |
|
|
static $relsign_homo = '≡';
|
326 |
|
|
static $relsign_hetero = '=';
|
327 |
|
|
static $relsign_invalid = '–';
|
328 |
|
|
|
329 |
5606901a
|
Andreas Kohlbecker
|
$footnoteListKey = 'taxonRelationships';
|
330 |
|
|
|
331 |
b9438135
|
Andreas Kohlbecker
|
$name_prefix = '';
|
332 |
|
|
$name_postfix = '';
|
333 |
|
|
|
334 |
|
|
$skiptags = array();
|
335 |
|
|
|
336 |
|
|
if(!$relsign) {
|
337 |
|
|
|
338 |
|
|
$relsign = '';
|
339 |
|
|
switch ($reltype_uuid){
|
340 |
|
|
case UUID_HETEROTYPIC_SYNONYM_OF:
|
341 |
|
|
case UUID_SYNONYM_OF:
|
342 |
|
|
$relsign = $relsign_hetero;
|
343 |
|
|
break;
|
344 |
|
|
case UUID_HOMOTYPIC_SYNONYM_OF:
|
345 |
|
|
$relsign = $relsign_homo;
|
346 |
|
|
break;
|
347 |
|
|
case UUID_MISAPPLIED_NAME_FOR:
|
348 |
|
|
case UUID_INVALID_DESIGNATION_FOR:
|
349 |
|
|
$skiptags[] = 'authors';
|
350 |
|
|
$relsign = $relsign_invalid;
|
351 |
|
|
$name_prefix = '"';
|
352 |
|
|
$name_postfix = '"';
|
353 |
|
|
break;
|
354 |
|
|
default :
|
355 |
|
|
$relsign = $relsign_invalid;
|
356 |
|
|
}
|
357 |
|
|
}
|
358 |
|
|
/*
|
359 |
|
|
* names with status invalid or nudum are to be displayed with the $relsign_invalid,
|
360 |
|
|
* these names appear at the end of all names in their homotypic group
|
361 |
|
|
* (ordered correctly by the java cdm_lib)
|
362 |
|
|
*/
|
363 |
|
|
if ( is_array($taxon->name->status)) {
|
364 |
|
|
foreach($taxon->name->status as $status){
|
365 |
|
|
if ($status->type->uuid == UUID_NOMENCLATURALSTATUS_TYPE_INVALID || $status->type->uuid == UUID_NOMENCLATURALSTATUS_TYPE_NUDUM){
|
366 |
|
|
$relsign = $relsign_invalid;
|
367 |
|
|
}
|
368 |
|
|
}
|
369 |
|
|
}
|
370 |
|
|
|
371 |
|
|
// now rendering starts ..
|
372 |
|
|
|
373 |
|
|
RenderHints::pushToRenderStack('related_taxon');
|
374 |
|
|
|
375 |
|
|
if($taxon->name->nomenclaturalReference){
|
376 |
|
|
$referenceUri = url(path_to_reference($taxon->name->nomenclaturalReference->uuid));
|
377 |
|
|
}
|
378 |
|
|
if($doLinkTaxon){
|
379 |
3d526ffb
|
Andreas Kohlbecker
|
$taxonUri = url(path_to_taxon($taxon->uuid, "synonymy"));
|
380 |
b9438135
|
Andreas Kohlbecker
|
}
|
381 |
|
|
//printing the taxonName and the handling the special case of annotations
|
382 |
3d526ffb
|
Andreas Kohlbecker
|
$out_taxon_part = theme('cdm_taxonName', $taxon->name, $taxonUri, $referenceUri, true, false, $skiptags);
|
383 |
5606901a
|
Andreas Kohlbecker
|
$out_taxon_part .= theme('cdm_annotations_as_footnotekeys', array($taxon->name, $taxon), $footnoteListKey);
|
384 |
|
|
|
385 |
|
|
if($showSecReference) {
|
386 |
38e46518
|
Andreas Kohlbecker
|
$out_taxon_part .= ' sec. ' . theme('cdm_reference', $taxon->sec);
|
387 |
5606901a
|
Andreas Kohlbecker
|
}
|
388 |
3d526ffb
|
Andreas Kohlbecker
|
|
389 |
b9438135
|
Andreas Kohlbecker
|
|
390 |
|
|
//later homonym or trated as later homonym AND bloking names
|
391 |
|
|
$from_name_relations = cdm_ws_get(CDM_WS_PORTAL_TAXON_FROM_NAMERELATIONS, $taxon->uuid);
|
392 |
|
|
$to_name_relations = cdm_ws_get(CDM_WS_PORTAL_TAXON_TO_NAMERELATIONS, $taxon->uuid);
|
393 |
3d526ffb
|
Andreas Kohlbecker
|
|
394 |
b9438135
|
Andreas Kohlbecker
|
//first the FROM RELS
|
395 |
3d526ffb
|
Andreas Kohlbecker
|
//FIXME use UUID below instad of representation_L10n
|
396 |
b9438135
|
Andreas Kohlbecker
|
if ($from_name_relations){
|
397 |
|
|
foreach($from_name_relations as $element){
|
398 |
|
|
switch ($element->type->representation_L10n){
|
399 |
|
|
case 'later homonym for':
|
400 |
|
|
if(isset($name_relations_html)){
|
401 |
57cfb47e
|
Andreas Kohlbecker
|
$name_relations_html .= 'nec ' . l($element->toName->titleCache . ' ' . substr($element->toName->nomenclaturalReference->datePublished->start, 0, 4),
|
402 |
b9438135
|
Andreas Kohlbecker
|
'cdm_dataportal/name/' . $element->toName->uuid . '/' . $taxon->uuid . '/' . $element->toName->taxonBases[0]->uuid);
|
403 |
|
|
}else{
|
404 |
57cfb47e
|
Andreas Kohlbecker
|
$name_relations_html = 'non ' . l($element->toName->titleCache . ' ' . substr($element->toName->nomenclaturalReference->datePublished->start, 0, 4),
|
405 |
e5d101f3
|
f.revilla
|
'cdm_dataportal/name/' . $element->toName->uuid . '/' . $taxon->uuid . '/' . $element->toName->taxonBases[0]->uuid)
|
406 |
b9438135
|
Andreas Kohlbecker
|
. ' ' . $element->toName->datePublished->start;
|
407 |
|
|
}
|
408 |
|
|
break;
|
409 |
|
|
case 'treated as later homonym for':
|
410 |
|
|
if(isset($name_relations_html)){
|
411 |
57cfb47e
|
Andreas Kohlbecker
|
$name_relations_html = 'nec ' . l($element->toName->titleCache . ' ' . substr($element->toName->nomenclaturalReference->datePublished->start, 0, 4),
|
412 |
d74aa4df
|
Andreas Kohlbecker
|
'cdm_dataportal/name/' . $element->toName->uuid);
|
413 |
b9438135
|
Andreas Kohlbecker
|
}else{
|
414 |
57cfb47e
|
Andreas Kohlbecker
|
$name_relations_html = 'non ' . l($element->toName->titleCache . ' ' . substr($element->toName->nomenclaturalReference->datePublished->start, 0, 4),
|
415 |
b9438135
|
Andreas Kohlbecker
|
'cdm_dataportal/name/' . $element->toName->uuid);
|
416 |
|
|
}
|
417 |
|
|
break;
|
418 |
|
|
}
|
419 |
|
|
}
|
420 |
|
|
//second the TO RELS
|
421 |
|
|
if ($to_name_relations){
|
422 |
|
|
foreach($to_name_relations as $element){
|
423 |
|
|
switch ($element->type->representation_L10n){
|
424 |
|
|
case 'blocking name for':
|
425 |
|
|
if(isset($name_relations_html) ){
|
426 |
57cfb47e
|
Andreas Kohlbecker
|
$name_relations_html .= 'nec ' . l($element->fromName->titleCache . ' ' . substr($element->fromName->nomenclaturalReference->datePublished->start, 0, 4),
|
427 |
c20bf2ec
|
f.revilla
|
'cdm_dataportal/name/' . $element->fromName->uuid . '/' . $taxon->uuid . '/' . $element->fromName->taxonBases[0]->uuid);
|
428 |
b9438135
|
Andreas Kohlbecker
|
}else{
|
429 |
57cfb47e
|
Andreas Kohlbecker
|
$name_relations_html = 'non ' . l($element->fromName->titleCache . ' ' . substr($element->fromName->nomenclaturalReference->datePublished->start, 0, 4),
|
430 |
c20bf2ec
|
f.revilla
|
'cdm_dataportal/name/' . $element->fromName->uuid . '/' . $taxon->uuid . '/' . $element->fromName->taxonBases[0]->uuid)
|
431 |
b9438135
|
Andreas Kohlbecker
|
. ' ' . $element->fromName->datePublished->start;
|
432 |
|
|
}
|
433 |
|
|
break;
|
434 |
|
|
}
|
435 |
|
|
}
|
436 |
|
|
}
|
437 |
c20bf2ec
|
f.revilla
|
//rels output
|
438 |
b9438135
|
Andreas Kohlbecker
|
if(isset($name_relations_html)){
|
439 |
57cfb47e
|
Andreas Kohlbecker
|
$name_relations_html = '['. trim($name_relations_html) .']';
|
440 |
b9438135
|
Andreas Kohlbecker
|
}
|
441 |
|
|
}
|
442 |
c20bf2ec
|
f.revilla
|
//geneal output
|
443 |
57cfb47e
|
Andreas Kohlbecker
|
$out = '<span class="relation_sign" title="' . $reltype_representation . '">'.$relsign.'</span>'.$name_prefix . $out_taxon_part . $name_postfix . ' ' . $name_relations_html;
|
444 |
b9438135
|
Andreas Kohlbecker
|
$out = uuid_anchor($taxon->uuid, $out);
|
445 |
78805714
|
f.revilla
|
|
446 |
b9438135
|
Andreas Kohlbecker
|
RenderHints::popFromRenderStack();
|
447 |
78805714
|
f.revilla
|
|
448 |
b9438135
|
Andreas Kohlbecker
|
return $out;
|
449 |
806baeb2
|
Andreas Kohlbecker
|
}
|
450 |
|
|
|
451 |
|
|
/**
|
452 |
|
|
*/
|
453 |
|
|
function theme_cdm_taxon_list_thumbnails($taxon){
|
454 |
|
|
|
455 |
|
|
|
456 |
b9438135
|
Andreas Kohlbecker
|
$gallery_settings = getGallerySettings(CDM_DATAPORTAL_SEARCH_GALLERY_NAME);
|
457 |
|
|
$showCaption = $gallery_settings['cdm_dataportal_show_thumbnail_captions'];
|
458 |
71667d19
|
Andreas Kohlbecker
|
|
459 |
b9438135
|
Andreas Kohlbecker
|
if($showCaption){
|
460 |
|
|
$captionElements = array('title', 'rights');
|
461 |
|
|
}
|
462 |
71667d19
|
Andreas Kohlbecker
|
|
463 |
b9438135
|
Andreas Kohlbecker
|
$gallery_name = $taxon->uuid;
|
464 |
71667d19
|
Andreas Kohlbecker
|
|
465 |
b9438135
|
Andreas Kohlbecker
|
$mediaQueryParameters = array("type"=>"ImageFile");
|
466 |
3d526ffb
|
Andreas Kohlbecker
|
$galleryLinkUri = path_to_taxon($taxon->uuid, 'images');
|
467 |
5ca00433
|
Andreas Kohlbecker
|
|
468 |
b9438135
|
Andreas Kohlbecker
|
// cdm_dataportal_show_media = ???? TODO
|
469 |
|
|
$selectShowMedia = variable_get('cdm_dataportal_show_media', 0);
|
470 |
|
|
if ($selectShowMedia == 0){
|
471 |
|
|
$mediaList = cdm_ws_get(CDM_WS_PORTAL_TAXON_MEDIA, array($taxon->uuid), queryString( $mediaQueryParameters ));
|
472 |
|
|
}else{
|
473 |
|
|
$mediaList = cdm_ws_get(CDM_WS_PORTAL_TAXON_SUBTREE_MEDIA, array($taxon->uuid), queryString( $mediaQueryParameters ));
|
474 |
|
|
}
|
475 |
71667d19
|
Andreas Kohlbecker
|
|
476 |
b9438135
|
Andreas Kohlbecker
|
$out .= theme('cdm_media_gallerie', $mediaList, $gallery_name ,
|
477 |
|
|
$gallery_settings['cdm_dataportal_media_maxextend'],
|
478 |
|
|
$gallery_settings['cdm_dataportal_media_cols'],
|
479 |
|
|
$gallery_settings['cdm_dataportal_media_maxRows'],
|
480 |
|
|
$captionElements, 'LIGHTBOX', null, $galleryLinkUri);
|
481 |
806baeb2
|
Andreas Kohlbecker
|
|
482 |
b9438135
|
Andreas Kohlbecker
|
return $out;
|
483 |
806baeb2
|
Andreas Kohlbecker
|
}
|
484 |
|
|
|
485 |
|
|
|