Blame view
sources/apps/reader/js/.goutputstream-CZ9VOW
4.84 KB
|
42e4f8d60
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
$(document).ready(function() {
$('#fileList tr').each(function(){
// data-file attribute to contain unescaped filenames.
$(this).attr('data-file',decodeURIComponent($(this).attr('data-file')));
});
$('#file_action_panel').attr('activeAction', false);
$('.start').click(function(){
var contentbox = $(this).parent().children('div#contentbox');
var path = $(this).parent().children('a.name').attr('dir');
alert(path);
contentbox.show(100);
contentbox.keypress(function(e) {
if(e.which == 13) {
var tag = contentbox.text();
contentbox.text('');
contentbox.hide();
var displaybox = $(this).parent().children('div#displaybox');
displaybox.append('<a href = "apps/reader/fetch_tags.php?tag='+tag+'">'+tag+'</a>');
displaybox.append(' ');
$.post('apps/reader/ajax/tags.php', {tag:tag, path:path});
}
});
});
});
$(function() {
// See if url conatins the index 'reader'
if(location.href.indexOf("reader")!=-1) {
'use strict';
// create thumbnails for pdfs inside current directory.
create_thumbnails();
create_thumbnails_for_directories();
// Render pdf view on every click of a thumbnail, now and in future.
$('td.filename a.name').live('click',function(event) {
event.preventDefault();
var filename=$(this).parent().parent().attr('data-file');
var tr=$('tr').filterAttr('data-file',filename);
var mime=$(this).parent().parent().data('mime');
var type=$(this).parent().parent().data('type');
// Check if clicked link is a pdf file or a directory, perform suitable function.
var action=getAction(mime,type);
if(action){
action(filename);
}
});
}
});
/* Function that returns suitable function definition to be executed on
* click of the file whose mime and type are passed. */
function getAction(mime,type) {
var name;
if(mime == 'application/pdf') {
name = function (filename){
showPDFviewer($('#dir').val(),filename);
}
}
else {
name = function (filename){
window.location=OC.linkTo('reader', 'index.php') + '&dir='+
encodeURIComponent($('#dir').val()).replace(/%2F/g, '/')+'/'+
encodeURIComponent(filename) + '/';
}
}
return name;
}
function create_thumbnails() {
PDFJS.disableWorker = true;
$('td#thumbnail_container img').each(function() {
// Get url and title of each pdf file from image tags.
var title = $(this).parent().parent().attr('data-file');
var location = $(this).attr('id');
var url = OC.linkTo('files', 'download.php')+'?file=' + location;
var thumbnail_exists = $(this).attr('value');
if (thumbnail_exists == "false") {
if (url.indexOf('pdf') != -1) {
render_thumbnail(url,location,title);
}
}
});
}
function create_thumbnails_for_directories() {
$('div#thumbs img').each(function(){
var thumb_exists = $(this).attr('value');
if (thumb_exists == "false") {
var location = $(this).attr('id');
var url = OC.linkTo('files', 'download.php')+'?file=' + location;
var title = location.replace(/\\/g,'/').replace( /.*\//, '' );
if (url.indexOf('pdf') != -1) {
render_thumbnail(url,location,title);
}
}
});
}
function canvasSaver(canvas,title,location) {
var canvas_data = canvas.toDataURL('image/png');
$.post("apps/reader/ajax/canvas_saver.php", {canv_data:canvas_data,title:title,location:location});
}
function render_thumbnail(url,location,title) {
PDFJS.getDocument(url).then(function(pdf) {
// Using promise to fetch the page
pdf.getPage(1).then(function(page) {
var scale = 0.2;
var viewport = page.getViewport(scale);
// Create canvas elements for each pdf's first page.
var canvas = document.createElement("canvas");
// Canvas elements should be of proper size, not too big, not too small.
if (viewport.height > 170 || viewport.width > 130) {
scale = 0.1;
}
else if (viewport.height < 129 || viewport.width < 86) {
scale = 0.3;
}
viewport = page.getViewport(scale);
canvas.height = viewport.height;
canvas.width = viewport.width;
var ctx = canvas.getContext('2d');
ctx.save();
ctx.fillStyle = 'rgb(255, 255, 255)';
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.restore();
var view = page.view;
var scaleX = (canvas.width / page.width);
var scaleY = (canvas.height / page.height);
ctx.translate(-view.x * scaleX, -view.y * scaleY);
// Render PDF page into canvas context
var renderContext = {
canvasContext: ctx,
viewport: viewport
};
pageRendering = page.render(renderContext);
pageRendering.onData(function(){
canvasSaver(canvas,title,location);
var imageElement = document.getElementById(location);
imageElement.src = canvas.toDataURL();
imageElement.style.height = '100px';
imageElement.style.width = '100px';
});
});
});
}
|