22 background-color: #DFF7FF!important;
25 <
form action=
"<?= /* @escapeNotVerified */ $block->getSaveUrl() ?>" method=
"post" id=
"config-edit-form" enctype=
"multipart/form-data">
26 <?=
$block->getBlockHtml(
'formkey') ?>
27 <div
class=
"accordion">
28 <?=
$block->getChildHtml(
'form') ?>
37 "mage/adminhtml/form",
40 ],
function(
jQuery, registry){
42 var adminSystemConfig = {
43 navigateToElement:
function (searchRequest) {
44 if (
'section' in searchRequest) {
45 var section = searchRequest.section;
47 if (
'group' in searchRequest) {
48 var group = searchRequest.group;
50 if (
'field' in searchRequest) {
51 var field = searchRequest.field;
53 if (typeof section ===
'undefined') {
56 if (typeof group !==
'undefined') {
57 var groupElement =
jQuery(
'#' + section +
'_' + group);
59 var parentSection = groupElement.parents(
'.section-config');
60 parentSection.addClass(
'highlighted');
61 setTimeout(
function() {
62 parentSection.removeClass(
'highlighted', 2000,
"easeInBack");
64 if (!parentSection.hasClass(
'active')) {
65 Fieldset.toggleCollapse(section +
'_' + group);
69 getUp:
function (element, tag) {
70 var
$element = Element.extend(element);
71 if (typeof
$element.upTag ==
'undefined') {
74 if (typeof
$element.upTag[tag] ==
'undefined') {
79 getUpTd:
function (element) {
80 return this.getUp(element,
'td');
82 getUpTr:
function (element) {
83 return this.getUp(element,
'tr');
85 getScopeElement:
function(element) {
86 var
$element = Element.extend(element);
87 if (typeof
$element.scopeElement ==
'undefined') {
88 var scopeElementName = element.getAttribute(
'name').replace(/\[
value\]$/,
'[inherit]');
89 $element.scopeElement = this.getUpTr(element).select(
'input[name="' + scopeElementName +
'"]')[0];
90 if (typeof
$element.scopeElement ==
'undefined') {
96 getDeleteElement:
function(element) {
97 var
$element = Element.extend(element);
98 if (typeof
$element.deleteElement ==
'undefined') {
99 $element.deleteElement = this.getUpTd(element)
100 .select(
'input[name="'+ element.getAttribute(
'name') +
'[delete]"]')[0];
101 if (typeof
$element.deleteElement ==
'undefined') {
107 mapClasses:
function(element, full, callback, classPrefix) {
108 if (typeof classPrefix ==
'undefined') {
109 classPrefix =
'shared' 111 element.classNames().each(
function(className) {
112 if (className.indexOf(classPrefix +
'-') == 0
113 || (full && className.indexOf(classPrefix +
'_') == 0)
119 getRegisteredEvents:
function(element) {
121 var registry = Element.retrieve(Element.extend(element),
'prototype_event_registry');
125 registry.each(
function(pair) {
126 var eventName = pair.key;
130 var responders = registry.get(eventName);
134 responders.each(
function(responder) {
135 if (!responder.handler) {
139 'eventName': eventName,
140 'handler': responder.handler
146 onchangeSharedElement:
function(event) {
147 var element = Element.extend(Event.element(event));
148 adminSystemConfig.mapClasses(element,
true,
function(className) {
149 $$(
'.' + className).each(
function(el) {
154 var tagName = el.tagName.toLowerCase();
155 if (tagName ==
'input' && el.getAttribute(
'type') ==
'file') {
156 var $el = Element.extend(el);
157 var events = adminSystemConfig.getRegisteredEvents(el);
158 $el.stopObserving(
'change');
160 $el.replace($el.outerHTML);
161 events.each(
function(event) {
162 Event.observe(Element.extend(document.getElementById(elId)), event.eventName, event.handler);
165 el.stopObserving(
'change', adminSystemConfig.onchangeSharedElement);
166 if (tagName ==
'input' && el.getAttribute(
'type') ==
'checkbox') {
167 if (el.checked != element.checked) {
168 Element.extend(el).click();
170 }
else if (tagName ==
'select') {
171 var $el = Element.extend(el);
172 Element.extend(element).select(
'option').each(
function(option) {
173 var relatedOption = $el.select(
'option[value="' + option.value +
'"]')[0];
174 if (typeof relatedOption !=
'undefined') {
175 relatedOption.selected = option.selected;
179 el.value = element.getValue();
181 if (Element.extend(el).requiresObj) {
182 Element.extend(el).requiresObj.indicateEnabled();
184 fireEvent(el,
'change');
185 Event.observe(el,
'change', adminSystemConfig.onchangeSharedElement);
190 checkRequired:
function(element, callback) {
191 var tagName = this.tagName.toLowerCase();
192 if (tagName !=
'fieldset') {
193 if (adminSystemConfig.getUpTr(
this).visible()) {
195 if (this.hasClassName(
'not-required')) {
200 if (tagName ==
'input') {
201 typeAttr = this.getAttribute(
'type').toLowerCase();
203 var valueIsEmpty =
false;
204 var scopeElement = adminSystemConfig.getScopeElement(
this);
205 if (!scopeElement || !scopeElement.checked) {
206 if (typeAttr ==
'file') {
207 var deleteUploadedElement = adminSystemConfig.getDeleteElement(
this);
208 valueIsEmpty = !deleteUploadedElement && this.
value ==
'' 209 || deleteUploadedElement && deleteUploadedElement.checked;
211 valueIsEmpty = valueIsEmpty
212 || (typeAttr ==
'text' || typeAttr ==
'password') && this.
value ==
'' 213 || (tagName ==
'select') && (this.getAttribute(
'multiple') !=
null)
214 && this.getValue().length == 0
215 || (tagName ==
'select') && (this.getAttribute(
'multiple') ==
null)
216 && this.getValue() ==
null;
220 if (element.value != 0) {
222 fireEvent(element,
'change');
228 this.select(
'input,select').each(
function(inputElement) {
229 adminSystemConfig.checkRequired.call(Element.extend(inputElement), element, callback);
236 window.configForm =
jQuery(
'#config-edit-form').mage(
'form').mage(
'validation', {
237 submitHandler:
function(
form)
239 $$(
'.requires').each(
function(element) {
240 var scopeElement = adminSystemConfig.getScopeElement(element);
241 if (!scopeElement || !scopeElement.checked) {
242 Element.extend(element).disabled =
false;
250 $$(
'.shared').each(
function(element){
251 Event.observe(element,
'change', adminSystemConfig.onchangeSharedElement);
254 var scopeElement = adminSystemConfig.getScopeElement(element);
256 adminSystemConfig.mapClasses(element,
false,
function(className) {
257 scopeElement.addClassName(
'shared_scope-' + className.substr(7));
259 Event.observe(scopeElement,
'change', adminSystemConfig.onchangeSharedElement);
263 if (element.tagName.toLowerCase() ==
'input' && element.getAttribute(
'type') ==
'file') {
264 var deleteUploadedElement = adminSystemConfig.getDeleteElement(element);
265 if (deleteUploadedElement) {
266 adminSystemConfig.mapClasses(element,
false,
function(className) {
267 deleteUploadedElement.addClassName(
'shared_delete-' + className.substr(7));
269 Event.observe(deleteUploadedElement,
'change', adminSystemConfig.onchangeSharedElement);
274 adminSystemConfig.mapClasses(element,
true,
function(className) {
275 var controls = adminSystemConfig.getUpTd(element).select(
'.' + className);
276 if (controls.length < 2) {
281 controls.each(
function(controlElement) {
282 controlElement.removeClassName(className);
283 controlElement.addClassName(
'shared_' + counter + className.substr(6));
289 $$(
'.requires').each(
function(element) {
291 'element': Element.extend(element),
293 'callback':
function(required) {},
294 checkRequirements:
function() {
295 var scopeElement = adminSystemConfig.getScopeElement(eventObj.element);
296 if (!scopeElement || !scopeElement.checked) {
297 eventObj.element.enable();
298 eventObj.requires.each(
function(required) {
299 adminSystemConfig.checkRequired.call(Element.extend(required), eventObj.element, eventObj.callback);
303 keydownCheckRequirements:
function() {
304 window.setTimeout(eventObj.checkRequirements, 1);
306 bindCheckingObserver:
function(element) {
307 if (element.tagName.toLowerCase() ==
'fieldset') {
308 Element.extend(element).select(
'input,select').each(
function(subElement) {
309 eventObj.bindCheckingObserver(subElement);
312 var scopeElement = adminSystemConfig.getScopeElement(element);
314 Event.observe(scopeElement,
'click', eventObj.checkRequirements);
316 Event.observe(element,
'change', eventObj.checkRequirements);
317 Event.observe(element,
'keydown', eventObj.keydownCheckRequirements);
320 indicateEnabled:
function() {
321 var labelElement = adminSystemConfig.getUpTr(eventObj.element).select(
'td.label label')[0];
322 if (typeof labelElement !=
'undefined') {
323 if (eventObj.element.value == 1) {
324 labelElement.addClassName(
'enabled');
326 labelElement.removeClassName(
'enabled');
333 adminSystemConfig.mapClasses(element,
false,
function(className) {
334 var requiredElement = Element.extend(document.getElementById(className.substr(9)));
335 if (requiredElement) {
336 eventObj.requires.push(requiredElement);
339 Element.extend(element).requiresObj = eventObj;
342 var scopeElement = adminSystemConfig.getScopeElement(element);
344 Event.stopObserving(scopeElement,
'click');
345 Event.observe(scopeElement,
'click',
function(event) {
346 toggleValueElements(scopeElement, Element.previous(scopeElement.parentNode));
347 eventObj.checkRequirements();
352 eventObj.requires.each(
function(required) {
353 eventObj.bindCheckingObserver(required);
355 Event.observe(eventObj.element,
'change', eventObj.indicateEnabled);
356 eventObj.checkRequirements();
357 eventObj.indicateEnabled();
360 var handleHash =
function () {
361 if (window.location.hash ==
'') {
365 var hashString = window.location.hash.replace(
'#',
''),
366 containerId = hashString.replace(
'-link',
''),
367 state =
jQuery(
'#' + containerId +
'-state'),
368 head =
jQuery(
'#' + containerId +
'-head');
375 Fieldset.applyCollapse(containerId);
381 window.addEventListener(
'hashchange', handleHash);
384 registry.set(
'adminSystemConfig', adminSystemConfig);
386 adminSystemConfig.navigateToElement(<?php echo
$block->getConfigSearchParamsJson(); ?>);
$block setTitle( 'CMS Block Title') -> setIdentifier('fixture_block') ->setContent('< h1 >Fixture Block Title</h1 >< a href=" store url</a><p> Config value
jquery extjs ext tree mage adminhtml form
jQuery('.store-switcher .dropdown-menu li a').each(function()