You are here

function imagepicker_form_alter in Image Picker 7

Same name and namespace in other branches
  1. 5.2 imagepicker.module \imagepicker_form_alter()
  2. 5 imagepicker.module \imagepicker_form_alter()
  3. 6.2 imagepicker.module \imagepicker_form_alter()

Implements hook_form_alter().

File

./imagepicker.module, line 758
@author Bob Hutchinson http://drupal.org/user/52366 @copyright GNU GPL

Code

function imagepicker_form_alter(&$form, &$form_state, $form_id) {
  global $user;
  if (user_access('use imagepicker')) {
    $weight = 1;
    $insert_type = '';

    // is this a node edit form
    if (!empty($form['#node_edit_form']) && preg_match('/node_form$/i', $form_id)) {

      // get the object
      $node = $form['#node'];

      #  $node_types = node_get_types('names');
      $node_types = node_type_get_names();

      // zxx issue. zxx stands for 'no language' but it might change....
      // we pick this up in theme_imagepicker which hands it to imagepicker_iframe.js
      $node_lang = imagepicker_variable_get('imagepicker_node_lang', '');
      $node_language = isset($node->language) ? $node->language : 'und';

      // issue 1470672
      $node_language = isset($node->body[$node_language]) ? $node_language : 'und';
      if (!$node_lang || $node_lang != $node_language) {
        imagepicker_variable_set('imagepicker_node_lang', $node_language);

        // don't know what the number is for, so hardwire it for now
        imagepicker_variable_set('imagepicker_node_pos', 0);
      }
      $node_type = in_array($node->type, imagepicker_variable_get('imagepicker_node_types_enabled', array_keys($node_types)), TRUE);
      if ($node_type) {
        $insert_type = 'node';
      }
    }
    elseif (module_exists('comment') && imagepicker_variable_get('imagepicker_comment_enabled', 0) && preg_match('/comment.*_form$/i', $form_id)) {
      $insert_type = 'comment';
    }
    elseif (($form_id == 'block_add_block_form' || $form_id == 'block_admin_configure') && imagepicker_variable_get('imagepicker_blocks_enabled', 0)) {
      $insert_type = 'block';
    }
    $width = imagepicker_variable_get('imagepicker_advanced_iframe_width', imagepicker_variable_get('imagepicker_advanced_iframe_width', "100%"), $user->uid);
    if (!preg_match("/%\$/", $width)) {
      $width .= 'px';
    }
    $height = imagepicker_variable_get('imagepicker_advanced_iframe_height', imagepicker_variable_get('imagepicker_advanced_iframe_height', 500), $user->uid);
    $border = imagepicker_variable_get('imagepicker_advanced_iframe_border', imagepicker_variable_get('imagepicker_advanced_iframe_border', "0"), $user->uid);
    if (imagepicker_get_colorbox_perms()) {
      $iurl = l('Run imagepicker', 'imagepicker', array(
        'query' => array(
          'width' => $width,
          'height' => $height,
          'iframe' => 'true',
        ),
        'attributes' => array(
          'class' => array(
            'colorbox-load',
          ),
        ),
      ));
    }
    else {
      $iurl = '<iframe id="imagepicker" style="width: ' . $width . '; height: ' . $height . 'px; border: ' . $border . ';" src="' . url('imagepicker') . '">Imagepicker requires iframe support.</iframe>';
    }
    $fselement = array(
      '#type' => 'fieldset',
      '#title' => t('Image picker'),
      '#collapsible' => 1,
      '#collapsed' => imagepicker_variable_get('imagepicker_advanced_collapsed', imagepicker_variable_get('imagepicker_advanced_collapsed', 0), $user->uid),
      '#weight' => $weight,
    );
    $mkelement = array(
      '#type' => 'markup',
      '#markup' => '<div id="imgp_tb">' . $iurl . '</div>',
    );
    if ($insert_type == 'node') {
      $form['body']['file_upload'] = $fselement;
      $form['body']['file_upload']['mpframe'] = $mkelement;
      $form['body']['#prefix'] = '<a name="body_hash"></a>' . (isset($form['body']['#prefix']) ? $form['body']['#prefix'] : '');
    }
    elseif ($insert_type == 'block') {
      $form['settings']['body_field']['file_upload'] = $fselement;
      $form['settings']['body_field']['file_upload']['mpframe'] = $mkelement;
      $form['settings']['body_field']['#prefix'] = '<a name="body_hash"></a>' . (isset($form['settings']['body_field']['#prefix']) ? $form['settings']['body_field']['#prefix'] : '');
    }
    elseif ($insert_type == 'comment') {
      $form['comment']['file_upload'] = $fselement;
      $form['comment']['file_upload']['mpframe'] = $mkelement;
      $form['comment']['#prefix'] = '<a name="body_hash"></a>' . (isset($form['comment']['#prefix']) ? $form['comment']['#prefix'] : '');
    }
  }
}