Skip to content

Commit 1310744

Browse files
author
Oleksii Korshenko
committed
Merge remote-tracking branch 'mainline/develop' into bug-fixes
2 parents 72b46f6 + 255ceb2 commit 1310744

File tree

27 files changed

+472
-392
lines changed

27 files changed

+472
-392
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/**
2+
* Copyright © 2015 Magento. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
/*eslint no-unused-vars: 0*/
6+
var config = {
7+
map: {
8+
'*': {
9+
'mediaUploader': 'Magento_Backend/js/media-uploader'
10+
}
11+
}
12+
};

app/code/Magento/Backend/view/adminhtml/templates/media/uploader.phtml

Lines changed: 10 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,22 @@
99
/** @var $block \Magento\Backend\Block\Media\Uploader */
1010
?>
1111

12-
<div id="<?php echo $block->getHtmlId() ?>" class="uploader">
12+
<div id="<?php echo $block->getHtmlId() ?>" class="uploader"
13+
data-mage-init='{
14+
"Magento_Backend/js/media-uploader" : {
15+
"maxFileSize": <?php /* @escapeNotVerified */ echo $block->getFileSizeService()->getMaxFileSize() ?>,
16+
"maxWidth":<?php /* @escapeNotVerified */ echo \Magento\Framework\File\Uploader::MAX_IMAGE_WIDTH ?> ,
17+
"maxHeight": <?php /* @escapeNotVerified */ echo \Magento\Framework\File\Uploader::MAX_IMAGE_HEIGHT ?>
18+
}
19+
}'
20+
>
1321
<div class="fileinput-button form-buttons button">
1422
<span><?php /* @escapeNotVerified */ echo __('Browse Files...') ?></span>
1523
<input id="fileupload" type="file" name="<?php /* @escapeNotVerified */ echo $block->getConfig()->getFileField() ?>"
1624
data-url="<?php /* @escapeNotVerified */ echo $block->getConfig()->getUrl() ?>" multiple="multiple" />
1725
</div>
1826
<div class="clear"></div>
19-
<script id="<?php echo $block->getHtmlId() ?>-template" type="text/x-magento-template">
27+
<script id="<?php echo $block->getHtmlId() ?>-template" type="text/x-magento-template" data-template="uploader">
2028
<div id="<%- data.id %>" class="file-row">
2129
<span class="file-info"><%- data.name %> (<%- data.size %>)</span>
2230
<div class="progressbar-container">
@@ -27,88 +35,3 @@
2735
</script>
2836
</div>
2937

30-
<script>
31-
require([
32-
"jquery",
33-
'mage/template',
34-
'Magento_Ui/js/modal/alert',
35-
"mage/translate",
36-
"jquery/file-uploader"
37-
], function ($, mageTemplate, alert) {
38-
39-
$('#fileupload').fileupload({
40-
dataType: 'json',
41-
formData: {
42-
'form_key': window.FORM_KEY
43-
},
44-
dropZone: '[data-tab-panel=image-management]',
45-
sequentialUploads: true,
46-
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
47-
maxFileSize: <?php /* @escapeNotVerified */ echo $block->getFileSizeService()->getMaxFileSize() ?> ,
48-
add: function (e, data) {
49-
var progressTmpl = mageTemplate('#<?php echo $block->getHtmlId(); ?>-template'),
50-
fileSize,
51-
tmpl;
52-
53-
$.each(data.files, function (index, file) {
54-
fileSize = typeof file.size == "undefined" ?
55-
$.mage.__('We could not detect a size.') :
56-
byteConvert(file.size);
57-
58-
data.fileId = Math.random().toString(33).substr(2, 18);
59-
60-
tmpl = progressTmpl({
61-
data: {
62-
name: file.name,
63-
size: fileSize,
64-
id: data.fileId
65-
}
66-
});
67-
68-
$(tmpl).appendTo('#<?php echo $block->getHtmlId() ?>');
69-
});
70-
71-
$(this).fileupload('process', data).done(function () {
72-
data.submit();
73-
});
74-
},
75-
done: function (e, data) {
76-
if (data.result && !data.result.error) {
77-
$('#<?php echo $block->getParentBlock()->getHtmlId() ?>').trigger('addItem', data.result);
78-
} else {
79-
$('#' + data.fileId)
80-
.delay(2000)
81-
.hide('highlight');
82-
alert({
83-
content: $.mage.__('We don\'t recognize or support this file extension type.')
84-
});
85-
}
86-
$('#' + data.fileId).remove();
87-
},
88-
progress: function (e, data) {
89-
var progress = parseInt(data.loaded / data.total * 100, 10);
90-
var progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar';
91-
$(progressSelector).css('width', progress + '%');
92-
},
93-
fail: function (e, data) {
94-
var progressSelector = '#' + data.fileId;
95-
$(progressSelector).removeClass('upload-progress').addClass('upload-failure')
96-
.delay(2000)
97-
.hide('highlight')
98-
.remove();
99-
}
100-
});
101-
$('#fileupload').fileupload('option', {
102-
process: [{
103-
action: 'load',
104-
fileTypes: /^image\/(gif|jpeg|png)$/
105-
}, {
106-
action: 'resize',
107-
maxWidth: <?php /* @escapeNotVerified */ echo \Magento\Framework\File\Uploader::MAX_IMAGE_WIDTH ?> ,
108-
maxHeight: <?php /* @escapeNotVerified */ echo \Magento\Framework\File\Uploader::MAX_IMAGE_HEIGHT ?>
109-
}, {
110-
action: 'save'
111-
}]
112-
});
113-
});
114-
</script>
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
/**
2+
*
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
/*global byteConvert*/
7+
define([
8+
'jquery',
9+
'mage/template',
10+
'Magento_Ui/js/modal/alert',
11+
'mage/translate',
12+
'jquery/file-uploader'
13+
], function ($, mageTemplate, alert) {
14+
'use strict';
15+
16+
$.widget('mage.mediaUploader', {
17+
18+
/**
19+
*
20+
* @private
21+
*/
22+
_create: function () {
23+
var
24+
self = this,
25+
progressTmpl = mageTemplate('[data-template="uploader"]');
26+
27+
this.element.find('input[type=file]').fileupload({
28+
dataType: 'json',
29+
formData: {
30+
'form_key': window.FORM_KEY
31+
},
32+
dropZone: '[data-tab-panel=image-management]',
33+
sequentialUploads: true,
34+
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
35+
maxFileSize: this.options.maxFileSize,
36+
37+
/**
38+
* @param {Object} e
39+
* @param {Object} data
40+
*/
41+
add: function (e, data) {
42+
var
43+
fileSize,
44+
tmpl;
45+
46+
$.each(data.files, function (index, file) {
47+
fileSize = typeof file.size == 'undefined' ?
48+
$.mage.__('We could not detect a size.') :
49+
byteConvert(file.size);
50+
51+
data.fileId = Math.random().toString(33).substr(2, 18);
52+
53+
tmpl = progressTmpl({
54+
data: {
55+
name: file.name,
56+
size: fileSize,
57+
id: data.fileId
58+
}
59+
});
60+
61+
$(tmpl).appendTo(self.element);
62+
});
63+
64+
$(this).fileupload('process', data).done(function () {
65+
data.submit();
66+
});
67+
},
68+
69+
/**
70+
* @param {Object} e
71+
* @param {Object} data
72+
*/
73+
done: function (e, data) {
74+
if (data.result && !data.result.error) {
75+
self.element.trigger('addItem', data.result);
76+
} else {
77+
alert({
78+
content: $.mage.__('We don\'t recognize or support this file extension type.')
79+
});
80+
}
81+
self.element.find('#' + data.fileId).remove();
82+
},
83+
84+
/**
85+
* @param {Object} e
86+
* @param {Object} data
87+
*/
88+
progress: function (e, data) {
89+
var progress = parseInt(data.loaded / data.total * 100, 10),
90+
progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar';
91+
92+
self.element.find(progressSelector).css('width', progress + '%');
93+
},
94+
95+
/**
96+
* @param {Object} e
97+
* @param {Object} data
98+
*/
99+
fail: function (e, data) {
100+
var progressSelector = '#' + data.fileId;
101+
102+
self.element.find(progressSelector).removeClass('upload-progress').addClass('upload-failure')
103+
.delay(2000)
104+
.hide('highlight')
105+
.remove();
106+
}
107+
});
108+
109+
this.element.find('input[type=file]').fileupload('option', {
110+
process: [{
111+
action: 'load',
112+
fileTypes: /^image\/(gif|jpeg|png)$/
113+
}, {
114+
action: 'resize',
115+
maxWidth: this.options.maxWidth,
116+
maxHeight: this.options.maxHeight
117+
}, {
118+
action: 'save'
119+
}]
120+
});
121+
}
122+
});
123+
124+
return $.mage.mediaUploader;
125+
});

app/code/Magento/Bundle/Model/LinkManagement.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public function __construct(
8787
*/
8888
public function getChildren($productSku, $optionId = null)
8989
{
90-
$product = $this->productRepository->get($productSku);
90+
$product = $this->productRepository->get($productSku, true);
9191
if ($product->getTypeId() != \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE) {
9292
throw new InputException(__('Only implemented for bundle product'));
9393
}
@@ -111,7 +111,7 @@ public function getChildren($productSku, $optionId = null)
111111
public function addChildByProductSku($sku, $optionId, \Magento\Bundle\Api\Data\LinkInterface $linkedProduct)
112112
{
113113
/** @var \Magento\Catalog\Model\Product $product */
114-
$product = $this->productRepository->get($sku);
114+
$product = $this->productRepository->get($sku, true);
115115
return $this->addChild($product, $optionId, $linkedProduct);
116116
}
117117

@@ -124,7 +124,7 @@ public function saveChild(
124124
$sku,
125125
\Magento\Bundle\Api\Data\LinkInterface $linkedProduct
126126
) {
127-
$product = $this->productRepository->get($sku);
127+
$product = $this->productRepository->get($sku, true);
128128
if ($product->getTypeId() != \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE) {
129129
throw new InputException(
130130
__('Product with specified sku: "%1" is not a bundle product', [$product->getSku()])
@@ -277,7 +277,7 @@ public function addChild(
277277
*/
278278
public function removeChild($sku, $optionId, $childSku)
279279
{
280-
$product = $this->productRepository->get($sku);
280+
$product = $this->productRepository->get($sku, true);
281281

282282
if ($product->getTypeId() != \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE) {
283283
throw new InputException(__('Product with specified sku: %1 is not a bundle product', $sku));

app/code/Magento/Bundle/Model/OptionManagement.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public function __construct(
3737
*/
3838
public function save(\Magento\Bundle\Api\Data\OptionInterface $option)
3939
{
40-
$product = $this->productRepository->get($option->getSku());
40+
$product = $this->productRepository->get($option->getSku(), true);
4141
if ($product->getTypeId() != \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE) {
4242
throw new InputException(__('Only implemented for bundle product'));
4343
}

app/code/Magento/Bundle/Model/OptionRepository.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ protected function updateOptionSelection(
250250
*/
251251
private function getProduct($sku)
252252
{
253-
$product = $this->productRepository->get($sku);
253+
$product = $this->productRepository->get($sku, true);
254254
if ($product->getTypeId() != \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE) {
255255
throw new InputException(__('Only implemented for bundle product'));
256256
}

app/code/Magento/Bundle/Model/Product/SaveHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public function execute($entityType, $entity)
6464
$this->optionRepository->delete($option);
6565
}
6666

67-
$options = $entity->getExtensionAttributes()->getBundleProductOptions() ?: [];
67+
$options = $bundleProductOptions ?: [];
6868
foreach ($options as $option) {
6969
$option->setOptionId(null);
7070
$this->optionRepository->save($entity, $option);

app/code/Magento/Bundle/Model/Product/Type.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ public function getChildrenIds($parentId, $required = true)
247247
return $this->_bundleSelection->getChildrenIds($parentId, $required);
248248
}
249249

250-
/**
250+
/**
251251
* Retrieve parent ids array by required child
252252
*
253253
* @param int|array $childId

app/code/Magento/Bundle/Model/ResourceModel/Option/Collection.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,29 @@ public function setProductIdFilter($productId)
8585
'cpe.'.$linkField.' = main_table.parent_id',
8686
[]
8787
)->where(
88-
'cpe.entity_id = ?',
88+
"cpe.entity_id = ?",
8989
$productId
9090
);
9191

9292
return $this;
9393
}
9494

95+
/**
96+
* Set product link filter
97+
*
98+
* @param int $productLinkFieldValue
99+
*
100+
* @return $this
101+
*/
102+
public function setProductLinkFilter($productLinkFieldValue)
103+
{
104+
$this->getSelect()->where(
105+
'main_table.parent_id = ?',
106+
$productLinkFieldValue
107+
);
108+
return $this;
109+
}
110+
95111
/**
96112
* Sets order by position
97113
*

0 commit comments

Comments
 (0)