@@ -43,7 +43,10 @@ public function afterLoad($object)
43
43
foreach ($ this ->_getResource ()->loadGallery ($ object , $ this ) as $ image ) {
44
44
foreach ($ localAttributes as $ localAttribute ) {
45
45
if (is_null ($ image [$ localAttribute ])) {
46
+ $ image [$ localAttribute . '_use_default ' ] = true ;
46
47
$ image [$ localAttribute ] = $ this ->_getDefaultValue ($ localAttribute , $ image );
48
+ } else {
49
+ $ image [$ localAttribute . '_use_default ' ] = false ;
47
50
}
48
51
}
49
52
$ value ['images ' ][] = $ image ;
@@ -107,6 +110,10 @@ public function beforeSave($object)
107
110
$ value ['images ' ] = Mage::helper ('core ' )->jsonDecode ($ value ['images ' ]);
108
111
}
109
112
113
+ if (!is_array ($ value ['values ' ]) && strlen ($ value ['values ' ]) > 0 ) {
114
+ $ value ['values ' ] = Mage::helper ('core ' )->jsonDecode ($ value ['values ' ]);
115
+ }
116
+
110
117
if (!is_array ($ value ['images ' ])) {
111
118
$ value ['images ' ] = [];
112
119
}
@@ -119,11 +126,11 @@ public function beforeSave($object)
119
126
if (!empty ($ image ['removed ' ])) {
120
127
$ clearImages [] = $ image ['file ' ];
121
128
} elseif (!isset ($ image ['value_id ' ])) {
122
- $ newFile = $ this ->_moveImageFromTmp ($ image ['file ' ]);
129
+ $ newFile = $ this ->_moveImageFromTmp ($ image ['file ' ]);
123
130
$ image ['new_file ' ] = $ newFile ;
124
131
$ newImages [$ image ['file ' ]] = $ image ;
125
132
$ this ->_renamedImages [$ image ['file ' ]] = $ newFile ;
126
- $ image ['file ' ] = $ newFile ;
133
+ $ image ['file ' ] = $ newFile ;
127
134
} else {
128
135
$ existImages [$ image ['file ' ]] = $ image ;
129
136
}
@@ -142,8 +149,6 @@ public function beforeSave($object)
142
149
];
143
150
$ duplicate [$ image ['value_id ' ]] = $ newFile ;
144
151
}
145
-
146
- $ value ['duplicate ' ] = $ duplicate ;
147
152
}
148
153
149
154
foreach ($ object ->getMediaAttributes () as $ mediaAttribute ) {
@@ -157,21 +162,21 @@ public function beforeSave($object)
157
162
if (in_array ($ attrData , $ clearImages )) {
158
163
$ object ->setData ($ mediaAttrCode , 'no_selection ' );
159
164
}
165
+ }
160
166
167
+ foreach ($ value ['values ' ] as $ mediaAttrCode => $ attrData ) {
161
168
if (array_key_exists ($ attrData , $ newImages )) {
162
169
$ object ->setData ($ mediaAttrCode , $ newImages [$ attrData ]['new_file ' ]);
163
- $ object ->setData ($ mediaAttrCode . '_label ' , $ newImages [$ attrData ]['label ' ]);
170
+ $ object ->setData ($ mediaAttrCode . '_label ' , ( $ newImages [ $ attrData ][ ' label ' ] === null || $ newImages [ $ attrData ][ ' label_use_default ' ]) ? $ newImages [ $ attrData ][ ' label_default ' ] : $ newImages [$ attrData ]['label ' ]);
164
171
}
165
172
166
173
if (array_key_exists ($ attrData , $ existImages )) {
167
- $ object ->setData ($ mediaAttrCode . '_label ' , $ existImages [$ attrData ]['label ' ]);
174
+ $ object ->setData ($ mediaAttrCode . '_label ' , ( $ existImages [ $ attrData ][ ' label ' ] === null || $ existImages [ $ attrData ][ ' label_use_default ' ]) ? $ existImages [ $ attrData ][ ' label_default ' ] : $ existImages [$ attrData ]['label ' ]);
168
175
}
169
176
}
170
177
171
178
Mage::dispatchEvent ('catalog_product_media_save_before ' , ['product ' => $ object , 'images ' => $ value ]);
172
-
173
179
$ object ->setData ($ attrCode , $ value );
174
-
175
180
return $ this ;
176
181
}
177
182
@@ -204,7 +209,6 @@ public function afterSave($object)
204
209
}
205
210
206
211
$ storeId = $ object ->getStoreId ();
207
-
208
212
$ storeIds = $ object ->getStoreIds ();
209
213
$ storeIds [] = Mage_Core_Model_App::ADMIN_STORE_ID ;
210
214
@@ -243,8 +247,8 @@ public function afterSave($object)
243
247
// Add per store labels, position, disabled
244
248
$ data = [];
245
249
$ data ['value_id ' ] = $ image ['value_id ' ];
246
- $ data ['label ' ] = $ image ['label ' ];
247
- $ data ['position ' ] = (int ) $ image ['position ' ];
250
+ $ data ['label ' ] = ( $ image [ ' label ' ] === null || $ image [ " label_use_default " ]) ? null : $ image ['label ' ];
251
+ $ data ['position ' ] = ($ image [ ' position ' ] === null || $ image [ " position_use_default " ]) ? null : ( int ) $ image ['position ' ];
248
252
$ data ['disabled ' ] = (int ) $ image ['disabled ' ];
249
253
$ data ['store_id ' ] = (int ) $ object ->getStoreId ();
250
254
0 commit comments