? LICENSE.txt
Index: filefield-insert-widget.tpl.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/filefield_insert/filefield-insert-widget.tpl.php,v
retrieving revision 1.2
diff -u -r1.2 filefield-insert-widget.tpl.php
--- filefield-insert-widget.tpl.php	30 Apr 2009 23:10:04 -0000	1.2
+++ filefield-insert-widget.tpl.php	17 Jun 2009 18:56:53 -0000
@@ -11,14 +11,12 @@
  */
 ?>
 <div class="filefield-insert form-item container-inline">
-
-  <?php /* Presets are available for image fields if ImageCache is installed. */ ?>
-  <?php if ($image_presets): ?>
-    <div class="filefield-insert-preset">
-      <label class="filefield-insert-preset"><?php print t('Image size') ?>:</label>
-      <select class="filefield-insert-preset">
-        <?php foreach ($image_presets as $value => $preset): ?>
-          <option value="<?php print $value ?>"><?php print $preset ?></option>
+  <?php if ($image_formatters): ?>
+    <div class="filefield-insert-formatter">
+      <label class="filefield-insert-formatter"><?php print t('Image size') ?>:</label>
+      <select class="filefield-insert-formatter">
+        <?php foreach ($image_formatters as $value => $formatter): ?>
+          <option value="<?php print $value ?>"><?php print $formatter ?></option>
         <?php endforeach; ?>
       </select>
     </div>
Index: filefield_insert.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/filefield_insert/filefield_insert.js,v
retrieving revision 1.5
diff -u -r1.5 filefield_insert.js
--- filefield_insert.js	15 Jun 2009 16:18:36 -0000	1.5
+++ filefield_insert.js	18 Jun 2009 19:29:50 -0000
@@ -37,81 +37,17 @@
 
   function fileFieldInsert() {
     var $fileFieldElement = $(this).parents('div.filefield-element:first');
-    var $description = $fileFieldElement.find('input[name$="[description]"]:first');
+    var formatter = $fileFieldElement.find('select.filefield-insert-formatter:first').val();
+    var formatter_output = $fileFieldElement.find('#'+formatter).val();
     var $alt = $fileFieldElement.find('input[name$="[alt]"]:first');
     var $title = $fileFieldElement.find('input[name$="[title]"]:first, textarea[name$="[title]"]:first');
-    var $preset = $fileFieldElement.find('select.filefield-insert-preset:first');
-
-    var widget = $fileFieldElement.find('input.filefield-insert-widget').val();
-    var url = $fileFieldElement.find('input.filefield-insert-url').val();
-    var width = parseInt($fileFieldElement.find('input.filefield-insert-width').val());
-    var height = parseInt($fileFieldElement.find('input.filefield-insert-height').val());
-    var maxWidth = parseInt($fileFieldElement.find('input.filefield-insert-max-width').val());
-    var extension = url.replace(/.*?\.([a-z0-9]+)$/i, '$1').toLowerCase();
-    var filename = url.replace(/.*?\/([^\/]+)$/i, '$1');
-    var description = $description.size() ? $description.val() : '';
+    
     var alt = $alt.size() ? $alt.val() : '';
     var title = $title.size() ? $title.val() : '';
-    var preset = $preset.size() ? $preset.val() : '';
-    var fileDir = Drupal.settings.fileFieldInsert.fileDirectoryPath;
-    var content = '';
-
-    // Update the URL if using a preset.
-    if (preset) {
-      var pieces = preset.split('|');
-      url = url.replace(fileDir + '/', fileDir + '/imagecache/' + pieces[0] + '/');
-      // If the ImageCache preset specified both height and width.
-      if (pieces[1] != '0' && pieces[2] != '0') {
-        width = parseInt(pieces[1]);
-        height = parseInt(pieces[2]);
-      }
-      // If just the width, calculate the height.
-      else if (pieces[1] != '0') {
-        var newWidth = parseInt(pieces[1]);
-        var newRatio = newWidth / width;
-        width = newWidth;
-        height = Math.round(height * newRatio);
-      }
-      // And if just the height, calculate the width.
-      else if (pieces[2] != '0') {
-        var newHeight = parseInt(pieces[2]);
-        var newRatio = newHeight / height;
-        height = newHeight;
-        width = Math.round(width * newRatio);
-      }
-    }
-
-    // Check for a maximum dimension and scale down the width if necessary.
-    // This is intended for use with Image Resize Filter.
-    if (width && maxWidth && width > maxWidth) {
-      var insertRatio = maxWidth / width;
-      width = maxWidth;
-      height = Math.round(height * insertRatio);
-    }
-
-    // Populate a insertion template.
-    if (alt || title || !Drupal.settings.fileFieldInsert.templates.fileImage) {
-      content = Drupal.settings.fileFieldInsert.templates.image;
-    }
-    else if (extension == 'png' || extension == 'jpg' || extension == 'jpeg' || extension == 'gif') {
-      content = Drupal.settings.fileFieldInsert.templates.fileImage;
-    }
-    else {
-      content = Drupal.settings.fileFieldInsert.templates.file;
-
-      // Since the link needs a title for this tmeplate, ff description is
-      // empty, use the file name.
-      description = description ? description : filename;
-    }
 
-    // Poor man's escaping of invalid characters in the URL.
-    url = encodeURI(url).replace(/([#$*(),?])/g, function(match) { return escape(match) });
+    var content = '';
 
-    // Update replacements.
-    content = $.trim(content).replace(/__url__/g, url).replace(/__extension__/g, extension).replace(/__width__/g, width).replace(/__height__/g, height).replace(/__description__/g, description);
-    if (Drupal.settings.fileFieldInsert.templates.image) {
-      content = content.replace(/__alt__/g, alt).replace(/__title__/g, title);
-    }
+    content = formatter_output.replace(/__alt__/g, alt).replace(/__title__/g, title);
 
     // Always work in normal text areas that currently have focus.
     if (fileFieldInsertTextarea && fileFieldInsertTextarea.fileFieldInsertHasFocus) {
Index: filefield_insert.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/filefield_insert/filefield_insert.module,v
retrieving revision 1.4
diff -u -r1.4 filefield_insert.module
--- filefield_insert.module	10 May 2009 19:50:58 -0000	1.4
+++ filefield_insert.module	18 Jun 2009 19:27:38 -0000
@@ -28,16 +28,6 @@
       'arguments' => array('field' => NULL),
       'template' => 'filefield-insert-widget',
     ),
-    'filefield_insert_image' => array(
-      'arguments' => array('field' => NULL),
-      'template' => 'filefield-insert-image',
-      'preprocess functions' => array('template_preprocess_filefield_insert'),
-    ),
-    'filefield_insert_file' => array(
-      'arguments' => array('field' => NULL),
-      'template' => 'filefield-insert-file',
-      'preprocess functions' => array('template_preprocess_filefield_insert'),
-    ),
   );
 }
 
@@ -65,23 +55,7 @@
     drupal_add_js(array('fileFieldInsert' => $settings), 'setting');
     drupal_add_js(drupal_get_path('module', 'filefield_insert') . '/filefield_insert.js');
   }
-
-  // Add the templates to be used for image insertion once per field type.
-  if (!isset($js_added['widgets'][$field['widget']['module']])) {
-    $js_added['widgets'][$field['widget']['module']] = TRUE;
-    if ($field['widget']['module'] == 'imagefield') {
-      $settings = array('image' => theme('filefield_insert_image', $field));
-      drupal_add_js(array('fileFieldInsert' => array('templates' => $settings)), 'setting');
-    }
-    elseif ($field['widget']['module'] == 'filefield') {
-      $settings = array(
-        'fileImage' => theme('filefield_insert_image', $field),
-        'file' => theme('filefield_insert_file', $field),
-      );
-      drupal_add_js(array('fileFieldInsert' => array('templates' => $settings)), 'setting');
-    }
-  }
-
+  
   // Add image insertion widget per-field instance.
   if (!isset($js_added['fields'][$field['field_name']])) {
     $js_added['fields'][$field['field_name']] = TRUE;
@@ -102,14 +76,27 @@
       '#attributes' => array('class' => 'filefield-insert-location'),
       '#weight' => -1,
     );
+    $field_types = _content_field_types();
+    $field_type = $field_types['filefield'];
 
-    $element['filefield_insert_url'] = array(
-      '#id' => $element['#id'] . '-insert-url',
-      '#name' => $element['#name'] . '[insert_url]',
-      '#type' => 'hidden',
-      '#value'=> preg_replace('/^' . preg_quote($GLOBALS['base_url'] .'/', '/') . '/', base_path(), file_create_url($item['filepath'])),
-      '#attributes' => array('class' => 'filefield-insert-url'),
-    );
+    $item['data']['alt'] = "__alt__";
+    $item['data']['title'] = "__title__";
+
+    foreach ($field_type['formatters'] as $formatter_name => $formatter_info) {
+      if (!in_array($formatter_name, $field['widget']['filefield_insert_formatters'])) {
+        continue;
+      }
+      $output = content_format($field, $item, $formatter_name);
+      $element[$formatter_name] = array(
+        '#id' => $formatter_name,
+        '#name' => $formatter_name,
+        '#type' => 'hidden',
+        '#value'=> $output,
+        '#attributes' => array('class' => 'filefield-insert-formatter'),
+      );
+
+    }
+    
     $element['filefield_insert_widget'] = array(
       '#id' => $element['#id'] . '-insert-widget',
       '#name' => $element['#name'] . '[insert_widget]',
@@ -117,53 +104,34 @@
       '#value'=> $field['field_name'],
       '#attributes' => array('class' => 'filefield-insert-widget'),
     );
-
-    // Width and height properties used for image insertion.
-    $image_info = image_get_info($item['filepath']);
-    $element['filefield_insert_max_width'] = array(
-      '#id' => $element['#id'] . '-insert-max-width',
-      '#name' => $element['#name'] . '[insert_max_width]',
-      '#type' => 'hidden',
-      '#value'=> empty($field['widget']['filefield_insert_width']) ? 0 : $field['widget']['filefield_insert_width'],
-      '#attributes' => array('class' => 'filefield-insert-max-width'),
-    );
-    $element['filefield_insert_width'] = array(
-      '#id' => $element['#id'] . '-insert-width',
-      '#name' => $element['#name'] . '[insert_width]',
-      '#type' => 'hidden',
-      '#value'=> $image_info ? $image_info['width'] : 0,
-      '#attributes' => array('class' => 'filefield-insert-width'),
-    );
-    $element['filefield_insert_height'] = array(
-      '#id' => $element['#id'] . '-insert-height',
-      '#name' => $element['#name'] . '[insert_height]',
-      '#type' => 'hidden',
-      '#value'=> $image_info ? $image_info['height'] : 0,
-      '#attributes' => array('class' => 'filefield-insert-height'),
-    );
   }
 
   return $element;
 }
 
 /**
- * Get a list of ImageCache presets suitable for use as an #options array.
+ * Get a list of CCK formatters suitable for use as an #options array.
  */
-function filefield_insert_preset_options($preset_settings) {
-  $presets = imagecache_presets();
+function filefield_insert_formatter_options($formatter_settings) {
+  // Gather type information.
+  $field_types = _content_field_types();
+  $field_type = $field_types['filefield'];
+
+  // Formatters.
   $options = array(
     'options' => array(),
     'default' => array(),
   );
-  foreach ($presets as $preset) {
-    $options['options'][$preset['presetname']] = t($preset['presetname']);
-    if (in_array($preset['presetname'], $preset_settings)) {
-      $options['default'][] = $preset['presetname'];
+  foreach ($field_type['formatters'] as $formatter_name => $formatter_info) {
+    $options['options'][$formatter_name] = $formatter_info['label'];
+    if (in_array($formatter_name, $formatter_settings)) {
+      $options['default'][] = $formatter_name;
     }
   }
   return $options;
 }
 
+
 /**
  * Implementation of hook_form_alter() for content_field_edit_form.
  */
@@ -197,13 +165,13 @@
 
   if (module_exists('imagecache')) {
     if ($field['widget']['type'] == 'imagefield_widget') {
-      $options = filefield_insert_preset_options($field['widget']['filefield_insert_presets']);
-      $form['filefield_insert']['filefield_insert_presets'] = array(
-        '#title' => t('Enabled ImageCache presets'),
+      $formatter_options = filefield_insert_formatter_options($field['widget']['filefield_insert_formatters']);
+      $form['filefield_insert']['filefield_insert_formatters'] = array(
+        '#title' => t('Enabled content formatters'),
         '#type' => 'checkboxes',
-        '#options' => $options['options'],
-        '#default_value' => $options['default'],
-        '#description' => t('Select which ImageCache presets should be available when sending images to text areas. If no presets are selected, the option to use a preset is not displayed.'),
+        '#options' => $formatter_options['options'],
+        '#default_value' => $formatter_options['default'],
+        '#description' => t('Select which formatters should be available when sending the insertion text to the text area. If no formatters are selected, the option to use a formatter is not displayed.'),
       );
     }
     else {
@@ -211,15 +179,6 @@
     }
   }
 
-  $form['filefield_insert']['filefield_insert_width'] = array(
-    '#title' => t('Maximum image insert width'),
-    '#type' => 'textfield',
-    '#size' => 10,
-    '#field_suffix' => ' '. t('pixels'),
-    '#default_value' => empty($field['widget']['filefield_insert_width']) ? '' : $field['widget']['filefield_insert_width'],
-    '#description' => t('When inserting images, the height and width of images may be scaled down to fit within the specified width. Note that this does not resize the image, it only affects the HTML output. To resize images it is recommended to install the <a href="http://drupal.org/project/image_resize_filter">Image Resize Filter</a> module.'),
-  );
-
   return $form;
 }
 
@@ -230,21 +189,18 @@
   $field = content_fields($form_state['values']['field_name'], $form_state['values']['type_name']);
   $settings = array(
     'filefield_insert' => FALSE,
-    'filefield_insert_presets' => array(),
-    'filefield_insert_width' => '',
+    'filefield_insert_formatters' => array(),
   );
 
-  if (isset($form_state['values']['filefield_insert_presets'])) {
-    foreach ($form_state['values']['filefield_insert_presets'] as $preset => $enabled) {
+  if (isset($form_state['values']['filefield_insert_formatters'])) {
+    foreach ($form_state['values']['filefield_insert_formatters'] as $formatter => $enabled) {
       if ($enabled) {
-        $settings['filefield_insert_presets'][] = $preset;
+        $settings['filefield_insert_formatters'][] = $formatter;
       }
     }
   }
 
   $settings['filefield_insert'] = (bool) $form_state['values']['filefield_insert'];
-  $settings['filefield_insert_width'] = empty($form_state['values']['filefield_insert_width']) ? 0 : (int)$form_state['values']['filefield_insert_width'];
-
   filefield_insert_set_settings($field, $settings);
 }
 
@@ -261,8 +217,7 @@
 
   return array(
     'filefield_insert' => empty($settings['filefield_insert']) ? FALSE : $settings['filefield_insert'],
-    'filefield_insert_presets' => empty($settings['filefield_insert_presets']) ? array() : $settings['filefield_insert_presets'],
-    'filefield_insert_width' => empty($settings['filefield_insert_width']) ? '' : $settings['filefield_insert_width'],
+    'filefield_insert_formatters' => empty($settings['filefield_insert_formatters']) ? array() : $settings['filefield_insert_formatters'],
   );
 }
 
@@ -281,49 +236,20 @@
 }
 
 /**
- * Preprocess variables for the filefield-insert-*.tpl.php files.
- *
- * Right now our variables are simply place holders replaced by JavaScript.
- */
-function template_preprocess_filefield_insert(&$vars) {
-  $vars['url'] = '__url__';
-  $vars['description'] = '__description__';
-  $vars['alt'] = '__alt__';
-  $vars['title'] = '__title__';
-  $vars['extension'] = '__extension__';
-  $vars['height'] = '__height__';
-  $vars['width'] = '__width__';
-}
-
-/**
  * Preprocess variables for the filefield-insert-widget.tpl.php file.
  */
 function template_preprocess_filefield_insert_widget(&$vars) {
-  // Set up options for ImageCache presets.
-  $vars['image_presets'] = array();
+  // Set up options for Formatters.
+  $vars['image_formatters'] = array();
   if ($vars['field']['widget']['type'] == 'imagefield_widget' && module_exists('imagecache')) {
-    $presets = imagecache_presets();
-    foreach ($presets as $preset) {
-      if (!in_array($preset['presetname'], $vars['field']['widget']['filefield_insert_presets'])) {
+    $field_types = _content_field_types();
+    $field_type = $field_types['filefield'];
+    foreach ($field_type['formatters'] as $formatter_name => $formatter_info) {
+      if (!in_array($formatter_name, $vars['field']['widget']['filefield_insert_formatters'])) {
         continue;
       }
-
-      // Determine the final width/height.
-      $width = 0;
-      $height = 0;
-      foreach ($preset['actions'] as $action) {
-        if (isset($action['data']['width']) || isset($action['data']['width'])) {
-          $width = !empty($action['data']['width']) ? $action['data']['width'] : 0;
-          $height = !empty($action['data']['height']) ? $action['data']['height'] : 0;
-        }
-      }
-
-      $vars['image_presets'][$preset['presetname'] . '|' . $width . '|' . $height] = t($preset['presetname']);
+      $vars['image_formatters'][$formatter_name] = t($formatter_info['label']);
     }
-    $vars['image_presets'] = array_diff($vars['image_presets'], variable_get('filefield_insert_preset_exclude', array()));
-  }
-
-  if (!empty($vars['image_presets'])) {
-    $vars['image_presets'] = array_merge(array('' => t('Original')), $vars['image_presets']);
+    $vars['image_formatters'] = array_diff($vars['image_formatters'], variable_get('filefield_insert_formatter_exclude', array()));
   }
 }
