Project

General

Profile

Download (10.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').'/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
			$author_team = cdm_ws_get(CDM_WS_REFERENCE_AUTHORTEAM, $taxonRelation->fromTaxon->sec->uuid);
86
			$authorteam = $author_team->titleCache;
87

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

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

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

    
108
	// generate output
109
	$out = '<ul class="misapplied">';
110
	
111
	foreach($misapplied as $misapplied_name){
112
		
113
		$out .= '<li class="synonym">'.$misapplied_name['out'] . " ";
114
		// fill authors the renderedFootnoteKey and sorting 'em
115
		foreach($misapplied_name['authorteam'] as $authorteam=>&$renderedFootnoteKey) {
116
		  $renderedFootnoteKey = $joinedAuthorTeams[$authorteam];
117
	    }
118
		if(isset($misapplied_name['authorteam'])){
119
			ksort($misapplied_name['authorteam']);
120
			$out .= join('; ', $misapplied_name['authorteam']);
121
		}
122
		$out .= '</li>';
123
		
124
	}
125
	$out .= '</ul>';
126
	
127
	$out .= theme('cdm_footnotes', $footnoteListKey, 'div');
128
    RenderHints::popFromRenderStack();
129
	return $out;
130
}
131

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

    
154
function theme_cdm_list_of_taxa($records, $showMedia = false){
155

    
156
	RenderHints::pushToRenderStack('list_of_taxa');
157

    
158
	$showMedia_taxa = variable_get('cdm_dataportal_findtaxa_show_taxon_thumbnails', 1);
159
	$showMedia_synonyms = variable_get('cdm_dataportal_findtaxa_show_synonym_thumbnails', 0);
160

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

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

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

    
219

    
220
function theme_cdm_related_taxon($taxon, $reltype_uuid = false){
221

    
222
	$relsign = '';
223
	$name_prefix = '';
224
	$name_postfix = '';
225
	switch ($reltype_uuid){
226
		case UUID_HETEROTYPIC_SYNONYM_OF:
227
		case UUID_SYNONYM_OF:
228
			$relsign = '=';
229
			break;
230
		case UUID_HOMOTYPIC_SYNONYM_OF:
231
			$relsign = '≡';
232
			break;
233
		case UUID_MISAPPLIED_NAME_FOR:
234
		case UUID_INVALID_DESIGNATION_FOR:
235
			$relsign = '&ndash;'; // &ndash; &mdash; &minus;
236
			$name_prefix = '"';
237
			$name_postfix = '"';
238
			break;
239
		default :
240
			$relsign = '&ndash;';
241
	}
242

    
243
	 RenderHints::pushToRenderStack('related_taxon');
244

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

    
266

    
267
	$out = '<span class="relation_sign">'.$relsign.'</span>'.$name_prefix . $nameHtml . $name_postfix . $later_homonym;
268
	
269
  //var_dump($taxon_name_relations[0]->type->representation_L10n);  
270
	
271
	$out = uuid_anchor($taxon->uuid, $out);
272
	
273
	RenderHints::popFromRenderStack();
274
	
275
	return $out; 
276
}
277

    
278

    
279
/**
280
 */
281
function theme_cdm_taxon_list_thumbnails($taxon){
282

    
283
	$gallery_name = $taxon->uuid;
284

    
285
	$showCaption = variable_get('cdm_dataportal_findtaxa_show_thumbnail_captions', 1);
286
	$prefMimeTypeRegex = 'image:.*';
287
	$prefMediaQuality = '*';
288

    
289
	$gallery_settings = getGallerySettings(CDM_DATAPORTAL_SEARCH_GALLERY_NAME);
290
	
291
	if($showCaption){
292
		//$captionElements = array('title', '#uri'=>t('open Image'));
293
		$captionElements = array('title', 'rights');
294
	}
295

    
296
	$galleryLinkUri = path_to_taxon($taxon->uuid).'/images';
297
	$selectShowMedia = variable_get('cdm_dataportal_show_media', 0);
298
	if ($selectShowMedia == 0){
299
		$mediaList = cdm_ws_get(CDM_WS_PORTAL_TAXON_MEDIA, array($taxon->uuid, $prefMimeTypeRegex, $prefMediaQuality));
300
	}else{
301
		$mediaList = cdm_ws_get(CDM_WS_PORTAL_TAXON_SUBTREE_MEDIA, array($taxon->uuid, $prefMimeTypeRegex, $prefMediaQuality));
302
	}
303
	//$mediaList = cdm_ws_get(CDM_WS_PORTAL_TAXONOMY_MEDIA, array(variable_get('cdm_taxonomictree_uuid', false), $taxon ->rank, $taxon->uuid ));
304
	$out .= theme('cdm_media_gallerie', $mediaList, $gallery_name ,
305
					$gallery_settings['cdm_dataportal_media_maxextend'], 
306
	             	$gallery_settings['cdm_dataportal_media_cols'], 
307
	             	$gallery_settings['cdm_dataportal_media_maxRows'], 
308
	             	$captionElements, 'LIGHTBOX', null, $galleryLinkUri);
309

    
310
	return $out;
311
}
312

    
313

    
(8-8/8)