diff --git a/lib/models/note.js b/lib/models/note.js
index 7fdc56455..05ed04c01 100644
--- a/lib/models/note.js
+++ b/lib/models/note.js
@@ -285,7 +285,7 @@ module.exports = function (sequelize, DataTypes) {
if (/^tags/gmi.test($(value).text())) {
var codes = $(value).find("code");
for (var i = 0; i < codes.length; i++) {
- var text = $(codes[i]).html().trim();
+ var text = S($(codes[i]).text().trim()).stripTags().s;
if (text) rawtags.push(text);
}
}
diff --git a/public/js/cover.js b/public/js/cover.js
index 515c8827f..30a8e5c84 100644
--- a/public/js/cover.js
+++ b/public/js/cover.js
@@ -44,7 +44,9 @@ var options = {
',
page: 18,
plugins: [
- ListPagination({})
+ ListPagination({
+ outerWindow: 1
+ })
]
};
var historyList = new List('history', options);
@@ -133,94 +135,110 @@ function parseHistoryCallback(list, notehistory) {
}
}
});
+ // parse filter tags
var filtertags = [];
- $(".item").each(function (key, value) {
- var a = $(this).closest("a");
- var pin = $(this).find(".ui-history-pin");
- var id = a.siblings("span").html();
- var tagsEl = $(this).find(".tags");
- var item = historyList.get('id', id);
- if (item.length > 0 && item[0]) {
- var values = item[0].values();
- //parse pinned
- if (values.pinned) {
- pin.addClass('active');
- } else {
- pin.removeClass('active');
- }
- //parse link to element a
- a.attr('href', serverurl + '/' + values.id);
- //parse tags
- if (values.tags) {
- var tags = values.tags;
- if (tags.length > 0) {
- var labels = [];
- for (var j = 0; j < tags.length; j++) {
- //push info filtertags if not found
- var found = false;
- if (filtertags.indexOf(tags[j]) != -1)
- found = true;
- if (!found)
- filtertags.push(tags[j]);
- //push into the item label
- labels.push("" + tags[j] + "");
- }
- tagsEl.html(labels.join(' '));
- }
+ for (var i = 0, l = list.items.length; i < l; i++) {
+ var tags = list.items[i]._values.tags;
+ if (tags && tags.length > 0) {
+ for (var j = 0; j < tags.length; j++) {
+ //push info filtertags if not found
+ var found = false;
+ if (filtertags.indexOf(tags[j]) != -1)
+ found = true;
+ if (!found)
+ filtertags.push(tags[j]);
}
}
- });
- $(".ui-history-close").click(function (e) {
- e.preventDefault();
- var id = $(this).closest("a").siblings("span").html();
- var value = list.get('id', id)[0].values();
- $('.ui-delete-modal-msg').text('Do you really want to delete below history?');
- $('.ui-delete-modal-item').html(' ' + value.text + '
' + value.time);
- clearHistory = false;
- deleteId = id;
- });
- $(".ui-history-pin").click(function (e) {
- e.preventDefault();
- var $this = $(this);
- var id = $this.closest("a").siblings("span").html();
- var item = list.get('id', id)[0];
- var values = item.values();
- var pinned = values.pinned;
- if (!values.pinned) {
- pinned = true;
- item._values.pinned = true;
- } else {
- pinned = false;
- item._values.pinned = false;
- }
- checkIfAuth(function () {
- postHistoryToServer(id, {
- pinned: pinned
- }, function (err, result) {
- if (!err) {
- if (pinned)
- $this.addClass('active');
- else
- $this.removeClass('active');
+ }
+ buildTagsFilter(filtertags);
+}
+
+// update items whenever list updated
+historyList.on('updated', function (e) {
+ for (var i = 0, l = e.items.length; i < l; i++) {
+ var item = e.items[i];
+ if (item.visible()) {
+ var itemEl = $(item.elm);
+ var values = item._values;
+ var a = itemEl.find("a");
+ var pin = itemEl.find(".ui-history-pin");
+ var tagsEl = itemEl.find(".tags");
+ //parse link to element a
+ a.attr('href', serverurl + '/' + values.id);
+ //parse pinned
+ if (values.pinned) {
+ pin.addClass('active');
+ } else {
+ pin.removeClass('active');
+ }
+ //parse tags
+ var tags = values.tags;
+ if (tags && tags.length > 0 && tagsEl.children().length <= 0) {
+ var labels = [];
+ for (var j = 0; j < tags.length; j++) {
+ //push into the item label
+ labels.push("" + tags[j] + "");
}
- });
- }, function () {
- getHistory(function (notehistory) {
- for(var i = 0; i < notehistory.length; i++) {
- if (notehistory[i].id == id) {
- notehistory[i].pinned = pinned;
- break;
- }
- }
- saveHistory(notehistory);
+ tagsEl.html(labels.join(' '));
+ }
+ }
+ }
+ $(".ui-history-close").off('click');
+ $(".ui-history-close").on('click', historyCloseClick);
+ $(".ui-history-pin").off('click');
+ $(".ui-history-pin").on('click', historyPinClick);
+});
+
+function historyCloseClick(e) {
+ e.preventDefault();
+ var id = $(this).closest("a").siblings("span").html();
+ var value = historyList.get('id', id)[0]._values;
+ $('.ui-delete-modal-msg').text('Do you really want to delete below history?');
+ $('.ui-delete-modal-item').html(' ' + value.text + '
' + value.time);
+ clearHistory = false;
+ deleteId = id;
+}
+
+function historyPinClick(e) {
+ e.preventDefault();
+ var $this = $(this);
+ var id = $this.closest("a").siblings("span").html();
+ var item = historyList.get('id', id)[0];
+ var values = item._values;
+ var pinned = values.pinned;
+ if (!values.pinned) {
+ pinned = true;
+ item._values.pinned = true;
+ } else {
+ pinned = false;
+ item._values.pinned = false;
+ }
+ checkIfAuth(function () {
+ postHistoryToServer(id, {
+ pinned: pinned
+ }, function (err, result) {
+ if (!err) {
if (pinned)
$this.addClass('active');
else
$this.removeClass('active');
- });
- })
+ }
+ });
+ }, function () {
+ getHistory(function (notehistory) {
+ for(var i = 0; i < notehistory.length; i++) {
+ if (notehistory[i].id == id) {
+ notehistory[i].pinned = pinned;
+ break;
+ }
+ }
+ saveHistory(notehistory);
+ if (pinned)
+ $this.addClass('active');
+ else
+ $this.removeClass('active');
+ });
});
- buildTagsFilter(filtertags);
}
//auto update item fromNow every minutes
@@ -328,6 +346,8 @@ $(".ui-refresh-history").click(function () {
var lastKeyword = $('.search').val();
$('.search').val('');
historyList.search();
+ $('#history-list').slideUp('fast');
+ $('.pagination').slideUp('fast');
resetCheckAuth();
historyList.clear();
@@ -338,6 +358,8 @@ $(".ui-refresh-history").click(function () {
historyList.search(lastKeyword);
$('.search').val(lastKeyword);
checkHistoryList();
+ $('#history-list').slideDown('fast');
+ $('.pagination').slideDown('fast');
});
});