? multiple_images_fields.patch
Index: imagefield_crop.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/imagefield_crop/imagefield_crop.js,v
retrieving revision 1.1.2.3.2.5
diff -r1.1.2.3.2.5 imagefield_crop.js
8c8
<     if ($('#cropbox', context).length == 0) {
---
>     if ($('.cropbox', context).length == 0) {
12,30c12,36
<     var api = $.Jcrop($('#cropbox', context), {
<       onChange: showPreview, 
<       onSelect: setCoords,
<       aspectRatio: Drupal.settings.imagefield_crop.ratio,
<       boxWidth: Drupal.settings.imagefield_crop.box_width,
<       boxHeight: Drupal.settings.imagefield_crop.box_height
<       //    setSelect: getDimensions()
<     });   
<     var dim = getDimensions();
<     api.setSelect(dim);
<     
<     // if images was scaled for display, scale the crop box. This should be given by Jcrop in future versions.
<     var select = api.tellSelect();
<     var scaled = api.tellScaled();
<     if (select.x > 0 && select.y > 0) {
<       var xscale = scaled.x/select.x;
<       var yscale = scaled.y/select.y;
<       if (xscale != 1 || yscale != 1) {
<         api.animateTo([dim[0]*xscale, dim[1]*yscale, dim[2]*xscale, dim[3]*yscale]);
---
>     $('.cropbox', context).each(function(){
>       this.delta = $("input[name*='fid']",$(this).parents('.widget-edit')).attr('name').replace(/field_\w+\[(\d+)\]\[fid\]/,"$1");
>       this.fieldName = $("input[name*='fid']",$(this).parents('.widget-edit')).attr('name').replace(/(field_\w+)\[\d+\]\[fid\]/,"$1");
>       var api = $.Jcrop(this, {
> 	id:this.delta,
>         fieldName: this.fieldName,
>         onChange: showPreview, 
>         onSelect: setCoords,
>         aspectRatio: Drupal.settings.imagefield_crop[this.fieldName][this.delta].ratio,
>         boxWidth: Drupal.settings.imagefield_crop[this.fieldName][this.delta].box_width,
>         boxHeight: Drupal.settings.imagefield_crop[this.fieldName][this.delta].box_height
>         //    setSelect: getDimensions()
>       });   
>       var dim = getDimensions($(this).parents('.widget-edit'));
>       api.setSelect(dim);
>       
>       // if images was scaled for display, scale the crop box. This should be given by Jcrop in future versions.
>       var select = api.tellSelect();
>       var scaled = api.tellScaled();
>       if (select.x > 0 && select.y > 0) {
>         var xscale = scaled.x/select.x;
>         var yscale = scaled.y/select.y;
>         if (xscale != 1 || yscale != 1) {
>           api.animateTo([dim[0]*xscale, dim[1]*yscale, dim[2]*xscale, dim[3]*yscale]);
>         }
32c38
<     }
---
>     });
37c43
<     setDimensions(c.x, c.y, c.w, c.h);
---
>     setDimensions(this.delta, this.fieldName, c.x, c.y, c.w, c.h);
41,51d46
<     
<     var rx = Drupal.settings.imagefield_crop.preview.width / c.w;
<     var ry = Drupal.settings.imagefield_crop.preview.height / c.h;
<     
<     $('.jcrop-preview', context).css({
<       width: Math.round(rx * Drupal.settings.imagefield_crop.preview.orig_width) + 'px',
<       height: Math.round(ry * Drupal.settings.imagefield_crop.preview.orig_height) + 'px',
<       marginLeft: '-' + Math.round(rx * c.x) + 'px',
<       marginTop: '-' + Math.round(ry * c.y) + 'px'
<     });
<     
55,59c50,54
<   function getDimensions() {
<     x =  parseInt($(".edit-image-crop-x", context).val()); 
<     y =  parseInt($(".edit-image-crop-y", context).val());
<     w =  parseInt($(".edit-image-crop-width", context).val());
<     h =  parseInt($(".edit-image-crop-height", context).val());
---
>   function getDimensions(img) {
>     x =  parseInt($(".edit-image-crop-x", img).val()); 
>     y =  parseInt($(".edit-image-crop-y", img).val());
>     w =  parseInt($(".edit-image-crop-width", img).val());
>     h =  parseInt($(".edit-image-crop-height", img).val());
63,68c58,64
<   function setDimensions(x, y, w, h) {
<     $(".edit-image-crop-x", context).val(x);
<     $(".edit-image-crop-y", context).val(y);
<     if (w) $(".edit-image-crop-width", context).val(w);
<     if (h) $(".edit-image-crop-height", context).val(h);
<     $(".edit-image-crop-changed", context).val(1);
---
>   function setDimensions(delta, fieldName, x, y, w, h) {
>     var container = $("input[name*='" + fieldName + "[" + delta + "][fid]']").parents('.widget-edit');
>     $(".edit-image-crop-x", container).val(x);
>     $(".edit-image-crop-y", container).val(y);
>     if (w) $(".edit-image-crop-width", container).val(w);
>     if (h) $(".edit-image-crop-height", container).val(h);
>     $(".edit-image-crop-changed", container).val(1);
Index: imagefield_crop_widget.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/imagefield_crop/Attic/imagefield_crop_widget.inc,v
retrieving revision 1.1.2.7
diff -r1.1.2.7 imagefield_crop_widget.inc
94d93
<   static $added_js;
103a103,104
>   $id = $file['fid'];
> 
140d140
<   if (!$added_js) {
147,149c147,148
<     drupal_add_js(array('imagefield_crop' => $settings), 'setting');
<     $added_js = TRUE;
<   }
---
>     drupal_add_js(array('imagefield_crop' => array($element['#field_name'] => array($element['#delta'] => $settings))), 'setting');
> 
194c193
<       '#value' => theme('imagefield_crop_dynamic_preview', $crop_display, $field['widget']['resolution']),
---
>       '#value' => theme('imagefield_crop_dynamic_preview', $crop_display, $field['widget']['resolution'], $element),
228,229c227
<   // REFACTOR: consider multiple images
<   $attributes = array_merge((array)$attributes + array('id' => 'cropbox'));
---
>   $attributes = array_merge((array)$attributes + array('class' => 'cropbox'));
239c237
< function theme_imagefield_crop_dynamic_preview($file, $resolution) {
---
> function theme_imagefield_crop_dynamic_preview($file, $resolution, $element) {
259c257
<     $output .= '<script type="text/javascript">Drupal.settings.imagefield_crop.preview = '. drupal_to_js($settings) .'</script>';
---
>     $output .= '<script type="text/javascript">Drupal.settings.imagefield_crop.' . $element['#field_name'] . '[' . $element['#delta'] . '].preview = '. drupal_to_js($settings) .'</script>';
285c283
< }
\ No newline at end of file
---
> }
