Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
bulk.phtml
Go to the documentation of this file.
1 <?php
7 // @codingStandardsIgnoreFile
8 
9 /* @var $block \Magento\InventoryConfigurableProductAdminUi\Block\Adminhtml\Product\Steps\Bulk */
10 ?>
11 
12 <div data-bind="scope: '<?= /* @noEscape */ $block->getComponentName() ?>'" data-role="bulk-step">
13  <h2 class="steps-wizard-title"><?= $block->escapeHtml(__('Step 3: Bulk Images, Price and Quantity')) ?></h2>
14  <div class="steps-wizard-info">
15  <?= /* @escapeNotVerified */ __('Based on your selections %1 new products will be created. Use this step to customize images and price for your new products.', '<span class="new-products-count" data-bind="text:countVariations"></span>') ?>
16  </div>
17 
18  <div data-bind="with: sections().images" class="steps-wizard-section">
19  <div data-role="section">
20  <div class="steps-wizard-section-title">
21  <span><?= $block->escapeHtml(
22  __('Images')
23  ); ?></span>
24  </div>
25 
26  <ul class="steps-wizard-section-list">
27  <li>
28  <div class="admin__field admin__field-option">
29  <input type="radio"
30  id="apply-single-set-radio"
31  class="admin__control-radio"
32  value="single"
33  data-bind="checked:type">
34  <label for="apply-single-set-radio" class="admin__field-label">
35  <span><?= $block->escapeHtml(
36  __('Apply single set of images to all SKUs')
37  ); ?></span>
38  </label>
39  </div>
40  </li>
41  <li>
42  <div class="admin__field admin__field-option">
43  <input type="radio"
44  id="apply-unique-images-radio"
45  class="admin__control-radio"
46  value="each"
47  data-bind="checked:type">
48  <label for="apply-unique-images-radio" class="admin__field-label">
49  <span><?= $block->escapeHtml(__('Apply unique images by attribute to each SKU')) ?></span>
50  </label>
51  </div>
52  </li>
53  <li>
54  <div class="admin__field admin__field-option">
55  <input type="radio"
56  id="skip-images-uploading-radio"
57  class="admin__control-radio"
58  value="none"
59  checked
60  data-bind="checked:type">
61  <label for="skip-images-uploading-radio" class="admin__field-label">
62  <span><?= $block->escapeHtml(__('Skip image uploading at this time')) ?></span>
63  </label>
64  </div>
65  </li>
66  </ul>
67 
68  <div data-role="step-gallery-single"
69  class="attribute-image-selector"
70  data-bind="visible: type() == 'single'">
71  <div data-role="gallery"
72  class="gallery"
73  data-images="[]"
74  data-types="<?= $block->escapeHtml(
75  $this->helper('Magento\Framework\Json\Helper\Data')->jsonEncode($block->getImageTypes())
76  ) ?>"
77  >
78  <div class="image image-placeholder">
79  <div data-role="uploader" class="uploader">
80  <div class="image-browse">
81  <span><?= $block->escapeHtml(__('Browse Files...')) ?></span>
82  <input type="file"
83  id=""
84  name="image"
85  class="admin__control-file"
86  multiple="multiple"
87  data-url="<?= /* @noEscape */ $block->getUrl('catalog/product_gallery/upload') ?>" />
88  </div>
89  </div>
90  <div class="product-image-wrapper">
91  <p class="image-placeholder-text"><?= $block->escapeHtml(__('Browse to find or drag image here')) ?></p>
92  </div>
93  </div>
94 
95  <?php foreach ($block->getImageTypes() as $typeData):
96  ?>
97  <input name="<?= $block->escapeHtml($typeData['name']) ?>"
98  class="image-<?= $block->escapeHtml($typeData['code']) ?>"
99  type="hidden"
100  value="<?= $block->escapeHtml($typeData['value']) ?>"/>
101  <?php
102  endforeach;
103  ?>
104 
105  <script data-template="uploader" type="text/x-magento-template">
106  <div id="<%- data.id %>" class="file-row">
107  <span class="file-info"><%- data.name %> (<%- data.size %>)</span>
108  <div class="progressbar-container">
109  <div class="progressbar upload-progress" style="width: 0%;"></div>
110  </div>
111  <div class="spinner">
112  <span></span><span></span><span></span><span></span>
113  <span></span><span></span><span></span><span></span>
114  </div>
115  </div>
116  </script>
117 
118  <script data-template="gallery-content" type="text/x-magento-template">
119  <div class="image item <% if (data.disabled == 1) { %>hidden-for-front<% } %>"
120  data-role="image">
121  <input type="hidden"
122  name="product[media_gallery][images][<%- data.file_id %>][position]"
123  value="<%- data.position %>"/>
124  <input type="hidden"
125  name="product[media_gallery][images][<%- data.file_id %>][file]"
126  value="<%- data.file %>"/>
127  <input type="hidden"
128  name="product[media_gallery][images][<%- data.file_id %>][value_id]"
129  value="<%- data.value_id %>"/>
130  <input type="hidden"
131  name="product[media_gallery][images][<%- data.file_id %>][label]"
132  value="<%- data.label %>"/>
133  <input type="hidden"
134  name="product[media_gallery][images][<%- data.file_id %>][disabled]"
135  value="<%- data.disabled %>"/>
136  <input type="hidden"
137  name="product[media_gallery][images][<%- data.file_id %>][removed]"/>
138  <div class="product-image-wrapper">
139  <img class="product-image" data-role="image-element" src="<%- data.url %>" alt="<%- data.label %>"/>
140  <div class="actions">
141  <button type="button"
142  class="action-remove"
143  data-role="delete-button"
144  title="<?= $block->escapeHtml(__('Remove image')) ?>">
145  <span><?= $block->escapeHtml(__('Remove image')) ?></span>
146  </button>
147  <div class="draggable-handle"></div>
148  </div>
149  <div class="image-fade"><span><?= $block->escapeHtml(__('Hidden')) ?></span></div>
150  </div>
151  <div class="item-description">
152  <div class="item-title" data-role="img-title"><%- data.label %></div>
153  <div class="item-size">
154  <span data-role="image-dimens"></span>, <span data-role="image-size"><%- data.sizeLabel %></span>
155  </div>
156  </div>
157  <ul class="item-roles" data-role="roles-labels">
158  <?php
159  foreach ($block->getMediaAttributes() as $attribute):
160  ?>
161  <li data-role-code="<?= $block->escapeHtml(
162  $attribute->getAttributeCode()
163  ) ?>" class="item-role item-role-<?= $block->escapeHtml(
164  $attribute->getAttributeCode()
165  ) ?>">
166  <?= /* @noEscape */ $attribute->getFrontendLabel() ?>
167  </li>
168  <?php
169  endforeach;
170  ?>
171  </ul>
172  </div>
173  </script>
174 
175  <script data-template="image" type="text/x-magento-template">
176  <div class="image">
177  <div class="product-image-wrapper">
178  <img class="product-image"
179  data-role="image-element"
180  src="<%- data.url %>"
181  data-position="<%- data.position %>"
182  alt="<%- data.label %>" />
183 
184  <div class="actions">
185  <button type="button"
186  class="action-remove"
187  data-role="delete-button"
188  title="<?= $block->escapeHtml(__('Remove image')) ?>">
189  <span><?= $block->escapeHtml(__('Remove image')) ?></span>
190  </button>
191 
192  <div class="draggable-handle"></div>
193  </div>
194 
195  <div class="image-fade"><span><?= $block->escapeHtml(__('Hidden')) ?></span></div>
196  </div>
197  <!--<ul class="item-roles">
198  <li class="item-role item-role-base">Base</li>
199  </ul>-->
200  </div>
201  </script>
202 
203  <script data-role="img-dialog-container-tmpl" type="text/x-magento-template">
204  <div class="image-panel ui-tabs-panel ui-widget-content ui-corner-bottom" data-role="dialog">
205  </div>
206  </script>
207 
208  <script class="dialog-template" type="text/x-magento-template" data-title="Image Options">
209  <div class="image-panel-preview">
210  <img src="<%- data.url %>" alt="<%- data.label %>" />
211  </div>
212  <div class="image-panel-controls">
213  <strong class="image-name"><%- data.label %></strong>
214 
215  <fieldset class="admin__fieldset fieldset-image-panel">
216  <div class="admin__field field-image-description">
217  <label class="admin__field-label" for="image-description">
218  <span><?= $block->escapeHtml(__('Alt Text')) ?></span>
219  </label>
220 
221  <div class="admin__field-control">
222  <textarea data-role="image-description"
223  rows="3"
224  class="admin__control-textarea"
225  name="product[media_gallery][images][<%- data.file_id %>][label]"
226  ><%- data.label %></textarea>
227  </div>
228  </div>
229 
230  <div class="admin__field field-image-role">
231  <label class="admin__field-label">
232  <span><?= $block->escapeHtml(
233  __('Role')
234  ); ?></span>
235  </label>
236  <div class="admin__field-control">
237  <ul class="multiselect-alt">
238  <?php
239  foreach ($block->getMediaAttributes() as $attribute) :
240  ?>
241  <li class="item">
242  <label>
243  <input class="image-type"
244  data-role="type-selector"
245  type="checkbox"
246  value="<?= $block->escapeHtml(
247  $attribute->getAttributeCode()
248  ) ?>"
249  />
250  <?= $block->escapeHtml(
251  $attribute->getFrontendLabel()
252  ); ?>
253  </label>
254  </li>
255  <?php
256  endforeach;
257  ?>
258  </ul>
259  </div>
260  </div>
261 
262  <div class="admin__field admin__field-inline field-image-size" data-role="size">
263  <label class="admin__field-label">
264  <span><?= $block->escapeHtml(
265  __('Image Size')
266  ); ?></span>
267  </label>
268  <div class="admin__field-value" data-message="<?= $block->escapeHtml(
269  __('{size}')
270  );?>"></div>
271  </div>
272 
273  <div class="admin__field admin__field-inline field-image-resolution" data-role="resolution">
274  <label class="admin__field-label">
275  <span><?= $block->escapeHtml(
276  __('Image Resolution')
277  ); ?></span>
278  </label>
279  <div class="admin__field-value" data-message="<?= $block->escapeHtml(
280  __('{width}^{height} px')
281  );?>"></div>
282  </div>
283 
284  <div class="admin__field field-image-hide">
285  <div class="admin__field-control">
286  <div class="admin__field admin__field-option">
287  <input type="checkbox"
288  id="hide-from-product-page"
289  data-role="visibility-trigger"
290  value="1"
291  class="admin__control-checkbox"
292  name="product[media_gallery][images][<%- data.file_id %>][disabled]"
293  <% if (data.disabled == 1) { %>checked="checked"<% } %> />
294 
295  <label for="hide-from-product-page" class="admin__field-label">
296  <?= $block->escapeHtml(
297  __('Hide from Product Page')
298  ); ?>
299  </label>
300  </div>
301  </div>
302  </div>
303  </fieldset>
304  </div>
305  </script>
306  </div>
307  </div>
308 
309  <div data-role="step-gallery-each" class="attribute-image-selector" data-bind="visible: type() == 'each'">
310  <fieldset class="admin__fieldset bulk-attribute-values">
311  <div class="admin__field _required">
312  <label class="admin__field-label" for="apply-images-attributes">
313  <span><?= $block->escapeHtml(
314  __('Select attribute')
315  ); ?></span>
316  </label>
317  <div class="admin__field-control">
318  <select
319  id="apply-images-attributes"
320  class="admin__control-select"
321  data-bind="
322  options: $parent.attributes,
323  optionsText: 'label',
324  value: attribute,
325  optionsCaption: '<?= $block->escapeHtml(
326  __("Select")
327  ); ?>'
328  ">
329  </select>
330  </div>
331  </div>
332  </fieldset>
333 
334  <ul class="items attributes-selector-list" data-bind="if:attribute, visible: attribute">
335  <!-- ko foreach: {data: attribute().chosen, afterRender: $parent.bindGalleries} -->
336  <li class="item" data-bind="attr:{'data-role':'step-gallery-option-' + id}">
337  <label class="attribute-label">
338  <span data-bind="text:label"></span>
339  </label>
340 
341  <div data-role="gallery"
342  class="gallery"
343  data-images="[]"
344  data-types="<?= $block->escapeHtml(
345  $this->helper('Magento\Framework\Json\Helper\Data')->jsonEncode($block->getImageTypes())
346  ) ?>"
347  >
348  <div class="image image-placeholder">
349  <div data-role="uploader" class="uploader">
350  <div class="image-browse">
351  <span><?= $block->escapeHtml(
352  __('Browse Files...')
353  ); ?></span>
354  <input type="file" name="image" multiple="multiple"
355  data-url="<?= /* @noEscape */ $block->getUrl('catalog/product_gallery/upload') ?>" />
356  </div>
357  </div>
358  <div class="product-image-wrapper">
359  <p class="image-placeholder-text"><?= $block->escapeHtml(
360  __('Browse to find or drag image here')
361  ); ?></p>
362  </div>
363  <div class="spinner">
364  <span></span><span></span><span></span><span></span>
365  <span></span><span></span><span></span><span></span>
366  </div>
367  </div>
368 
369  <?php foreach ($block->getImageTypes() as $typeData):
370  ?>
371  <input name="<?= $block->escapeHtml($typeData['name']) ?>"
372  class="image-<?= $block->escapeHtml($typeData['code']) ?>"
373  type="hidden"
374  value="<?= $block->escapeHtml($typeData['value']) ?>"/>
375  <?php
376  endforeach;
377  ?>
378 
379  <script data-template="uploader" type="text/x-magento-template">
380  <div id="<%- data.id %>" class="file-row">
381  <span class="file-info"><%- data.name %> (<%- data.size %>)</span>
382  <div class="progressbar-container">
383  <div class="progressbar upload-progress" style="width: 0%;"></div>
384  </div>
385  <div class="spinner">
386  <span></span><span></span><span></span><span></span>
387  <span></span><span></span><span></span><span></span>
388  </div>
389  </div>
390  </script>
391 
392  <script data-template="gallery-content" type="text/x-magento-template">
393  <div class="image item <% if (data.disabled == 1) { %>hidden-for-front<% } %>"
394  data-role="image">
395  <input type="hidden"
396  name="product[media_gallery][images][<%- data.file_id %>][position]"
397  value="<%- data.position %>" class="position"/>
398  <input type="hidden"
399  name="product[media_gallery][images][<%- data.file_id %>][file]"
400  value="<%- data.file %>"/>
401  <input type="hidden"
402  name="product[media_gallery][images][<%- data.file_id %>][value_id]"
403  value="<%- data.value_id %>"/>
404  <input type="hidden"
405  name="product[media_gallery][images][<%- data.file_id %>][label]"
406  value="<%- data.label %>"/>
407  <input type="hidden"
408  name="product[media_gallery][images][<%- data.file_id %>][disabled]"
409  value="<%- data.disabled %>"/>
410  <input type="hidden"
411  name="product[media_gallery][images][<%- data.file_id %>][removed]"
412  value=""
413  class="is-removed"/>
414  <div class="product-image-wrapper">
415  <img class="product-image" data-role="image-element" src="<%- data.url %>" alt="<%- data.label %>"/>
416  <div class="actions">
417  <button type="button"
418  class="action-remove"
419  data-role="delete-button"
420  title="<?= $block->escapeHtml(__('Remove image')) ?>">
421  <span><?= $block->escapeHtml(
422  __('Remove image')
423  ); ?></span>
424  </button>
425  <div class="draggable-handle"></div>
426  </div>
427  <div class="image-fade"><span><?= $block->escapeHtml(
428  __('Hidden')
429  ); ?></span></div>
430  </div>
431  <div class="item-description">
432  <div class="item-title" data-role="img-title"><%- data.label %></div>
433  <div class="item-size">
434  <span data-role="image-dimens"></span>, <span data-role="image-size"><%- data.sizeLabel %></span>
435  </div>
436  </div>
437  <ul class="item-roles" data-role="roles-labels">
438  <?php
439  foreach ($block->getMediaAttributes() as $attribute):
440  ?>
441  <li data-role-code="<?= $block->escapeHtml(
442  $attribute->getAttributeCode()
443  ) ?>" class="item-role item-role-<?= $block->escapeHtml(
444  $attribute->getAttributeCode()
445  ) ?>">
446  <?= $block->escapeHtml($attribute->getFrontendLabel()) ?>
447  </li>
448  <?php
449  endforeach;
450  ?>
451  </ul>
452  </div>
453  </script>
454 
455  <script data-template="image" type="text/x-magento-template">
456  <div class="image">
457  <div class="product-image-wrapper">
458  <img class="product-image"
459  src="<%- data.url %>"
460  data-role="image-element"
461  data-position="<%- data.position %>"
462  alt="<%- data.label %>" />
463  <div class="actions">
464  <button type="button"
465  class="action-remove"
466  data-role="delete-button"
467  title="<?= $block->escapeHtml(__('Remove image')) ?>">
468  <span><?= $block->escapeHtml(__('Remove image')) ?></span>
469  </button>
470  <div class="draggable-handle"></div>
471  </div>
472  <div class="image-fade"><span><?= $block->escapeHtml(__('Hidden')) ?></span></div>
473  </div>
474  <!--<ul class="item-roles">
475  <li class="item-role item-role-base">Base</li>
476  </ul>-->
477  </div>
478  </script>
479 
480  <script data-role="img-dialog-container-tmpl" type="text/x-magento-template">
481  <div class="image-panel ui-tabs-panel ui-widget-content ui-corner-bottom" data-role="dialog">
482  </div>
483  </script>
484 
485  <script class="dialog-template" type="text/x-magento-template" data-title="Image Options">
486  <div class="image-panel-preview">
487  <img src="<%- data.url %>" alt="<%- data.label %>" />
488  </div>
489  <div class="image-panel-controls">
490  <strong class="image-name"><%- data.label %></strong>
491 
492  <fieldset class="admin__fieldset fieldset-image-panel">
493  <div class="admin__field field-image-description">
494  <label class="admin__field-label" for="image-description">
495  <span><?= $block->escapeHtml(
496  __('Alt Text')
497  );?></span>
498  </label>
499 
500  <div class="admin__field-control">
501  <textarea data-role="image-description"
502  rows="3"
503  class="admin__control-textarea"
504  name="product[media_gallery][images][<%- data.file_id %>][label]"
505  ><%- data.label %></textarea>
506  </div>
507  </div>
508 
509  <div class="admin__field field-image-role">
510  <label class="admin__field-label">
511  <span><?= $block->escapeHtml(
512  __('Role')
513  );?></span>
514  </label>
515  <div class="admin__field-control">
516  <ul class="multiselect-alt">
517  <?php
518  foreach ($block->getMediaAttributes() as $attribute) :
519  ?>
520  <li class="item">
521  <label>
522  <input class="image-type"
523  data-role="type-selector"
524  type="checkbox"
525  value="<?= $block->escapeHtml(
526  $attribute->getAttributeCode()
527  ) ?>"
528  />
529  <?= $block->escapeHtml(
530  $attribute->getFrontendLabel()
531  ) ?>
532  </label>
533  </li>
534  <?php
535  endforeach;
536  ?>
537  </ul>
538  </div>
539  </div>
540 
541  <div class="admin__field admin__field-inline field-image-size" data-role="size">
542  <label class="admin__field-label">
543  <span><?= $block->escapeHtml(
544  __('Image Size')
545  ); ?></span>
546  </label>
547  <div class="admin__field-value" data-message="<?= $block->escapeHtml(
548  __('{size}')
549  ); ?>"></div>
550  </div>
551 
552  <div class="admin__field admin__field-inline field-image-resolution" data-role="resolution">
553  <label class="admin__field-label">
554  <span><?= $block->escapeHtml(
555  __('Image Resolution')
556  ); ?></span>
557  </label>
558  <div class="admin__field-value" data-message="<?= $block->escapeHtml(
559  __('{width}^{height} px')
560  ); ?>"></div>
561  </div>
562 
563  <div class="admin__field field-image-hide">
564  <div class="admin__field-control">
565  <div class="admin__field admin__field-option">
566  <input type="checkbox"
567  id="hide-from-product-page"
568  data-role="visibility-trigger"
569  value="1"
570  class="admin__control-checkbox"
571  name="product[media_gallery][images][<%- data.file_id %>][disabled]"
572  <% if (data.disabled == 1) { %>checked="checked"<% } %> />
573 
574  <label for="hide-from-product-page" class="admin__field-label">
575  <?= $block->escapeHtml(
576  __('Hide from Product Page')
577  ); ?>
578  </label>
579  </div>
580  </div>
581  </div>
582  </fieldset>
583  </div>
584  </script>
585  </div>
586  </li>
587  <!-- /ko -->
588  </ul>
589  </div>
590  </div>
591  </div>
592 
593  <div data-bind="with: sections().price" class="steps-wizard-section">
594  <div data-role="section">
595  <div class="steps-wizard-section-title">
596  <span><?= $block->escapeHtml(
597  __('Price')
598  ); ?></span>
599  </div>
600  <ul class="steps-wizard-section-list">
601  <li>
602  <div class="admin__field admin__field-option">
603  <input type="radio"
604  id="apply-single-price-radio"
605  class="admin__control-radio"
606  value="single"
607  data-bind="checked:type" />
608  <label for="apply-single-price-radio"
609  class="admin__field-label">
610  <span><?= $block->escapeHtml(
611  __('Apply single price to all SKUs')
612  ); ?></span>
613  </label>
614  </div>
615  </li>
616  <li>
617  <div class="admin__field admin__field-option">
618  <input type="radio"
619  id="apply-unique-prices-radio"
620  class="admin__control-radio"
621  value="each"
622  data-bind="checked:type" />
623  <label for="apply-unique-prices-radio"
624  class="admin__field-label">
625  <span><?= $block->escapeHtml(
626  __('Apply unique prices by attribute to each SKU')
627  ); ?></span>
628  </label>
629  </div>
630  </li>
631  <li>
632  <div class="admin__field admin__field-option">
633  <input type="radio"
634  id="skip-pricing-radio"
635  class="admin__control-radio"
636  value="none"
637  checked
638  data-bind="checked:type" />
639  <label for="skip-pricing-radio" class="admin__field-label">
640  <span><?= $block->escapeHtml(
641  __('Skip price at this time')
642  ); ?></span>
643  </label>
644  </div>
645  </li>
646  </ul>
647  <form data-role="attributes-values-form">
648  <fieldset class="admin__fieldset bulk-attribute-values" data-bind="visible: type() == 'single'">
649  <div class="admin__field _required">
650  <label for="apply-single-price-input" class="admin__field-label">
651  <span><?= $block->escapeHtml(
652  __('Price')
653  ); ?></span>
654  </label>
655  <div class="admin__field-control">
656  <div class="currency-addon">
657  <input class="admin__control-text required-entry validate-zero-or-greater" type="text"
658  data-bind="value:value, uniqueName: true" id="apply-single-price-input"/>
659  <span class="currency-symbol" data-bind="text:currencySymbol"></span>
660  </div>
661  </div>
662  </div>
663  </fieldset>
664  </form>
665 
666  <div data-bind="visible: type() == 'each'">
667  <fieldset class="admin__fieldset bulk-attribute-values">
668  <div class="admin__field _required">
669  <label for="select-each-price" class="admin__field-label">
670  <span><?= $block->escapeHtml(
671  __('Select attribute')
672  ); ?></span>
673  </label>
674  <div class="admin__field-control">
675  <select id="select-each-price" class="admin__control-select" data-bind="
676  options: $parent.attributes,
677  optionsText: 'label',
678  value: attribute,
679  optionsCaption: 'Select'"></select>
680  </div>
681  </div>
682  </fieldset>
683 
684  <form data-role="attributes-values-form">
685  <fieldset class="admin__fieldset bulk-attribute-values" data-bind="if:attribute">
686  <!-- ko foreach: attribute().chosen -->
687  <div class="admin__field _required">
688  <label data-bind="attr: {for: 'apply-single-price-input-' + $index()}" class="admin__field-label">
689  <span data-bind="text:label"></span>
690  </label>
691  <div class="admin__field-control">
692  <div class="currency-addon">
693  <input class="admin__control-text required-entry validate-zero-or-greater"
694  type="text"
695  data-bind="value:sections()[$parent.label], uniqueName: true,
696  attr: {id: 'apply-single-price-input-' + $index()}"/>
697  <span class="currency-symbol" data-bind="text:$parent.currencySymbol"></span>
698  </div>
699  </div>
700  </div>
701  <!-- /ko -->
702  </fieldset>
703  </form>
704  </div>
705  </div>
706  </div>
707 
708  <div data-bind="with: sections().quantityPerSource" class="steps-wizard-section">
709  <div data-role="section">
710  <div class="steps-wizard-section-title">
711  <span><?= $block->escapeHtml(__('Quantity per source')) ?></span>
712  </div>
713  <ul class="steps-wizard-section-list">
714  <li>
715  <div class="admin__field admin__field-option">
716  <input type="radio"
717  id="apply-single-inventory-radio"
718  class="admin__control-radio"
719  value="single"
720  data-bind="checked: type" />
721  <label for="apply-single-inventory-radio" class="admin__field-label">
722  <span><?= $block->escapeHtml(__('Apply single quantity to each SKUs')) ?></span>
723  </label>
724  </div>
725  </li>
726  <li>
727  <div class="admin__field admin__field-option">
728  <input type="radio"
729  id="apply-unique-inventory-radio"
730  class="admin__control-radio"
731  value="each"
732  data-bind="checked: type" />
733  <label for="apply-unique-inventory-radio" class="admin__field-label">
734  <span><?= $block->escapeHtml(__('Apply unique quantity by attribute to each SKU')) ?></span>
735  </label>
736  </div>
737  </li>
738  <li>
739  <div class="admin__field admin__field-option">
740  <input type="radio"
741  id="skip-inventory-radio"
742  class="admin__control-radio"
743  value="none"
744  checked
745  data-bind="checked: type" />
746  <label for="skip-inventory-radio" class="admin__field-label">
747  <span><?= $block->escapeHtml(__('Skip quantity at this time')) ?></span>
748  </label>
749  </div>
750  </li>
751  </ul>
752 
753  <form data-role="attributes-values-form">
754  <fieldset class="admin__fieldset bulk-attribute-values" data-bind="visible: type() == 'single'">
755  <div data-bind="scope: 'quantity_resolver'">
756  <!-- ko template: $data.getTemplate() --><!-- /ko -->
757  </div>
758  </fieldset>
759  </form>
760 
761  <div data-bind="visible: type() == 'each'">
762  <fieldset class="admin__fieldset bulk-attribute-values">
763  <div class="admin__field _required">
764  <label for="apply-single-price-input-qty" class="admin__field-label">
765  <span><?= $block->escapeHtml(__('Select attribute')) ?></span>
766  </label>
767  <div class="admin__field-control">
768  <select id="apply-single-price-input-qty" class="admin__control-select" data-bind="
769  options: $parent.attributes,
770  optionsText: 'label',
771  value: attribute,
772  optionsCaption: 'Select'"></select>
773  </div>
774  </div>
775  </fieldset>
776  <form data-role="attributes-values-form">
777  <fieldset class="admin__fieldset bulk-attribute-values" data-bind="if:attribute">
778  <div data-bind="scope: 'quantity_resolver'">
779  <!-- ko template: $data.getTemplate() --><!-- /ko -->
780  </div>
781  </fieldset>
782  </form>
783  </div>
784  </div>
785  </div>
786  </form>
787 </div>
788 
789 <script type="text/x-magento-init">
790 {
791  "*": {
792  "Magento_Ui/js/core/app": {
793  "components": {
794  "<?= /* @noEscape */ $block->getComponentName() ?>": {
795  "component": "Magento_InventoryConfigurableProductAdminUi/js/variations/steps/bulk",
796  "appendTo": "<?= /* @noEscape */ $block->getParentComponentName() ?>",
797  "noImage": "<?= /* @noEscape */ $block->getNoImageUrl() ?>",
798  "variationsComponent": "<?= /* @noEscape */ $block->getData('config/form') ?>.configurableVariations",
799  "provider": "product_form.product_form_data_source",
800  "quantityResolver": "quantity_resolver"
801  },
802  "quantity_resolver": {
803  "component": "Magento_InventoryConfigurableProductAdminUi/js/configurable-quantity-resolver",
804  "name": "quantity_resolver",
805  "childTemplate": <?= /* @noEscape */ $block->getJsonConfig() ?>,
806  "provider": "product_form.product_form_data_source",
807  "insertListingComponent": "product_form.product_form.assign_sources_configurable_modal.assign_sources_configurable_grid",
808  "imports": {
809  "type": "${$.provider}:data.inventoryType",
810  "attribute": "${$.provider}:data.inventoryAttribute"
811  }
812  }
813  }
814  }
815  }
816 }
817 </script>
foreach( $block->getMediaAttributes() as $attribute)($attribute->getAttributeCode()) ?>" class endforeach
Definition: bulk.phtml:159
$block setTitle( 'CMS Block Title') -> setIdentifier('fixture_block') ->setContent('< h1 >Fixture Block Title</h1 >< a href=" store url</a><p> Config value
Definition: block.php:9
__()
Definition: __.php:13
jquery extjs ext tree mage adminhtml form
Definition: tree.phtml:41
$block
Definition: block.php:8