diff --git a/core/modules/image/config/image.style.large.xml b/core/modules/image/config/image.style.large.xml index 62448c1..48d276b 100644 --- a/core/modules/image/config/image.style.large.xml +++ b/core/modules/image/config/image.style.large.xml @@ -1,6 +1,7 @@ large + image_scale diff --git a/core/modules/image/config/image.style.medium.xml b/core/modules/image/config/image.style.medium.xml index d301877..2591297 100644 --- a/core/modules/image/config/image.style.medium.xml +++ b/core/modules/image/config/image.style.medium.xml @@ -1,6 +1,7 @@ medium + image_scale diff --git a/core/modules/image/config/image.style.thumbnail.xml b/core/modules/image/config/image.style.thumbnail.xml index 385abe6..2ba16b3 100644 --- a/core/modules/image/config/image.style.thumbnail.xml +++ b/core/modules/image/config/image.style.thumbnail.xml @@ -1,6 +1,7 @@ thumbnail + image_scale diff --git a/core/modules/image/image.admin.inc b/core/modules/image/image.admin.inc index f31d98f..f0fd102 100644 --- a/core/modules/image/image.admin.inc +++ b/core/modules/image/image.admin.inc @@ -32,10 +32,9 @@ function image_style_list() { * An image style array. * @ingroup forms * @see image_style_form_submit() - * @see image_style_name_validate() */ function image_style_form($form, &$form_state, $style) { - $title = t('Edit %name style', array('%name' => $style['name'])); + $title = t('Edit style %name', array('%name' => $style['label'])); drupal_set_title($title, PASS_THROUGH); $form_state['image_style'] = $style; @@ -49,13 +48,23 @@ function image_style_form($form, &$form_state, $style) { '#markup' => theme('image_style_preview', array('style' => $style)), ); - $form['name'] = array( + $form['label'] = array( '#type' => 'textfield', - '#size' => '64', - '#title' => t('Image style name'), + '#title' => t('Image style display name'), + '#default_value' => $style['label'], + '#description' => t('Enter the display name for this style. This name is used in listings of image styles.'), + '#required' => TRUE, + ); + + $form['name'] = array( + '#type' => 'machine_name', '#default_value' => $style['name'], + '#machine_name' => array( + 'exists' => 'image_style_load', + 'source' => array('label'), + 'replace_pattern' => '[^a-z0-9-_]+', + ), '#description' => t('The name is used in URLs for generated images. Use only lowercase alphanumeric characters, underscores (_), and hyphens (-).'), - '#element_validate' => array('image_style_name_validate'), '#required' => TRUE, ); @@ -199,6 +208,7 @@ function image_style_form_submit($form, &$form_state) { $old_style = $style; $style['name'] = $form_state['values']['name']; } + $style['label'] = $form_state['values']['label']; image_style_save($style); if (isset($old_style)) { image_style_delete($old_style, $style['name']); @@ -215,16 +225,25 @@ function image_style_form_submit($form, &$form_state) { * * @ingroup forms * @see image_style_add_form_submit() - * @see image_style_name_validate() */ function image_style_add_form($form, &$form_state) { - $form['name'] = array( + $form['label'] = array( '#type' => 'textfield', - '#size' => '64', - '#title' => t('Style name'), + '#title' => t('Image style display name'), + '#default_value' => '', + '#description' => t('Enter the display name for this style. This name is used in listings of image styles.'), + '#required' => TRUE, + ); + $form['name'] = array( + '#type' => 'machine_name', + '#machine_name' => array( + 'exists' => 'image_style_load', + 'source' => array('label'), + 'replace_pattern' => '[^a-z0-9-_]+', + //'replace' => '-', + ), '#default_value' => '', '#description' => t('The name is used in URLs for generated images. Use only lowercase alphanumeric characters, underscores (_), and hyphens (-).'), - '#element_validate' => array('image_style_name_validate'), '#required' => TRUE, ); @@ -240,29 +259,16 @@ function image_style_add_form($form, &$form_state) { * Submit handler for adding a new image style. */ function image_style_add_form_submit($form, &$form_state) { - $style = array('name' => $form_state['values']['name']); + $style = array( + 'name' => $form_state['values']['name'], + 'label' => $form_state['values']['label'], + ); $style = image_style_save($style); - drupal_set_message(t('Style %name was created.', array('%name' => $style['name']))); + drupal_set_message(t('Style %name was created.', array('%name' => $style['label']))); $form_state['redirect'] = 'admin/config/media/image-styles/edit/' . $style['name']; } /** - * Element validate function to ensure unique, URL safe style names. - */ -function image_style_name_validate($element, $form_state) { - // Check for duplicates. - $styles = image_styles(); - if (isset($styles[$element['#value']]) && (!isset($form_state['image_style']['name']) || $styles[$element['#value']]['name'] != $form_state['image_style']['name'])) { - form_set_error($element['#name'], t('The image style name %name is already in use.', array('%name' => $element['#value']))); - } - - // Check for illegal characters in image style names. - if (preg_match('/[^0-9a-z_\-]/', $element['#value'])) { - form_set_error($element['#name'], t('Please only use lowercase alphanumeric characters, underscores (_), and hyphens (-) for style names.')); - } -} - -/** * Form builder; Form for deleting an image style. * * @param $style @@ -284,7 +290,7 @@ function image_style_delete_form($form, $form_state, $style) { return confirm_form( $form, - t('Optionally select a style before deleting %style', array('%style' => $style['name'])), + t('Optionally select a style before deleting %style', array('%style' => $style['label'])), 'admin/config/media/image-styles', t('If this style is in use on the site, you may select another style to replace it. All images that have been generated for this style will be permanently deleted.'), t('Delete'), t('Cancel') @@ -298,7 +304,7 @@ function image_style_delete_form_submit($form, &$form_state) { $style = $form_state['image_style']; image_style_delete($style, $form_state['values']['replacement']); - drupal_set_message(t('Style %name was deleted.', array('%name' => $style['name']))); + drupal_set_message(t('Style %name was deleted.', array('%name' => $style['label']))); $form_state['redirect'] = 'admin/config/media/image-styles'; } @@ -395,7 +401,7 @@ function image_effect_delete_form($form, &$form_state, $style, $effect) { $form_state['image_style'] = $style; $form_state['image_effect'] = $effect; - $question = t('Are you sure you want to delete the @effect effect from the %style style?', array('%style' => $style['name'], '@effect' => $effect['label'])); + $question = t('Are you sure you want to delete the @effect effect from the %style style?', array('%style' => $style['label'], '@effect' => $effect['label'])); return confirm_form($form, $question, 'admin/config/media/image-styles/edit/' . $style['name'], '', t('Delete')); } @@ -587,7 +593,7 @@ function theme_image_style_list($variables) { foreach ($styles as $style) { $row = array(); - $row[] = l($style['name'], 'admin/config/media/image-styles/edit/' . $style['name']); + $row[] = l($style['label'], 'admin/config/media/image-styles/edit/' . $style['name']); $row[] = l(t('edit'), 'admin/config/media/image-styles/edit/' . $style['name'], $link_attributes); $row[] = l(t('delete'), 'admin/config/media/image-styles/delete/' . $style['name'], $link_attributes); $rows[] = $row; @@ -723,7 +729,7 @@ function theme_image_style_preview($variables) { // Build the preview of the image style. $preview_url = file_create_url($preview_file) . '?cache_bypass=' . REQUEST_TIME; $output .= '
'; - $output .= check_plain($style['name']) . ' (' . l(t('view actual size'), file_create_url($preview_file) . '?' . time()) . ')'; + $output .= check_plain($style['label']) . ' (' . l(t('view actual size'), file_create_url($preview_file) . '?' . time()) . ')'; $output .= '
'; $output .= '' . theme('image', array('uri' => $preview_url, 'alt' => t('Sample modified image'), 'title' => '', 'attributes' => $preview_attributes)) . ''; $output .= '
' . $preview_image['height'] . 'px
'; diff --git a/core/modules/image/image.module b/core/modules/image/image.module index 3edf83c..8c9b4ea 100644 --- a/core/modules/image/image.module +++ b/core/modules/image/image.module @@ -550,6 +550,10 @@ function image_style_load($name) { if (!isset($style['name'])) { return FALSE; } + // Backward compatibility with styles without labels. + if (empty($style['label'])) { + $style['label'] = $style['name']; + } if (!empty($style['effects'])) { foreach ($style['effects'] as $ieid => $effect) { @@ -574,7 +578,9 @@ function image_style_load($name) { */ function image_style_save($style) { $config = config('image.style.' . $style['name']); - $config->set('name', $style['name']); + $config + ->set('name', $style['name']) + ->set('label', $style['label']); if (isset($style['effects'])) { $config->set('effects', $style['effects']); } diff --git a/core/modules/image/image.test b/core/modules/image/image.test index f9a4ec1..b34bee9 100644 --- a/core/modules/image/image.test +++ b/core/modules/image/image.test @@ -138,7 +138,7 @@ class ImageStylesPathAndUrlUnitTest extends WebTestBase { parent::setUp(array('image', 'image_module_test')); $this->style_name = 'style_foo'; - image_style_save(array('name' => $this->style_name)); + image_style_save(array('name' => $this->style_name, 'label' => $this->randomString())); } /** @@ -380,11 +380,13 @@ class ImageAdminStylesUnitTest extends ImageFieldTestCase { */ function testNumericStyleName() { $style_name = rand(); + $style_label = $this->randomString(); $edit = array( 'name' => $style_name, + 'label' => $style_label, ); $this->drupalPost('admin/config/media/image-styles/add', $edit, t('Create new style')); - $this->assertRaw(t('Style %name was created.', array('%name' => $style_name)), t('Image style successfully created.')); + $this->assertRaw(t('Style %name was created.', array('%name' => $style_label)), t('Image style successfully created.')); $options = image_style_options(); $this->assertTrue(array_key_exists($style_name, $options), t('Array key %key exists.', array('%key' => $style_name))); } @@ -395,6 +397,7 @@ class ImageAdminStylesUnitTest extends ImageFieldTestCase { function testStyle() { // Setup a style to be created and effects to add to it. $style_name = strtolower($this->randomName(10)); + $style_label = $this->randomString(); $style_path = 'admin/config/media/image-styles/edit/' . $style_name; $effect_edits = array( 'image_resize' => array( @@ -429,9 +432,10 @@ class ImageAdminStylesUnitTest extends ImageFieldTestCase { $edit = array( 'name' => $style_name, + 'label' => $style_label, ); $this->drupalPost('admin/config/media/image-styles/add', $edit, t('Create new style')); - $this->assertRaw(t('Style %name was created.', array('%name' => $style_name)), t('Image style successfully created.')); + $this->assertRaw(t('Style %name was created.', array('%name' => $style_label)), t('Image style successfully created.')); // Add effect form. @@ -474,9 +478,11 @@ class ImageAdminStylesUnitTest extends ImageFieldTestCase { // Test the style overview form. // Change the name of the style and adjust the weights of effects. $style_name = strtolower($this->randomName(10)); + $style_label = $this->randomString(); $weight = count($effect_edits); $edit = array( 'name' => $style_name, + 'label' => $style_label, ); foreach ($style['effects'] as $ieid => $effect) { $edit['effects[' . $ieid . '][weight]'] = $weight; @@ -485,7 +491,7 @@ class ImageAdminStylesUnitTest extends ImageFieldTestCase { // Create an image to make sure it gets flushed after saving. $image_path = $this->createSampleImage($style); - $this->assertEqual($this->getImageCount($style), 1, t('Image style %style image %file successfully generated.', array('%style' => $style['name'], '%file' => $image_path))); + $this->assertEqual($this->getImageCount($style), 1, t('Image style %style image %file successfully generated.', array('%style' => $style['label'], '%file' => $image_path))); $this->drupalPost($style_path, $edit, t('Update style')); @@ -494,12 +500,12 @@ class ImageAdminStylesUnitTest extends ImageFieldTestCase { // Check that the URL was updated. $this->drupalGet($style_path); - $this->assertResponse(200, t('Image style %original renamed to %new', array('%original' => $style['name'], '%new' => $style_name))); + $this->assertResponse(200, t('Image style %original renamed to %new', array('%original' => $style['label'], '%new' => $style_label))); // Check that the image was flushed after updating the style. // This is especially important when renaming the style. Make sure that // the old image directory has been deleted. - $this->assertEqual($this->getImageCount($style), 0, t('Image style %style was flushed after renaming the style and updating the order of effects.', array('%style' => $style['name']))); + $this->assertEqual($this->getImageCount($style), 0, t('Image style %style was flushed after renaming the style and updating the order of effects.', array('%style' => $style['label']))); // Load the style by the new name with the new weights. drupal_static_reset('image_styles'); @@ -520,7 +526,7 @@ class ImageAdminStylesUnitTest extends ImageFieldTestCase { // Create an image to make sure it gets flushed after deleting an effect. $image_path = $this->createSampleImage($style); - $this->assertEqual($this->getImageCount($style), 1, t('Image style %style image %file successfully generated.', array('%style' => $style['name'], '%file' => $image_path))); + $this->assertEqual($this->getImageCount($style), 1, t('Image style %style image %file successfully generated.', array('%style' => $style['label'], '%file' => $image_path))); // Test effect deletion form. $effect = array_pop($style['effects']); @@ -547,7 +553,8 @@ class ImageAdminStylesUnitTest extends ImageFieldTestCase { function testStyleReplacement() { // Create a new style. $style_name = strtolower($this->randomName(10)); - image_style_save(array('name' => $style_name)); + $style_label = $this->randomString(); + image_style_save(array('name' => $style_name, 'label' => $style_label)); $style_path = 'admin/config/media/image-styles/edit/' . $style_name; // Create an image field that uses the new style. @@ -569,8 +576,10 @@ class ImageAdminStylesUnitTest extends ImageFieldTestCase { // Rename the style and make sure the image field is updated. $new_style_name = strtolower($this->randomName(10)); + $new_style_label = $this->randomString(); $edit = array( 'name' => $new_style_name, + 'label' => $new_style_label, ); $this->drupalPost('admin/config/media/image-styles/edit/' . $style_name, $edit, t('Update style')); $this->assertText(t('Changes to the style have been saved.'), t('Style %name was renamed to %new_name.', array('%name' => $style_name, '%new_name' => $new_style_name))); @@ -582,7 +591,7 @@ class ImageAdminStylesUnitTest extends ImageFieldTestCase { 'replacement' => 'thumbnail', ); $this->drupalPost('admin/config/media/image-styles/delete/' . $new_style_name, $edit, t('Delete')); - $message = t('Style %name was deleted.', array('%name' => $new_style_name)); + $message = t('Style %name was deleted.', array('%name' => $new_style_label)); $this->assertRaw($message, $message); $this->drupalGet('node/' . $nid);