1
|
<?php
|
2
|
// $Id$
|
3
|
|
4
|
/**
|
5
|
* 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
|
|
13
|
function theme_cdm_search_results($pager, $path, $parameters){
|
14
|
|
15
|
|
16
|
$showThumbnails = $_SESSION['pageoptions']['searchtaxa']['showThumbnails'];
|
17
|
if( !is_numeric($showThumbnails)){
|
18
|
$showThumbnails = 1;
|
19
|
}
|
20
|
$setSessionUri = url('cdm_api/setvalue/session').'/pageoptions|searchtaxa|showThumbnails/';
|
21
|
drupal_add_js('$(document).ready(function() {
|
22
|
|
23
|
// 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
|
drupal_set_title(t('Search Results'));
|
46
|
|
47
|
$out = ''; //l('Advanced Search', '/cdm_dataportal/search');
|
48
|
|
49
|
$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 .= theme('cdm_list_of_taxa', $pager->records);
|
52
|
$out .= theme('cdm_pager', $pager, $path, $parameters);
|
53
|
} else {
|
54
|
$out = '<h4 class="error">Sorry, no matching entries found.</h4>';
|
55
|
}
|
56
|
return $out;
|
57
|
}
|
58
|
|
59
|
|
60
|
/**
|
61
|
* renders misapplied names and invalid designations.
|
62
|
* Both relation types are currently treated the same!
|
63
|
*
|
64
|
* @param unknown_type $taxonRelationships
|
65
|
* @return unknown
|
66
|
*/
|
67
|
function theme_cdm_taxonRelations($taxonRelationships){
|
68
|
|
69
|
if(!$taxonRelationships){
|
70
|
return;
|
71
|
}
|
72
|
|
73
|
_add_js_cluetip();
|
74
|
|
75
|
// aggregate misapplied names having the same fullname:
|
76
|
$misapplied = array();
|
77
|
foreach($taxonRelationships as $taxonRelation){
|
78
|
if(true || $taxonRelation->type->uuid == UUID_MISAPPLIED_NAME_FOR || $taxonRelation->type->uuid == UUID_INVALID_DESIGNATION_FOR ){
|
79
|
|
80
|
$name = $taxonRelation->fromTaxon->name->titleCache;
|
81
|
$authorteam = $taxonRelation->fromTaxon->sec->authorTeam->titleCache;
|
82
|
|
83
|
if(!isset($misapplied[$name])){
|
84
|
$misapplied[$name]['out'] = '<span class="misapplied">'.theme('cdm_related_taxon',$taxonRelation->fromTaxon, UUID_MISAPPLIED_NAME_FOR, false).'</span>';
|
85
|
}
|
86
|
|
87
|
// collect all authors for this fullname
|
88
|
if(isset($authorteam)){
|
89
|
$misapplied[$name]['authorteam'][$authorteam] = ' <span class="sensu cluetip no-print" title="|sensu '.htmlspecialchars(theme('cdm_reference',$taxonRelation->fromTaxon->sec )).'|">sensu '
|
90
|
.$authorteam.'</span>'
|
91
|
.'<span class="reference only-print">sensu '.theme('cdm_reference', $taxonRelation->fromTaxon->sec ).'</span>';
|
92
|
}
|
93
|
|
94
|
}
|
95
|
}
|
96
|
|
97
|
// generate output
|
98
|
$out = '<ul class="misapplied">';
|
99
|
foreach($misapplied as $misapplied_name){
|
100
|
$out .= '<li class="synonym">'.$misapplied_name['out'] . " ";
|
101
|
// sorting authors
|
102
|
if(isset($misapplied_name['authorteam'])){
|
103
|
ksort($misapplied_name['authorteam']);
|
104
|
$out .= join('; ', $misapplied_name['authorteam']);
|
105
|
}
|
106
|
$out .= '</li>';
|
107
|
}
|
108
|
$out .= '</ul>';
|
109
|
return $out;
|
110
|
}
|
111
|
|
112
|
function theme_cdm_acceptedFor(){
|
113
|
RenderHints::pushToRenderStack('acceptedFor');
|
114
|
|
115
|
$out = '';
|
116
|
if(isset($_REQUEST['acceptedFor'])){
|
117
|
|
118
|
$synonym = cdm_ws_get(CDM_WS_PORTAL_TAXON, $_REQUEST['acceptedFor']);
|
119
|
|
120
|
if($synonym){
|
121
|
$out .= '<span class="acceptedFor">';
|
122
|
$out .= t('is accepted for ');
|
123
|
if(isset($synonym->name->nomenclaturalReference)){
|
124
|
$referenceUri = url(path_to_reference($synonym->name->nomenclaturalReference->uuid));
|
125
|
}
|
126
|
$out .= theme('cdm_taxonName', $synonym->name, null, $referenceUri);
|
127
|
$out .= '</span>';
|
128
|
}
|
129
|
}
|
130
|
RenderHints::popFromRenderStack();
|
131
|
return $out;
|
132
|
}
|
133
|
|
134
|
function theme_cdm_list_of_taxa($records, $showMedia = false){
|
135
|
|
136
|
RenderHints::pushToRenderStack('list_of_taxa');
|
137
|
|
138
|
$showMedia_taxa = variable_get('cdm_dataportal_findtaxa_show_taxon_thumbnails', 1);
|
139
|
$showMedia_synonyms = variable_get('cdm_dataportal_findtaxa_show_synonym_thumbnails', 0);
|
140
|
|
141
|
// .. well, for sure not as performant as before, but better than nothing.
|
142
|
$synonym_uuids = array();
|
143
|
foreach($records as $taxon){
|
144
|
if($taxon->class != "Taxon"){
|
145
|
if(!array_key_exists($taxon->uuid, $synonym_uuids)){
|
146
|
$synonym_uuids[$taxon->uuid] = $taxon->uuid;
|
147
|
}
|
148
|
}
|
149
|
}
|
150
|
// batch service not jet implemented:
|
151
|
// $table_of_accepted = cdm_ws_property(CDM_WS_PORTAL_TAXON_ACCEPTED, join(',', $synonym_uuids));
|
152
|
// thus ...
|
153
|
$table_of_accepted = array();
|
154
|
foreach($synonym_uuids as $synUuid){
|
155
|
$table_of_accepted[$synUuid] = cdm_ws_get(CDM_WS_PORTAL_TAXON_ACCEPTED, $synUuid);
|
156
|
}
|
157
|
|
158
|
$out = '<ul class="cdm_names" style="background-image: none;">';
|
159
|
|
160
|
foreach($records as $taxon){
|
161
|
// its a Taxon
|
162
|
if($taxon->class == "Taxon"){
|
163
|
$taxonUri = url(path_to_taxon($taxon->uuid));
|
164
|
if(isset($taxon->name->nomenclaturalReference)){
|
165
|
$referenceUri = url(path_to_reference($taxon->name->nomenclaturalReference->uuid));
|
166
|
}
|
167
|
$out .= '<li class="Taxon">'.theme('cdm_taxonName', $taxon->name, $taxonUri, $referenceUri);
|
168
|
if($showMedia_taxa){
|
169
|
$out .= theme('cdm_taxon_list_thumbnails', $taxon);
|
170
|
}
|
171
|
$out .= '</li>';
|
172
|
} else {
|
173
|
// its a synonym
|
174
|
$uuid = $taxon->uuid;
|
175
|
$acceptedTaxa = $table_of_accepted[$uuid];
|
176
|
if(count($acceptedTaxa) == 1){
|
177
|
$acceptedTaxon = $acceptedTaxa[0];
|
178
|
$taxonUri = uri_to_synonym($taxon->uuid, $acceptedTaxon->uuid, 'synonymy');
|
179
|
if(isset($acceptedTaxon->name->nomenclaturalReference)){
|
180
|
$referenceUri = url(path_to_reference($acceptedTaxon->name->nomenclaturalReference->uuid));
|
181
|
}
|
182
|
$out .= '<li class="Synonym">'.theme('cdm_taxonName', $taxon->name, $taxonUri, $referenceUri);
|
183
|
if($showMedia_synonyms){
|
184
|
$out .= theme('cdm_taxon_list_thumbnails', $acceptedTaxon);
|
185
|
}
|
186
|
$out .= '</li>';
|
187
|
} else {
|
188
|
//TODO avoid using Ajax in the cdm_dynabox
|
189
|
//TODO add media
|
190
|
$out .= theme('cdm_dynabox', theme('cdm_taxonName', $taxon->name, null, null), cdm_compose_url(CDM_WS_PORTAL_TAXON_ACCEPTED, array($taxon->uuid)), 'cdm_list_of_taxa');
|
191
|
}
|
192
|
}
|
193
|
}
|
194
|
$out .= '</ul>';
|
195
|
RenderHints::popFromRenderStack();
|
196
|
return $out;
|
197
|
}
|
198
|
|
199
|
|
200
|
function theme_cdm_related_taxon($taxon, $reltype_uuid = false){
|
201
|
|
202
|
$relsign = '';
|
203
|
$name_prefix = '';
|
204
|
$name_postfix = '';
|
205
|
switch ($reltype_uuid){
|
206
|
case UUID_HETEROTYPIC_SYNONYM_OF:
|
207
|
case UUID_SYNONYM_OF:
|
208
|
$relsign = '=';
|
209
|
break;
|
210
|
case UUID_HOMOTYPIC_SYNONYM_OF:
|
211
|
$relsign = '≡';
|
212
|
break;
|
213
|
case UUID_MISAPPLIED_NAME_FOR:
|
214
|
case UUID_INVALID_DESIGNATION_FOR:
|
215
|
$relsign = '–'; // – — −
|
216
|
$name_prefix = '"';
|
217
|
$name_postfix = '"';
|
218
|
break;
|
219
|
default :
|
220
|
$relsign = '–';
|
221
|
}
|
222
|
|
223
|
RenderHints::pushToRenderStack('related_taxon');
|
224
|
|
225
|
//$taxonUri = url(path_to_taxon($taxon->uuid));
|
226
|
if($taxon->name->nomenclaturalReference){
|
227
|
$referenceUri = url(path_to_reference($taxon->name->nomenclaturalReference->uuid));
|
228
|
}
|
229
|
$nameHtml = theme('cdm_taxonName', $taxon->name, $taxonUri, $referenceUri);
|
230
|
|
231
|
//later homonym or trated as later homonym
|
232
|
$taxon_name_relations = cdm_ws_get(CDM_WS_PORTAL_TAXON_NAMERELATIONS, $taxon->uuid);
|
233
|
switch ($taxon_name_relations[0]->type->representation_L10n){
|
234
|
case 'later homonym for':
|
235
|
$later_homonym = ' [non ' . $taxon_name_relations[0]->fromName->titleCache . ']';
|
236
|
break;
|
237
|
case 'treated as later homonym for':
|
238
|
$later_homonym = ' [non ' . $taxon_name_relations[0]->fromName->titleCache . ']';
|
239
|
break;
|
240
|
}
|
241
|
|
242
|
$out = '<span class="relation_sign">'.$relsign.'</span>'.$name_prefix . $nameHtml . $name_postfix . $later_homonym;
|
243
|
|
244
|
//var_dump($taxon_name_relations[0]->type->representation_L10n);
|
245
|
|
246
|
$out = uuid_anchor($taxon->uuid, $out);
|
247
|
|
248
|
RenderHints::popFromRenderStack();
|
249
|
|
250
|
return $out;
|
251
|
}
|
252
|
|
253
|
|
254
|
/**
|
255
|
*/
|
256
|
function theme_cdm_taxon_list_thumbnails($taxon){
|
257
|
|
258
|
$gallery_name = $taxon->uuid;
|
259
|
|
260
|
$showCaption = variable_get('cdm_dataportal_findtaxa_show_thumbnail_captions', 1);
|
261
|
$prefMimeTypeRegex = 'image:.*';
|
262
|
$prefMediaQuality = '*';
|
263
|
|
264
|
$gallery_settings = getGallerySettings(CDM_DATAPORTAL_SEARCH_GALLERY_NAME);
|
265
|
|
266
|
if($showCaption){
|
267
|
//$captionElements = array('title', '#uri'=>t('open Image'));
|
268
|
$captionElements = array('title', 'rights');
|
269
|
}
|
270
|
|
271
|
$galleryLinkUri = path_to_taxon($taxon->uuid).'/images';
|
272
|
$selectShowMedia = variable_get('cdm_dataportal_show_media', 0);
|
273
|
if ($selectShowMedia == 0){
|
274
|
$mediaList = cdm_ws_get(CDM_WS_PORTAL_TAXON_MEDIA, array($taxon->uuid, $prefMimeTypeRegex, $prefMediaQuality));
|
275
|
}else{
|
276
|
$mediaList = cdm_ws_get(CDM_WS_PORTAL_TAXON_SUBTREE_MEDIA, array($taxon->uuid, $prefMimeTypeRegex, $prefMediaQuality));
|
277
|
}
|
278
|
//$mediaList = cdm_ws_get(CDM_WS_PORTAL_TAXONOMY_MEDIA, array(variable_get('cdm_taxonomictree_uuid', false), $taxon ->rank, $taxon->uuid ));
|
279
|
$out .= theme('cdm_media_gallerie', $mediaList, $gallery_name ,
|
280
|
$gallery_settings['cdm_dataportal_media_maxextend'],
|
281
|
$gallery_settings['cdm_dataportal_media_cols'],
|
282
|
$gallery_settings['cdm_dataportal_media_maxRows'],
|
283
|
$captionElements, 'LIGHTBOX', null, $galleryLinkUri);
|
284
|
|
285
|
return $out;
|
286
|
}
|
287
|
|
288
|
|