Skip to content

Commit fff29a3

Browse files
committed
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
2 parents 916420f + 744da7f commit fff29a3

File tree

1 file changed

+65
-2
lines changed
  • src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector

1 file changed

+65
-2
lines changed

src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/form.html.twig

+65-2
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@
199199
{% endif %}
200200

201201
<script>
202-
function Toggler() {
202+
function Toggler(togglerStorage) {
203203
"use strict";
204204
205205
var expand = function (button) {
@@ -210,6 +210,8 @@
210210
throw "Toggle target " + targetId + " does not exist";
211211
}
212212
213+
togglerStorage.store(targetId, 'visible');
214+
213215
Sfjs.removeClass(button, 'closed');
214216
Sfjs.removeClass(target, 'hidden');
215217
},
@@ -222,6 +224,8 @@
222224
throw "Toggle target " + targetId + " does not exist";
223225
}
224226
227+
togglerStorage.store(targetId, 'hidden');
228+
225229
Sfjs.addClass(button, 'closed');
226230
Sfjs.addClass(target, 'hidden');
227231
},
@@ -271,6 +275,63 @@
271275
};
272276
}
273277
278+
function TogglerStorage(key) {
279+
var key = 'sf_' + (key || 'toggle_data'),
280+
store = function (id, state) {
281+
var toggleData = sessionStorage.getItem(key);
282+
if (!toggleData) {
283+
toggleData = [];
284+
} else {
285+
toggleData = toggleData.split('|');
286+
}
287+
288+
if ('visible' == state) {
289+
toggleData.push(id);
290+
} else {
291+
var index = toggleData.indexOf(id);
292+
if (-1 < index) {
293+
toggleData.splice(index, 1);
294+
}
295+
}
296+
297+
sessionStorage.setItem(key, toggleData.join('|'));
298+
},
299+
300+
initStorage = function (buttonsSelector) {
301+
var toggleData = sessionStorage.getItem(key);
302+
303+
if (!toggleData) {
304+
return;
305+
}
306+
toggleData = toggleData.split('|');
307+
308+
var buttons = document.getElementsByClassName(buttonsSelector || 'toggle-button');
309+
for (i in toggleData) {
310+
var element = document.getElementById(toggleData[i]);
311+
if (!element) {
312+
continue;
313+
}
314+
315+
if (Sfjs.hasClass(element, 'hidden')) {
316+
for (var i = -1; button = buttons[++i]; ) {
317+
if (button.dataset.toggleTargetId && button.dataset.toggleTargetId == element.getAttribute('id')) {
318+
break;
319+
}
320+
}
321+
322+
Sfjs.removeClass(element, 'hidden');
323+
Sfjs.removeClass(button, 'closed');
324+
}
325+
}
326+
};
327+
328+
return {
329+
store: store,
330+
331+
initStorage: initStorage
332+
};
333+
}
334+
274335
function TabView() {
275336
"use strict";
276337
@@ -335,10 +396,12 @@
335396
}
336397
337398
var tabTarget = new TabView(),
338-
toggler = new Toggler();
399+
storage = new TogglerStorage(),
400+
toggler = new Toggler(storage);
339401
340402
tabTarget.initTabs(document.querySelectorAll('.tree .tree-inner'));
341403
toggler.initButtons(document.querySelectorAll('a.toggle-button'));
404+
storage.initStorage();
342405
</script>
343406
{% endblock %}
344407

0 commit comments

Comments
 (0)