diff --git a/modules/image/image.admin.inc b/modules/image/image.admin.inc index d72fdf4..03fcb68 100644 --- a/modules/image/image.admin.inc +++ b/modules/image/image.admin.inc @@ -774,7 +774,10 @@ function theme_image_style_preview($variables) { // Set up preview file information. $preview_file = image_style_path($style['name'], $original_path); if (!file_exists($preview_file)) { - image_style_create_derivative($style, $original_path, $preview_file); + if (!image_style_create_derivative($style, $original_path, $preview_file)) { + $preview_file = "misc/message-24-error.png"; + drupal_set_message(t('Unable to generate preview. Check !status_report for more info.', array('!status_report' => l('status report', 'admin/reports/status'))), 'error'); + } } $preview_image = image_get_info($preview_file); if ($preview_image['width'] > $preview_image['height']) { diff --git a/modules/image/image.install b/modules/image/image.install index 121e8c7..2630527 100644 --- a/modules/image/image.install +++ b/modules/image/image.install @@ -176,6 +176,21 @@ function image_requirements($phase) { ); } $requirements['image_gd']['title'] = t('GD library rotate and desaturate effects'); + + // Check for writable style directories. + $unwritable = array(); + foreach (array_keys(image_styles()) as $style_name) { + $style_dir = file_default_scheme() . '://styles/' . $style_name; + if (!file_prepare_directory($style_dir, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS)) { + $unwritable[] = t('Directory %dir is not writable.', array('%dir' => drupal_realpath($style_dir))); + } + } + $requirements['image styles'] = array( + 'title' => t('Image styles directories'), + 'value' => t( empty($unwritable) ? 'Writable' : 'Not writable' ), + 'severity' => empty($unwritable) ? REQUIREMENT_OK : REQUIREMENT_ERROR, + 'description' => implode('
',$unwritable), + ); } return $requirements;