Commit bf37effc authored by webchick's avatar webchick
Browse files

Issue #2062573 by claudiu.cristea, tim.plunkett, Xano: Add method...

Issue #2062573 by claudiu.cristea, tim.plunkett, Xano: Add method defaultConfiguration() in ConfigurablePluginInterface.
parent 6b39a8ef
......@@ -12,6 +12,14 @@
*/
interface ConfigurableImageEffectInterface extends ImageEffectInterface {
/**
* Define the effect configuration defaults.
*
* @return array
* An associative array with defaults keyed by configuration names.
*/
public function getConfigurationDefaults();
/**
* Builds the part of the image effect form specific to this image effect.
*
......
......@@ -103,10 +103,17 @@ public function setConfiguration(array $configuration) {
'uuid' => '',
'weight' => '',
);
$this->configuration = $configuration['data'];
$this->configuration = $configuration['data'] + $this->getConfigurationDefaults();
$this->uuid = $configuration['uuid'];
$this->weight = $configuration['weight'];
return $this;
}
/**
* Fallback for non-configurable effects.
*/
public function getConfigurationDefaults() {
return array();
}
}
......@@ -26,11 +26,6 @@ class CropImageEffect extends ResizeImageEffect {
* {@inheritdoc}
*/
public function applyEffect(ImageInterface $image) {
// Set sane default values.
$this->configuration += array(
'anchor' => 'center-center',
);
list($x, $y) = explode('-', $this->configuration['anchor']);
$x = image_filter_keyword($x, $image->getWidth(), $this->configuration['width']);
$y = image_filter_keyword($y, $image->getHeight(), $this->configuration['height']);
......@@ -54,12 +49,16 @@ public function getSummary() {
/**
* {@inheritdoc}
*/
public function getForm() {
$this->configuration += array(
'width' => '',
'height' => '',
public function getConfigurationDefaults() {
return parent::getConfigurationDefaults() + array(
'anchor' => 'center-center',
);
}
/**
* {@inheritdoc}
*/
public function getForm() {
$form = parent::getForm();
$form['anchor'] = array(
'#type' => 'radios',
......
......@@ -54,6 +54,16 @@ public function getSummary() {
);
}
/**
* {@inheritdoc}
*/
public function getConfigurationDefaults() {
return array(
'width' => NULL,
'height' => NULL,
);
}
/**
* {@inheritdoc}
*/
......@@ -61,7 +71,7 @@ public function getForm() {
$form['width'] = array(
'#type' => 'number',
'#title' => t('Width'),
'#default_value' => isset($this->configuration['width']) ? $this->configuration['width'] : '',
'#default_value' => $this->configuration['width'],
'#field_suffix' => ' ' . t('pixels'),
'#required' => TRUE,
'#min' => 1,
......@@ -69,7 +79,7 @@ public function getForm() {
$form['height'] = array(
'#type' => 'number',
'#title' => t('Height'),
'#default_value' => isset($this->configuration['height']) ? $this->configuration['height'] : '',
'#default_value' => $this->configuration['height'],
'#field_suffix' => ' ' . t('pixels'),
'#required' => TRUE,
'#min' => 1,
......
......@@ -28,13 +28,6 @@ class RotateImageEffect extends ImageEffectBase implements ConfigurableImageEffe
* {@inheritdoc}
*/
public function applyEffect(ImageInterface $image) {
// Set sane default values.
$this->configuration += array(
'degrees' => 0,
'bgcolor' => NULL,
'random' => FALSE,
);
// Convert short #FFF syntax to full #FFFFFF syntax.
if (strlen($this->configuration['bgcolor']) == 4) {
$c = $this->configuration['bgcolor'];
......@@ -89,13 +82,24 @@ public function getSummary() {
);
}
/**
* {@inheritdoc}
*/
public function getConfigurationDefaults() {
return array(
'degrees' => 0,
'bgcolor' => NULL,
'random' => FALSE,
);
}
/**
* {@inheritdoc}
*/
public function getForm() {
$form['degrees'] = array(
'#type' => 'number',
'#default_value' => (isset($this->configuration['degrees'])) ? $this->configuration['degrees'] : 0,
'#default_value' => $this->configuration['degrees'],
'#title' => t('Rotation angle'),
'#description' => t('The number of degrees the image should be rotated. Positive numbers are clockwise, negative are counter-clockwise.'),
'#field_suffix' => '°',
......@@ -103,7 +107,7 @@ public function getForm() {
);
$form['bgcolor'] = array(
'#type' => 'textfield',
'#default_value' => (isset($this->configuration['bgcolor'])) ? $this->configuration['bgcolor'] : '#FFFFFF',
'#default_value' => $this->configuration['bgcolor'],
'#title' => t('Background color'),
'#description' => t('The background color to use for exposed areas of the image. Use web-style hex colors (#FFFFFF for white, #000000 for black). Leave blank for transparency on image types that support it.'),
'#size' => 7,
......@@ -112,7 +116,7 @@ public function getForm() {
);
$form['random'] = array(
'#type' => 'checkbox',
'#default_value' => (isset($this->configuration['random'])) ? $this->configuration['random'] : 0,
'#default_value' => $this->configuration['random'],
'#title' => t('Randomize'),
'#description' => t('Randomize the rotation angle for each image. The angle specified above is used as a maximum.'),
);
......
......@@ -27,13 +27,6 @@ class ScaleImageEffect extends ResizeImageEffect {
* {@inheritdoc}
*/
public function applyEffect(ImageInterface $image) {
// Set sane default values.
$this->configuration += array(
'width' => NULL,
'height' => NULL,
'upscale' => FALSE,
);
if (!$image->scale($this->configuration['width'], $this->configuration['height'], $this->configuration['upscale'])) {
watchdog('image', 'Image scale failed using the %toolkit toolkit on %path (%mimetype, %dimensions)', array('%toolkit' => $image->getToolkitId(), '%path' => $image->getSource(), '%mimetype' => $image->getMimeType(), '%dimensions' => $image->getWidth() . 'x' . $image->getHeight()), WATCHDOG_ERROR);
return FALSE;
......@@ -60,6 +53,15 @@ public function getSummary() {
);
}
/**
* {@inheritdoc}
*/
public function getConfigurationDefaults() {
return parent::getConfigurationDefaults() + array(
'upscale' => FALSE,
);
}
/**
* {@inheritdoc}
*/
......@@ -70,7 +72,7 @@ public function getForm() {
$form['height']['#required'] = FALSE;
$form['upscale'] = array(
'#type' => 'checkbox',
'#default_value' => (isset($this->configuration['upscale'])) ? $this->configuration['upscale'] : 0,
'#default_value' => $this->configuration['upscale'],
'#title' => t('Allow Upscaling'),
'#description' => t('Let scale make images larger than their original size'),
);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment