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 -p -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 15 Oct 2009 19:07:02 -0000 @@ -11,14 +11,12 @@ */ ?>
- - - -
- - + $formatter): ?> +
Index: filefield_insert.js =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/filefield_insert/filefield_insert.js,v retrieving revision 1.5 diff -u -p -r1.5 filefield_insert.js --- filefield_insert.js 15 Jun 2009 16:18:36 -0000 1.5 +++ filefield_insert.js 15 Oct 2009 19:07:03 -0000 @@ -37,81 +37,17 @@ Drupal.behaviors.fileFieldInsert = funct 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.5 diff -u -p -r1.5 filefield_insert.module --- filefield_insert.module 30 Jun 2009 22:13:22 -0000 1.5 +++ filefield_insert.module 15 Oct 2009 19:07:03 -0000 @@ -28,16 +28,6 @@ function filefield_insert_theme() { '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 @@ function filefield_insert_process($eleme 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 @@ function filefield_insert_process($eleme '#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 @@ function filefield_insert_process($eleme '#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 @@ function filefield_insert_widget_form($f 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 @@ function filefield_insert_widget_form($f } } - $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 Image Resize Filter module.'), - ); - return $form; } @@ -230,21 +189,18 @@ function filefield_insert_widget_form_su $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 @@ function filefield_insert_get_settings($ 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,21 @@ function filefield_insert_set_settings($ } /** - * 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']['height'])) { - $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())); } } +