feature #9967 Form debugger storage (WouterJ)
This PR was squashed before being merged into the 2.5-dev branch (closes #9967).
Discussion
----------
Form debugger storage
This PR continues #9857
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #9123
| License | MIT
| Doc PR | -
Commits
-------
744da7f
Form debugger storage
This commit is contained in:
commit
fff29a398d
@ -199,7 +199,7 @@
|
||||
{% endif %}
|
||||
|
||||
<script>
|
||||
function Toggler() {
|
||||
function Toggler(togglerStorage) {
|
||||
"use strict";
|
||||
|
||||
var expand = function (button) {
|
||||
@ -210,6 +210,8 @@
|
||||
throw "Toggle target " + targetId + " does not exist";
|
||||
}
|
||||
|
||||
togglerStorage.store(targetId, 'visible');
|
||||
|
||||
Sfjs.removeClass(button, 'closed');
|
||||
Sfjs.removeClass(target, 'hidden');
|
||||
},
|
||||
@ -222,6 +224,8 @@
|
||||
throw "Toggle target " + targetId + " does not exist";
|
||||
}
|
||||
|
||||
togglerStorage.store(targetId, 'hidden');
|
||||
|
||||
Sfjs.addClass(button, 'closed');
|
||||
Sfjs.addClass(target, 'hidden');
|
||||
},
|
||||
@ -271,6 +275,63 @@
|
||||
};
|
||||
}
|
||||
|
||||
function TogglerStorage(key) {
|
||||
var key = 'sf_' + (key || 'toggle_data'),
|
||||
store = function (id, state) {
|
||||
var toggleData = sessionStorage.getItem(key);
|
||||
if (!toggleData) {
|
||||
toggleData = [];
|
||||
} else {
|
||||
toggleData = toggleData.split('|');
|
||||
}
|
||||
|
||||
if ('visible' == state) {
|
||||
toggleData.push(id);
|
||||
} else {
|
||||
var index = toggleData.indexOf(id);
|
||||
if (-1 < index) {
|
||||
toggleData.splice(index, 1);
|
||||
}
|
||||
}
|
||||
|
||||
sessionStorage.setItem(key, toggleData.join('|'));
|
||||
},
|
||||
|
||||
initStorage = function (buttonsSelector) {
|
||||
var toggleData = sessionStorage.getItem(key);
|
||||
|
||||
if (!toggleData) {
|
||||
return;
|
||||
}
|
||||
toggleData = toggleData.split('|');
|
||||
|
||||
var buttons = document.getElementsByClassName(buttonsSelector || 'toggle-button');
|
||||
for (i in toggleData) {
|
||||
var element = document.getElementById(toggleData[i]);
|
||||
if (!element) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Sfjs.hasClass(element, 'hidden')) {
|
||||
for (var i = -1; button = buttons[++i]; ) {
|
||||
if (button.dataset.toggleTargetId && button.dataset.toggleTargetId == element.getAttribute('id')) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Sfjs.removeClass(element, 'hidden');
|
||||
Sfjs.removeClass(button, 'closed');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
store: store,
|
||||
|
||||
initStorage: initStorage
|
||||
};
|
||||
}
|
||||
|
||||
function TabView() {
|
||||
"use strict";
|
||||
|
||||
@ -335,10 +396,12 @@
|
||||
}
|
||||
|
||||
var tabTarget = new TabView(),
|
||||
toggler = new Toggler();
|
||||
storage = new TogglerStorage(),
|
||||
toggler = new Toggler(storage);
|
||||
|
||||
tabTarget.initTabs(document.querySelectorAll('.tree .tree-inner'));
|
||||
toggler.initButtons(document.querySelectorAll('a.toggle-button'));
|
||||
storage.initStorage();
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
|
Reference in New Issue
Block a user