You are here

function imageeditor_process_element in Image Editor 6

Process function for pixlr-enabled fields.

1 string reference to 'imageeditor_process_element'
imageeditor_elements in ./imageeditor.module
Implementation of hook_elements().

File

./imageeditor.module, line 321
Allows online editing of images using different image editing services.

Code

function imageeditor_process_element($element) {
  global $user;

  // Bail out of imageeditor if user doesn't have permission to use it OR it is not enabled on this field.
  if (!user_access('use imageeditor')) {
    return $element;
  }
  $field = content_fields($element['#field_name'], $element['#type_name']);
  if (!imageeditor_enabled($field['widget'])) {
    return $element;
  }
  static $conf_added;
  if (empty($conf_added)) {
    $conf_added['imageeditor'] = FALSE;
    foreach (imageeditor_editors() as $codename => $editor) {
      $conf_added[$codename] = FALSE;
    }
    foreach (imageeditor_uploaders() as $codename => $uploader) {
      $conf_added[$codename] = FALSE;
    }
  }
  if (!array_key_exists($element['#field_name'], $conf_added)) {
    $conf_added[$element['#field_name']] = FALSE;
  }
  $conf_array = array();
  $conf_script = '';

  //base settings
  if (!$conf_added['imageeditor']) {
    $conf_added['imageeditor'] = TRUE;
    $path = drupal_get_path('module', 'imageeditor');
    drupal_add_js($path . '/js/imageeditor.js');
    drupal_add_css($path . '/imageeditor.css');
  }

  //aviary_feather settings
  if (!$conf_added['aviary_feather'] && $field['widget']['aviary_feather_enabled']) {
    $conf_added['aviary_feather'] = TRUE;
    $conf_script .= 'Feather_APIKey = \'' . variable_get('imageeditor_aviary_api_key', '') . '\';';
    $conf_script .= 'Feather_OpenType = \'lightbox\';';
    $conf_script .= 'Feather_EditOptions = \'all\';';
    $conf_script .= 'Feather_Theme = \'bluesky\';';
    $conf_script .= 'Feather_MaxSize = 600;';
    $conf_script .= 'document.write(unescape("%3Cscript src=\'http://feather.aviary.com/js/feather.js\' type=\'text/javascript\'%3E%3C/script%3E"));';
  }

  //editors settings
  foreach (imageeditor_editors() as $codename => $editor) {
    if (!$conf_added[$codename] && $field['widget'][$codename . '_enabled']) {
      $conf_added[$codename] = TRUE;
      if (array_key_exists('launch_type', $editor)) {
        $conf_array[$codename]['launch_type'] = $editor['launch_type'];
      }
      if (array_key_exists('image_url_param', $editor)) {
        $conf_array[$codename]['image_url_param'] = $editor['image_url_param'];
      }
      if (array_key_exists('save_url_param', $editor)) {
        $conf_array[$codename]['save_url_param'] = $editor['save_url_param'];
      }
      if (array_key_exists('save_url_default', $editor)) {
        $conf_array[$codename]['save_url_default'] = $editor['save_url_default'];
      }
      if (array_key_exists('options', $editor)) {
        $conf_array[$codename]['options'] = $editor['options'];
      }
      if (array_key_exists('lang_map', $editor)) {
        $conf_array[$codename]['options'][$editor['lang_option']] = $user->language ? $editor['lang_map'][$user->language] : $editor['lang_default'];
      }
      if (array_key_exists('include_js', $editor)) {
        drupal_add_js($editor['include_js']);
      }
    }
  }

  //uploaders settings
  foreach (imageeditor_uploaders() as $codename => $uploader) {
    if (!$conf_added[$codename] && $field['widget'][$codename . '_enabled']) {
      $conf_added[$codename] = TRUE;
      $conf_array[$codename] = array(
        'upload_url' => url('imageeditor/upload/' . $codename, array(
          'absolute' => TRUE,
        )),
      );
    }
  }

  //field specific settings
  if (!$conf_added[$element['#field_name']]) {
    $conf_added[$element['#field_name']] = TRUE;
    $conf_array[$element['#field_name']] = array(
      'imageeditor_icons_position' => $field['widget']['imageeditor_icons_position'],
      'imageeditor_replace' => $field['widget']['imageeditor_replace'],
    );
  }

  //field item specific settings
  if ($element['fid']['#value']) {
    $element['preview']['#value'] .= theme('imageeditor_widget', 'existing', $field['widget'], $element['#field_name'], $element['#delta'], $element['#value']['filepath']);
  }
  drupal_add_js(array(
    'imageeditor' => $conf_array,
  ), 'setting');
  drupal_add_js($conf_script, 'inline');
  return $element;
}