1
0
Fork 0
mirror of https://github.com/Yetangitu/owncloud-apps.git synced 2025-10-02 14:49:17 +02:00

files_opds: add FictionBook 2 (.fb2) preview provider

This commit is contained in:
frankdelange 2017-01-14 10:23:44 +01:00
parent c73612586c
commit 574d7300bd
5 changed files with 60 additions and 1 deletions

View file

@ -18,6 +18,7 @@ $defaults = new \OC_Defaults();
$formats = array(
["epub" => Config::getPreview('OC\Preview\Epub') ? 1 : 0 ],
["fb2" => Config::getPreview('OC\Preview\FB2') ? 1 : 0 ],
["pdf" => Config::getPreview('OC\Preview\PDF') ? 1 : 0],
["opendocument" => Config::getPreview('OC\Preview\OpenDocument') ? 1 : 0],
["msoffice" => Config::getPreview('OC\Preview\MSOfficeDoc') ? 1 : 0]

View file

@ -38,11 +38,13 @@ if (isset($_POST['opdsCoverX'])) {
} else {
// set preview preferences
$opdsPreviewEpub = $_POST['opdsPreviewEpub'];
$opdsPreviewFb2 = $_POST['opdsPreviewFb2'];
$opdsPreviewPdf = $_POST['opdsPreviewPdf'];
$opdsPreviewOpenDocument = $_POST['opdsPreviewOpenDocument'];
$opdsPreviewMsOffice = $_POST['opdsPreviewMsOffice'];
Config::setPreview('OC\Preview\Epub',$opdsPreviewEpub);
Config::setPreview('OC\Preview\FB2',$opdsPreviewFb2);
Config::setPreview('OC\Preview\PDF',$opdsPreviewPdf);
Config::setPreview('OC\Preview\OpenDocument',$opdsPreviewOpenDocument);
Config::setPreview('OC\Preview\StarOffice',$opdsPreviewOpenDocument);

View file

@ -4,5 +4,6 @@ $l = \OC::$server->getL10N('files_opds');
\OCP\App::registerPersonal('files_opds', 'personal');
\OCP\App::registerAdmin('files_opds', 'admin');
/* register preview provider */
/* register preview providers */
\OC::$server->getPreviewManager()->registerProvider('/application\/epub\+zip/', function() { return new OCA\Files_Opds\EpubPreview; });
\OC::$server->getPreviewManager()->registerProvider('/application\/x-fictionbook\+xml/', function() { return new OCA\Files_Opds\Fb2Preview; });

View file

@ -3,11 +3,13 @@ $(document).ready(function(){
var opdsAdminSettings = {
save : function() {
var epub = document.getElementById('opds-preview-epub').checked ? 'true' : 'false';
var fb2 = document.getElementById('opds-preview-fb2').checked ? 'true' : 'false';
var pdf = document.getElementById('opds-preview-pdf').checked ? 'true' : 'false';
var opendocument = document.getElementById('opds-preview-opendocument').checked ? 'true' : 'false';
var msoffice = document.getElementById('opds-preview-msoffice').checked ? 'true' : 'false';
var data = {
opdsPreviewEpub : epub,
opdsPreviewFb2 : fb2,
opdsPreviewPdf : pdf,
opdsPreviewOpenDocument : opendocument,
opdsPreviewMsOffice : msoffice
@ -40,6 +42,7 @@ $(document).ready(function(){
};
$('#opds-preview-epub').on("change", opdsAdminSettings.save);
$('#opds-preview-fb2').on("change", opdsAdminSettings.save);
$('#opds-preview-pdf').on("change", opdsAdminSettings.save);
$('#opds-preview-opendocument').on("change", opdsAdminSettings.save);
$('#opds-preview-msoffice').on("change", opdsAdminSettings.save);

View file

@ -0,0 +1,52 @@
<?php
/**
* Nextcloud - Files_Opds App
*
* @author Frank de Lange
* @copyright 2016 Frank de Lange
*
* This file is licensed under the Affero General Public License version 3 or
* later.
*/
namespace OCA\Files_Opds;
use OCP\Preview\IProvider;
/**
* FB2 preview - returns cover or null
*/
class Fb2Preview implements IProvider {
public function getMimeType() {
return '/application\/x-fictionbook\+xml/';
}
public function getThumbnail($path, $maxX, $maxY, $scalingup, $fileview) {
//get fileinfo
$fileInfo = $fileview->getFileInfo($path);
if(!$fileInfo) {
return false;
}
$absPath = $fileview->toTmpFile($path);
$fb2 = new \OCA\Files_Opds\FB2($absPath);
$cover = $fb2->Cover();
if ($cover) {
$image = new \OC_Image();
$image->loadFromData($cover['data']);
}
return (($cover !== null) && $image->valid()) ? $image : false;
}
public function isAvailable(\OCP\Files\FileInfo $file) {
return $file->getSize() > 0;
}
}