Merge branch 'master' of git://github.com/janeczku/calibre-web
This commit is contained in:
@@ -1,3 +1,19 @@
|
||||
/* This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
* Copyright (C) 2018-2019 hexeth
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
// Move advanced search to side-menu
|
||||
$( 'a[href*="advanced"]' ).parent().insertAfter( '#nav_new' );
|
||||
$( 'body' ).addClass('blur');
|
||||
@@ -200,7 +216,7 @@ return $(this).text().replace(/^\s+|^\t+|\t+|\s+$/g, "");
|
||||
$('.downloadBtn' ).click( function() {
|
||||
$( '.leramslist' ).toggle();
|
||||
});
|
||||
|
||||
|
||||
$('#sendbtn2' ).click( function() {
|
||||
$( '.sendtokindle-drop' ).toggle();
|
||||
});
|
||||
@@ -231,7 +247,7 @@ return $(this).text().replace(/^\s+|^\t+|\t+|\s+$/g, "");
|
||||
$( '.readinbrowser-drop' ).attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( $( '#sendbtn2' ).length > 0 ) {
|
||||
position = $( '#sendbtn2' ).offset().left
|
||||
if ( position + $( '.sendtokindle-drop' ).width() > $( window ).width() ) {
|
||||
|
||||
@@ -1,3 +1,20 @@
|
||||
/* This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
* Copyright (C) 2018 jkrehm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* global _ */
|
||||
|
||||
$(function() {
|
||||
|
||||
@@ -1,6 +1,21 @@
|
||||
/* This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
* Copyright (C) 2018 idalin<dalin.lin@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/*
|
||||
* Get Metadata from Douban Books api and Google Books api
|
||||
* Created by idalin<dalin.lin@gmail.com>
|
||||
* Google Books api document: https://developers.google.com/books/docs/v1/using
|
||||
* Douban Books api document: https://developers.douban.com/wiki/?title=book_v2 (Chinese Only)
|
||||
*/
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+2
-5
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+40
-30
File diff suppressed because one or more lines are too long
Vendored
+3
-4
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+27
-10
@@ -1,3 +1,20 @@
|
||||
/* This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
* Copyright (C) 2012-2019 mutschler, janeczku, jkrehm, OzzieIsaacs
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
// Generic control/related handler to show/hide fields based on a checkbox' value
|
||||
// e.g.
|
||||
// <input type="checkbox" data-control="stuff-to-show">
|
||||
@@ -60,17 +77,17 @@ $(function() {
|
||||
layoutMode : "fitRows"
|
||||
});
|
||||
|
||||
$(".load-more .row").infinitescroll({
|
||||
var $loadMore = $(".load-more .row").infiniteScroll({
|
||||
debug: false,
|
||||
navSelector : ".pagination",
|
||||
// selector for the paged navigation (it will be hidden)
|
||||
nextSelector : ".pagination a:last",
|
||||
path : ".next",
|
||||
// selector for the NEXT link (to page 2)
|
||||
itemSelector : ".load-more .book",
|
||||
animate : true,
|
||||
extraScrollPx: 300
|
||||
// selector for all items you'll retrieve
|
||||
}, function(data) {
|
||||
append : ".load-more .book"
|
||||
//animate : true, # ToDo: Reenable function
|
||||
//extraScrollPx: 300
|
||||
});
|
||||
$loadMore.on( 'append.infiniteScroll', function( event, response, path, data ) {
|
||||
$(".pagination").addClass("hidden");
|
||||
$(".load-more .row").isotope( "appended", $(data), null );
|
||||
});
|
||||
|
||||
@@ -120,7 +137,7 @@ $(function() {
|
||||
.removeClass("hidden")
|
||||
.find("span").html(data.commit);
|
||||
|
||||
data.history.reverse().forEach(function(entry) {
|
||||
data.history.forEach(function(entry) {
|
||||
$("<tr><td>" + entry[0] + "</td><td>" + entry[1] + "</td></tr>").appendTo($("#update_table"));
|
||||
});
|
||||
cssClass = "alert-warning";
|
||||
@@ -185,6 +202,6 @@ $(function() {
|
||||
});
|
||||
|
||||
$(window).resize(function() {
|
||||
$(".discover .row").isotope("reLayout");
|
||||
$(".discover .row").isotope("layout");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,3 +1,20 @@
|
||||
/* This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
* Copyright (C) 2018 jkrehm, OzzieIsaacs
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* global Sortable,sortTrue */
|
||||
|
||||
Sortable.create(sortTrue, {
|
||||
|
||||
@@ -1,3 +1,20 @@
|
||||
/* This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
|
||||
* Copyright (C) 2018 OzzieIsaacs
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
$(function() {
|
||||
|
||||
$("#domain_submit").click(function(event) {
|
||||
|
||||
@@ -0,0 +1,198 @@
|
||||
/*
|
||||
* bootstrap-uploadprogress
|
||||
* github: https://github.com/jakobadam/bootstrap-uploadprogress
|
||||
*
|
||||
* Copyright (c) 2015 Jakob Aarøe Dam
|
||||
* Version 1.0.0
|
||||
* Licensed under the MIT license.
|
||||
*/
|
||||
(function($){
|
||||
"use strict";
|
||||
|
||||
$.support.xhrFileUpload = !!(window.FileReader && window.ProgressEvent);
|
||||
$.support.xhrFormData = !!window.FormData;
|
||||
|
||||
if(!$.support.xhrFileUpload || !$.support.xhrFormData){
|
||||
// skip decorating form
|
||||
return;
|
||||
}
|
||||
|
||||
var template = '<div class="modal fade" id="file-progress-modal">\
|
||||
<div class="modal-dialog">\
|
||||
<div class="modal-content">\
|
||||
<div class="modal-header">\
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>\
|
||||
<h4 class="modal-title">Uploading</h4>\
|
||||
</div>\
|
||||
<div class="modal-body">\
|
||||
<div class="modal-message"></div>\
|
||||
<div class="progress">\
|
||||
<div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="0" aria-valuemin="0"\
|
||||
aria-valuemax="100" style="width: 0%;min-width: 2em;">\
|
||||
0%\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="modal-footer" style="display:none">\
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>';
|
||||
|
||||
var UploadProgress = function(element, options){
|
||||
this.options = options;
|
||||
this.$element = $(element);
|
||||
};
|
||||
|
||||
UploadProgress.prototype = {
|
||||
|
||||
constructor: function() {
|
||||
this.$form = this.$element;
|
||||
this.$form.on('submit', $.proxy(this.submit, this));
|
||||
this.$modal = $(this.options.template);
|
||||
this.$modal_message = this.$modal.find('.modal-message');
|
||||
this.$modal_title = this.$modal.find('.modal-title');
|
||||
this.$modal_footer = this.$modal.find('.modal-footer');
|
||||
this.$modal_bar = this.$modal.find('.progress-bar');
|
||||
|
||||
this.$modal.on('hidden.bs.modal', $.proxy(this.reset, this));
|
||||
},
|
||||
|
||||
reset: function(){
|
||||
this.$modal_title = this.$modal_title.text('Uploading');
|
||||
this.$modal_footer.hide();
|
||||
this.$modal_bar.addClass('progress-bar-success');
|
||||
this.$modal_bar.removeClass('progress-bar-danger');
|
||||
if(this.xhr){
|
||||
this.xhr.abort();
|
||||
}
|
||||
},
|
||||
|
||||
submit: function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
this.$modal.modal({
|
||||
backdrop: 'static',
|
||||
keyboard: false
|
||||
});
|
||||
|
||||
// We need the native XMLHttpRequest for the progress event
|
||||
var xhr = new XMLHttpRequest();
|
||||
this.xhr = xhr;
|
||||
|
||||
xhr.addEventListener('load', $.proxy(this.success, this, xhr));
|
||||
xhr.addEventListener('error', $.proxy(this.error, this, xhr));
|
||||
//xhr.addEventListener('abort', function(){});
|
||||
|
||||
xhr.upload.addEventListener('progress', $.proxy(this.progress, this));
|
||||
|
||||
var form = this.$form;
|
||||
|
||||
xhr.open(form.attr('method'), form.attr("action"));
|
||||
xhr.setRequestHeader('X-REQUESTED-WITH', 'XMLHttpRequest');
|
||||
|
||||
var data = new FormData(form.get(0));
|
||||
xhr.send(data);
|
||||
},
|
||||
|
||||
success: function(xhr) {
|
||||
if(xhr.status == 0 || xhr.status >= 400){
|
||||
// HTTP 500 ends up here!?!
|
||||
return this.error(xhr);
|
||||
}
|
||||
this.set_progress(100);
|
||||
var url;
|
||||
var content_type = xhr.getResponseHeader('Content-Type');
|
||||
|
||||
// make it possible to return the redirect URL in
|
||||
// a JSON response
|
||||
if(content_type.indexOf('application/json') !== -1){
|
||||
var response = $.parseJSON(xhr.responseText);
|
||||
console.log(response);
|
||||
url = response.location;
|
||||
}
|
||||
else{
|
||||
url = this.options.redirect_url;
|
||||
}
|
||||
window.location.href = url;
|
||||
},
|
||||
|
||||
// handle form error
|
||||
// we replace the form with the returned one
|
||||
error: function(xhr){
|
||||
this.$modal_title.text('Upload failed');
|
||||
|
||||
this.$modal_bar.removeClass('progress-bar-success');
|
||||
this.$modal_bar.addClass('progress-bar-danger');
|
||||
this.$modal_footer.show();
|
||||
|
||||
var content_type = xhr.getResponseHeader('Content-Type');
|
||||
|
||||
// Replace the contents of the form, with the returned html
|
||||
if(xhr.status === 422){
|
||||
var new_html = $.parseHTML(xhr.responseText);
|
||||
this.replace_form(new_html);
|
||||
this.$modal.modal('hide');
|
||||
}
|
||||
// Write the error response to the document.
|
||||
else{
|
||||
var response_text = xhr.responseText;
|
||||
if(content_type.indexOf('text/plain') !== -1){
|
||||
response_text = '<pre>' + response_text + '</pre>';
|
||||
}
|
||||
document.write(xhr.responseText);
|
||||
}
|
||||
},
|
||||
|
||||
set_progress: function(percent){
|
||||
var txt = percent + '%';
|
||||
if (percent == 100) {
|
||||
txt = this.options.uploaded_msg;
|
||||
}
|
||||
this.$modal_bar.attr('aria-valuenow', percent);
|
||||
this.$modal_bar.text(txt);
|
||||
this.$modal_bar.css('width', percent + '%');
|
||||
},
|
||||
|
||||
progress: function(/*ProgressEvent*/e){
|
||||
var percent = Math.round((e.loaded / e.total) * 100);
|
||||
this.set_progress(percent);
|
||||
},
|
||||
|
||||
// replace_form replaces the contents of the current form
|
||||
// with the form in the html argument.
|
||||
// We use the id of the current form to find the new form in the html
|
||||
replace_form: function(html){
|
||||
var new_form;
|
||||
var form_id = this.$form.attr('id');
|
||||
if(form_id !== undefined){
|
||||
new_form = $(html).find('#' + form_id);
|
||||
}
|
||||
else{
|
||||
new_form = $(html).find('form');
|
||||
}
|
||||
|
||||
// add the filestyle again
|
||||
new_form.find(':file').filestyle({buttonBefore: true});
|
||||
this.$form.html(new_form.children());
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.uploadprogress = function(options, value){
|
||||
return this.each(function(){
|
||||
var _options = $.extend({}, $.fn.uploadprogress.defaults, options);
|
||||
var file_progress = new UploadProgress(this, _options);
|
||||
file_progress.constructor();
|
||||
});
|
||||
};
|
||||
|
||||
$.fn.uploadprogress.defaults = {
|
||||
template: template,
|
||||
uploaded_msg: "Upload done, processing, please wait..."
|
||||
//redirect_url: ...
|
||||
|
||||
// need to customize stuff? Add here, and change code accordingly.
|
||||
};
|
||||
|
||||
})(window.jQuery);
|
||||
Reference in New Issue
Block a user