Project

General

Profile

Download (10.8 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').'/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_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, $footnoteListKey).'</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
    RenderHints::popFromRenderStack();
130
	return $out;
131
}
132

    
133
function theme_cdm_acceptedFor(){
134
	RenderHints::pushToRenderStack('acceptedFor');
135
		
136
	$out = '';
137
	if(isset($_REQUEST['acceptedFor'])){
138
			
139
		$synonym = cdm_ws_get(CDM_WS_PORTAL_TAXON, $_REQUEST['acceptedFor']);
140
			
141
		if($synonym){
142
			$out .= '<span class="acceptedFor">';
143
			$out .= t('is accepted for ');
144
			if(isset($synonym->name->nomenclaturalReference)){
145
				$referenceUri = url(path_to_reference($synonym->name->nomenclaturalReference->uuid));
146
			}
147
			$out .= theme('cdm_taxonName', $synonym->name, null, $referenceUri);
148
			$out .= theme('cdm_annotations_as_footnotekeys', $synonym);
149
			$out .= '</span>';
150
		}
151
	}
152
    RenderHints::popFromRenderStack();
153
	return $out;
154
}
155

    
156
function theme_cdm_list_of_taxa($records, $showMedia = false){
157

    
158
	RenderHints::pushToRenderStack('list_of_taxa');
159

    
160
	$showMedia_taxa = variable_get('cdm_dataportal_findtaxa_show_taxon_thumbnails', 1);
161
	$showMedia_synonyms = variable_get('cdm_dataportal_findtaxa_show_synonym_thumbnails', 0);
162

    
163
	// .. well, for sure not as performant as before, but better than nothing.
164
	$synonym_uuids = array();
165
	foreach($records as $taxon){
166
		if($taxon->class != "Taxon"){
167
			if(!array_key_exists($taxon->uuid, $synonym_uuids)){
168
				$synonym_uuids[$taxon->uuid] = $taxon->uuid;
169
			}
170
		}
171
	}
172
	// batch service not jet implemented:
173
	// $table_of_accepted = cdm_ws_property(CDM_WS_PORTAL_TAXON_ACCEPTED, join(',', $synonym_uuids));
174
	// thus ...
175
	$table_of_accepted = array();
176
	foreach($synonym_uuids as $synUuid){
177
		$table_of_accepted[$synUuid] = cdm_ws_get(CDM_WS_PORTAL_TAXON_ACCEPTED, $synUuid);
178
	}
179

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

    
182
	foreach($records as $taxon){
183
		// its a Taxon
184
		if($taxon->class == "Taxon"){
185
			$taxonUri = url(path_to_taxon($taxon->uuid));
186
			if(isset($taxon->name->nomenclaturalReference)){
187
				$referenceUri = url(path_to_reference($taxon->name->nomenclaturalReference->uuid));
188
			}
189
			$out .= '<li class="Taxon">'.theme('cdm_taxonName', $taxon->name, $taxonUri, $referenceUri);
190
            $out .= theme('cdm_annotations_as_footnotekeys', $taxon);
191
            
192
			if($showMedia_taxa){
193
				$out .= theme('cdm_taxon_list_thumbnails', $taxon);
194
			}
195
			
196
			$out .= '</li>';
197
		} else {
198
			// its a synonym
199
			$uuid = $taxon->uuid;
200
			$acceptedTaxa = $table_of_accepted[$uuid];
201
			if(count($acceptedTaxa) == 1){
202
				$acceptedTaxon = $acceptedTaxa[0];
203
				$taxonUri = uri_to_synonym($taxon->uuid, $acceptedTaxon->uuid, 'synonymy');
204
				if(isset($acceptedTaxon->name->nomenclaturalReference)){
205
					$referenceUri = url(path_to_reference($acceptedTaxon->name->nomenclaturalReference->uuid));
206
				}
207
				$out .= '<li class="Synonym">'.theme('cdm_taxonName', $taxon->name, $taxonUri, $referenceUri);
208
				$out .= theme('cdm_annotations_as_footnotekeys', $taxon);
209
				if($showMedia_synonyms){
210
					$out .= theme('cdm_taxon_list_thumbnails', $acceptedTaxon);
211
				}
212
				$out .= '</li>';
213
			} else {
214
				//TODO avoid using Ajax in the cdm_dynabox
215
				//TODO add media
216
				$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');
217
			}
218
		}
219
	}
220
	$out .= '</ul>';
221
	RenderHints::popFromRenderStack();
222
	return $out;
223
}
224

    
225

    
226
function theme_cdm_related_taxon($taxon, $reltype_uuid = false){
227

    
228
	$relsign = '';
229
	$name_prefix = '';
230
	$name_postfix = '';
231
	switch ($reltype_uuid){
232
		case UUID_HETEROTYPIC_SYNONYM_OF:
233
		case UUID_SYNONYM_OF:
234
			$relsign = '=';
235
			break;
236
		case UUID_HOMOTYPIC_SYNONYM_OF:
237
			$relsign = '≡';
238
			break;
239
		case UUID_MISAPPLIED_NAME_FOR:
240
		case UUID_INVALID_DESIGNATION_FOR:
241
			$relsign = '&ndash;'; // &ndash; &mdash; &minus;
242
			$name_prefix = '"';
243
			$name_postfix = '"';
244
			break;
245
		default :
246
			$relsign = '&ndash;';
247
	}
248

    
249
	 RenderHints::pushToRenderStack('related_taxon');
250

    
251
	//$taxonUri = url(path_to_taxon($taxon->uuid));
252
	if($taxon->name->nomenclaturalReference){
253
		$referenceUri = url(path_to_reference($taxon->name->nomenclaturalReference->uuid));
254
	}
255
	$nameHtml = theme('cdm_taxonName', $taxon->name, $taxonUri, $referenceUri);
256
	$nameHtml .= theme('cdm_annotations_as_footnotekeys', $taxon);
257
	
258
	//later homonym or trated as later homonym
259
	$taxon_name_relations = cdm_ws_get(CDM_WS_PORTAL_TAXON_NAMERELATIONS, $taxon->uuid);
260
	foreach($taxon_name_relations as $element){	
261
    switch ($element->type->representation_L10n){
262
      case 'later homonym for':
263
        $later_homonym = ' [non ' . l($element->fromName->titleCache . ']', 
264
                                     'cdm_dataportal/name/' . $element->fromName->uuid . '/' . $taxon->uuid);
265
        break;
266
    case 'treated as later homonym for':
267
        $later_homonym = ' [non ' . l($element->fromName->titleCache . ']', 
268
                                     'cdm_dataportal/name/' . $element->fromName->uuid);
269
        break;
270
    }	
271
	}
272

    
273

    
274
	$out = '<span class="relation_sign">'.$relsign.'</span>'.$name_prefix . $nameHtml . $name_postfix . $later_homonym;
275
	
276
  //var_dump($taxon_name_relations[0]->type->representation_L10n);  
277
	
278
	$out = uuid_anchor($taxon->uuid, $out);
279
	
280
	RenderHints::popFromRenderStack();
281
	
282
	return $out; 
283
}
284

    
285

    
286
/**
287
 */
288
function theme_cdm_taxon_list_thumbnails($taxon){
289

    
290
	$gallery_name = $taxon->uuid;
291

    
292
	$showCaption = variable_get('cdm_dataportal_findtaxa_show_thumbnail_captions', 1);
293
	$prefMimeTypeRegex = 'image:.*';
294
	$prefMediaQuality = '*';
295

    
296
	$gallery_settings = getGallerySettings(CDM_DATAPORTAL_SEARCH_GALLERY_NAME);
297
	
298
	if($showCaption){
299
		//$captionElements = array('title', '#uri'=>t('open Image'));
300
		$captionElements = array('title', 'rights');
301
	}
302

    
303
	$galleryLinkUri = path_to_taxon($taxon->uuid).'/images';
304
	$selectShowMedia = variable_get('cdm_dataportal_show_media', 0);
305
	if ($selectShowMedia == 0){
306
		$mediaList = cdm_ws_get(CDM_WS_PORTAL_TAXON_MEDIA, array($taxon->uuid, $prefMimeTypeRegex, $prefMediaQuality));
307
	}else{
308
		$mediaList = cdm_ws_get(CDM_WS_PORTAL_TAXON_SUBTREE_MEDIA, array($taxon->uuid, $prefMimeTypeRegex, $prefMediaQuality));
309
	}
310
	//$mediaList = cdm_ws_get(CDM_WS_PORTAL_TAXONOMY_MEDIA, array(variable_get('cdm_taxonomictree_uuid', false), $taxon ->rank, $taxon->uuid ));
311
	$out .= theme('cdm_media_gallerie', $mediaList, $gallery_name ,
312
					$gallery_settings['cdm_dataportal_media_maxextend'], 
313
	             	$gallery_settings['cdm_dataportal_media_cols'], 
314
	             	$gallery_settings['cdm_dataportal_media_maxRows'], 
315
	             	$captionElements, 'LIGHTBOX', null, $galleryLinkUri);
316

    
317
	return $out;
318
}
319

    
320

    
(8-8/8)