Project

General

Profile

« Previous | Next » 

Revision c10f70e4

Added by Katja Luther over 5 years ago

first steps of specimen page with DTOs

View differences:

modules/cdm_dataportal/includes/occurrences.inc
35 35
        $detail_html .= "<strong>$specimenPageLink</strong><br>";
36 36
    }
37 37

  
38
    if($is_specimen_page) {
39
        if($specimen->citation){
40
            $detail_html .= "<br>".create_label("Citation") . $specimen->citation . "<br>";
38
    if ($is_specimen_page) {
39
        if ($specimen->citation) {
40
            $detail_html .= "<br>" . create_label("Citation") . $specimen->citation . "<br>";
41 41
        }
42 42
    }
43
    if($specimen->preferredStableUri){
44
        $stableIdentifierLink  = l($specimen->preferredStableUri, $specimen->preferredStableUri, array('attributes' => array('target' => '_blank')));
43
    if ($specimen->preferredStableUri) {
44
        $stableIdentifierLink = l($specimen->preferredStableUri, $specimen->preferredStableUri, array('attributes' => array('target' => '_blank')));
45 45
        $detail_html .= create_label("Preferred stable URI") . $stableIdentifierLink . "<br>";
46 46
    }
47
    if($is_specimen_page){
47
    if ($is_specimen_page) {
48 48
        // associated taxa
49
        if($specimen->associatedTaxa){
49
        if ($specimen->associatedTaxa) {
50 50
            $detail_html .= "<br>";
51
          $detail_html .= create_label("Associated with");
52
          if(sizeof($specimen->associatedTaxa)>1){
51
            $detail_html .= create_label("Associated with");
52
            if (sizeof($specimen->associatedTaxa) > 1) {
53
                $detail_html .= "<br>";
54
            }
55
            foreach ($specimen->associatedTaxa as $associatedTaxon) {
56
                $detail_html .= l($associatedTaxon->second, path_to_taxon($associatedTaxon->first, "specimens"));//$associatedTaxon->second."<br>";
57
            }
53 58
            $detail_html .= "<br>";
54
          }
55
          foreach($specimen->associatedTaxa as $associatedTaxon){
56
            $detail_html .= l($associatedTaxon->second, path_to_taxon($associatedTaxon->first, "specimens"));//$associatedTaxon->second."<br>";
57
          }
58
          $detail_html .= "<br>";
59 59
        }
60 60
    }
61
  // - type information
61
    // - type information
62 62
    $types = "";
63 63
    if (isset($specimen->types)) {
64 64
        //typed taxa
65 65
        foreach ($specimen->types as $typeStatus => $typedTaxa) {
66
/* Updated upstream
66 67
            if($specimen->types){
67 68
                $detail_html .= "<i>".$typeStatus."</i> of ";
68 69
                foreach($typedTaxa as $typedTaxon){
69 70
                    $detail_html .= $typedTaxon." ";
70 71
                }
71 72
                $detail_html .= "<br>";
73
*/
74
            if ($is_specimen_page) {
75
                if ($specimen->types) {
76
                    $detail_html .= "<i>" . $typeStatus . "</i>: ";
77
                    foreach ($typedTaxa as $typedTaxon) {
78
                        $detail_html .= $typedTaxon . " ";
79
                    }
80
                    $detail_html .= "<br>";
81
                }
82
            } else {
83
                $types .= $typeStatus . " ";
84

  
72 85
            }
73 86
        }
74 87
    }
......
94 107
                            if (isset($contigFile->contigLink->uri) and $contigFile->contigLink->uri != null) {
95 108
                                $molecularData .= create_html_link($contigFile->contigLink, true) . " ";
96 109
                            }
97
                        }
98
                        else {
110
                        } else {
99 111
                            $molecularData .= "no contig ";
100 112
                        }
101 113
                        //primer links
102
                        if(isset($contigFile->primerLinks)) {
114
                        if (isset($contigFile->primerLinks)) {
103 115
                            $molecularData .= create_html_links($contigFile->primerLinks, true);
104 116
                        }
105 117
                    }
......
114 126
    $detailImages = create_html_links($derivateDataDTO->detailImages, true);
115 127

  
116 128
    if ($types) {
117
        $detail_html .= $is_specimen_page?"<br>":"";
129
        $detail_html .= $is_specimen_page ? "<br>" : "";
118 130
        $detail_html .= create_label("Type(s)") . $types . "<br>";
119 131
    }
120 132
    if ($specimenScans and !$is_specimen_page) {
121 133
        $detail_html .= create_label("Specimen Scans") . $specimenScans . "<br>";
122 134
    }
123 135
    //specimen scan image gallery
124
    if($is_specimen_page and isset($derivateDataDTO->specimenScanUuids) and !empty($derivateDataDTO->specimenScanUuids)) {
136
    if ($is_specimen_page and isset($derivateDataDTO->specimenScanUuids) and !empty($derivateDataDTO->specimenScanUuids)) {
125 137
        $detail_html .= addImageGallery("Specimen scans", $derivateDataDTO->specimenScanUuids);
126 138
    }
127 139

  
128 140
    if ($molecularData) {
129
        $detail_html .= $is_specimen_page?"<br>":"";
141
        $detail_html .= $is_specimen_page ? "<br>" : "";
130 142
        $detail_html .= create_label("Molecular Data") . $molecularData . "<br>";
131 143
    }
132 144

  
......
135 147
    }
136 148

  
137 149
    //detail image gallery
138
    if($is_specimen_page and isset($derivateDataDTO->detailImageUuids) and !empty($derivateDataDTO->detailImageUuids)){
150
    if ($is_specimen_page and isset($derivateDataDTO->detailImageUuids) and !empty($derivateDataDTO->detailImageUuids)) {
139 151
        $detail_html .= addImageGallery("Detail Images", $derivateDataDTO->detailImageUuids);
140 152
    }
141 153

  
142 154
    //character data
143 155
    if ($specimen->characterData) {
144
        $detail_html .= $is_specimen_page?"<br>":"";
156
        $detail_html .= $is_specimen_page ? "<br>" : "";
145 157
        $detail_html .= create_label("Character Data");
146
        if($is_specimen_page) {
158
        if ($is_specimen_page) {
147 159
            $detail_html .= "<br>";
148 160
            foreach ($specimen->characterData as $characterStatePair) {
149 161
                $detail_html .= "<i>" . $characterStatePair->first . "</i>:" . $characterStatePair->second;
150 162
                $detail_html .= "<br>";
151 163
            }
152
        }
153
        else{
154
            $detail_html .= l("detail page", $pathToSpecimen,array('attributes' => array('target'=>'_blank')));
164
        } else {
165
            $detail_html .= l("detail page", $pathToSpecimen, array('attributes' => array('target' => '_blank')));
155 166
            $detail_html .= "<br>";
156 167
        }
157 168
    }
158 169
    return $detail_html;
159 170
}
160 171

  
161
function addImageGallery($galleryName, $imageUuids){
172
function addImageGallery($galleryName, $imageUuids)
173
{
162 174
    $images = array();
163 175
    foreach ($imageUuids as $uuid) {
164 176
        $images[] = cdm_ws_get(CDM_WS_PORTAL_MEDIA, $uuid);
......
172 184
            'rights',
173 185
        );
174 186
        $alternativeMediaUris = array();
175
        foreach($images as $image){
176
          $mediaUri = getMediaUri($image);
177
          if($mediaUri){
178
            $alternativeMediaUris[] = $mediaUri;
179
          }
180
          else{
181
            $alternativeMediaUris[] = path_to_media($image->uuid);
182
          }
187
        foreach ($images as $image) {
188
            $mediaUri = getMediaUri($image);
189
            if ($mediaUri) {
190
                $alternativeMediaUris[] = $mediaUri;
191
            } else {
192
                $alternativeMediaUris[] = path_to_media($image->uuid);
193
            }
183 194
        }
184 195

  
185 196
        $gallery_html = compose_cdm_media_gallerie(array(
......
194 205
            'galleryLinkUri' => NULL,
195 206
        ));
196 207
    }
197
    return "<br>".create_label($galleryName)."<br>".$gallery_html;
208
    return "<br>" . create_label($galleryName) . "<br>" . $gallery_html;
198 209
}
199 210

  
200
function getMediaUri($media){
201
  if(isset($media->representations) && sizeof($media->representations)==1
202
    && isset($media->representations[0]->parts) &&
203
    sizeof($media->representations[0]->parts)==1) {
204
    return $media->representations[0]->parts[0]->uri;
205
  }
206
  return null;
211
function getMediaUri($media)
212
{
213
    if (isset($media->representations) && sizeof($media->representations) == 1
214
        && isset($media->representations[0]->parts) &&
215
        sizeof($media->representations[0]->parts) == 1) {
216
        return $media->representations[0]->parts[0]->uri;
217
    }
218
    return null;
207 219
}
208 220

  
209 221

  
......
213 225
 */
214 226
function create_label($label)
215 227
{
216
    return "<span class='specimen_table_label'>".$label.": </span>";
228
    return "<span class='specimen_table_label'>" . $label . ": </span>";
217 229
}
218 230

  
219 231
/**
......
234 246
 *
235 247
 * @ingroup compose
236 248
 */
249
/*<<<<<<< Updated upstream
237 250
function compose_cdm_specimen_or_observation($specimenOrObservation, &$derivatives = null) {
238 251

  
239 252
  $exclude_occurrence_fields = &drupal_static(__FUNCTION__);
......
264 277

  
265 278
  $descriptions = null;
266 279
  $derivedFrom = null;
280
=======*/
281
function compose_cdm_specimenOrObservation($specimenOrObservation, &$derivatives = null)
282
{
267 283

  
268
  if (is_object($specimenOrObservation)) {
284
//>>>>>>> Stashed changes
285
    $exclude_occurrence_fields = &drupal_static(__FUNCTION__);
286
    if (!isset($exclude_occurrence_fields)) {
287
        $exclude_occurrence_fields = array(
288
            // 'derivationEvents',
289
            'titleCache',
290
            'protectedTitleCache',
291
            'derivedUnitMedia',
292
            'created',
293
            'publish',
294
            'updated',
295
            'class',
296
            'uuid',
297
            ''
298
        );
299
    }
269 300

  
270
    // request again for deeper initialization
271
    $specimenOrObservation = cdm_ws_get("portal/" . CDM_WS_OCCURRENCE, $specimenOrObservation->uuid);
272 301

  
302
    // only show uuid it the user is logged in
303
    if (user_is_logged_in() && ($a_idx = array_search('uuid', $exclude_occurrence_fields)) !== FALSE) {
304
        unset($exclude_occurrence_fields[$a_idx]);
305
    }
273 306

  
274
    $type_label = $specimenOrObservation->class;
275
    RenderHints::setFootnoteListKey($type_label . '-' . $specimenOrObservation->uuid);
307
    if (!isset($derivatives)) {
308
        $derivatives = array();
309
    }
276 310

  
277
    // collect typeStatus as label
278
    if (isset($specimenOrObservation->specimenTypeDesignations)) {
279
      $type_status = array();
280
      foreach ($specimenOrObservation->specimenTypeDesignations as $typeDesignation) {
281
        if (isset($typeDesignation->typeStatus->representation_L10n)) {
282
          $type_status[] = $typeDesignation->typeStatus->representation_L10n;
311
    $descriptions = null;
312
    $derivedFrom = null;
313
    $derivates = null;
314

  
315
    if (is_object($specimenOrObservation)) {
316

  
317
        // request again for deeper initialization
318
      //  $specimenOrObservation = cdm_ws_get("portal/" . CDM_WS_OCCURRENCE, $specimenOrObservation->uuid);
319

  
320

  
321
        $type_label = $specimenOrObservation->recordBase;
322
        RenderHints::setFootnoteListKey($type_label . '-' . $specimenOrObservation->uuid);
323
        /*
324
         * $label_html = cdm_dynabox(
325
                          $specimenOrObservation->uuid,
326
                          $type_label . $specimenOrObservation->titleCache,
327
                          $derived_unit_ws_request, //cdm_ws_get("portal/" . CDM_WS_OCCURRENCE, $specimenOrObservation->uuid);
328
                          'cdm_specimenOrObservation',
329
                          'Click for details',
330
                          array('div', 'div'),
331
                          array(),
332
                          null, // $content_element_selector
333
                          'function(){ jQuery(\'#media_gallery_' . $gallery_name . '\').hide(); }', // open_callback
334
                          'function(){ jQuery(\'#media_gallery_' . $gallery_name . '\').show(); }' // close_callback
335
                        );
336

  
337
         */
338
        // collect typeStatus as label
339
        if (isset($specimenOrObservation->specimenTypeDesignations)) {
340
            $type_status = array();
341
            foreach ($specimenOrObservation->specimenTypeDesignations as $typeDesignation) {
342
                if (isset($typeDesignation->typeStatus->representation_L10n)) {
343
                    $type_status[] = $typeDesignation->typeStatus->representation_L10n;
344
                }
345
            }
346
            if (count($type_status) > 0) {
347
                $type_label = implode(', ', $type_status);
348
            }
283 349
        }
284
      }
285
      if (count($type_status) > 0) {
286
        $type_label = implode(', ', $type_status);
287
      }
288
    }
289 350

  
290
    $title = $type_label . ': ' . $specimenOrObservation->titleCache;
351
        $title = $type_label . ': ' . $specimenOrObservation->titleCache;
352

  
353
        $groups = array();
354
        // --- add initialized fields
355
        foreach (get_object_vars($specimenOrObservation) as $field => $value) {
356
            if (!in_array($field, $exclude_occurrence_fields) && ($value && (!is_object($value) || isset($value->class)))) {
357
                switch ($field) {
358
//            case 'recordBasis':
359
//                if ($value != '' /* FieldUnit' */) {
360
//                    @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $value);
361
//                }
362
//                break;
363
                    /* ---- java.lang.Object --- */
364
                    case 'class':
365
                        if ($value != '' /* FieldUnit' */) {
366
                            @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $value);
367
                        }
368
                        break;
291 369

  
292
    $groups = array();
293
    // --- add initialized fields
294
    foreach (get_object_vars($specimenOrObservation) as $field => $value) {
295
      if (!in_array($field, $exclude_occurrence_fields) && ($value && (!is_object($value) || isset($value->class)))) {
296
        switch ($field) {
297

  
298
          /* ---- java.lang.Object --- */
299
          case 'class':
300
            if ($value != '' /* FieldUnit' */) {
301
              @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $value);
302
            }
303
            break;
370
                    case 'markers':
371
                        $dd_elements = array();
372
                        foreach ($value as $marker) {
373
                            $dd_elements[] = compose_cdm_marker($marker);
374
                        }
375
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $dd_elements);
376
                        break;
304 377

  
305
          case 'markers':
306
            $dd_elements = array();
307
            foreach ($value as $marker) {
308
              $dd_elements[] = compose_cdm_marker($marker);
309
            }
310
            @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $dd_elements);
311
            break;
312 378

  
379
                    case 'annotations':
380
                        $dd_elements = array();
381
                        foreach ($value as $annotation) {
382
                            // TODO respect annotation type filter settings
383
                            $dd_elements[] = $annotation->text;
384
                        }
385
                        @_description_list_group_add($groups, t('Notes'), $dd_elements);
386
                        break;
387

  
388
                    /* ---- SpecimenOrObservationBase --- */
389
                    case 'sex':
390
                    case 'lifeStage':
391
                    case 'kindOfUnit':
392
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $value->representation_L10n, NULL, 1);
393
                        break;
394

  
395
                    case 'definition':
396
                        // TODO
397
                        break;
398

  
399
                    case 'preferredStableUri':
400

  
401
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), array(array('#markup' => cdm_external_uri($value, false))));
402
                        break;
403

  
404
                    case 'specimenTypeDesignations':
405
                        @_description_list_group_add(
406
                            $groups,
407
                            cdm_occurrence_field_name_label($field),
408
                            array(
409
                                '#markup' => theme('cdm_typedesignations', array('typeDesignations' => $value)),
410
                            )
411
                        );
412
                        break;
413

  
414
                    case 'determinations':
415
                        $dd_elements = array();
416
                        $glue = ', ';
417

  
418
                        foreach ($value as $determinationEvent) {
419
                            $timeperiod_string = NULL;
420
                            if (isset($determinationEvent->timeperiod)) {
421
                                $timeperiod_string = timePeriodToString($determinationEvent->timeperiod);
422
                            }
423
                            $weight = isset($determinationEvent->preferred) && $determinationEvent->preferred == 1 ? '0' : ($timeperiod_string ? $timeperiod_string : '1');
424
                            // check key exists
425
                            while (array_key_exists($weight, $dd_elements)) {
426
                                $weight .= '0';
427
                            }
313 428

  
314
          case 'annotations':
315
            $dd_elements = array();
316
            foreach ($value as $annotation) {
317
              // TODO respect annotation type filter settings
318
              $dd_elements[] = $annotation->text;
319
            }
320
            @_description_list_group_add($groups, t('Notes'), $dd_elements);
321
            break;
322

  
323
          /* ---- SpecimenOrObservationBase --- */
324
          case 'sex':
325
          case 'lifeStage':
326
          case 'kindOfUnit':
327
            @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $value->representation_L10n);
328
            break;
329

  
330
          case 'definition':
331
            // TODO
332
            break;
333

  
334
          case 'preferredStableUri':
335

  
336
            @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), array(array('#markup' => cdm_external_uri($value, false))));
337
            break;
338

  
339
          case 'specimenTypeDesignations':
340
            @_description_list_group_add(
341
              $groups,
342
              cdm_occurrence_field_name_label($field),
343
              array(
344
                '#markup' => theme('cdm_typedesignations', array('typeDesignations' => $value)),
345
              )
346
            );
347
            break;
348

  
349
          case 'determinations':
350
            $dd_elements = array();
351
            $glue = ', ';
352

  
353
            foreach ($value as $determinationEvent) {
354
              $timeperiod_string = NULL;
355
              if (isset($determinationEvent->timeperiod)) {
356
                $timeperiod_string = timePeriodToString($determinationEvent->timeperiod);
357
              }
358
              $weight = isset($determinationEvent->preferred) && $determinationEvent->preferred == 1 ? '0' : ($timeperiod_string ? $timeperiod_string : '1');
359
              // check key exists
360
              while (array_key_exists($weight, $dd_elements)) {
361
                $weight .= '0';
362
              }
363

  
364
              $taxon_name = '';
365
              $name_link = '';
366
              if ($determinationEvent->taxonName) {
367
                $taxon_name = $determinationEvent->taxonName;
368
              } else if ($determinationEvent->taxon) {
369
                $taxon_name = cdm_ws_get(CDM_WS_TAXON . '/$0/name', $determinationEvent->taxon->uuid);
370
                $name_link = path_to_taxon($determinationEvent->taxon->uuid);
371
              }
372
              if ($taxon_name) {
373
                $taxon_html = render_taxon_or_name($taxon_name, $name_link);
374
                $dd_elements[$weight] = $taxon_html;
375
              }
376
              if (isset($determinationEvent->modifier)) {
377
                $dd_elements[$weight] .= cdm_term_representation($determinationEvent->modifier);
378
              }
379
              if ($timeperiod_string) {
380
                $dd_elements[$weight] .= $glue . $timeperiod_string;
381
              }
382
              if (isset($determinationEvent->actor->titleCache)) {
383
                $dd_elements[$weight] .= $glue . $determinationEvent->actor->titleCache;
384
              }
385
              if (isset($determinationEvent->description)) {
386
                $dd_elements[$weight] .= $glue . $determinationEvent->description;
387
              }
388
            }
389
            ksort($dd_elements);
390
            @_description_list_group_add($groups, cdm_occurrence_field_name_label('determinations'), $dd_elements);
391
            break;
429
                            $taxon_name = '';
430
                            $name_link = '';
431
                            if ($determinationEvent->taxonName) {
432
                                $taxon_name = $determinationEvent->taxonName;
433
                            } else if ($determinationEvent->taxon) {
434
                                $taxon_name = cdm_ws_get(CDM_WS_TAXON . '/$0/name', $determinationEvent->taxon->uuid);
435
                                $name_link = path_to_taxon($determinationEvent->taxon->uuid);
436
                            }
437
                            if ($taxon_name) {
438
                                $taxon_html = render_taxon_or_name($taxon_name, $name_link);
439
                                $dd_elements[$weight] = $taxon_html;
440
                            }
441
                            if (isset($determinationEvent->modifier)) {
442
                                $dd_elements[$weight] .= cdm_term_representation($determinationEvent->modifier);
443
                            }
444
                            if ($timeperiod_string) {
445
                                $dd_elements[$weight] .= $glue . $timeperiod_string;
446
                            }
447
                            if (isset($determinationEvent->actor->titleCache)) {
448
                                $dd_elements[$weight] .= $glue . $determinationEvent->actor->titleCache;
449
                            }
450
                            if (isset($determinationEvent->description)) {
451
                                $dd_elements[$weight] .= $glue . $determinationEvent->description;
452
                            }
453
                        }
454
                        ksort($dd_elements);
455
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label('determinations'), $dd_elements);
456
                        break;
392 457

  
393
          case 'descriptions':
394
            $occurrence_featureTree = cdm_get_occurrence_featureTree();
395
            $dd_elements = array();
458
                    case 'descriptions':
459
                        $occurrence_featureTree = cdm_get_occurrence_featureTree();
460
                        $dd_elements = array();
396 461

  
397
            foreach ($value as $description) {
398
              $description = cdm_ws_get(CDM_WS_PORTAL_DESCRIPTION, $description->uuid);
462
                        foreach ($value as $description) {
463
                            $description = cdm_ws_get(CDM_WS_PORTAL_DESCRIPTION, $description->uuid);
399 464
//               if($description->imageGallery == TRUE) {
400 465
//                 continue;
401 466
//               }
402
              $elements_by_feature = _mergeFeatureTreeDescriptions($occurrence_featureTree->root->childNodes, $description->elements);
403
              $description_render_elements = _block_get_renderable_array(make_feature_block_list($elements_by_feature, null));
404
              $dd_elements[] = $description_render_elements;
405
            }
467
                            $elements_by_feature = _mergeFeatureTreeDescriptions($occurrence_featureTree->root->childNodes, $description->elements);
468
                            $description_render_elements = _block_get_renderable_array(make_feature_block_list($elements_by_feature, null));
469
                            $dd_elements[] = $description_render_elements;
470
                            if ($description->isImageGallery) {
471
                                $mediaList = array();
472
                                if (is_array($description->elements)) {
473
                                    $mediaList = $description->elements;
474
                                }
475
                                $gallery_html = '';
476
                                if (count($mediaList) > 0) {
477
                                    $gallery_settings = getGallerySettings(CDM_DATAPORTAL_SPECIMEN_GALLERY_NAME);
478
                                    $captionElements = array(
479
                                        '#uri' => t('open media'),
480
                                    );
481

  
482
                                    $gallery_html = compose_cdm_media_gallerie(array(
483
                                        'mediaList' => $mediaList,
484
                                        'galleryName' => $gallery_name,
485
                                        'maxExtend' => $gallery_settings['cdm_dataportal_media_maxextend'],
486
                                        'cols' => $gallery_settings['cdm_dataportal_media_cols'],
487
                                        'maxRows' => isset($gallery_settings['cdm_dataportal_media_maxRows']) ? isset($gallery_settings['cdm_dataportal_media_maxRows']) : null,
488
                                        'captionElements' => $captionElements,
489
                                        'mediaLinkType' => 'LIGHTBOX',
490
                                        'alternativeMediaUri' => NULL,
491
                                        'galleryLinkUri' => NULL,
492
                                    ));
493
                                }
406 494

  
407
            @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $dd_elements);
408
            break;
495
                            }
496
                        }
409 497

  
410
          case 'sources':
411
            $dd_elements = array();
412
            foreach ($value as $identifiable_source) {
413
              $dd_elements[] = theme('cdm_OriginalSource', array('source' => $identifiable_source));
414
            }
415
            @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $dd_elements);
416
            break;
417

  
418

  
419
          /* ---- DerivedUnitBase --- */
420
          case 'derivedFrom':
421
            $derivedFrom = $value;
422
            break;
423

  
424
          case 'collection':
425
            $sub_dl_groups = array();
426
            @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('code'), $value->code, NULL, 1);
427
            @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('codeStandard'), $value->codeStandard, NULL, 2);
428
            @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('institute'), $value->institute, NULL, 3);
429
            @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('townOrLocation'), $value->townOrLocation, NULL, 4);
430
            // TODO "superCollection"
431
            // TODO may have media
432

  
433
            @_description_list_group_add($groups, cdm_occurrence_field_name_label($field),
434
              array(
435
                array('#markup' => $value->titleCache),
436
                array('#theme' => 'description_list', '#groups' => $sub_dl_groups)
437
              )
438
            );
439
            break;
498
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $dd_elements);
499
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $gallery_html);
500
                        break;
440 501

  
441
          case 'storedUnder':
442
            @_description_list_group_add($groups, cdm_occurrence_field_name_label('storedUnder'), render_taxon_or_name($value));
443
            break;
502
                    case 'sources':
503
                        $dd_elements = array();
504
                        foreach ($value as $identifiable_source) {
505
                            $dd_elements[] = theme('cdm_OriginalSource', array('source' => $identifiable_source));
506
                        }
507
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $dd_elements, NULL, 10);
508
                        break;
509

  
510

  
511
                    /* ---- DerivedUnitBase --- */
512
                    case 'derivedFrom':
513
                        $derivedFrom = $value;
514
                        break;
515

  
516
                    case 'collection':
517
                        $sub_dl_groups = array();
518
                        @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('code'), $value->code, NULL, 1);
519
                        @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('codeStandard'), $value->codeStandard, NULL, 2);
520
                        @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('institute'), $value->institute, NULL, 3);
521
                        @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('townOrLocation'), $value->townOrLocation, NULL, 4);
522
                        // TODO "superCollection"
523
                        // TODO may have media
524

  
525
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label($field),
526
                            array(
527
                                array('#markup' => $value->titleCache),
528
                                array('#theme' => 'description_list', '#groups' => $sub_dl_groups)
529
                            )
530
                        );
531
                        break;
532

  
533
                    case 'storedUnder':
534
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label('storedUnder'), render_taxon_or_name($value));
535
                        break;
536

  
537

  
538
                    /* ---- Specimen --- */
539
                    case 'sequences':
540
                        $dd_elements = array();
541
                        foreach ($value as $sequence) {
542
                            $dd_elements[] = compose_cdm_sequence($sequence);
543
                        }
544
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $dd_elements);
545
                        break;
546

  
547
                    // TODO preservation
548
                    // TODO exsiccatum
549

  
550

  
551
                    /* ---- FieldObservation --- */
552
                    case 'gatheringEvent':
553
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label('collector'), $value->actor->titleCache);
554
                        @_description_list_group_add($groups, t('Gathering time'), timePeriodToString($value->timeperiod));
555
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label('description'), $value->description);
556
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label('locality'), $value->locality->text);
557
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label('country'), $value->country->representation_L10n);
558
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label('collectingMethod'), $value->collectingMethod);
559
                        if (isset($value->absoluteElevation)) {
560
                            $min_max_markup = min_max_measure($value, 'absoluteElevation');
561
                            @_description_list_group_add($groups, cdm_occurrence_field_name_label('absoluteElevation'), $min_max_markup);
562
                        }
563
                        if (isset($value->distanceToGround)) {
564
                            $min_max_markup = min_max_measure($value, 'distanceToGround');
565
                            @_description_list_group_add($groups, cdm_occurrence_field_name_label('distanceToGround'), $min_max_markup);
566
                        }
567
                        if (isset($value->distanceToWaterSurface)) {
568
                            $min_max_markup = min_max_measure($value, 'distanceToWaterSurface');
569
                            @_description_list_group_add($groups, cdm_occurrence_field_name_label('distanceToWaterSurface'), $min_max_markup);
570
                        }
444 571

  
572
                        if (isset($value->collectingAreas)) {
573
                            $area_representations = array();
574
                            foreach ($value->collectingAreas as $area) {
575
                                $area_representations[] = l($area->representation_L10n, path_to_named_area($area->uuid));
576
                            }
577
                            if (!empty($area_representations))
578
                                @_description_list_group_add($groups, cdm_occurrence_field_name_label('collectingAreas'),
579
                                    array(
580
                                        array('#markup' => implode(', ', $area_representations))
581
                                    )
582
                                );
583
                        }
584
                        if (isset($value->exactLocation) && $value->exactLocation->sexagesimalString) {
585
                            $sub_dl_groups = array();
586
                            @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('errorRadius'), $value->exactLocation->errorRadius, ' m', 1);
587
                            @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('longitude'), round($value->exactLocation->longitude, 7), '°', 2);
588
                            @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('latitude'), round($value->exactLocation->latitude, 7), '°', 3);
589
                            if (isset($value->exactLocation->referenceSystem)) {
590
                                @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('referenceSystem'), $value->exactLocation->referenceSystem->representation_L10n, '', 4);
591
                            }
445 592

  
446
          /* ---- Specimen --- */
447
          case 'sequences':
448
            $dd_elements = array();
449
            foreach ($value as $sequence) {
450
              $dd_elements[] = compose_cdm_sequence($sequence);
451
            }
452
            @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $dd_elements);
453
            break;
454

  
455
          // TODO preservation
456
          // TODO exsiccatum
457

  
458

  
459
          /* ---- FieldObservation --- */
460
          case 'gatheringEvent':
461
            @_description_list_group_add($groups, cdm_occurrence_field_name_label('collector'), $value->actor->titleCache);
462
            @_description_list_group_add($groups, t('Gathering time'), timePeriodToString($value->timeperiod));
463
            @_description_list_group_add($groups, cdm_occurrence_field_name_label('description'), $value->description);
464
            @_description_list_group_add($groups, cdm_occurrence_field_name_label('locality'), $value->locality->text);
465
            @_description_list_group_add($groups, cdm_occurrence_field_name_label('country'), $value->country->representation_L10n);
466
            @_description_list_group_add($groups, cdm_occurrence_field_name_label('collectingMethod'), $value->collectingMethod);
467
            if (isset($value->absoluteElevation)) {
468
              $min_max_markup = min_max_measure($value, 'absoluteElevation');
469
              @_description_list_group_add($groups, cdm_occurrence_field_name_label('absoluteElevation'), $min_max_markup);
470
            }
471
            if (isset($value->distanceToGround)) {
472
              $min_max_markup = min_max_measure($value, 'distanceToGround');
473
              @_description_list_group_add($groups, cdm_occurrence_field_name_label('distanceToGround'), $min_max_markup);
474
            }
475
            if (isset($value->distanceToWaterSurface)) {
476
              $min_max_markup = min_max_measure($value, 'distanceToWaterSurface');
477
              @_description_list_group_add($groups, cdm_occurrence_field_name_label('distanceToWaterSurface'), $min_max_markup);
478
            }
593
                            @_description_list_group_add($groups, cdm_occurrence_field_name_label('exactLocation'),
594
                                array(
595
                                    array('#markup' => $value->exactLocation->sexagesimalString),
596
                                    array(
597
                                        '#theme' => 'description_list',
598
                                        '#groups' => $sub_dl_groups
599
                                    ),
600
                                )
601
                            );
602
                        }
603
                        break;
604

  
605
                    /* ---- DerivationEvent --- */
606
                    case 'derivationEvents':
607
                        @_description_list_group_add($groups, t('Association type'), $value->description);
608
                        break;
609
                    case 'preservedSpecimenDTOs':
610
                        $derivates = $value;
611
                        break;
612
                    case 'derivates':
613
                        $derivates = $value;
614
                        break;
615

  
616
                    default:
617
                        if (is_object($value) || is_array($value)) {
618
                            drupal_set_message("Unhandled type in compose_cdm_specimenOrObservation() for field " . $field, "warning");
619
                        } else {
620
                            _description_list_group_add($groups, cdm_occurrence_field_name_label($field), $value);
621
                        }
479 622

  
480
            if (isset($value->collectingAreas)) {
481
              $area_representations = array();
482
              foreach ($value->collectingAreas as $area) {
483
                $area_representations[] = l($area->representation_L10n, path_to_named_area($area->uuid));
484
              }
485
              @_description_list_group_add($groups, cdm_occurrence_field_name_label('collectingAreas'),
486
                array(
487
                  array('#markup' => implode(', ', $area_representations))
488
                )
489
              );
490
            }
491
            if (isset($value->exactLocation) && $value->exactLocation->sexagesimalString) {
492
              $sub_dl_groups = array();
493
              @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('errorRadius'), $value->exactLocation->errorRadius, ' m', 1);
494
              @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('longitude'), round($value->exactLocation->longitude, 7), '°', 2);
495
              @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('latitude'), round($value->exactLocation->latitude, 7), '°', 3);
496
              if (isset($value->exactLocation->referenceSystem)) {
497
                @_description_list_group_add($sub_dl_groups, cdm_occurrence_field_name_label('referenceSystem'), $value->exactLocation->referenceSystem->representation_L10n, '', 4);
498
              }
499

  
500
              @_description_list_group_add($groups, cdm_occurrence_field_name_label('exactLocation'),
501
                array(
502
                  array('#markup' => $value->exactLocation->sexagesimalString),
503
                  array(
504
                    '#theme' => 'description_list',
505
                    '#groups' => $sub_dl_groups
506
                  ),
507
                )
508
              );
509
            }
510
            break;
623
                }
511 624

  
625
/*
626
 *
512 627
          default:
513 628
            if (is_object($value) || is_array($value)) {
514 629
              drupal_set_message("Unhandled type in compose_cdm_specimen_or_observation() for field " . $field, "warning");
515 630
            } else {
516 631
              _description_list_group_add($groups, cdm_occurrence_field_name_label($field), $value);
632
*/
633
// Stashed changes
517 634
            }
635
        } // END of loop over $derivedUnitFacade fields
518 636

  
637
        // Extensions
638
        $extensions = cdm_ws_fetch_all(CDM_WS_PORTAL_OCCURRENCE . '/' . $specimenOrObservation->uuid . '/extensions', array($specimenOrObservation->uuid));
639
        if ($extensions && count($extensions)) {
640

  
641
            $extensions_render_array = compose_extensions($extensions);
642
            @_description_list_group_add($groups, t('Extensions') . ':',
643
                $extensions_render_array,
644
                '', 100);
519 645
        }
520 646

  
521
      }
522
    } // END of loop over $derivedUnitFacade fields
523 647

  
524
    // Extensions
525
    $extensions = cdm_ws_fetch_all(CDM_WS_PORTAL_OCCURRENCE . '/'  . $specimenOrObservation->uuid . '/extensions', array($specimenOrObservation->uuid));
526
    if ($extensions && count($extensions)) {
648
        // template_preprocess_description_list() is not worting by weight so we do it right here
649
        uasort($groups, 'element_sort');
527 650

  
528
      $extensions_render_array = compose_extensions($extensions);
529
      @_description_list_group_add($groups, t('Extensions') . ':',
530
        $extensions_render_array,
531
        '', 100);
532
    }
651
        $occurrence_elements = array(
652
            '#title' => $title,
653
            '#theme' => 'description_list',
654
            '#groups' => $groups,
655
            '#attributes' => array('class' => html_class_attribute_ref($specimenOrObservation)),
656
        );
657
        $derivatives[] = $occurrence_elements;
658
        // all footnotes which has been assembled so far (e.g. from typeDesignations) to here
659
        $foonote_li_elements = theme('cdm_footnotes', array('footnoteListKey' => RenderHints::getFootnoteListKey(), 'enclosingTag' => 'span'));
660
        if (!empty($foonote_li_elements)) {
661
            $derivatives[] = array(
662
                '#markup' => '<div class="footnotes">' . $foonote_li_elements . '</div>',
663
            );
664
        }
533 665

  
666
        // --- recurse into originals
667
        if (!isset($derivedFrom)) {
668
            $derivedFrom = cdm_ws_get(
669
                CDM_WS_OCCURRENCE,
670
                array($specimenOrObservation->uuid, 'derivedFrom')
671
            );
672
        }
534 673

  
535
    // template_preprocess_description_list() is not worting by weight so we do it right here
536
    uasort($groups, 'element_sort');
674
        if (isset($derivates)) {
675
            if (isset($derivedFrom->originals)) {
676
                $derived_from_label = t('derivated');
677
                // $preposition = t('from');
678
                if (isset($derivedFrom->type)) {
679
                    $derived_from_label = $derivedFrom->type->representation_L10n;
680
                    if (isset($derivedFrom->description)) {
681
                        $derived_from_label = $derivedFrom->description;
682
                    }
683
                    //  if($derivedFrom->type->uuid == UUID_DERIVATIONEVENTTYPE_ACCESSIONING){
684
                    //  $preposition = t('of');
685
                    // }
686
                }
687
                if (count($groups) > 0) {
688
                    // TODO  annotations
537 689

  
538
    $occurrence_elements = array(
539
        '#title' => $title,
540
        '#theme' => 'description_list',
541
        '#groups' => $groups,
542
        '#attributes' => array('class' => html_class_attribute_ref($specimenOrObservation)),
543
    );
544
    $derivatives[] = $occurrence_elements;
545
    // all footnotes which has been assembled so far (e.g. from typeDesignations) to here
546
    $foonote_li_elements = theme('cdm_footnotes', array('footnoteListKey' => RenderHints::getFootnoteListKey(), 'enclosingTag' => 'span'));
547
    if (!empty($foonote_li_elements)) {
548
      $derivatives[] =  array(
549
          '#markup' =>  '<div class="footnotes">' . $foonote_li_elements . '</div>',
550
      );
551
    }
690
                    // only display the derived from information when the derivative has any element which will be diplayed
691
                    $derivatives[] = array(
692
                        '#markup' => '<div class="derived_from">' . $derived_from_label . ': </div>',//' ' . $preposition . ': </div>',
693
                    );
694
                }
695
                // foreach ($derivedFrom->originals as $original) {
552 696

  
553
    // --- recurse into originals
554
    if (!isset($derivedFrom)) {
555
      $derivedFrom = cdm_ws_get(
556
          CDM_WS_OCCURRENCE,
557
          array($specimenOrObservation->uuid, 'derivedFrom')
558
        );
559
    }
560 697

  
561
    if (isset($derivedFrom)) {
562
      if (isset($derivedFrom->originals)) {
563
        $derived_from_label = t('derived');
564
        $preposition = t('from');
565
        if(isset($derivedFrom->type)){
566
          $derived_from_label = $derivedFrom->type->representation_L10n;
567
          if($derivedFrom->type->uuid == UUID_DERIVATIONEVENTTYPE_ACCESSIONING){
568
            $preposition = t('of');
569
          }
570
        }
571
        if (count($groups) > 0) {
572
          // TODO  annotations
573 698

  
574
          // only display the derived from information when the derivative has any element which will be diplayed
575
          $derivatives[] = array(
576
              '#markup' => '<div class="derived_from">' . $derived_from_label . ' ' . $preposition . ': </div>',
577
          );
699
            }
578 700
        }
701
/*<<<<<<< Updated upstream
579 702
        foreach ($derivedFrom->originals as $original) {
580 703
          compose_cdm_specimen_or_observation($original, $derivatives);
704
=======*/
705
        if (isset($derivates )) {
706

  
707
            foreach ($derivates as $derivate){
708
                compose_cdm_specimenOrObservation($derivate, $derivatives);
709
            }
710
//>>>>>>> Stashed changes
581 711
        }
582
      }
583
    }
584 712

  
585
  } // END of $specimenOrObservation exists
713
    } // END of $specimenOrObservation exists
586 714

  
587
  return $derivatives;
715
    return $derivatives;
588 716
}
589 717

  
590 718

  
......
600 728
 *
601 729
 * @ingroup compose
602 730
 */
603
function compose_cdm_sequence($sequence) {
604

  
605
  $exclude_sequence_fields = &drupal_static(__FUNCTION__);
606
  if (!isset($exclude_sequence_fields)) {
607
    $exclude_sequence_fields = array(
608
      'titleCache',
609
      'protectedTitleCache',
610
      'microReference',
611
      'created',
612
      'updated',
613
      'class',
614
    );
615
  }
731
function compose_cdm_sequence($sequence)
732
{
733

  
734
    $exclude_sequence_fields = &drupal_static(__FUNCTION__);
735
    if (!isset($exclude_sequence_fields)) {
736
        $exclude_sequence_fields = array(
737
            'titleCache',
738
            'protectedTitleCache',
739
            'microReference',
740
            'created',
741
            'updated',
742
            'class',
743
        );
744
    }
616 745

  
617
  $groups = array();
746
    $groups = array();
618 747

  
619
  // -- retrieve additional data if neesscary
620
  // TODO below call disabled since sequences are not yet supported,
621
  //      see  #3347 (services and REST service controller for molecular classes implemented)
622
  //
623
  // cdm_load_annotations($sequence);
748
    // -- retrieve additional data if neesscary
749
    // TODO below call disabled since sequences are not yet supported,
750
    //      see  #3347 (services and REST service controller for molecular classes implemented)
751
    //
752
    // cdm_load_annotations($sequence);
624 753

  
625
  foreach (get_object_vars($sequence) as $field => $value) {
754
    foreach (get_object_vars($sequence) as $field => $value) {
626 755

  
627 756

  
628
    if (!in_array($field, $exclude_sequence_fields) && ($value && (!is_object($value) || isset($value->class)))) {
629
      switch ($field) {
757
        if (!in_array($field, $exclude_sequence_fields) && ($value && (!is_object($value) || isset($value->class)))) {
758
            switch ($field) {
630 759

  
631
        case 'geneticAccessionNumber';
632
          $dd_elements = array();
633
          foreach ($value as $accession) {
634
            if (isset($accession->uri) ){
635
              $dd_elements[] = l($accession->accessionNumber, $accession->uri);
636
            } else {
637
              $dd_elements[] = $accession->accessionNumber;
760
                case 'geneticAccessionNumber';
761
                    $dd_elements = array();
762
                    foreach ($value as $accession) {
763
                        if (isset($accession->uri)) {
764
                            $dd_elements[] = l($accession->accessionNumber, $accession->uri);
765
                        } else {
766
                            $dd_elements[] = $accession->accessionNumber;
767
                        }
768
                    }
769
                    @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $dd_elements, NULL, 2);
770
                    break;
771

  
772

  
773
                case 'locus': // FIXME 3.3 now dnaMarker (DefinedTerm)  if multiple amplifications where used to build this consensus sequence it may be the super set of the markers used in amplification.
774
                    if (isset($value->name)) {
775
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $value->name, NULL, 3);
776
                    }
777
                    if (isset($value->description)) {
778
                        @_description_list_group_add($groups, cdm_occurrence_field_name_label($field) . ' ' . t('description'), $value->description, NULL, 4);
779
                    }
780
                    break;
781

  
782
                case 'consensusSequence':
783
                    // format in genbank style, force linebreaks after each 70 nucleotites
784
                    // see also http://stackoverflow.com/questions/499137/css-how-can-i-force-a-long-string-without-any-blank-to-be-wrapped-in-xul-and
785
                    @_description_list_group_add(
786
                        $groups,
787
                        cdm_occurrence_field_name_label($field),
788
                        array(
789
                            array(
790
                                '#markup' => '<div class="sequence-length">' . $value->length . ' ' . t('pb') . '</div><div>' . wordwrap($value->string, 70, '</br>', TRUE) . '</div>',
791
                                '#wrapper_attributes' => array('class' => 'dna-sequence')
792
                            )
793
                        ),
794
                        5);
795
                    break;
796

  
797
                case 'dnaSample': // FIXME 3.3 implement
798
                    break;
799
                case 'singleReads': // FIXME 3.3 implement
800
                    break;
801
                case 'contigFile': // FIXME 3.3 implement - Media
802
                    break;
803
                case 'pherograms': // FIXME 3.3 implement - Media
804
                    break;
805
                case 'haplotype': // FIXME 3.3 implement
806
                    break;
807
                case 'dateSequenced': // FIXME 3.3 now in SingelRead
808
                    @_description_list_group_add($groups, t('Sequencing date'), timePeriodToString($value), NULL, 6);
809
                    break;
810

  
811
                case 'barcode': // boolean
812
                    @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $value ? 'Yes' : 'No', NULL, 7);
813
                    break;
814
                case 'barcodeSequencePart': // FIXME 3.3 implement, compose sequence
815
                    break;
816

  
817
                case 'citation':
818
                    @_description_list_group_add($groups,
819
                        cdm_occurrence_field_name_label($field),
820
                        theme('cdm_reference', array('reference' => $value, 'microReference' => $sequence->microReference)),
821
                        NULL,
822
                        8
823
                    );
824
                    break;
825

  
826
                case 'publishedIn':
827
                    @_description_list_group_add($groups,
828
                        cdm_occurrence_field_name_label($field),
829
                        theme('cdm_reference', array('reference' => $value)),
830
                        NULL,
831
                        7
832
                    );
833
                    break;
834

  
835
                case 'rights':
836
                    array_merge($groups, cdm_rights_as_dl_groups($value));
837
                    break;
838

  
839
                case 'annotations':
840
                    $dd_elements = array();
841
                    foreach ($value as $annotation) {
842
                        // TODO respect annotation type filter settings
843
                        $dd_elements[] = $annotation->text;
844
                    }
845
                    @_description_list_group_add($groups, t('Notes'), $dd_elements, NULL, 9);
846
                    break;
847

  
848
                case 'markers':
849
                    $dd_elements = array();
850
                    foreach ($value as $marker) {
851
                        $dd_elements[] = compose_cdm_marker($marker);
852
                    }
853
                    @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $dd_elements, NULL, 10);
854
                    break;
855

  
856
                case 'chromatograms':
857
                    @_description_list_group_add($groups, cdm_occurrence_field_name_label($field),
858
                        array(
859
                            '#markup' => compose_cdm_media_gallerie(array('medialist' => $value)),
860
                        ),
861
                        NULL,
862
                        11);
863
                    break;
864

  
865
                default:
866
                    if (is_object($value) || is_array($value)) {
867
                        drupal_set_message("Unhandled type in compose_cdm_sequence() for field " . $field, "warning");
868
                    } else {
869
                        _description_list_group_add($groups, cdm_occurrence_field_name_label($field), $value, NULL, 20);
870
                    }
638 871
            }
639
          }
640
          @_description_list_group_add($groups, cdm_occurrence_field_name_label($field),  $dd_elements, NULL, 1);
641
          break;
642

  
643

  
644
        case 'locus': // FIXME 3.3 now dnaMarker (DefinedTerm)  if multiple amplifications where used to build this consensus sequence it may be the super set of the markers used in amplification.
645
          if (isset($value->name)) {
646
            @_description_list_group_add($groups, cdm_occurrence_field_name_label($field),  $value->name, NULL, 3);
647
          }
648
          if (isset($value->description)) {
649
            @_description_list_group_add($groups, cdm_occurrence_field_name_label($field) . ' ' . t('description') , $value->description, NULL, 4);
650
          }
651
          break;
652

  
653
        case 'consensusSequence':
654
          // format in genbank style, force linebreaks after each 70 nucleotites
655
          // see also http://stackoverflow.com/questions/499137/css-how-can-i-force-a-long-string-without-any-blank-to-be-wrapped-in-xul-and
656
          @_description_list_group_add(
657
            $groups,
658
            cdm_occurrence_field_name_label($field),
659
            array(
660
              array(
661
                '#markup' => '<div class="sequence-length">' . $value->length . ' ' . t('pb'). '</div><div>' . wordwrap($value->string, 70, '</br>', TRUE) . '</div>',
662
                '#wrapper_attributes' => array('class'=>'dna-sequence')
663
                )
664
              ),
665
            5);
666
          break;
667

  
668
         case 'dnaSample': // FIXME 3.3 implement
669
            break;
670
        case 'singleReads': // FIXME 3.3 implement
671
          break;
672
        case 'contigFile': // FIXME 3.3 implement - Media
673
            break;
674
        case 'pherograms': // FIXME 3.3 implement - Media
675
          break;
676
        case 'haplotype': // FIXME 3.3 implement
677
            break;
678
        case 'dateSequenced': // FIXME 3.3 now in SingelRead
679
          @_description_list_group_add($groups, t('Sequencing date'),  timePeriodToString($value), NULL, 6);
680
          break;
681

  
682
        case 'barcode': // boolean
683
          @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $value ? 'Yes': 'No', NULL, 7);
684
          break;
685
        case 'barcodeSequencePart': // FIXME 3.3 implement, compose sequence
686
            break;
687

  
688
        case 'citation':
689
          @_description_list_group_add($groups,
690
            cdm_occurrence_field_name_label($field),
691
            theme('cdm_reference', array('reference' =>$value, 'microReference' => $sequence->microReference)),
692
            NULL,
693
            8
694
          );
695
          break;
696

  
697
        case 'publishedIn':
698
          @_description_list_group_add($groups,
699
            cdm_occurrence_field_name_label($field),
700
            theme('cdm_reference', array('reference'=>$value)),
701
            NULL,
702
            7
703
          );
704
          break;
705

  
706
        case 'rights':
707
          array_merge($groups, cdm_rights_as_dl_groups($value));
708
          break;
709

  
710
        case 'annotations':
711
          $dd_elements = array();
712
          foreach ($value as $annotation) {
713
            // TODO respect annotation type filter settings
714
            $dd_elements[] = $annotation->text;
715
          }
716
          @_description_list_group_add($groups, t('Notes'), $dd_elements, NULL, 9);
717
          break;
718

  
719
        case 'markers':
720
          $dd_elements = array();
721
          foreach ($value as $marker) {
722
            $dd_elements[] = compose_cdm_marker($marker);
723
          }
724
          @_description_list_group_add($groups, cdm_occurrence_field_name_label($field), $dd_elements, NULL, 10);
725
          break;
726

  
727
        case 'chromatograms':
728
          @_description_list_group_add($groups, cdm_occurrence_field_name_label($field),
729
              array(
730
                  '#markup'=>compose_cdm_media_gallerie(array('medialist'=>$value)),
731
              ),
732
              NULL,
733
              11);
734
          break;
735

  
736
        default:
737
          if(is_object($value) || is_array($value)){
738
            drupal_set_message("Unhandled type in compose_cdm_sequence() for field " . $field, "warning");
739
          } else {
740
            _description_list_group_add($groups, cdm_occurrence_field_name_label($field), $value, NULL, 20);
741
          }
742
      }
872
        }
743 873
    }
744
  }
745 874

  
746
  // template_preprocess_description_list() is not worting by weight so we do it right here
747
  uasort($groups, 'element_sort');
875
    // template_preprocess_description_list() is not worting by weight so we do it right here
876
    uasort($groups, 'element_sort');
748 877

  
749
  $sequence_elements = array(
750
      '#theme' => 'description_list',
751
      '#groups' => $groups
752
  );
878
    $sequence_elements = array(
879
        '#theme' => 'description_list',
880
        '#groups' => $groups
881
    );
753 882

  
754
  return $sequence_elements;
883
    return $sequence_elements;
755 884
}
756 885

  
757 886

  

Also available in: Unified diff