scrivito_pdf_widget 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +4 -0
- data/Rakefile +21 -0
- data/app/assets/javascripts/pdf_widget/application.js +15 -0
- data/app/assets/javascripts/pdf_widget/editing.js +12 -0
- data/app/assets/javascripts/pdf_widget/jquery.viewer.js +154 -0
- data/app/assets/javascripts/pdf_widget/pdf.js +6511 -0
- data/app/assets/javascripts/pdf_widget/pdf.worker.js +44061 -0
- data/app/assets/javascripts/pdf_widget/widget.js.erb +11 -0
- data/app/assets/stylesheets/pdf_widget/application.css +4 -0
- data/app/assets/stylesheets/pdf_widget/widget.css +39 -0
- data/app/models/pdf.rb +26 -0
- data/app/models/pdf_widget.rb +3 -0
- data/app/views/pdf_widget/_inline_pdf.html.erb +24 -0
- data/app/views/pdf_widget/details.html.erb +2 -0
- data/app/views/pdf_widget/show.html.erb +9 -0
- data/app/views/pdf_widget/thumbnail.html.erb +13 -0
- data/lib/scrivito_pdf_widget/engine.rb +5 -0
- data/lib/scrivito_pdf_widget/version.rb +3 -0
- data/lib/scrivito_pdf_widget.rb +4 -0
- data/lib/tasks/scrivito_pdf_widget_tasks.rake +4 -0
- data/scrivito/migrate/0_create_pdf_widget.rb +24 -0
- metadata +121 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5540edd3f4b5fb415f525c11d1e728ae11469683
|
4
|
+
data.tar.gz: e688834315cbfc749771b9841b1ae8c1bfd9473e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b7f198e8f526e07559b083c13897bd7114b66e3c5691a122727300a59336ee4e068780025d7a88d9d0c52bfdc6a741acdaecbe02cedab9660181183d1a52d6b2
|
7
|
+
data.tar.gz: 5b339082850ba831782b2b6442c5a09cb93e72cdd776c9e915ec303a783b35303d322311ee8fa6753a4d3550f648a04d83bee33f3f04915da6c43f14407ffc83
|
data/LICENSE
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'ScrivitoPdfWidget'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
Bundler::GemHelper.install_tasks
|
21
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// the compiled file.
|
9
|
+
//
|
10
|
+
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
|
11
|
+
// GO AFTER THE REQUIRES BELOW.
|
12
|
+
//
|
13
|
+
//= require pdf_widget/pdf
|
14
|
+
//= require pdf_widget/jquery.viewer
|
15
|
+
//= require pdf_widget/widget
|
@@ -0,0 +1,12 @@
|
|
1
|
+
(function($, App) {
|
2
|
+
'use strict';
|
3
|
+
|
4
|
+
$(function() {
|
5
|
+
App.ResourcebrowserUploader.mimeTypeMapping['pdf/*'] = 'Pdf';
|
6
|
+
|
7
|
+
App.Resourcebrowser.filters.pdfs = {
|
8
|
+
'title': 'PDF',
|
9
|
+
'query': App.scrivito.obj_where('_obj_class', 'equals', 'Pdf')
|
10
|
+
};
|
11
|
+
});
|
12
|
+
})(jQuery, this);
|
@@ -0,0 +1,154 @@
|
|
1
|
+
/**
|
2
|
+
* PDF-Viewer Jquery Plugin
|
3
|
+
*
|
4
|
+
* A Plugin to show a PDF in your webpage with some basic buttons.
|
5
|
+
* by Gertimon
|
6
|
+
**/
|
7
|
+
(function($) {
|
8
|
+
'use strict';
|
9
|
+
|
10
|
+
$.fn.pdfViewer = function(opt) {
|
11
|
+
var self = this;
|
12
|
+
var options = $.extend({
|
13
|
+
startPage: 1, // pagev visible at start
|
14
|
+
scale: 2.0, // scale for the pdf
|
15
|
+
workerSrc: '', // src for the worker. Should be set in some frameworks (like rails with assets [?body=1]) because autoload from pdf.worker.js will not work.
|
16
|
+
lacy: true,
|
17
|
+
fullscreen: 'ico-fullscreen',
|
18
|
+
exit_fullscreen: 'ico-resize-small',
|
19
|
+
locals: {
|
20
|
+
page: 'Page'
|
21
|
+
}
|
22
|
+
}, opt)
|
23
|
+
|
24
|
+
var loaded = !options.lacy;
|
25
|
+
|
26
|
+
if(options.lacy) {
|
27
|
+
$(self).find('.pdf-next, .pdf-last, .pdf-prev, .pdf-first, .pdf-fullscreen, .pdf_prev_image').on('click', function() {
|
28
|
+
if(!loaded) {
|
29
|
+
initializePdf(options, self);
|
30
|
+
loaded = true;
|
31
|
+
}
|
32
|
+
});
|
33
|
+
} else {
|
34
|
+
initializePdf(options, self);
|
35
|
+
}
|
36
|
+
}; // end plugin
|
37
|
+
})(jQuery);
|
38
|
+
|
39
|
+
function addControllBar(elem, index, url, options) {
|
40
|
+
var bar = elem.find('.pdf-bar');
|
41
|
+
var canvas = elem.find('canvas');
|
42
|
+
var next = elem.find('.pdf-next');
|
43
|
+
var last = elem.find('.pdf-last');
|
44
|
+
var previous = elem.find('.pdf-prev');
|
45
|
+
var first = elem.find('.pdf-first');
|
46
|
+
var pageNumbers = elem.find('.pdf-page-numbers');
|
47
|
+
var pageNum = $("<span class='page-num'></span>");
|
48
|
+
var pageCount = $("<span class='page-count'></span>");
|
49
|
+
var fullscreen = elem.find('.pdf-fullscreen');
|
50
|
+
if(pageNumbers) {
|
51
|
+
pageNumbers.prepend(pageCount).prepend(pageNum).prepend(options.locals.page);
|
52
|
+
}
|
53
|
+
|
54
|
+
canvas.attr('id', 'canvas_' + index);
|
55
|
+
$('.pdf_prev_image').hide();
|
56
|
+
var imgHeight = $('.pdf_prev_image').height();
|
57
|
+
canvas.css({
|
58
|
+
'display':'block',
|
59
|
+
'height':imgHeight
|
60
|
+
});
|
61
|
+
|
62
|
+
return $(bar);
|
63
|
+
}
|
64
|
+
|
65
|
+
function renderPage(pageNum, pdfDoc, canvas, scale, elem) {
|
66
|
+
pdfDoc.getPage(pageNum).then(function getPage(page) {
|
67
|
+
var viewport = page.getViewport(scale);
|
68
|
+
var context = canvas.getContext('2d');
|
69
|
+
canvas.height = viewport.height;
|
70
|
+
canvas.width = viewport.width;
|
71
|
+
|
72
|
+
page.render({canvasContext: context, viewport: viewport});
|
73
|
+
|
74
|
+
elem.html(pageNum);
|
75
|
+
$(canvas).css("height","auto");
|
76
|
+
});
|
77
|
+
}
|
78
|
+
|
79
|
+
function initializePdf(options, obj) {
|
80
|
+
|
81
|
+
PDFJS.disableWorker = true;
|
82
|
+
if (options.workerSrc !== '') {
|
83
|
+
PDFJS.workerSrc = options.workerSrc;
|
84
|
+
}
|
85
|
+
|
86
|
+
obj.each(function(index, elem) {
|
87
|
+
var self = $(elem);
|
88
|
+
var pdfDoc = null;
|
89
|
+
var pageNum = options.startPage;
|
90
|
+
var url = self.data('url');
|
91
|
+
|
92
|
+
var controlBar = addControllBar(self, index, url, options);
|
93
|
+
var canvas = document.getElementById('canvas_' + index);
|
94
|
+
|
95
|
+
var pageNumField = $(self).find('.page-num');
|
96
|
+
var pageCountField = $(self).find('.page-count');
|
97
|
+
|
98
|
+
PDFJS.getDocument(url).then(function getPdf(_pdfDoc) {
|
99
|
+
pdfDoc = _pdfDoc;
|
100
|
+
pageCountField.html(pdfDoc.numPages);
|
101
|
+
renderPage(pageNum, pdfDoc, canvas, options.scale, pageNumField);
|
102
|
+
});
|
103
|
+
|
104
|
+
var nextButton = $(self).find('.pdf-next');
|
105
|
+
nextButton.on('click', function() {
|
106
|
+
if (pageNum >= pdfDoc.numPages)
|
107
|
+
return;
|
108
|
+
pageNum++;
|
109
|
+
renderPage(pageNum, pdfDoc, canvas, options.scale, pageNumField);
|
110
|
+
});
|
111
|
+
|
112
|
+
$(canvas).on('click', function() {
|
113
|
+
if (pageNum >= pdfDoc.numPages)
|
114
|
+
return;
|
115
|
+
pageNum++;
|
116
|
+
renderPage(pageNum, pdfDoc, canvas, options.scale, pageNumField);
|
117
|
+
});
|
118
|
+
|
119
|
+
var firstButton = $(self).find('.pdf-first');
|
120
|
+
firstButton.on('click', function() {
|
121
|
+
pageNum = 1;
|
122
|
+
renderPage(pageNum, pdfDoc, canvas, options.scale, pageNumField);
|
123
|
+
});
|
124
|
+
|
125
|
+
var lastButton = $(self).find('.pdf-last');
|
126
|
+
lastButton.on('click', function() {
|
127
|
+
pageNum = pdfDoc.numPages;
|
128
|
+
renderPage(pageNum, pdfDoc, canvas, options.scale, pageNumField);
|
129
|
+
});
|
130
|
+
|
131
|
+
var prevButton = $(self).find('.pdf-prev');
|
132
|
+
prevButton.on('click', function() {
|
133
|
+
if (pageNum <= 1)
|
134
|
+
return;
|
135
|
+
pageNum--;
|
136
|
+
renderPage(pageNum, pdfDoc, canvas, options.scale, pageNumField);
|
137
|
+
});
|
138
|
+
|
139
|
+
var fullscreenButton = $(self).find('.pdf-fullscreen');
|
140
|
+
fullscreenButton.on('click', function(event) {
|
141
|
+
event.preventDefault();
|
142
|
+
if(self.hasClass('in-fullscreen')) {
|
143
|
+
fullscreenButton.addClass(options.fullscreen).removeClass(options.exit_fullscreen);
|
144
|
+
self.removeClass('in-fullscreen');
|
145
|
+
$.fullscreen.exit();
|
146
|
+
} else {
|
147
|
+
var barHeight = controlBar.height();
|
148
|
+
self.fullscreen();
|
149
|
+
fullscreenButton.removeClass(options.fullscreen).addClass(options.exit_fullscreen);
|
150
|
+
self.addClass('in-fullscreen');
|
151
|
+
}
|
152
|
+
});
|
153
|
+
}); // end each
|
154
|
+
}
|