image_desaturate_formatter.module in Image desaturate formatter 7
Same filename and directory in other branches
Code for the Image Desaturate Formatter module.
File
image_desaturate_formatter.moduleView source
<?php
/**
* @file
* Code for the Image Desaturate Formatter module.
*/
/**
* Implements hook_theme().
*/
function image_desaturate_formatter_theme() {
return array(
'image_desaturate_formatter' => array(
'variables' => array(
'item' => NULL,
'image_style' => NULL,
'image_style_desaturate' => NULL,
'path' => NULL,
'default_style' => 'desaturate',
),
),
);
}
/**
* Implements hook_field_formatter_info().
*/
function image_desaturate_formatter_field_formatter_info() {
return array(
'imagefield_desaturate' => array(
'label' => t('Image desaturate'),
'field types' => array(
'image',
),
'settings' => array(
'image_style' => '',
'image_link' => '',
'default_style' => 'desaturate',
),
),
);
}
/**
* Implements hook_fiel_formatter_settings().
*/
function image_desaturate_formatter_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$image_styles = image_style_options(FALSE);
$element['image_style'] = array(
'#title' => t('Image style'),
'#type' => 'select',
'#default_value' => $settings['image_style'],
'#empty_option' => t('None (original image)'),
'#options' => $image_styles,
);
$link_types = array(
'content' => t('Content'),
'file' => t('File'),
);
$element['image_link'] = array(
'#title' => t('Link image to'),
'#type' => 'select',
'#default_value' => $settings['image_link'],
'#empty_option' => t('Nothing'),
'#options' => $link_types,
);
$element['default_style'] = array(
'#title' => t('Default image style'),
'#type' => 'select',
'#options' => array(
'desaturate' => t('Desaturate'),
'default' => t('Default'),
),
'#default_value' => $settings['default_style'],
);
return $element;
}
/**
* Implements hook_field_formatter_summary().
*/
function image_desaturate_formatter_field_formatter_settings_summary($field, $instance, $view_mode) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$summary = array();
$image_styles = image_style_options(FALSE);
// Unset possible 'No defined styles' option.
unset($image_styles['']);
// Styles could be lost because of enabled/disabled modules that defines
// their styles in code.
if (isset($image_styles[$settings['image_style']])) {
$summary[] = t('Image style: @style', array(
'@style' => $image_styles[$settings['image_style']],
));
}
else {
$summary[] = t('Original image');
}
$link_types = array(
'content' => t('Linked to content'),
'file' => t('Linked to file'),
);
// Display this setting only if image is linked.
if (isset($link_types[$settings['image_link']])) {
$summary[] = $link_types[$settings['image_link']];
}
$default_style = array(
'default' => t('Default image style'),
'desaturate' => t('Desaturate image style'),
);
if (isset($default_style[$settings['default_style']])) {
$summary[] = $default_style[$settings['default_style']];
}
return implode('<br />', $summary);
}
/**
* Implements hook_field_formatter_view().
*/
function image_desaturate_formatter_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$element = array();
// Check if exists the desaturae image style related to the selected one.
if (!image_style_load($display['settings']['image_style'] . '-desaturate')) {
$normal_style = image_style_load($display['settings']['image_style']);
$new_style = image_style_save(array(
'name' => $display['settings']['image_style'] . '-desaturate',
));
foreach ($normal_style['effects'] as $effect) {
$new_effect = array(
'name' => $effect['name'],
'data' => $effect['data'],
'isid' => $new_style['isid'],
'weight' => $effect['weight'],
);
image_effect_save($new_effect);
}
$new_effect = array(
'name' => 'image_desaturate',
'data' => array(),
'isid' => $new_style['isid'],
'weight' => 1000,
);
image_effect_save($new_effect);
}
// Check if the formatter involves a link.
if ($display['settings']['image_link'] == 'content') {
$uri = entity_uri($entity_type, $entity);
}
elseif ($display['settings']['image_link'] == 'file') {
$link_file = TRUE;
}
foreach ($items as $delta => $item) {
if (isset($link_file)) {
$uri = array(
'path' => file_create_url($item['uri']),
'options' => array(),
);
}
$element[$delta] = array(
'#theme' => 'image_desaturate_formatter',
'#item' => $item,
'#image_style' => $display['settings']['image_style'],
'#image_style_desaturate' => $display['settings']['image_style'] . '-desaturate',
'#path' => isset($uri) ? $uri : '',
'#default_style' => $display['settings']['default_style'],
);
}
return $element;
}
/**
* Implements theme_image_desaturate
*/
function theme_image_desaturate_formatter($variables) {
drupal_add_library('image_desaturate_formatter', 'image-desaturate-formatter');
$variables['item']['attributes'] = array(
'class' => 'image-default',
);
$image_color = theme('image_formatter', array(
'item' => $variables['item'],
'image_style' => $variables['default_style'] == 'default' ? $variables['image_style'] : $variables['image_style_desaturate'],
'path' => $variables['path'],
));
$variables['item']['attributes'] = array(
'class' => 'image-hover',
);
$image_desaturate = theme('image_formatter', array(
'item' => $variables['item'],
'image_style' => $variables['default_style'] == 'desaturate' ? $variables['image_style'] : $variables['image_style_desaturate'],
'path' => $variables['path'],
));
$dimensions = array(
'width' => $variables['item']['width'],
'height' => $variables['item']['height'],
);
image_style_transform_dimensions($variables['image_style'], $dimensions);
return '<div class="image-desaturate-formatter" style="width:' . $dimensions['width'] . 'px;height:' . $dimensions['height'] . 'px;">' . $image_color . $image_desaturate . '</div>';
}
/**
* Implements hook_library().
*/
function image_desaturate_formatter_library() {
$libraries['image-desaturate-formatter'] = array(
'title' => 'Image desaturate Formatter',
'version' => '1',
'css' => array(
drupal_get_path('module', 'image_desaturate_formatter') . '/library/image_desaturate_formatter.css' => array(),
),
);
return $libraries;
}
Functions
Name | Description |
---|---|
image_desaturate_formatter_field_formatter_info | Implements hook_field_formatter_info(). |
image_desaturate_formatter_field_formatter_settings_form | Implements hook_fiel_formatter_settings(). |
image_desaturate_formatter_field_formatter_settings_summary | Implements hook_field_formatter_summary(). |
image_desaturate_formatter_field_formatter_view | Implements hook_field_formatter_view(). |
image_desaturate_formatter_library | Implements hook_library(). |
image_desaturate_formatter_theme | Implements hook_theme(). |
theme_image_desaturate_formatter | Implements theme_image_desaturate |