/[drupal]/contributions/modules/filefield_image/filefield_imagecache.module
ViewVC logotype

Contents of /contributions/modules/filefield_image/filefield_imagecache.module

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (show annotations) (download) (as text)
Thu Jul 17 15:51:35 2008 UTC (16 months, 1 week ago) by jpetso
Branch: MAIN
CVS Tags: DRUPAL-6--1-0, HEAD
Changes since 1.2: +3 -2 lines
File MIME type: text/x-php
Allow jpegs from IE. Who would have guessed which browser delivers
wrong, nonstandard mimetypes? Bingo.
1 <?php
2 // $Id: filefield_imagecache.module,v 1.2 2008/06/30 21:28:29 jpetso Exp $
3 /**
4 * @file
5 * FileField ImageCache: ImageCache support for images in CCK file fields.
6 */
7
8 /**
9 * Implementation of hook_theme().
10 */
11 function filefield_imagecache_theme() {
12 return array(
13 'filefield_imagecache_file_formatter_default' => array(
14 'arguments' => array(
15 'file' => NULL, 'field' => NULL, 'file_formatter_settings' => NULL,
16 ),
17 ),
18 );
19 }
20
21 /**
22 * Implementation of filefield's hook_file_formatter_info().
23 */
24 function filefield_imagecache_file_formatter_info() {
25 $module_path = drupal_get_path('module', 'filefield_imagecache');
26
27 return array(
28 'default' => array(
29 'suitability callback' => 'filefield_imagecache_formatter_handles_file',
30 'css' => array($module_path .'/filefield_image.css'),
31 'title' => t('Images (transformed with ImageCache)'),
32 'description' => t('Displays image files after piping them through ImageCache presets. Which means you can have scaled, cropped or otherwise transformed images with this formatter.'),
33 ),
34 );
35 }
36
37 function filefield_imagecache_file_formatter_settings_default($op, $file_formatter_settings = NULL) {
38 switch ($op) {
39 case 'form':
40 $form = array();
41 $presets = imagecache_presets();
42 $preset_options = array();
43
44 $form['div_begin'] = array(
45 '#type' => 'markup',
46 '#value' => '<div class="filefield-imagecache-formatter-settings">',
47 );
48
49 foreach ($presets as $preset) {
50 $preset_options[$preset['presetname']] = $preset['presetname'];
51 }
52 $form['preset'] = array(
53 '#type' => 'select',
54 '#title' => t('Preset'),
55 '#description' => t('Choose the ImageCache preset that should be applied to images.'),
56 '#options' => $preset_options,
57 '#default_value' => isset($file_formatter_settings['preset'])
58 ? $file_formatter_settings['preset']
59 : reset($preset_options), // first element
60 '#prefix' => '<div class="filefield-imagecache-formatter-preset">',
61 '#suffix' => '</div>',
62 );
63
64 $form['style'] = array(
65 '#type' => 'select',
66 '#title' => t('Display as'),
67 '#description' => t('How the transformed image should appear.'),
68 '#options' => array(
69 'default' => t('Transformed image'),
70 'linked' => t('Transformed image linked to node'),
71 'imagelink' => t('Transformed image linked to original image'),
72 'path' => t('File path of transformed image'),
73 'url' => t('URL of transformed image'),
74 ),
75 '#default_value' => isset($file_formatter_settings['style'])
76 ? $file_formatter_settings['style']
77 : 'default',
78 '#prefix' => '<div class="filefield-imagecache-formatter-style">',
79 '#suffix' => '</div>',
80 );
81
82 $form['div_end'] = array(
83 '#type' => 'markup',
84 '#value' => '</div>',
85 );
86 return $form;
87 }
88 }
89
90 /**
91 * Suitability callback the image widget and formatter.
92 * Handles the three web mimetypes: jpeg, png and gif.
93 */
94 function filefield_imagecache_formatter_handles_file($file, $field) {
95 return in_array($file->filemime, array(
96 'image/jpeg', 'image/png', 'image/gif', // proper mimetypes
97 'image/jpg', 'image/pjpeg', // IE nonstandard mimetypes, wtf?
98 ));
99 }
100
101 /**
102 * Theme function for the imagecached single image file formatter.
103 */
104 function theme_filefield_imagecache_file_formatter_default($file, $field, $file_formatter_settings) {
105 $presetname = $file_formatter_settings['preset'];
106 $preset = imagecache_preset_by_name($presetname);
107
108 if (empty($preset)) {
109 return '<!-- imagecache formatter preset ('. $presetname .') not found! -->';
110 }
111 $style = $file_formatter_settings['style'];
112 $classes = implode(' ', array(
113 'filefield-imagecache',
114 'filefield-imagecache-'. $presetname,
115 'filefield-imagecache-'. $style,
116 'filefield-imagecache-'. $presetname .'-'. $style,
117 ));
118
119 $description = empty($file->description) ? $file->filename : $file->description;
120 $title = empty($file->title) ? $description : $file->title;
121
122 switch ($style) {
123 case 'linked':
124 // We do have a node id because filefield merges $element['#item'].
125 $imagetag = theme('imagecache', $presetname, $file->filepath, $description, $title);
126 return l($imagetag, 'node/'. $file->nid,
127 array('attributes' => array('class' => $classes), 'html' => TRUE));
128
129 case 'imagelink':
130 $original_image_url = file_create_url($file->filepath);
131 $imagetag = theme('imagecache', $presetname, $file->filepath, $description, $title);
132 return l($imagetag, $original_image_url,
133 array('attributes' => array('class' => $classes), 'html' => TRUE));
134
135 case 'url':
136 return imagecache_create_url($presetname, $file->filepath);
137
138 case 'path':
139 return imagecache_create_path($presetname, $file->filepath);
140
141 default:
142 return theme('imagecache', $presetname, $file->filepath, $description, $title);
143 }
144 }

  ViewVC Help
Powered by ViewVC 1.1.2