Project

General

Profile

Download (9.54 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_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] = '&nbsp;<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 = '&ndash;'; // &ndash; &mdash; &minus;
216
			$name_prefix = '"';
217
			$name_postfix = '"';
218
			break;
219
		default :
220
			$relsign = '&ndash;';
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

    
(8-8/8)