Project

General

Profile

« Previous | Next » 

Revision 84849c31

Added by Andreas Kohlbecker over 4 years ago

ref #8403 extracting method compose_specimens_table_bottom_up()

View differences:

modules/cdm_dataportal/includes/pages.inc
231 231

  
232 232
    }
233 233
    else{
234
        //BOTTOM-UP-SPECIMEN-TABLE
235
        // --- generate the specimen list as table
236
        $specimen_table = array(
237
            '#theme' => 'table',
238
            '#weight' => 2,
239
            // prefix attributes and rows with '#' to let it pass toF the theme function,
240
            // otherwise it is handled as child render array
241
            '#attributes' => array('class' => 'specimens'),
242
            '#rows' => array(),
243
        );
234
      $specimen_table = compose_specimens_table_bottom_up($specimensOrObservations);
235

  
236
      $render_array['specimen_list'] = $specimen_table;
237
      $render_array['pager'] = markup_to_render_array(
238
        theme('cdm_pager', array(
239
          'pager' => $pager,
240
          'path' => $_REQUEST['q'],
241
          'parameters' => $_REQUEST,
242
        )),
243
        10 // weight
244
      );
245
    }
244 246

  
245
        if ($specimensOrObservations) {
246

  
247
            foreach ($specimensOrObservations as $specimenOrObservation) {
248

  
249
                $mediaList = array();
250
                if (is_array($specimenOrObservation->_fieldObjectMedia)) {
251
                    $mediaList = array_merge($mediaList, $specimenOrObservation->_fieldObjectMedia);
252
                }
253
                if (is_array($specimenOrObservation->_derivedUnitMedia)) {
254
                    $mediaList = array_merge($mediaList, $specimenOrObservation->_derivedUnitMedia);
255
                }
256

  
257

  
258
                // typelabel will contain the typeStatus
259
                $type_label = '';
260
                $typeDesignationPager = cdm_ws_get(CDM_WS_OCCURRENCE . '/$0/specimenTypeDesignations', $specimenOrObservation->uuid);
261
                if (isset($typeDesignationPager) and isset($typeDesignationPager->records)) {
262
                    $type_status = array();
263
                    foreach ($typeDesignationPager->records as $typeDesignation) {
264
                        if (isset($typeDesignation->typeStatus->representation_L10n)){
265
                            $type_status[] = $typeDesignation->typeStatus->representation_L10n;
266
                        }
267
                    }
268
                    $type_label = implode(', ', $type_status);
269
                    if($type_label){
270
                        $type_label .= ': ' ;
271
                    }
272
                }
273

  
274
                // --- Specimen entry as dynamic label:
275
                //     -> Dynabox for the specimenOrObservation
276
                $gallery_name = $specimenOrObservation->uuid;
277

  
278
                $derived_unit_ws_request = cdm_compose_url(CDM_WS_OCCURRENCE, array( $specimenOrObservation->uuid));
279
                // --- Render associated media.
280
                $gallery_html = '';
281
                if (count($mediaList) > 0) {
282
                    $gallery_settings = getGallerySettings(CDM_DATAPORTAL_SPECIMEN_GALLERY_NAME);
283
                    $captionElements = array(
284
                        '#uri' => t('open media'),
285
                    );
286

  
287
                    $gallery_html = compose_cdm_media_gallerie(array(
288
                        'mediaList' => $mediaList,
289
                        'galleryName' => $gallery_name,
290
                        'maxExtend' => $gallery_settings['cdm_dataportal_media_maxextend'],
291
                        'cols' => $gallery_settings['cdm_dataportal_media_cols'],
292
                        'maxRows' => isset($gallery_settings['cdm_dataportal_media_maxRows']) ? isset($gallery_settings['cdm_dataportal_media_maxRows']) : null,
293
                        'captionElements' => $captionElements,
294
                        'mediaLinkType' => 'LIGHTBOX',
295
                        'alternativeMediaUri' => NULL,
296
                        'galleryLinkUri' => NULL,
297
                    ));
298
                }
299
                //here we should use the data we already have
300
                $label_html = cdm_dynabox(
301
                  $specimenOrObservation->uuid,
302
                  $type_label . $specimenOrObservation->titleCache,
303
                  $derived_unit_ws_request,
304
                  'cdm_specimen_or_observation',
305
                  'Click for details',
306
                  array('div', 'div'),
307
                  array(),
308
                  null, // $content_element_selector
309
                  'function(){ jQuery(\'#media_gallery_' . $gallery_name . '\').hide(); }', // open_callback
310
                  'function(){ jQuery(\'#media_gallery_' . $gallery_name . '\').show(); }' // close_callback
311
                );
312

  
313
                // --- Render associated media.
314
                $gallery_html = '';
315
                if (count($mediaList) > 0) {
316
                    $gallery_settings = getGallerySettings(CDM_DATAPORTAL_SPECIMEN_GALLERY_NAME);
317
                    $captionElements = array(
318
                        '#uri' => t('open media'),
319
                    );
320

  
321
                    $gallery_html = compose_cdm_media_gallerie(array(
322
                        'mediaList' => $mediaList,
323
                        'galleryName' => $gallery_name,
324
                        'maxExtend' => $gallery_settings['cdm_dataportal_media_maxextend'],
325
                        'cols' => $gallery_settings['cdm_dataportal_media_cols'],
326
                        'maxRows' => isset($gallery_settings['cdm_dataportal_media_maxRows']) ? isset($gallery_settings['cdm_dataportal_media_maxRows']) : null,
327
                        'captionElements' => $captionElements,
328
                        'mediaLinkType' => 'LIGHTBOX',
329
                        'alternativeMediaUri' => NULL,
330
                        'galleryLinkUri' => NULL,
331
                    ));
332
                }
333

  
334
                $specimen_table['#rows'][] = array(
335
                    // An array of table rows. Every row is an array of cells, or an associative array
336
                    'data' => array(
337
                        // Each cell can be either a string or an associative array
338
                        $label_html . $gallery_html
339
                    ),
340
                    'class' =>  array(
341
                        'descriptionElement',
342
                        'descriptionElement_IndividualsAssociation'
343
                    ),
344
                );
345
            }
247
    RenderHints::popFromRenderStack();
248
    return $render_array;
249
}
250

  
251
/**
252
 * Composes a BOTTOM-UP-SPECIMEN-TABLE
253
 * @param $specimensOrObservations
254
 * @return array
255
 *  A drupal render array with the following keys:
256
 *   - 'specimen_list'
257
 *   - 'pager'
258
 *
259
 * @ingroup Compose
260
 */
261
function compose_specimens_table_bottom_up($specimensOrObservations)
262
{
263

  
264
  // --- generate the specimen list as table
265
  $specimen_table = array(
266
    '#theme' => 'table',
267
    '#weight' => 2,
268
    // prefix attributes and rows with '#' to let it pass toF the theme function,
269
    // otherwise it is handled as child render array
270
    '#attributes' => array('class' => 'specimens'),
271
    '#rows' => array(),
272
  );
273

  
274
  if ($specimensOrObservations) {
275

  
276
    foreach ($specimensOrObservations as $specimenOrObservation) {
277

  
278
      $mediaList = array();
279
      if (is_array($specimenOrObservation->_fieldObjectMedia)) {
280
        $mediaList = array_merge($mediaList, $specimenOrObservation->_fieldObjectMedia);
281
      }
282
      if (is_array($specimenOrObservation->_derivedUnitMedia)) {
283
        $mediaList = array_merge($mediaList, $specimenOrObservation->_derivedUnitMedia);
284
      }
285

  
286

  
287
      // typelabel will contain the typeStatus
288
      $type_label = '';
289
      $typeDesignationPager = cdm_ws_get(CDM_WS_OCCURRENCE . '/$0/specimenTypeDesignations', $specimenOrObservation->uuid);
290
      if (isset($typeDesignationPager) and isset($typeDesignationPager->records)) {
291
        $type_status = array();
292
        foreach ($typeDesignationPager->records as $typeDesignation) {
293
          if (isset($typeDesignation->typeStatus->representation_L10n)) {
294
            $type_status[] = $typeDesignation->typeStatus->representation_L10n;
295
          }
296
        }
297
        $type_label = implode(', ', $type_status);
298
        if ($type_label) {
299
          $type_label .= ': ';
346 300
        }
301
      }
347 302

  
348
        $render_array['specimen_list'] = $specimen_table;
349
        $render_array['pager'] = markup_to_render_array(
350
            theme('cdm_pager', array(
351
                'pager' => $pager,
352
                'path' => $_REQUEST['q'],
353
                'parameters' => $_REQUEST,
354
            )),
355
            10 // weight
303
      // --- Specimen entry as dynamic label:
304
      //     -> Dynabox for the specimenOrObservation
305
      $gallery_name = $specimenOrObservation->uuid;
306

  
307
      $derived_unit_ws_request = cdm_compose_url(CDM_WS_OCCURRENCE, array($specimenOrObservation->uuid));
308
      // --- Render associated media.
309
      $gallery_html = '';
310
      if (count($mediaList) > 0) {
311
        $gallery_settings = getGallerySettings(CDM_DATAPORTAL_SPECIMEN_GALLERY_NAME);
312
        $captionElements = array(
313
          '#uri' => t('open media'),
314
        );
315

  
316
        $gallery_html = compose_cdm_media_gallerie(array(
317
          'mediaList' => $mediaList,
318
          'galleryName' => $gallery_name,
319
          'maxExtend' => $gallery_settings['cdm_dataportal_media_maxextend'],
320
          'cols' => $gallery_settings['cdm_dataportal_media_cols'],
321
          'maxRows' => isset($gallery_settings['cdm_dataportal_media_maxRows']) ? isset($gallery_settings['cdm_dataportal_media_maxRows']) : null,
322
          'captionElements' => $captionElements,
323
          'mediaLinkType' => 'LIGHTBOX',
324
          'alternativeMediaUri' => NULL,
325
          'galleryLinkUri' => NULL,
326
        ));
327
      }
328
      //here we should use the data we already have
329
      $label_html = cdm_dynabox(
330
        $specimenOrObservation->uuid,
331
        $type_label . $specimenOrObservation->titleCache,
332
        $derived_unit_ws_request,
333
        'cdm_specimen_or_observation',
334
        'Click for details',
335
        array('div', 'div'),
336
        array(),
337
        null, // $content_element_selector
338
        'function(){ jQuery(\'#media_gallery_' . $gallery_name . '\').hide(); }', // open_callback
339
        'function(){ jQuery(\'#media_gallery_' . $gallery_name . '\').show(); }' // close_callback
340
      );
341

  
342
      // --- Render associated media.
343
      $gallery_html = '';
344
      if (count($mediaList) > 0) {
345
        $gallery_settings = getGallerySettings(CDM_DATAPORTAL_SPECIMEN_GALLERY_NAME);
346
        $captionElements = array(
347
          '#uri' => t('open media'),
356 348
        );
349

  
350
        $gallery_html = compose_cdm_media_gallerie(array(
351
          'mediaList' => $mediaList,
352
          'galleryName' => $gallery_name,
353
          'maxExtend' => $gallery_settings['cdm_dataportal_media_maxextend'],
354
          'cols' => $gallery_settings['cdm_dataportal_media_cols'],
355
          'maxRows' => isset($gallery_settings['cdm_dataportal_media_maxRows']) ? isset($gallery_settings['cdm_dataportal_media_maxRows']) : null,
356
          'captionElements' => $captionElements,
357
          'mediaLinkType' => 'LIGHTBOX',
358
          'alternativeMediaUri' => NULL,
359
          'galleryLinkUri' => NULL,
360
        ));
361
      }
362

  
363
      $specimen_table['#rows'][] = array(
364
        // An array of table rows. Every row is an array of cells, or an associative array
365
        'data' => array(
366
          // Each cell can be either a string or an associative array
367
          $label_html . $gallery_html
368
        ),
369
        'class' => array(
370
          'descriptionElement',
371
          'descriptionElement_IndividualsAssociation'
372
        ),
373
      );
357 374
    }
375
  }
358 376

  
359
    RenderHints::popFromRenderStack();
360
    return $render_array;
377
  return $specimen_table;
361 378
}
362 379

  
363 380
/**
......
879 896
    if (isset($representationPart->uri)) {
880 897
      $profile_image = cdm_media_gallerie_image($representationPart, $taxon_profile_image_settings['maxextend'], FALSE, $attributes);
881 898
      // NOTE: style="width:${maxextend}px' is needed for IE8 !!!
882
      $render_array['taxon_profile_image'] = markup_to_render_array('<div id="taxonProfileImage" style="width:' . $taxon_profile_image_settings['maxextend'] . 'px">' . $profile_image . '</div>',
899
      $max_extend_with = $taxon_profile_image_settings['maxextend'] . 'px';
900
      $render_array['taxon_profile_image'] = markup_to_render_array('<div id="taxonProfileImage" style="width:' . $max_extend_with . '>' . $profile_image . '</div>',
883 901
        -101);
884 902
    }
885 903
  }

Also available in: Unified diff