|
@@ -175,6 +175,12 @@
|
|
|
|
|
|
converse.Bookmark = Backbone.Model;
|
|
converse.Bookmark = Backbone.Model;
|
|
|
|
|
|
|
|
+ converse.BookmarksList = Backbone.Model.extend({
|
|
|
|
+ defaults: {
|
|
|
|
+ "toggle-state": converse.OPENED
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
converse.Bookmarks = Backbone.Collection.extend({
|
|
converse.Bookmarks = Backbone.Collection.extend({
|
|
model: converse.Bookmark,
|
|
model: converse.Bookmark,
|
|
|
|
|
|
@@ -330,15 +336,26 @@
|
|
initialize: function () {
|
|
initialize: function () {
|
|
this.model.on('add', this.renderBookmarkListElement, this);
|
|
this.model.on('add', this.renderBookmarkListElement, this);
|
|
this.model.on('remove', this.removeBookmarkListElement, this);
|
|
this.model.on('remove', this.removeBookmarkListElement, this);
|
|
|
|
+
|
|
|
|
+ var cachekey = 'converse.room-bookmarks'+converse.bare_jid+'-list-model';
|
|
|
|
+ this.list_model = new converse.BookmarksList();
|
|
|
|
+ this.list_model.id = cachekey;
|
|
|
|
+ this.list_model.browserStorage = new Backbone.BrowserStorage[converse.storage](
|
|
|
|
+ b64_sha1(cachekey)
|
|
|
|
+ );
|
|
|
|
+ this.list_model.fetch();
|
|
this.render();
|
|
this.render();
|
|
},
|
|
},
|
|
|
|
|
|
render: function (cfg) {
|
|
render: function (cfg) {
|
|
this.$el.html(converse.templates.bookmarks_list({
|
|
this.$el.html(converse.templates.bookmarks_list({
|
|
- 'toggle_state': converse.OPENED,
|
|
|
|
|
|
+ 'toggle_state': this.list_model.get('toggle-state'),
|
|
'desc_bookmarks': __('Click to toggle the bookmarks list'),
|
|
'desc_bookmarks': __('Click to toggle the bookmarks list'),
|
|
'label_bookmarks': __('Bookmarked Rooms')
|
|
'label_bookmarks': __('Bookmarked Rooms')
|
|
})).hide();
|
|
})).hide();
|
|
|
|
+ if (this.list_model.get('toggle-state') !== converse.OPENED) {
|
|
|
|
+ this.$('.bookmarks').hide();
|
|
|
|
+ }
|
|
this.model.each(this.renderBookmarkListElement, this);
|
|
this.model.each(this.renderBookmarkListElement, this);
|
|
var controlboxview = converse.chatboxviews.get('controlbox');
|
|
var controlboxview = converse.chatboxviews.get('controlbox');
|
|
if (!_.isUndefined(controlboxview)) {
|
|
if (!_.isUndefined(controlboxview)) {
|
|
@@ -381,11 +398,13 @@
|
|
if (ev && ev.preventDefault) { ev.preventDefault(); }
|
|
if (ev && ev.preventDefault) { ev.preventDefault(); }
|
|
var $el = $(ev.target);
|
|
var $el = $(ev.target);
|
|
if ($el.hasClass("icon-opened")) {
|
|
if ($el.hasClass("icon-opened")) {
|
|
- this.$('.bookmarks').slideUp();
|
|
|
|
|
|
+ this.$('.bookmarks').slideUp('fast');
|
|
|
|
+ this.list_model.save({'toggle-state': converse.CLOSED});
|
|
$el.removeClass("icon-opened").addClass("icon-closed");
|
|
$el.removeClass("icon-opened").addClass("icon-closed");
|
|
} else {
|
|
} else {
|
|
$el.removeClass("icon-closed").addClass("icon-opened");
|
|
$el.removeClass("icon-closed").addClass("icon-opened");
|
|
- this.$('.bookmarks').slideDown();
|
|
|
|
|
|
+ this.$('.bookmarks').slideDown('fast');
|
|
|
|
+ this.list_model.save({'toggle-state': converse.OPENED});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|