Skip to content

Commit bb7cbda

Browse files
committed
Bug 1149899 - Remember expanded/collapsed sections
1 parent c2364b3 commit bb7cbda

File tree

5 files changed

+51
-24
lines changed

5 files changed

+51
-24
lines changed

extensions/BugModal/Extension.pm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,7 @@ sub webservice {
293293
sub install_before_final_checks {
294294
my ($self, $args) = @_;
295295
add_setting('ui_experiments', ['on', 'off'], 'off');
296+
add_setting('ui_remember_collapsed', ['on', 'off'], 'off');
296297

297298
# ensure the correct skin is being used
298299
my $dbh = Bugzilla->dbh;

extensions/BugModal/template/en/default/bug_modal/edit.html.tmpl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,6 +1015,12 @@
10151015
[% END %]
10161016
[% END %]
10171017

1018+
[%# === initialise module visibility === %]
1019+
1020+
<script>
1021+
init_module_visibility();
1022+
</script>
1023+
10181024
[%# === top (between modules and comments) actions === %]
10191025

10201026
[% IF user.id %]

extensions/BugModal/template/en/default/bug_modal/header.html.tmpl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@
9999
can_tag: [% user.can_tag_comments ? "true" : "false" %],
100100
settings: {
101101
quote_replies: '[% user.settings.quote_replies.value FILTER js %]',
102-
zoom_textareas: [% user.settings.zoom_textareas.value == "on" ? "true" : "false" %]
102+
zoom_textareas: [% user.settings.zoom_textareas.value == "on" ? "true" : "false" %],
103+
remember_collapsed: [% user.settings.ui_remember_collapsed.value == "on" ? "true" : "false" %]
103104
}
104105
};
105106
[% IF user.id %]

extensions/BugModal/template/en/default/hook/global/setting-descs-settings.none.tmpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@
88

99
[%
1010
setting_descs.ui_experiments = "Use experimental user interface"
11+
setting_descs.ui_remember_collapsed = "Remember visibility of header sections when viewing a bug"
1112
%]

extensions/BugModal/web/bug_modal.js

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,47 @@
55
* This Source Code Form is "Incompatible With Secondary Licenses", as
66
* defined by the Mozilla Public License, v. 2.0. */
77

8+
// expand/collapse module
9+
function slide_module(module, action, fast) {
10+
if (!module.attr('id'))
11+
return;
12+
var latch = module.find('.module-latch');
13+
var spinner = $(latch.children('.module-spinner')[0]);
14+
var content = $(module.children('.module-content')[0]);
15+
var duration = fast ? 0 : 200;
16+
17+
function slide_done() {
18+
var is_visible = content.is(':visible');
19+
spinner.html(is_visible ? '&#9662;' : '&#9656;');
20+
if (BUGZILLA.user.settings.remember_collapsed)
21+
localStorage.setItem(module.attr('id') + '.visibility', is_visible ? 'show' : 'hide');
22+
}
23+
24+
if (action == 'show') {
25+
content.slideDown(duration, 'swing', slide_done);
26+
}
27+
else if (action == 'hide') {
28+
content.slideUp(duration, 'swing', slide_done);
29+
}
30+
else {
31+
content.slideToggle(duration, 'swing', slide_done);
32+
}
33+
}
34+
35+
function init_module_visibility() {
36+
if (!BUGZILLA.user.settings.remember_collapsed)
37+
return;
38+
$('.module').each(function() {
39+
var that = $(this);
40+
var id = that.attr('id');
41+
if (!id) return;
42+
var stored = localStorage.getItem(id + '.visibility');
43+
if (stored) {
44+
slide_module(that, stored, true);
45+
}
46+
});
47+
}
48+
849
$(function() {
950
'use strict';
1051

@@ -25,29 +66,6 @@ $(function() {
2566
// products with descriptions (also lazy-loaded)
2667
var products = [];
2768

28-
// expand/collapse module
29-
function slide_module(module, action, fast) {
30-
if (!module.attr('id'))
31-
return;
32-
var latch = module.find('.module-latch');
33-
var spinner = $(latch.children('.module-spinner')[0]);
34-
var content = $(module.children('.module-content')[0]);
35-
var duration = fast ? 0 : 200;
36-
37-
function slide_done() {
38-
spinner.html(content.is(':visible') ? '&#9662;' : '&#9656;');
39-
}
40-
if (action == 'show') {
41-
content.slideDown(duration, 'swing', slide_done);
42-
}
43-
else if (action == 'hide') {
44-
content.slideUp(duration, 'swing', slide_done);
45-
}
46-
else {
47-
content.slideToggle(duration, 'swing', slide_done);
48-
}
49-
}
50-
5169
// restore edit mode after navigating back
5270
function restoreEditMode() {
5371
if (!$('#editing').val())

0 commit comments

Comments
 (0)