Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
js.phtml
Go to the documentation of this file.
1 <?php
7 // @codingStandardsIgnoreFile
8 
9 ?>
10 <script>
11 require([
12  'prototype'
13 ], function () {
14 
15 var freeModel = Class.create();
16 freeModel.prototype = {
17  initialize : function()
18  {
19  this.reload = false;
20  this.bindFreeMethodCutoffCostRelation();
21  },
22  bindFreeMethodCutoffCostRelation : function(parentId)
23  {
24  if (parentId) {
25  // todo: fix bug in IE
26  var freeMethodElements = $$('#'+parentId+' .free-method');
27  } else {
28  var freeMethodElements = $$('.free-method');
29  }
30  for(var i=0;i<freeMethodElements.length; i++) {
31  Event.observe(freeMethodElements[i], 'change', this.checkFreeMethod.bind(this));
32  this.initFreeMethod(freeMethodElements[i]);
33  }
34  },
35  initFreeMethod : function(element)
36  {
37  var freeMethodElement = element;
38 
39  if (freeMethodElement && freeMethodElement.id) {
40  var cutoffElement = $(freeMethodElement.id.replace(/free_method/, 'cutoff_cost'));
41  if (cutoffElement) {
42  if (freeMethodElement.value == '') {
43  cutoffElement.disabled = true;
44  } else {
45  cutoffElement.disabled = false;
46  }
47  }
48  }
49  },
50  checkFreeMethod : function(event)
51  {
52  var freeMethodElement = Event.element(event);
53  if (freeMethodElement && freeMethodElement.id) {
54  var cutoffElement = $(freeMethodElement.id.replace(/free_method/, 'cutoff_cost'));
55  if (cutoffElement) {
56  if (freeMethodElement.value == '') {
57  cutoffElement.disabled = true;
58  } else {
59  cutoffElement.disabled = false;
60  }
61  }
62  }
63  }
64 }
65 
66 freeMethod = new freeModel();
67 
68 var originModel = Class.create();
69 originModel.prototype = {
70  initialize : function()
71  {
72  this.reload = false;
73  this.loader = new varienLoader(true);
74  this.regionsUrl = "<?= /* @escapeNotVerified */ $block->getUrl('directory/json/countryRegion') ?>";
75 
76  this.bindCountryRegionRelation();
77  },
78  bindCountryRegionRelation : function(parentId)
79  {
80  if (parentId) {
81  // todo: fix bug in IE
82  var countryElements = $$('#'+parentId+' .countries');
83  } else {
84  var countryElements = $$('.countries');
85  }
86  for(var i=0; i<countryElements.size(); i++) {
87  Event.observe(countryElements[i], 'change', this.reloadRegionField.bind(this));
88  this.initRegionField(countryElements[i]);
89  if ($(countryElements[i].id+'_inherit')) {
90  Event.observe($(countryElements[i].id+'_inherit'), 'change', this.enableRegionZip.bind(this));
91  }
92  }
93  },
94  enableRegionZip : function(event)
95  {
96  this.reload = true;
97  var countryElement = Event.element(event);
98  if (countryElement && countryElement.id && !countryElement.checked) {
99  var regionElement = $(countryElement.id.replace(/country_id/, 'region_id'));
100  var zipElement = $(countryElement.id.replace(/country_id/, 'postcode'));
101  if (regionElement && regionElement.checked) {
102  regionElement.click();
103  }
104  if (zipElement && zipElement.checked) {
105  zipElement.click();
106  }
107  }
108  },
109  initRegionField : function(element)
110  {
111  var countryElement = element;
112  if (countryElement && countryElement.id) {
113  var regionElement = $(countryElement.id.replace(/country_id/, 'region_id'));
114  if (regionElement) {
115  this.regionElement = regionElement;
116  if (countryElement.value.length) {
117  var url = this.regionsUrl+'parent/'+countryElement.value;
118  this.loader.load(url, {}, this.refreshRegionField.bind(this));
119  } else {
120  this.clearRegionField(this.regionElement.disabled);
121  }
122  }
123  }
124  },
125  reloadRegionField : function(event)
126  {
127  this.reload = true;
128  var countryElement = Event.element(event);
129  if (countryElement && countryElement.id) {
130  var regionElement = $(countryElement.id.replace(/country_id/, 'region_id'));
131  if (regionElement) {
132  this.regionElement = regionElement;
133  if (countryElement.value.length) {
134  var url = this.regionsUrl+'parent/'+countryElement.value;
135  this.loader.load(url, {}, this.refreshRegionField.bind(this));
136  } else {
137  this.clearRegionField(this.regionElement.disabled);
138  }
139  }
140  }
141  },
142  refreshRegionField : function(serverResponse)
143  {
144  if (serverResponse) {
145  var data = eval('(' + serverResponse + ')');
146  var value = this.regionElement.value;
147  var disabled = this.regionElement.disabled;
148  if (data.length) {
149  var html = '<select name="'+this.regionElement.name+'" id="'+this.regionElement.id+'" class="required-entry select" title="'+this.regionElement.title+'"'+(disabled?" disabled":"")+'>';
150  for (var i in data) {
151  if (data[i].label) {
152  html+= '<option value="'+data[i].value+'"';
153  if (this.regionElement.value && (this.regionElement.value == data[i].value || this.regionElement.value == data[i].label)) {
154  html+= ' selected';
155  }
156  html+='>'+data[i].label+'<\/option>';
157  }
158  }
159  html+= '<\/select>';
160 
161  var parentNode = this.regionElement.parentNode;
162  var regionElementId = this.regionElement.id;
163  parentNode.innerHTML = html;
164  this.regionElement = $(regionElementId);
165  } else if (this.reload) {
166  this.clearRegionField(disabled);
167  }
168  }
169  },
170  clearRegionField: function(disabled) {
171  var html = '<input type="text" name="' + this.regionElement.name + '" id="' + this.regionElement.id + '" class="input-text" title="' + this.regionElement.title + '"' + (disabled ? " disabled" : "") + '>';
172  var parentNode = this.regionElement.parentNode;
173  var regionElementId = this.regionElement.id;
174  parentNode.innerHTML = html;
175  this.regionElement = $(regionElementId);
176  }
177 }
178 
179 originAddress = new originModel();
180 
181 var perPageModel = Class.create();
182 
183 perPageModel.prototype = {
184  initialize : function()
185  {
186  this.listModeElement = $('catalog_frontend_list_mode');
187  if (this.listModeElement) {
188  this.gridValuesElement = $('catalog_frontend_grid_per_page_values');
189  this.listValuesElement = $('catalog_frontend_list_per_page_values');
190  this.listElement = $('catalog_frontend_list_per_page');
191  this.gridElement = $('catalog_frontend_grid_per_page');
192 
193  this.gridOptions = [];
194  this.listOptions = [];
195 
196  this.refreshPerPageSelect();
197  this.bindListModeChange();
198  }
199  },
200  bindListModeChange : function()
201  {
202  Event.observe(this.listModeElement, 'change', this.refreshPerPageSelect.bind(this));
203  },
204  refreshPerPageSelect : function()
205  {
206  if (this.listModeElement.value != '') {
207  if (this.listModeElement.value == 'grid') {
208  this.listElement.up(1).hide();
209  this.listValuesElement.up(1).hide();
210 
211  this.gridElement.up(1).show();
212  this.gridValuesElement.up(1).show();
213  } else if (this.listModeElement.value == 'grid-list' || this.listModeElement.value == 'list-grid') {
214  this.listElement.up(1).show();
215  this.listValuesElement.up(1).show();
216 
217  this.gridElement.up(1).show();
218  this.gridValuesElement.up(1).show();
219  } else if (this.listModeElement.value == 'list') {
220  this.listElement.up(1).show();
221  this.listValuesElement.up(1).show();
222 
223  this.gridElement.up(1).hide();
224  this.gridValuesElement.up(1).hide();
225  }
226  }
227  }
228 }
229 
230 perPageSelect = new perPageModel();
231 
232 function showHint() {
233  $$('.hint').each(function(element){
234  Event.observe(element, 'mouseover', function(){
235  element.down().show()
236  });
237  Event.observe(element, 'mouseout', function(){
238  element.down().hide()
239  });
240  });
241 }
242 
243 Event.observe(window, 'load', showHint);
244 
245 });
246 </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