]> _ Git - fluidbook-html5.git/commitdiff
done #901 @0:10
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 12 Jun 2017 17:00:13 +0000 (19:00 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 12 Jun 2017 17:00:13 +0000 (19:00 +0200)
js/libs/fluidbook/fluidbook.bookmarks.js

index 5da80d877caa1c61487fa481c52f744210bbfe3d..af005b73afb6d5e1728e0e13ec8906b4f2e60967 100644 (file)
@@ -1,18 +1,18 @@
 function FluidbookBookmarks(fluidbook) {
-       this.fluidbook = fluidbook;
-       this.enabled = false;
-       this.bookmarks = [];
+    this.fluidbook = fluidbook;
+    this.enabled = false;
+    this.bookmarks = [];
 
-       this._pagesToGroup = [];
-       this._groupNames = [];
-       this._groups = 0;
-       this._groupOrder = [];
+    this._pagesToGroup = [];
+    this._groupNames = [];
+    this._groups = 0;
+    this._groupOrder = [];
 
-       this._cornersIndex = [];
-       this._cornersPages = [];
+    this._cornersIndex = [];
+    this._cornersPages = [];
 
-       this.enabled = this.fluidbook.datas.bookmark;
-       this.init();
+    this.enabled = this.fluidbook.datas.bookmark;
+    this.init();
 }
 
 FluidbookBookmarks.prototype = {
@@ -23,428 +23,422 @@ FluidbookBookmarks.prototype = {
             return false;
         });
 
-               $(document).on('click', '.bookmarkssub a.send', function() {
-                       var subject = '%title%';
-                       if ($this.fluidbook.datas.bookmark_email_title != '') {
-                               subject = $this.fluidbook.datas.bookmark_email_title;
-                       }
-
-
-                       var body = $this.fluidbook.l10n.__('Please see the attached files from "%title%".');
-                       if ($this.fluidbook.datas.bookmark_email_body != '') {
-                               body = $this.fluidbook.datas.bookmark_email_body;
-                       }
-
-                       subject = subject.replace(/\%title\%/gi, $this.fluidbook.datas.title);
-                       body = trim(body.replace(/\%title\%/gi, $this.fluidbook.datas.title), ' .');
-                       body += " : " + $this.getPDF();
-
-                       $this.fluidbook.intentShare(subject, body);
-                       return false;
-               });
-
-               $(document).on('click', '.bookmarkssub a.print', function() {
-                       $this.fluidbook._openFile($this.getPDF(), $(this), 'pdf', $this.getBookmarksCompacted() + '.pdf');
-                       return false;
-               });
-
-               for (var g in this.fluidbook.datas.bookmarkGroups) {
-
-                       var group = this.fluidbook.datas.bookmarkGroups[g];
-                       this.addGroup(group.page, group.nb, group.name);
-               }
-               this.completeGroups();
-               this._groupOrder.sort($.proxy(this.sortGroup, this));
-
-               this.bookmarks = this.getSavedBookmarks();
-               for (var i in this.bookmarks) {
-                       this.addBookmark(this.bookmarks[i], true);
-               }
-       },
-       sortGroup: function(a, b) {
-               var p_a = this.getPagesOfGroup(a)[0];
-               var p_b = this.getPagesOfGroup(b)[0];
-               return p_a - p_b;
-       },
-       sortnumeric: function(a, b) {
-               return a - b;
-       },
-       getPDF: function() {
-               return  'https://workshop.fluidbook.com/s/e/' + this.fluidbook.datas.cid + '/' + this.getBookmarksCompacted();
-       },
-       getBookmarksCompacted: function() {
-               this.bookmarks.sort(this.sortnumeric);
-
-               var g = [];
-               var rs = 0;
-               var re = 0;
-               for (var i = 0; i < this.bookmarks.length; i++) {
-                       var b = this.bookmarks[i];
-                       if (rs == 0) {
-                               rs = re = b;
-                               continue;
-                       }
-                       if (re + 1 == b) {
-                               re = b;
-                               continue;
-                       }
-                       if (rs == re) {
-                               g.push('' + rs);
-                       } else {
-                               g.push(rs + '-' + re);
-                       }
-
-                       rs = re = b;
-               }
-
-               if (rs != 0) {
-                       if (rs == re) {
-                               g.push('' + rs);
-                       } else {
-                               g.push(rs + '-' + re);
-                       }
-               }
-
-               return g.join(',');
-       },
-       addGroup: function(from, nb, name) {
-               var to = Math.min(from + (nb - 1), this.fluidbook.datas.pages);
-               for (var i = from; i <= to; i++)
-               {
-                       this._pagesToGroup[i] = this._groups;
-               }
-               this._groupNames[this._groups] = name;
-               this._groupOrder.push(this._groups);
-               this._groups++;
-       },
-       completeGroups: function() {
-               for (var i = 1; i <= this.fluidbook.datas.pages; i++) {
-                       if (this._pagesToGroup[i] == undefined || this._pagesToGroup[i] == null) {
-                               this._pagesToGroup[i] = this._groups;
-                               this._groupOrder.push(this._groups);
-                               this._groups++;
-                       }
-               }
-       },
-       getPreviousGroup: function(group) {
-               var o = this.getOrderGroup(group);
-               if (o == -1) {
-                       return false;
-               }
-               o--;
-               return this._groupOrder[o];
-       },
-       getNextGroup: function(group) {
-               var o = this.getOrderGroup(group);
-               if (o == -1) {
-                       return false;
-               }
-               o++;
-               return this._groupOrder[o];
-       },
-       getOrderGroup: function(group) {
-               return this._groupOrder.indexOf(group);
-       },
-       getGroupName: function(groupId)
-       {
-               var res = '';
-               if (this._groupNames[groupId] != undefined) {
-                       res = this._groupNames[groupId];
-               }
-               if (res == '') {
-                       var pages = this.getPagesOfGroup(groupId);
-                       res = this.fluidbook.physicalToVirtual(pages[0]);
-                       if (pages.length == 1) {
-                               return res;
-                       }
-                       res += " - " + this.fluidbook.physicalToVirtual(pages[pages.length - 1]);
-               }
-               return res;
-       },
-       getPagesOfGroup: function(groupId)
-       {
-               var res = [];
-               for (var i = 1; i <= this.fluidbook.datas.pages; i++) {
-                       if (this._pagesToGroup[i] == groupId) {
-                               res.push(i);
-                       }
-               }
-               return res;
-       },
-       getPagesNumberInGroup: function(groupId) {
-               return this.getPagesOfGroup(groupId).length;
-       },
-       getBookmarkedGroups: function(onlyBookmarked)
-       {
-               if (onlyBookmarked == undefined) {
-                       onlyBookmarked = true;
-               }
-
-               var res = [];
-               var nb;
-               var groupId;
-               for (var i = 1; i <= this.fluidbook.datas.pages; ) {
-                       if (this.isBookmarked(i) || !onlyBookmarked) {
-                               groupId = this.getGroupOfPage(i);
-                               nb = this.getPagesNumberInGroup(groupId);
-                               res.push({page: i, nb: nb, name: this.getGroupName(groupId)});
-                               i += nb;
-                               continue;
-                       }
-                       i++;
-               }
-               return res;
-       },
-       getOrderedGroups: function() {
-               return this.getBookmarkedGroups(false);
-       },
-       getGroupOfPage: function(page) {
-               return this._pagesToGroup[page];
-       },
-       getNextPageInGroupOfPage: function(page) {
-               var group = this.getLinkedPages(page);
-               var index = group.indexOf(page);
-               if (index == group.length - 1) {
-                       return false;
-               }
-               return group[index + 1];
-       },
-       getPreviousPageInGroupOfPage: function(page) {
-               var group = this.getLinkedPages(page);
-               var index = group.indexOf(page);
-               if (index == 0) {
-                       return false;
-               }
-               return group[index - 1];
-       },
-       getNextGroupCover: function(page) {
-               var group = this.getGroupOfPage(page);
-               group = this.getNextGroup(group);
-               if (group === false) {
-                       return false;
-               }
-               return this.getCoverOfGroup(group);
-       },
-       getPreviousGroupCover: function(page) {
-               var group = this.getGroupOfPage(page);
-               group = this.getPreviousGroup(group);
-               if (group === false) {
-                       return false;
-               }
-               return this.getCoverOfGroup(group);
-       },
-       getCoverOfGroup: function(group) {
-               var pages = this.getPagesOfGroup(group);
-               if (pages.length) {
-                       return pages[0];
-               }
-               return false;
-       },
-       hasNextPageInGroup: function(page) {
-               var group = this.getGroupOfPage(page);
-               var pages = this.getPagesOfGroup(group);
-               var i = pages.indexOf(page);
-               if (i == pages.length - 1) {
-                       return false;
-               }
-               return true;
-       },
-       getLinkedPages: function(page) {
-               var group = this.getGroupOfPage(page);
-               if (group == -1 || isNaN(group)) {
-                       return [];
-               }
-               return this.getPagesOfGroup(group);
-       },
-       addBookmark: function(page, cornersOnly)
-       {
-               if (cornersOnly == undefined) {
-                       cornersOnly = false;
-               }
-               var pages = this.getLinkedPages(page);
-               for (i in pages)
-               {
-                       var page = pages[i];
-                       if (!cornersOnly) {
-                               this.bookmarks.push(page);
-                       }
-               }
-               if (!cornersOnly) {
-                       this.updateBookmarks();
-                       // TODO add stats call
-               }
-       },
-       setCornersEnabled: function(page, enabled) {
-               var bookmarks = $('.bookmark[data-page="' + page + '"]');
-               if (enabled) {
-                       $(bookmarks).attr('data-enabled', 'enabled');
-               } else {
-                       $(bookmarks).attr('data-enabled', null);
-               }
-       },
-       disableCorners: function() {
-               $(".bookmark").attr('data-enabled', null);
-       },
-       toggleBookmark: function(page) {
-
-               var pages = this.getLinkedPages(page);
-               var add = false;
-               for (var i in pages) {
-                       var p = pages[i];
-                       if (this.bookmarks.indexOf(p) > -1) {
-                               add = true;
-                               break;
-                       }
-               }
-               if (add) {
-                       this.removeBookmark(page);
-               } else {
-                       this.addBookmark(page);
-               }
-       },
-       removeBookmark: function(page) {
-               var pages = this.getLinkedPages(page);
-               for (var i in pages) {
-                       this.bookmarks = arrayRemove(this.bookmarks, pages[i]);
-               }
-               this.updateBookmarks();
-       },
-       updateBookmarks: function() {
-               this.saveBookmarks();
-               var $this = this;
-
-               this.disableCorners();
-               $.each(this.bookmarks, function(k, v) {
-                       $this.setCornersEnabled(v, true);
-               });
-       },
-       saveBookmarks: function() {
-               this.fluidbook.cache.set('bookmarks', this.bookmarks);
-       },
-       getSavedBookmarks: function() {
-               if (this.fluidbook.cache.isset('bookmarks')) {
-                       return this.fluidbook.cache.get('bookmarks');
-               }
-               return [];
-       },
-       isBookmarked: function(page) {
-               return this.bookmarks.indexOf(page) > -1;
-       },
-       getBookmarkForPage: function(pageNr, onlyOne, allwaysAtRight) {
-               if (onlyOne == undefined) {
-                       onlyOne = false;
-               }
-               if (allwaysAtRight == undefined) {
-                       allwaysAtRight = false;
-               }
-
-               var to = pageNr;
-               if (!onlyOne) {
-                       to++;
-               }
-
-               var bookmarks = "";
-               for (var i = pageNr; i <= to; i++) {
-                       if (i > 0 && i <= this.fluidbook.datas.pages) {
-                               var side;
-                               if (allwaysAtRight) {
-                                       side = 'right';
-                               } else {
-                                       side = (i % 2 == 0) ? 'left' : 'right';
-                                       if (this.fluidbook.l10n.dir == 'rtl') {
-                                               side = side == 'left' ? 'right' : 'left';
-                                       }
-                               }
-
-                               bookmarks += "<a href=\"#\" class=\"bookmark " + side + "\" data-page=\"" + i + "\"";
-                               if (this.isBookmarked(i)) {
-                                       bookmarks += " data-enabled=\"enabled\"";
-                               }
-                               bookmarks += '></a>';
-                       }
-               }
-               return bookmarks;
-       },
-       getView: function() {
-               var c = this.getIndex(false);
-               if (c === false) {
-                       return c;
-               }
+        $(document).on('click', '.bookmarkssub a.send', function () {
+            var subject = '%title%';
+            if ($this.fluidbook.datas.bookmark_email_title != '') {
+                subject = $this.fluidbook.datas.bookmark_email_title;
+            }
+
+
+            var body = $this.fluidbook.l10n.__('Please see the attached files from "%title%".');
+            if ($this.fluidbook.datas.bookmark_email_body != '') {
+                body = $this.fluidbook.datas.bookmark_email_body;
+            }
+
+            subject = subject.replace(/\%title\%/gi, $this.fluidbook.datas.title);
+            body = trim(body.replace(/\%title\%/gi, $this.fluidbook.datas.title), ' .');
+            body += " : " + $this.getPDF();
+
+            $this.fluidbook.intentShare(subject, body);
+            return false;
+        });
+
+        $(document).on('click', '.bookmarkssub a.print', function () {
+            $this.fluidbook._openFile($this.getPDF(), $(this), 'pdf', $this.getBookmarksCompacted() + '.pdf');
+            return false;
+        });
+
+        for (var g in this.fluidbook.datas.bookmarkGroups) {
+
+            var group = this.fluidbook.datas.bookmarkGroups[g];
+            this.addGroup(group.page, group.nb, group.name);
+        }
+        this.completeGroups();
+        this._groupOrder.sort($.proxy(this.sortGroup, this));
+
+        this.bookmarks = this.getSavedBookmarks();
+        for (var i in this.bookmarks) {
+            this.addBookmark(this.bookmarks[i], true);
+        }
+    },
+    sortGroup: function (a, b) {
+        var p_a = this.getPagesOfGroup(a)[0];
+        var p_b = this.getPagesOfGroup(b)[0];
+        return p_a - p_b;
+    },
+    sortnumeric: function (a, b) {
+        return a - b;
+    },
+    getPDF: function () {
+        return 'https://workshop.fluidbook.com/s/e/' + this.fluidbook.datas.cid + '/' + this.getBookmarksCompacted();
+    },
+    getBookmarksCompacted: function () {
+        this.bookmarks.sort(this.sortnumeric);
+
+        var g = [];
+        var rs = 0;
+        var re = 0;
+        for (var i = 0; i < this.bookmarks.length; i++) {
+            var b = this.bookmarks[i];
+            if (rs == 0) {
+                rs = re = b;
+                continue;
+            }
+            if (re + 1 == b) {
+                re = b;
+                continue;
+            }
+            if (rs == re) {
+                g.push('' + rs);
+            } else {
+                g.push(rs + '-' + re);
+            }
+
+            rs = re = b;
+        }
+
+        if (rs != 0) {
+            if (rs == re) {
+                g.push('' + rs);
+            } else {
+                g.push(rs + '-' + re);
+            }
+        }
+
+        return g.join(',');
+    },
+    addGroup: function (from, nb, name) {
+        var to = Math.min(from + (nb - 1), this.fluidbook.datas.pages);
+        for (var i = from; i <= to; i++) {
+            this._pagesToGroup[i] = this._groups;
+        }
+        this._groupNames[this._groups] = name;
+        this._groupOrder.push(this._groups);
+        this._groups++;
+    },
+    completeGroups: function () {
+        for (var i = 1; i <= this.fluidbook.datas.pages; i++) {
+            if (this._pagesToGroup[i] == undefined || this._pagesToGroup[i] == null) {
+                this._pagesToGroup[i] = this._groups;
+                this._groupOrder.push(this._groups);
+                this._groups++;
+            }
+        }
+    },
+    getPreviousGroup: function (group) {
+        var o = this.getOrderGroup(group);
+        if (o == -1) {
+            return false;
+        }
+        o--;
+        return this._groupOrder[o];
+    },
+    getNextGroup: function (group) {
+        var o = this.getOrderGroup(group);
+        if (o == -1) {
+            return false;
+        }
+        o++;
+        return this._groupOrder[o];
+    },
+    getOrderGroup: function (group) {
+        return this._groupOrder.indexOf(group);
+    },
+    getGroupName: function (groupId) {
+        var res = '';
+        if (this._groupNames[groupId] != undefined) {
+            res = this._groupNames[groupId];
+        }
+        if (res == '') {
+            var pages = this.getPagesOfGroup(groupId);
+            res = this.fluidbook.physicalToVirtual(pages[0]);
+            if (pages.length == 1) {
+                return res;
+            }
+            res += " - " + this.fluidbook.physicalToVirtual(pages[pages.length - 1]);
+        }
+        return res;
+    },
+    getPagesOfGroup: function (groupId) {
+        var res = [];
+        for (var i = 1; i <= this.fluidbook.datas.pages; i++) {
+            if (this._pagesToGroup[i] == groupId) {
+                res.push(i);
+            }
+        }
+        return res;
+    },
+    getPagesNumberInGroup: function (groupId) {
+        return this.getPagesOfGroup(groupId).length;
+    },
+    getBookmarkedGroups: function (onlyBookmarked) {
+        if (onlyBookmarked == undefined) {
+            onlyBookmarked = true;
+        }
+
+        var res = [];
+        var nb;
+        var groupId;
+        for (var i = 1; i <= this.fluidbook.datas.pages;) {
+            if (this.isBookmarked(i) || !onlyBookmarked) {
+                groupId = this.getGroupOfPage(i);
+                nb = this.getPagesNumberInGroup(groupId);
+                res.push({page: i, nb: nb, name: this.getGroupName(groupId)});
+                i += nb;
+                continue;
+            }
+            i++;
+        }
+        return res;
+    },
+    getOrderedGroups: function () {
+        return this.getBookmarkedGroups(false);
+    },
+    getGroupOfPage: function (page) {
+        return this._pagesToGroup[page];
+    },
+    getNextPageInGroupOfPage: function (page) {
+        var group = this.getLinkedPages(page);
+        var index = group.indexOf(page);
+        if (index == group.length - 1) {
+            return false;
+        }
+        return group[index + 1];
+    },
+    getPreviousPageInGroupOfPage: function (page) {
+        var group = this.getLinkedPages(page);
+        var index = group.indexOf(page);
+        if (index == 0) {
+            return false;
+        }
+        return group[index - 1];
+    },
+    getNextGroupCover: function (page) {
+        var group = this.getGroupOfPage(page);
+        group = this.getNextGroup(group);
+        if (group === false) {
+            return false;
+        }
+        return this.getCoverOfGroup(group);
+    },
+    getPreviousGroupCover: function (page) {
+        var group = this.getGroupOfPage(page);
+        group = this.getPreviousGroup(group);
+        if (group === false) {
+            return false;
+        }
+        return this.getCoverOfGroup(group);
+    },
+    getCoverOfGroup: function (group) {
+        var pages = this.getPagesOfGroup(group);
+        if (pages.length) {
+            return pages[0];
+        }
+        return false;
+    },
+    hasNextPageInGroup: function (page) {
+        var group = this.getGroupOfPage(page);
+        var pages = this.getPagesOfGroup(group);
+        var i = pages.indexOf(page);
+        if (i == pages.length - 1) {
+            return false;
+        }
+        return true;
+    },
+    getLinkedPages: function (page) {
+        var group = this.getGroupOfPage(page);
+        if (group == -1 || isNaN(group)) {
+            return [];
+        }
+        return this.getPagesOfGroup(group);
+    },
+    addBookmark: function (page, cornersOnly) {
+        if (cornersOnly == undefined) {
+            cornersOnly = false;
+        }
+        var pages = this.getLinkedPages(page);
+        for (i in pages) {
+            var page = pages[i];
+            if (!cornersOnly) {
+                this.bookmarks.push(page);
+            }
+        }
+        if (!cornersOnly) {
+            this.updateBookmarks();
+            // TODO add stats call
+        }
+    },
+    setCornersEnabled: function (page, enabled) {
+        var bookmarks = $('.bookmark[data-page="' + page + '"]');
+        if (enabled) {
+            $(bookmarks).attr('data-enabled', 'enabled');
+        } else {
+            $(bookmarks).attr('data-enabled', null);
+        }
+    },
+    disableCorners: function () {
+        $(".bookmark").attr('data-enabled', null);
+    },
+    toggleBookmark: function (page) {
+
+        var pages = this.getLinkedPages(page);
+        var add = false;
+        for (var i in pages) {
+            var p = pages[i];
+            if (this.bookmarks.indexOf(p) > -1) {
+                add = true;
+                break;
+            }
+        }
+        if (add) {
+            this.removeBookmark(page);
+        } else {
+            this.addBookmark(page);
+        }
+    },
+    removeBookmark: function (page) {
+        var pages = this.getLinkedPages(page);
+        for (var i in pages) {
+            this.bookmarks = arrayRemove(this.bookmarks, pages[i]);
+        }
+        this.updateBookmarks();
+    },
+    updateBookmarks: function () {
+        this.saveBookmarks();
+        var $this = this;
+
+        this.disableCorners();
+        $.each(this.bookmarks, function (k, v) {
+            $this.setCornersEnabled(v, true);
+        });
+    },
+    saveBookmarks: function () {
+        this.fluidbook.cache.set('bookmarks', this.bookmarks);
+    },
+    getSavedBookmarks: function () {
+        if (this.fluidbook.cache.isset('bookmarks')) {
+            return this.fluidbook.cache.get('bookmarks');
+        }
+        return [];
+    },
+    isBookmarked: function (page) {
+        return this.bookmarks.indexOf(page) > -1;
+    },
+    getBookmarkForPage: function (pageNr, onlyOne, allwaysAtRight) {
+        if (onlyOne == undefined) {
+            onlyOne = false;
+        }
+        if (allwaysAtRight == undefined) {
+            allwaysAtRight = false;
+        }
+
+        var to = pageNr;
+        if (!onlyOne) {
+            to++;
+        }
+
+        var bookmarks = "";
+        for (var i = pageNr; i <= to; i++) {
+            if (i > 0 && i <= this.fluidbook.datas.pages) {
+                var side;
+                if (allwaysAtRight) {
+                    side = 'right';
+                } else {
+                    side = (i % 2 == 0) ? 'left' : 'right';
+                    if (this.fluidbook.l10n.dir == 'rtl') {
+                        side = side == 'left' ? 'right' : 'left';
+                    }
+                }
+
+                bookmarks += "<a href=\"#\" class=\"bookmark " + side + "\" data-page=\"" + i + "\"";
+                if (this.isBookmarked(i)) {
+                    bookmarks += " data-enabled=\"enabled\"";
+                }
+                bookmarks += '></a>';
+            }
+        }
+        return bookmarks;
+    },
+    getView: function () {
+        var c = this.getIndex(false);
+        if (c === false) {
+            return c;
+        }
         var index = '<div class="bookmarkssub"><div class="caption">' + this.fluidbook.menu.closeButton() + '<h2>' + this.fluidbook.l10n.__('bookmarks') + '</h2>';
-               index += '</div>';
+        index += '</div>';
         index += c;
-               index += '</div>';
-               return index;
-       },
-       hasBookmarkedPages: function(all) {
-               if (all == undefined) {
-                       all = false;
-               }
-
-               if (all == false) {
-                       groups = this.getBookmarkedGroups();
-               } else {
-                       groups = this.getOrderedGroups();
-               }
-
-               if (groups.length == 0) {
-                       return false;
-               }
-               return true;
-       },
-       getIndex: function(all, onlyGroup) {
-               if (all == undefined) {
-                       all = false;
-               }
-               var groups;
-
-               if (all == false) {
-                       groups = this.getBookmarkedGroups();
-               } else {
-                       groups = this.getOrderedGroups();
-               }
-
-               if (groups.length == 0) {
-                       return false;
-               }
-
-               var index = '<div class="content"><div id="indexView" class="bookmarkView">';
-
-               if (onlyGroup == undefined) {
-                       for (var g = 0; g < groups.length; g++) {
-                               var group = groups[g];
-                               var pages = [];
-                               for (var i = 0; i < group.nb; i++) {
-                                       pages.push(group.page + i);
-                               }
-
-                               index += '<div class="doubleThumb simple left" page="' + group.page + '" data-pages="' + pages.join(',') + '">';
-                               index += '<div class="thumb left"><a href="#/page/' + group.page + '">' + this.fluidbook.loader.getImage('data/thumbnails/p' + group.page + '.jpg') + '</a><span class="number">' + group.name + '</span>';
-                               if (this.fluidbook.bookmarks.enabled) {
-                                       index += this.fluidbook.bookmarks.getBookmarkForPage(group.page, true, true);
-                               }
-                               index += '</div>';
-                               index += '</div>';
-                       }
-               } else {
-                       var group = groups[this.getGroupOfPage(onlyGroup)];
-
-                       var pages = [];
-                       for (var i = 0; i < group.nb; i++) {
-                               pages.push(group.page + i);
-                       }
-
-                       for (i in pages) {
-                               var p = pages[i];
-                               index += '<div class="doubleThumb simple left" page="' + p + '" data-pages="' + p + '">';
-                               index += '<div class="thumb left"><a href="#/page/' + p + '">' + this.fluidbook.loader.getImage('data/thumbnails/p' + p + '.jpg') + '</a><span class="number">' + this.fluidbook.physicalToVirtual(p) + '</span>';
-                               if (this.fluidbook.bookmarks.enabled) {
-                                       index += this.fluidbook.bookmarks.getBookmarkForPage(p, true, true);
-                               }
-                               index += '</div>';
-                               index += '</div>';
-                       }
-               }
+        index += '</div>';
+        return index;
+    },
+    hasBookmarkedPages: function (all) {
+        if (all == undefined) {
+            all = false;
+        }
+
+        if (all == false) {
+            groups = this.getBookmarkedGroups();
+        } else {
+            groups = this.getOrderedGroups();
+        }
+
+        if (groups.length == 0) {
+            return false;
+        }
+        return true;
+    },
+    getIndex: function (all, onlyGroup) {
+        if (all == undefined) {
+            all = false;
+        }
+        var groups;
+
+        if (all == false) {
+            groups = this.getBookmarkedGroups();
+        } else {
+            groups = this.getOrderedGroups();
+        }
+
+        if (groups.length == 0) {
+            return false;
+        }
+
+        var index = '<div class="content"><div id="indexView" class="bookmarkView">';
+
+        if (onlyGroup == undefined) {
+            for (var g = 0; g < groups.length; g++) {
+                var group = groups[g];
+                var pages = [];
+                for (var i = 0; i < group.nb; i++) {
+                    pages.push(group.page + i);
+                }
+
+                index += '<div class="doubleThumb simple left" page="' + group.page + '" data-pages="' + pages.join(',') + '">';
+                index += '<div class="thumb left"><a href="#/page/' + group.page + '">' + this.fluidbook.loader.getThumbImage(group.page) + '</a><span class="number">' + group.name + '</span>';
+                if (this.fluidbook.bookmarks.enabled) {
+                    index += this.fluidbook.bookmarks.getBookmarkForPage(group.page, true, true);
+                }
+                index += '</div>';
+                index += '</div>';
+            }
+        } else {
+            var group = groups[this.getGroupOfPage(onlyGroup)];
+
+            var pages = [];
+            for (var i = 0; i < group.nb; i++) {
+                pages.push(group.page + i);
+            }
+
+            for (i in pages) {
+                var p = pages[i];
+                index += '<div class="doubleThumb simple left" page="' + p + '" data-pages="' + p + '">';
+                index += '<div class="thumb left"><a href="#/page/' + p + '">' + this.fluidbook.loader.getThumbImage(p) + '</a><span class="number">' + this.fluidbook.physicalToVirtual(p) + '</span>';
+                if (this.fluidbook.bookmarks.enabled) {
+                    index += this.fluidbook.bookmarks.getBookmarkForPage(p, true, true);
+                }
+                index += '</div>';
+                index += '</div>';
+            }
+        }
         index += '</div>';
         index += '<div class="fonctions">';
         if (this.fluidbook.datas.friend) {
@@ -456,6 +450,6 @@ FluidbookBookmarks.prototype = {
         }
         index += '</div>';
         index += '</div>';
-               return index;
-       }
+        return index;
+    }
 };
\ No newline at end of file