Project

General

Profile

Download (11.5 KB) Statistics
| Branch: | Tag: | Revision:
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', "var=[pageoption][searchtaxa][showThumbnails]&val=");
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_taxonRelationships($taxonRelationships){
68

    
69
	if(!$taxonRelationships){
70
		return;
71
	}
72

    
73
	RenderHints::pushToRenderStack('taxonRelationships');
74
	$footnoteListKey = 'taxonRelationships';
75
	RenderHints::setFootnoteListKey($footnoteListKey);
76

    
77
	$misapplied = array();
78
	$joinedAuthorTeams = array();
79

    
80
	// aggregate misapplied names having the same fullname:
81
	foreach($taxonRelationships as $taxonRelation){
82
		if(true || $taxonRelation->type->uuid == UUID_MISAPPLIED_NAME_FOR || $taxonRelation->type->uuid == UUID_INVALID_DESIGNATION_FOR ){
83

    
84
			$name = $taxonRelation->fromTaxon->name->titleCache;
85

    
86
			$author_team = cdm_ws_get(CDM_WS_REFERENCE_AUTHORTEAM, $taxonRelation->fromTaxon->sec->uuid);
87
			$authorteam = $author_team->titleCache;
88

    
89
			if(!isset($misapplied[$name])){
90
				$misapplied[$name]['out'] = '<span class="misapplied">'.theme('cdm_related_taxon',$taxonRelation->fromTaxon, UUID_MISAPPLIED_NAME_FOR, false).'</span>';
91
			}
92

    
93
			// collect all authors for this fullname
94
			if(isset($authorteam)){
95
				$misapplied[$name]['authorteam'][$authorteam] = '';
96
				$joinedAuthorTeams[$authorteam] = 'sensu '.theme('cdm_reference', $taxonRelation->fromTaxon->sec);
97
			}
98

    
99
		}
100
	}
101

    
102
	// sort the joinedAuthorTeams and create footnotes and footnotekeys
103
	ksort($joinedAuthorTeams);
104
	foreach($joinedAuthorTeams as $authorteam=>$sensuCitation){
105
		$footnoteKey = FootnoteManager::addNewFootnote($footnoteListKey, $sensuCitation);
106
		$joinedAuthorTeams[$authorteam] = '<span class="sensu">sensu '.$authorteam. theme('cdm_footnote_key', $footnoteKey).'</span>';
107
	}
108

    
109
	// generate output
110
	$out = '<ul class="misapplied">';
111

    
112
	foreach($misapplied as $misapplied_name){
113

    
114
		$out .= '<li class="synonym">'.$misapplied_name['out'] . " ";
115
		// fill authors with the renderedFootnoteKey and sorting 'em
116
		foreach($misapplied_name['authorteam'] as $authorteam=>&$renderedFootnoteKey) {
117
			$renderedFootnoteKey = $joinedAuthorTeams[$authorteam];
118
		}
119
		if(isset($misapplied_name['authorteam'])){
120
			ksort($misapplied_name['authorteam']);
121
			$out .= join('; ', $misapplied_name['authorteam']);
122
		}
123
		$out .= '</li>';
124

    
125
	}
126
	$out .= '</ul>';
127

    
128
	//$out .= theme('cdm_footnotes', $footnoteListKey, 'div');
129
	$tr_footnotes = theme('cdm_footnotes', $footnoteListKey, 'div');
130
	$tr_footnotes_exploded = explode('sensu', $tr_footnotes);
131
	$tr_footnotes_aux = '';
132
	foreach ($tr_footnotes_exploded as $element){
133
		$tr_footnotes_aux .= $element; 
134
	}
135
	$out .= $tr_footnotes_aux;
136
	
137
	RenderHints::popFromRenderStack();
138
	return $out;
139
}
140

    
141
function theme_cdm_acceptedFor(){
142
	RenderHints::pushToRenderStack('acceptedFor');
143

    
144
	$out = '';
145
	if(isset($_REQUEST['acceptedFor'])){
146
			
147
		$synonym = cdm_ws_get(CDM_WS_PORTAL_TAXON, $_REQUEST['acceptedFor']);
148
			
149
		if($synonym){
150
			$out .= '<span class="acceptedFor">';
151
			$out .= t('is accepted for ');
152
			if(isset($synonym->name->nomenclaturalReference)){
153
				$referenceUri = url(path_to_reference($synonym->name->nomenclaturalReference->uuid));
154
			}
155
			$out .= theme('cdm_taxonName', $synonym->name, null, $referenceUri);
156
			$out .= theme('cdm_annotations_as_footnotekeys', $synonym);
157
			$out .= '</span>';
158
		}
159
	}
160
	RenderHints::popFromRenderStack();
161
	return $out;
162
}
163

    
164
function theme_cdm_list_of_taxa($records, $showMedia = false){
165

    
166
	RenderHints::pushToRenderStack('list_of_taxa');
167

    
168
	$showMedia_taxa = variable_get('cdm_dataportal_findtaxa_show_taxon_thumbnails', 1);
169
	$showMedia_synonyms = variable_get('cdm_dataportal_findtaxa_show_synonym_thumbnails', 0);
170

    
171
	// .. well, for sure not as performant as before, but better than nothing.
172
	$synonym_uuids = array();
173
	foreach($records as $taxon){
174
		if($taxon->class != "Taxon"){
175
			if(!array_key_exists($taxon->uuid, $synonym_uuids)){
176
				$synonym_uuids[$taxon->uuid] = $taxon->uuid;
177
			}
178
		}
179
	}
180
	// batch service not jet implemented:
181
	// $table_of_accepted = cdm_ws_property(CDM_WS_PORTAL_TAXON_ACCEPTED, join(',', $synonym_uuids));
182
	// thus ...
183
	$table_of_accepted = array();
184
	foreach($synonym_uuids as $synUuid){
185
		$table_of_accepted[$synUuid] = cdm_ws_get(CDM_WS_PORTAL_TAXON_ACCEPTED, $synUuid);
186
	}
187

    
188
	$out = '<ul class="cdm_names" style="background-image: none;">';
189

    
190
	foreach($records as $taxon){
191
		// its a Taxon
192
		if($taxon->class == "Taxon"){
193
			$taxonUri = url(path_to_taxon($taxon->uuid));
194
			if(isset($taxon->name->nomenclaturalReference)){
195
				$referenceUri = url(path_to_reference($taxon->name->nomenclaturalReference->uuid));
196
			}
197
			$out .= '<li class="Taxon">'.theme('cdm_taxonName', $taxon->name, $taxonUri, $referenceUri);
198
			$out .= theme('cdm_annotations_as_footnotekeys', $taxon);
199

    
200
			if($showMedia_taxa){
201
				$out .= theme('cdm_taxon_list_thumbnails', $taxon);
202
			}
203
			$out .= '</li>';
204
		} else {
205
			// its a synonym
206
			$uuid = $taxon->uuid;
207
			$acceptedTaxa = $table_of_accepted[$uuid];
208
			if(count($acceptedTaxa) == 1){
209
				$acceptedTaxon = $acceptedTaxa[0];
210
				$taxonUri = uri_to_synonym($taxon->uuid, $acceptedTaxon->uuid, 'synonymy');
211
				if(isset($acceptedTaxon->name->nomenclaturalReference)){
212
					$referenceUri = url(path_to_reference($acceptedTaxon->name->nomenclaturalReference->uuid));
213
				}
214
				$out .= '<li class="Synonym">'.theme('cdm_taxonName', $taxon->name, $taxonUri, $referenceUri);
215
				$out .= theme('cdm_annotations_as_footnotekeys', $taxon);
216
				if($showMedia_synonyms){
217
					$out .= theme('cdm_taxon_list_thumbnails', $acceptedTaxon);
218
				}
219
				$out .= '</li>';
220
			} else {
221
				//TODO avoid using Ajax in the cdm_dynabox
222
				//TODO add media
223
				$out .= theme('cdm_dynabox', theme('cdm_taxonName', $taxon->name, null, null, false), cdm_compose_url(CDM_WS_PORTAL_TAXON_ACCEPTED, array($taxon->uuid)), 'cdm_list_of_taxa');
224
			}
225
		}
226
	}
227
	$out .= '</ul>';
228
	RenderHints::popFromRenderStack();
229
	return $out;
230
}
231

    
232

    
233
function theme_cdm_related_taxon($taxon, $reltype_uuid = false){
234

    
235
	static $relsign_homo = '≡';
236
	static $relsign_hetero = '=';
237
	static $relsign_invalid = '&ndash;';
238

    
239
	$relsign = '';
240
	$name_prefix = '';
241
	$name_postfix = '';
242

    
243
	switch ($reltype_uuid){
244
		case UUID_HETEROTYPIC_SYNONYM_OF:
245
		case UUID_SYNONYM_OF:
246
			$relsign = $relsign_hetero;
247
			break;
248
		case UUID_HOMOTYPIC_SYNONYM_OF:
249
			$relsign = $relsign_homo;
250
			break;
251
		case UUID_MISAPPLIED_NAME_FOR:
252
		case UUID_INVALID_DESIGNATION_FOR:
253
			$relsign = $relsign_invalid;
254
			$name_prefix = '"';
255
			$name_postfix = '"';
256
			break;
257
		default :
258
			$relsign = $relsign_invalid;
259
	}
260

    
261
	$status = $taxon->name->status[0]->type->representation_L10n;
262
	//if ($status == 'Invalid' || $status == 'Nudum'){
263
	if (sizeof($status) > 0){
264
		if ($status == 'Invalid' || $status == 'Nudum'){
265
			$relsign = $relsign_invalid;
266
		}
267
		$status = ', ' . $taxon->name->status[0]->type->representation_L10n_abbreviated;
268
		//var_dump('&mdash' . $taxon->name->status[0]->type->representation_L10n_abbreviated);
269
	}
270

    
271
	RenderHints::pushToRenderStack('related_taxon');
272

    
273
	//$taxonUri = url(path_to_taxon($taxon->uuid));
274
	if($taxon->name->nomenclaturalReference){
275
		$referenceUri = url(path_to_reference($taxon->name->nomenclaturalReference->uuid));
276
	}
277
	$nameHtml = theme('cdm_taxonName', $taxon->name, $taxonUri, $referenceUri);
278
	$nameHtml .= theme('cdm_annotations_as_footnotekeys', $taxon);
279

    
280
	//later homonym or trated as later homonym
281
	$taxon_name_relations = cdm_ws_get(CDM_WS_PORTAL_TAXON_FROM_NAMERELATIONS, $taxon->uuid);
282
	if ($taxon_name_relations){
283
		foreach($taxon_name_relations as $element){
284
			switch ($element->type->representation_L10n){
285
				case 'later homonym for':
286
					$later_homonym = ' [non ' . l($element->toName->titleCache,
287
                                     'cdm_dataportal/name/' . $element->toName->uuid . '/' . $taxon->uuid . '/' . $element->toName->taxonBases[0]->uuid) . ']';
288
					break;
289
				case 'treated as later homonym for':
290
					$later_homonym = ' [non ' . l($element->toName->titleCache,
291
                                     'cdm_dataportal/name/' . $element->toName->uuid) . ']';
292
					break;
293
			}
294
		}
295
	}
296
	$out = '<span class="relation_sign">'.$relsign.'</span>'.$name_prefix . $nameHtml . $name_postfix . $later_homonym . $status;
297

    
298
	$out = uuid_anchor($taxon->uuid, $out);
299

    
300
	RenderHints::popFromRenderStack();
301

    
302
	return $out;
303
}
304

    
305
/**
306
 */
307
function theme_cdm_taxon_list_thumbnails($taxon){
308

    
309
	$gallery_name = $taxon->uuid;
310

    
311
	$showCaption = variable_get('cdm_dataportal_findtaxa_show_thumbnail_captions', 1);
312
	$prefMimeTypeRegex = 'image:.*';
313
	$prefMediaQuality = '*';
314

    
315
	$gallery_settings = getGallerySettings(CDM_DATAPORTAL_SEARCH_GALLERY_NAME);
316

    
317
	if($showCaption){
318
		//$captionElements = array('title', '#uri'=>t('open Image'));
319
		$captionElements = array('title', 'rights');
320
	}
321

    
322
	$galleryLinkUri = path_to_taxon($taxon->uuid).'/images';
323
	$selectShowMedia = variable_get('cdm_dataportal_show_media', 0);
324
	if ($selectShowMedia == 0){
325
		$mediaList = cdm_ws_get(CDM_WS_PORTAL_TAXON_MEDIA, array($taxon->uuid, $prefMimeTypeRegex, $prefMediaQuality));
326
	}else{
327
		$mediaList = cdm_ws_get(CDM_WS_PORTAL_TAXON_SUBTREE_MEDIA, array($taxon->uuid, $prefMimeTypeRegex, $prefMediaQuality));
328
	}
329
	//$mediaList = cdm_ws_get(CDM_WS_PORTAL_TAXONOMY_MEDIA, array(variable_get('cdm_taxonomictree_uuid', false), $taxon ->rank, $taxon->uuid ));
330
	$out .= theme('cdm_media_gallerie', $mediaList, $gallery_name ,
331
	$gallery_settings['cdm_dataportal_media_maxextend'],
332
	$gallery_settings['cdm_dataportal_media_cols'],
333
	$gallery_settings['cdm_dataportal_media_maxRows'],
334
	$captionElements, 'LIGHTBOX', null, $galleryLinkUri);
335

    
336
	return $out;
337
}
338

    
339

    
(8-8/8)