Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
edit.phtml
Go to the documentation of this file.
1 <?php
7 // @codingStandardsIgnoreFile
8 
10 ?>
11 <script>
12 require([
13  'jquery',
14  'Magento_Ui/js/modal/alert',
15  "jquery/ui",
16  'mage/multiselect',
17  "mage/mage",
18  'Magento_Ui/js/modal/modal'
19 ], function($, alert){
20 
21  $.widget("adminhtml.dialogRates", $.mage.modal, {
22  options: {
23  itemRate: {},
24  itemRateDefault: {}
25  },
26  _create: function() {
27  this._super();
28  this._getFormData(this.options.itemRateDefault);
29  },
30  openModal: function() {
31  var zipIsRange = this.modal.find('#zip_is_range');
32 
33  this._applyItem(this.options.itemRateDefault);
34  if (this.options.itemRate && !$.isEmptyObject(this.options.itemRate)) {
35  this._applyItem(this.options.itemRate);
36  }
37  zipIsRange.attr('checked', zipIsRange.val() == 1);
38  zipIsRange.trigger('change');
39  updater.update();
40  this._super();
41  },
42  closeModal: function() {
43  this._super();
44  },
45  _applyItem: function(rate) {
46  var dialogElement = this.modal;
47 
48  $.each(rate, function(key, value) {
49  if (!value) {
50  value = '';
51  }
52  dialogElement.find('[name="' + key + '"]').attr('value', value);
53  });
54  },
55  updateItemRate: function() {
56  this._getFormData(this.options.itemRate);
57  },
58  _getFormData: function(data) {
59  $.each(this.modal.find(':input'), function() {
60  if (this.name) {
61  data[this.name] = this.value
62  }
63  });
64  }
65  });
66 
67  TaxRateEditableMultiselect = function (settings) {
68  this.settings = settings || {};
69  this.isEntityEditable = this.settings.is_entity_editable || false;
70 
71  this.edit = function() {
72  var listItem = $(this).closest('.mselect-list-item');
73  var that = listItem.children('.mselect-edit');
74  var id = listItem.find('input[type="checkbox"]').attr('value'),
75  item;
76 
77  $('body').trigger('processStart');
78  $.ajax({
79  type: "POST",
80  data: {id:id},
81  url: '<?= /* @escapeNotVerified */ $block->getTaxRateLoadUrl() ?>',
82  success: function(result, status) {
83  $('body').trigger('processStop');
84  if (result.success) {
85  item=result.result;
86  item.itemElement = that.prev();
87  $('#tax-rate-form')
88  .dialogRates({itemRate: item})
89  .dialogRates('openModal');
90 
91  } else {
92  if (result.error_message)
93  alert({
94  content: result.error_message
95  });
96  else
97  alert({
98  content: '<?= /* @escapeNotVerified */ __('An error occurred') ?>'
99  });
100  }
101  },
102  error: function () {
103  $('body').trigger('processStop');
104  alert({
105  content: '<?= /* @escapeNotVerified */ __('An error occurred') ?>'
106  });
107  },
108  dataType: "json"
109  });
110  };
111 
112  TaxRateEditableMultiselect.prototype.init = function () {
113  var options = {
114  mselectContainer: '#tax_rate + section.mselect-list',
115  toggleAddButton:false,
116  addText: '<?= /* @escapeNotVerified */ __('Add New Tax Rate') ?>',
117  parse: null,
118  nextPageUrl: '<?php echo $block->escapeHtml($block->getTaxRatesPageUrl())?>',
119  selectedValues: this.settings.selected_values,
120  mselectInputSubmitCallback: function (value, options) {
121  var select = $('#tax_rate');
122  select.append('<option value="" selected="selected">' + value + '</option>');
123  var mselectItemHtml = $(options.item.replace(/%value%|%label%/gi, value)
124  .replace(/%mselectCheckedClass%|%mselectDisabledClass%|%iseditable%|%isremovable%/gi, '')
125  .replace(/%checked%|%disabled%/gi, '')
126  .replace(/%mselectListItemClass%/gi, options.mselectListItemClass))
127  .find('[type=checkbox]')
128  .attr('checked', true)
129  .addClass(options.mselectCheckedClass)
130  .end();
131  var itemsWrapper = select.nextAll('section.block:first')
132  .find('.' + options.mselectItemsWrapperClass + '');
133  itemsWrapper.children('.' + options.mselectListItemClass + '').length
134  ? itemsWrapper.children('.' + options.mselectListItemClass + ':last').after(mselectItemHtml)
135  : itemsWrapper.prepend(mselectItemHtml);
136  }
137  };
138  var taxRate = $('#tax_rate'),
139  taxRateField = taxRate.parent(),
140  taxRateForm = $('#tax-rate-form'),
141  taxRateFormElement = $('#<?= /* @escapeNotVerified */ \Magento\Tax\Block\Adminhtml\Rate\Form::FORM_ELEMENT_ID ?>');
142 
143  if (!this.isEntityEditable) {
144  // Override default layout of editable multiselect
145  options['layout'] = '<section class="block %mselectListClass%">'
146  + '<div class="block-content"><div class="%mselectItemsWrapperClass%">'
147  + '%items%'
148  + '</div></div>'
149  + '<div class="%mselectInputContainerClass%">'
150  + '<input type="text" class="%mselectInputClass%" title="%inputTitle%"/>'
151  + '<span class="%mselectButtonCancelClass%" title="%cancelText%"></span>'
152  + '<span class="%mselectButtonSaveClass%" title="Add"></span>'
153  + '</div>'
154  + '</section>';
155  options['mselectInputSubmitCallback'] = null;
156  }
157 
158  taxRate.multiselect2(options);
159 
160  taxRateField.find('.mselect-button-add').off('click');
161 
162  taxRateField.find('.mselect-list')
163  .on('click.mselect-edit', '.mselect-edit', this.edit)
164  .on("click.mselect-delete", ".mselect-delete", function () {
165  if (!confirm('<?= /* @escapeNotVerified */ __('Do you really want to delete this tax rate?') ?>')) {
166  return;
167  }
168 
169  var that = $(this),
170  select = that.closest('.mselect-list').prev(),
171  rateValue = that.parent().find('input[type="checkbox"]').val();
172 
173  $('body').trigger('processStart');
174  var ajaxOptions = {
175  type: 'POST',
176  data: {
177  tax_calculation_rate_id: rateValue,
178  form_key: $('input[name="form_key"]').val()
179  },
180  dataType: 'json',
181  url: '<?= /* @escapeNotVerified */ $block->getTaxRateDeleteUrl() ?>',
182  success: function(result, status) {
183  $('body').trigger('processStop');
184  if (result.success) {
185  that.parent().remove();
186  select.find('option').each(function() {
187  if (this.value === rateValue) {
188  $(this).remove();
189  }
190  });
191  select.trigger('change.hiddenSelect');
192  } else {
193  if (result.error_message)
194  alert({
195  content: result.error_message
196  });
197  else
198  alert({
199  content: '<?= /* @escapeNotVerified */ __('An error occurred') ?>'
200  });
201  }
202  },
203  error: function () {
204  $('body').trigger('processStop');
205  alert({
206  content: '<?= /* @escapeNotVerified */ __('An error occurred') ?>'
207  });
208  }
209  };
210  $.ajax(ajaxOptions);
211 
212  })
213  .on('click.mselectAdd', '.mselect-button-add', function () {
215  .dialogRates({itemRate: {}})
216  .dialogRates('openModal');
217  })
218  .on('click.mselect-checked', '.mselect-list-item input', function (event) {
219  var el = $(this),
220  checkedClassName = 'mselect-checked';
221  el[el.is(':checked') ? 'addClass' : 'removeClass'](checkedClassName);
222  })
223  .on('dblclick.mselect-list-item', '.mselect-list-item label span', this.edit);
224  taxRateFormElement.mage('form').mage('validation');
225 
226  taxRateForm.dialogRates({
227  title: '<?= /* @escapeNotVerified */ __('Tax Rate') ?>',
228  type: 'slide',
229  id: '<?= /* @escapeNotVerified */ $block->getJsId() ?>',
230  modalClass: 'tax-rate-popup',
231  closed: function () {
232  taxRateFormElement.data('validation').clearError();
233  },
234  buttons: [{
235  text: '<?= /* @escapeNotVerified */ __('Save') ?>',
236  'class': 'action-save action-primary',
237  click: function() {
238  this.updateItemRate();
239  var itemRate = this.option('itemRate'),
240  itemRateData = $.extend({}, itemRate);
241 
242  if (itemRateData.itemElement) {
243  delete itemRateData.itemElement;
244  }
245 
246  if (!taxRateFormElement.validation().valid()) {
247  return;
248  }
249  $('.tax-rate-popup').trigger('processStart');
250  $('.loading-mask').css('z-index','1004');
251  var ajaxOptions = {
252  type: 'POST',
253  data: itemRateData,
254  dataType: 'json',
255  url: '<?= /* @escapeNotVerified */ $block->getTaxRateSaveUrl() ?>',
256  success: function(result, status) {
257  $('body').trigger('processStop');
258  if (result.success) {
259  itemRate.code = result.code;
260  if (itemRate.tax_calculation_rate_id) {
261  itemRate.itemElement.find('span').html(itemRate.code);
262  } else {
263  itemRate.tax_calculation_rate_id = result.tax_calculation_rate_id;
264  taxRateField.find('.mselect-input').val(itemRate.code);
265  taxRateField.find('.mselect-save').trigger('mousedown');
266  taxRateField.find('option[value=""]:last')
267  .val(itemRate.tax_calculation_rate_id);
268  taxRateField.find('input[type="checkbox"][value="' + itemRate.code + '"]')
269  .val(itemRate.tax_calculation_rate_id);
270  taxRateField.find('select').trigger('change.hiddenSelect');
271  }
272  taxRateForm.dialogRates('closeModal');
273  } else {
274  if (result.error_message)
275  alert({
276  content: result.error_message
277  });
278  else
279  alert({
280  content: '<?= /* @escapeNotVerified */ __('An error occurred') ?>'
281  });
282  }
283  },
284  error: function () {
285  $('body').trigger('processStop');
286  alert({
287  content: '<?= /* @escapeNotVerified */ __('An error occurred') ?>'
288  });
289  }
290  };
291  $.ajax(ajaxOptions);
292  }
293  }]
294  });
295  $('.grid-loading-mask').hide();
296  }
297  };
298 
299  window.TaxRateEditableMultiselect = TaxRateEditableMultiselect;
300 });
301 </script>
$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
itemsWrapper
Definition: edit.phtml:131
taxRateField find('.mselect-list') .on( 'click.mselect-edit'
Definition: edit.phtml:162
mselectItemHtml
Definition: edit.phtml:123
if( $form)() ?>< script > require(['jquery' mage mage
Definition: save.phtml:15
taxRateField this edit() this edit
Definition: edit.phtml:223
itemsWrapperchildren('.'+options.mselectListItemClass+'').length ? itemsWrapper.children('.'+options.mselectListItemClass+'() taxRateFormElement
Definition: edit.phtml:141
itemsWrapperchildren('.'+options.mselectListItemClass+'').length ? itemsWrapper.children('.'+options.mselectListItemClass+'() taxRateForm
Definition: edit.phtml:140
taxRateField this edit on("click.mselect-delete", ".mselect-delete", function() { if(!confirm('<?=/*@escapeNotVerified */__( 'Do you really want to delete this tax rate?') ?>')) { return;} var that=$(this), select=that.closest('.mselect-list').prev(), rateValue=that.parent().find( 'input[type="checkbox"]').val();$( 'body').trigger( 'processStart');var ajaxOptions={ type:'POST', data:{ tax_calculation_rate_id:rateValue, form_key:$( 'input[name="form_key"]').val() }, dataType:'json', url:'<?=/*@escapeNotVerified */$block->getTaxRateDeleteUrl() ?>', success:function(result, status) { $( 'body').trigger( 'processStop');if(result.success) { that.parent().remove();select.find( 'option').each(function() { if(this.value===rateValue) { $(this).remove();} });select.trigger( 'change.hiddenSelect');} else { if(result.error_message) alert({ content:result.error_message });else alert({ content:'<?=/*@escapeNotVerified */__( 'An error occurred') ?>' });} }, error:function() { $( 'body').trigger( 'processStop');alert({ content:'<?=/*@escapeNotVerified */__( 'An error occurred') ?>' });} };$.ajax(ajaxOptions);}) .on( 'click.mselectAdd'
Definition: edit.phtml:164
window TaxRateEditableMultiselect
Definition: edit.phtml:299