=== modified file 'modules/image/image.field.inc' --- modules/image/image.field.inc 2010-10-31 12:11:59 +0000 +++ modules/image/image.field.inc 2011-01-15 21:44:20 +0000 @@ -50,18 +50,19 @@ function image_field_settings_form($fiel '#options' => $scheme_options, '#default_value' => $settings['uri_scheme'], '#description' => t('Select where the final files should be stored. Private file storage has significantly more overhead than public files, but allows restricted access to files within this field.'), - ); + ) + element_info('radios');; + array_unshift($form['uri_scheme']['#process'], 'image_field_settings_uri_scheme_process'); $form['default_image'] = array( '#title' => t('Default image'), '#type' => 'managed_file', '#description' => t('If no image is uploaded, this image will be shown on display.'), '#default_value' => $field['settings']['default_image'], - '#upload_location' => 'public://default_images/', - ); + '#field_id' => $field['id'], + ) + element_info('managed_file'); + array_unshift($form['default_image']['#process'], 'image_field_settings_default_image_process'); return $form; - } /** @@ -556,3 +557,35 @@ function theme_image_formatter($variable return $output; } + +function image_field_settings_uri_scheme_process($element, $form_state, &$complete_form) { + $array_parents = $element['#array_parents']; + // Remove the uri_scheme key and add default_image instead. + $array_parents[count($array_parents) - 1] = 'default_image'; + $default_image_element = &$complete_form; + foreach ($array_parents as $key) { + $default_image_element = &$default_image_element[$key]; + } + $default_image_element['#upload_location'] = $element['#value'] . '://default_image'; + return $element; +} + +function image_field_settings_default_image_process($element) { + if (!empty($element['#value']['fid']) && ($file = file_load($element['#value']['fid'])) && !$file->status) { + $file->status = 1; + file_save($file); + file_usage_add($file, 'image', 'default_image', $element['#field_id']); + if (!empty($element['#default_value']['fid']) && ($element['#default_value']['fid'] != $element['#value']['fid']) && ($file = file_load($element['#default_value']['fid']))) { + file_usage_delete($file, 'image', 'default_image', $element['#field_id']); + file_delete($file); + } + } + return $element; +} + +function image_field_field_delete_field($field) { + if (!empty($field['settings']['default_image']['fid']) && ($file = file_load($field['settings']['default_image']['fid']))) { + file_usage_delete($file, 'image', 'default_image', $field['id']); + file_delete($file); + } +}