mediamosa_browse_asset_form

Versions
mediamosa-21
mediamosa_browse_asset_form($form, &$form_state, $asset_id)

Add+Edit form

Code

sites/all/modules/mediamosa/maintenance/browse/mediamosa_maintenance_browse_asset.inc, line 733

<?php
function mediamosa_browse_asset_form($form, &$form_state, $asset_id) {
  // If we are set as Home page, the breadcrumb isnt set, lets do it here.
  $breadcrumb = array();
  $breadcrumb[] = l(t('Home'), NULL);
  $breadcrumb[] = l(t('Administer'), 'admin');
  $breadcrumb[] = l(t('MediaMosa'), 'admin/mediamosa');
  $breadcrumb[] = l(t('Browse'), 'admin/mediamosa/browse');
  $breadcrumb[] = l(t('Asset browser'), 'admin/mediamosa/browse/asset');
  drupal_set_breadcrumb($breadcrumb);

  // Get the asset REST call.
  $url = strtr('asset/@asset_id', array('@asset_id' => $asset_id));

  // Do REST call.
  $result_asset = mediamosa_response_connector::static_do_restcall_drupal('asset/' . $asset_id, 'GET', array());

  if (!mediamosa_response_connector::static_result_okay($result_asset)) {
    drupal_set_message(t('Asset with ID @asset_id does not exists.', array('@asset_id' => $asset_id)), 'warning');
    drupal_goto('admin/mediamosa/browse/asset');
  }

  $asset = reset($result_asset['items']);

  // Get all metadata properties for this app.
  $metadatas = mediamosa_asset_metadata_property::get_metadata_properties_full();

  // Collect the metadata groups.
  $metadata_groups = array();
  foreach ($metadatas as $name => $metadata) {
    $metadata_groups[$metadata['propgroup_name']] = $metadata['propgroup_id'];
  }

  // Empty form.
  $form = array();

  // Store asset_id.
  $form['asset_id'] = array(
    '#type' => 'hidden',
    '#value' => $asset_id,
  );

  // Build form for editing the metdata.
  foreach ($metadata_groups as $group_name => $group_id) {
    if (empty($asset[$group_name])) {
      continue;
    }

    // Add fieldset for metadata group.
    $name_fixed = _mediamosa_browse_fix_metadata_name($group_name);

    // Walk through the properties.
    foreach ($asset[$group_name] as $metadata_name => $metadata_values) {
      if (empty($metadata_values)) {
        continue;
      }

      // Set fieldset if not already.
      if (!isset($form[$group_name])) {
        $form[$group_name] = array(
          '#type' => 'fieldset',
          '#title' => t($name_fixed),
          '#collapsible' => TRUE,
          '#description' => t('Clear an item to delete it from the asset\'s @name_fixed metadata.', array('@name_fixed' => $name_fixed))
        );
      }

      foreach ($metadata_values as $metadata_value) {
        // Make the edit box.
        // rpl_/old_ in front of the name makes sure we dont conflict with other
        // names in the form.
        $form[$group_name]['rpl_' . $metadata_name] = array(
          '#type' => drupal_strlen($metadata_value) > 80 ? 'textarea' : 'textfield',
          '#default_value' => $metadata_value,
          '#title' => t(_mediamosa_browse_fix_metadata_name($metadata_name)),
        );
      }
    }
  }

  $options_metadata_groups = array('' => '');

  ksort($metadata_groups);
  ksort($metadatas);
  foreach ($metadata_groups as $metadata_group_name => $metadata_group_id) {
    foreach ($metadatas as $name => $metadata) {
      if ($metadata['propgroup_id'] != $metadata_group_id) {
        continue;
      }

      $options_metadata_groups[_mediamosa_browse_fix_metadata_name($metadata_group_name)][$metadata['propdef_name']] = _mediamosa_browse_fix_metadata_name($metadata['propdef_name']);
    }
  }


  $form['add'] = array(
    '#type' => 'fieldset',
    '#title' => t('New metadata field'),
    '#collapsible' => TRUE,
    '#description' => t('Add a new metadata field to the asset\'s metadata.')
  );

  $form['add']['new_metadata_property'] = array(
    '#type' => 'select',
    '#title' => t('Metadata field'),
    '#description' => t('Enter value for the selected metadata field.'),
    '#options' => $options_metadata_groups,
  );

  $form['add']['new_metadata_value'] = array(
    '#type' => 'textarea',
    '#title' => t('Value'),
    '#description' => t('Enter value for the selected metadata field.'),
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit changes'),
  );

  return $form;
}
?>