]> BookStack Code Mirror - bookstack/blob - public/js/image-manager.js
27a0caddaf229cb19ecb97896cecff427e159414
[bookstack] / public / js / image-manager.js
1
2 (function() {
3
4     var isInit = false;
5     var elem;
6     var overlay;
7     var display;
8     var imageIndexUrl = '/images/all';
9
10     var ImageManager =  {};
11     var action = false;
12
13     ImageManager.show = function(selector, callback) {
14         if(isInit) {
15             showWindow();
16         } else {
17             this.init(selector)
18             showWindow();
19         }
20
21         action = (typeof callback !== 'undefined') ? callback : false;
22     };
23
24     ImageManager.init = function(selector) {
25         console.log('cat');
26         elem = $(selector);
27         overlay = elem.closest('.overlay');
28         display = elem.find('.image-manager-display').first()
29
30         // Get recent images and show
31         $.getJSON(imageIndexUrl, showImages);
32         function showImages(images) {
33             for(var i = 0; i < images.length; i++) {
34                 var image = images[i];
35                 var newImage = $('<img />').attr('data-image-id', image.id);
36                 newImage.attr('title', image.name).attr('src', image.thumbnail);
37                 display.append(newImage);
38                 newImage.data('imageData', image);
39             }
40         }
41
42         elem.on('dblclick', '.image-manager-display img', function() {
43             var imageElem = $(this);
44             var imageData = imageElem.data('imageData');
45             closeWindow();
46             if(action) {
47                 action(imageData);
48             }
49         });
50
51         elem.find('button[data-action="close"]').click(function() {
52             closeWindow();
53         });
54
55         // Set up dropzone
56         elem.find('.image-manager-dropzone').first().dropzone({
57             uploadMultiple: false
58         })
59
60         isInit = true;
61     };
62
63     function showWindow() {
64         overlay.closest('body').css('overflow', 'hidden');
65         overlay.show();
66     }
67
68     function closeWindow() {
69         overlay.hide();
70         overlay.closest('body').css('overflow', 'auto');
71     }
72
73     window.ImageManager = ImageManager;
74 })();