1
0
mirror of https://github.com/janeczku/calibre-web synced 2025-10-27 13:28:04 +00:00

Merge branch 'master' of github.com:GarckaMan/calibre-web into long_strip_cbrreader

This commit is contained in:
GarcaMan
2023-02-11 03:25:31 +00:00
377 changed files with 144962 additions and 94732 deletions

47
cps/static/js/caliBlur.js Normal file → Executable file
View File

@@ -16,7 +16,6 @@
*/
// Move advanced search to side-menu
$("a[href*='advanced']").parent().insertAfter("#nav_new");
$("body").addClass("blur");
$("body.stat").addClass("stats");
$("body.config").addClass("admin");
$("body.uiconfig").addClass("admin");
@@ -29,8 +28,8 @@ $("body > div.container-fluid > div > div.col-sm-10 > div.filterheader").attr("s
// Back button
curHref = window.location.href.split("/");
prevHref = document.referrer.split("/");
$(".navbar-form.navbar-left")
.before('<div class="plexBack"><a href="' + encodeURI(document.referrer) + '"></a></div>');
$(".plexBack a").attr('href', encodeURI(document.referrer));
if (history.length === 1 ||
curHref[0] +
curHref[1] +
@@ -44,14 +43,9 @@ if (history.length === 1 ||
//Weird missing a after pressing back from edit.
setTimeout(function () {
if ($(".plexBack a").length < 1) {
$(".plexBack").append('<a href="' + encodeURI(document.referrer) + '"></a>');
}
$(".plexBack a").attr('href', encodeURI(document.referrer));
}, 10);
// Home button
$(".plexBack").before('<div class="home-btn"></div>');
$("a.navbar-brand").clone().appendTo(".home-btn").empty().removeClass("navbar-brand");
/////////////////////////////////
// Start of Book Details Work //
///////////////////////////////
@@ -201,7 +195,7 @@ if ($("body.book").length > 0) {
// Move dropdown lists higher in dom, replace bootstrap toggle with own toggle.
$('ul[aria-labelledby="read-in-browser"]').insertBefore(".blur-wrapper").addClass("readinbrowser-drop");
$('ul[aria-labelledby="send-to-kindle"]').insertBefore(".blur-wrapper").addClass("sendtokindle-drop");
$('ul[aria-labelledby="send-to-kereader"]').insertBefore(".blur-wrapper").addClass("sendtoereader-drop");
$(".leramslist").insertBefore(".blur-wrapper");
$('ul[aria-labelledby="btnGroupDrop1"]').insertBefore(".blur-wrapper").addClass("leramslist");
$("#add-to-shelves").insertBefore(".blur-wrapper");
@@ -215,7 +209,7 @@ if ($("body.book").length > 0) {
});
$("#sendbtn2").click(function () {
$(".sendtokindle-drop").toggle();
$(".sendtoereader-drop").toggle();
});
@@ -242,12 +236,12 @@ if ($("body.book").length > 0) {
if ($("#sendbtn2").length > 0) {
position = $("#sendbtn2").offset().left
if (position + $(".sendtokindle-drop").width() > $(window).width()) {
positionOff = position + $(".sendtokindle-drop").width() - $(window).width();
if (position + $(".sendtoereader-drop").width() > $(window).width()) {
positionOff = position + $(".sendtoereader-drop").width() - $(window).width();
ribPosition = position - positionOff - 5
$(".sendtokindle-drop").attr("style", "left: " + ribPosition + "px !important; right: auto; top: " + topPos + "px");
$(".sendtoereader-drop").attr("style", "left: " + ribPosition + "px !important; right: auto; top: " + topPos + "px");
} else {
$(".sendtokindle-drop").attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px");
$(".sendtoereader-drop").attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px");
}
}
@@ -270,7 +264,7 @@ if ($("body.book").length > 0) {
if (position + $("#add-to-shelves").width() > $(window).width()) {
positionOff = position + $("#add-to-shelves").width() - $(window).width();
adsPosition = position - positionOff - 5
adsPosition = position - positionOff - 5;
$("#add-to-shelves").attr("style", "left: " + adsPosition + "px !important; right: auto; top: " + topPos + "px");
} else {
$("#add-to-shelves").attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px");
@@ -300,7 +294,7 @@ if ($("body.book").length > 0) {
$(document).mouseup(function (e) {
var container = new Array();
container.push($('ul[aria-labelledby="read-in-browser"]'));
container.push($(".sendtokindle-drop"));
container.push($(".sendtoereader-drop"));
container.push($(".leramslist"));
container.push($("#add-to-shelves"));
container.push($(".navbar-collapse.collapse.in"));
@@ -326,13 +320,8 @@ url = window.location.pathname
// Move create shelf
$("#nav_createshelf").prependTo(".your-shelves");
// Create drop-down for profile and move elements to it
$("#main-nav")
.prepend('<li class="dropdown"><a href="#" class="dropdown-toggle profileDrop" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="glyphicon glyphicon-user"></span></a><ul class="dropdown-menu profileDropli"></ul></li>');
$("#top_user").parent().addClass("dropdown").appendTo(".profileDropli");
$("#nav_about").addClass("dropdown").appendTo(".profileDropli");
$("#register").parent().addClass("dropdown").appendTo(".profileDropli");
$("#logout").parent().addClass("dropdown").appendTo(".profileDropli");
// Move About link it the profile dropdown
$(".profileDropli #top_user").parent().after($("#nav_about").addClass("dropdown"))
// Remove the modals except from some areas where they are needed
bodyClass = $("body").attr("class").split(" ");
@@ -429,7 +418,7 @@ if($("body.advsearch").length > 0) {
if (position + $("#add-to-shelves").width() > $(window).width()) {
positionOff = position + $("#add-to-shelves").width() - $(window).width();
adsPosition = position - positionOff - 5
adsPosition = position - positionOff - 5;
$("#add-to-shelves").attr("style", "left: " + adsPosition + "px !important; right: auto; top: " + topPos + "px");
} else {
$("#add-to-shelves").attr("style", "left: " + position + "px !important; right: auto; top: " + topPos + "px");
@@ -479,12 +468,12 @@ if ($.trim($("#add-to-shelves").html()).length === 0) {
$("#add-to-shelf").addClass("empty-ul");
}
shelfLength = $("#add-to-shelves li").length
emptyLength = 0
shelfLength = $("#add-to-shelves li").length;
emptyLength = 0;
$("#add-to-shelves").on("click", "li a", function () {
console.log("#remove-from-shelves change registered");
emptyLength++
emptyLength++;
setTimeout(function () {
if (emptyLength >= shelfLength) {
@@ -666,7 +655,7 @@ $("#sendbtn").attr({
$("#sendbtn2").attr({
"data-toggle-two": "tooltip",
"title": $("#sendbtn2").text(), // "Send to Kindle",
"title": $("#sendbtn2").text(), // "Send to eReader",
"data-placement": "bottom",
"data-viewport": ".btn-toolbar"
})

File diff suppressed because it is too large Load Diff

14
cps/static/js/compress/jszip.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -125,7 +125,7 @@ function loadArchiveFormats(formats, cb) {
_loaded_archive_formats.push(archive_format);
break;
case 'zip':
loadScript(path + 'jszip.js', checkForLoadDone);
loadScript(path + 'jszip.min.js', checkForLoadDone);
_loaded_archive_formats.push(archive_format);
break;
case 'tar':

View File

@@ -28,14 +28,24 @@ $("#have_read_cb").on("change", function() {
data: $(this).closest("form").serialize(),
error: function(response) {
var data = [{type:"danger", message:response.responseText}]
$("#flash_success").remove();
// $("#flash_success").parent().remove();
$("#flash_danger").remove();
$(".row-fluid.text-center").remove();
if (!jQuery.isEmptyObject(data)) {
data.forEach(function (item) {
$(".navbar").after('<div class="row-fluid text-center" >' +
'<div id="flash_' + item.type + '" class="alert alert-' + item.type + '">' + item.message + '</div>' +
'</div>');
});
$("#have_read_cb").prop("checked", !$("#have_read_cb").prop("checked"));
if($("#bookDetailsModal").is(":visible")) {
data.forEach(function (item) {
$(".modal-header").after('<div id="flash_' + item.type +
'" class="text-center alert alert-' + item.type + '">' + item.message + '</div>');
});
} else
{
data.forEach(function (item) {
$(".navbar").after('<div class="row-fluid text-center" >' +
'<div id="flash_' + item.type + '" class="alert alert-' + item.type + '">' + item.message + '</div>' +
'</div>');
});
}
}
}
});
@@ -59,17 +69,20 @@ $("#archived_cb").on("change", function() {
)
};
$("#shelf-actions").on("click", "[data-shelf-action]", function (e) {
$("#add-to-shelves, #remove-from-shelves").on("click", "[data-shelf-action]", function (e) {
e.preventDefault();
$.get(this.href)
$.ajax({
url: $(this).data('href'),
method:"post",
data: {csrf_token:$("input[name='csrf_token']").val()},
})
.done(function() {
var $this = $(this);
switch ($this.data("shelf-action")) {
case "add":
$("#remove-from-shelves").append(
templates.remove({
add: this.href,
add: $this.data('href'),
remove: $this.data("remove-href"),
content: $("<div>").text(this.textContent).html()
})
@@ -79,7 +92,7 @@ $("#archived_cb").on("change", function() {
$("#add-to-shelves").append(
templates.add({
add: $this.data("add-href"),
remove: this.href,
remove: $this.data('href'),
content: $("<div>").text(this.textContent).html(),
})
);

View File

@@ -33,7 +33,7 @@ $(".datepicker").datepicker({
if (results) {
pubDate = new Date(results[1], parseInt(results[2], 10) - 1, results[3]) || new Date(this.value);
$(this).next('input')
.val(pubDate.toLocaleDateString(language))
.val(pubDate.toLocaleDateString(language.replaceAll("_","-")))
.removeClass("hidden");
}
}).trigger("change");

View File

@@ -26,21 +26,28 @@ $(function () {
)
};
function getUniqueValues(attribute_name, book){
var presentArray = $.map($("#"+attribute_name).val().split(","), $.trim);
if ( presentArray.length === 1 && presentArray[0] === "") {
presentArray = [];
}
$.each(book[attribute_name], function(i, el) {
if ($.inArray(el, presentArray) === -1) presentArray.push(el);
});
return presentArray
}
function populateForm (book) {
tinymce.get("description").setContent(book.description);
var uniqueTags = $.map($("#tags").val().split(","), $.trim);
if ( uniqueTags.length == 1 && uniqueTags[0] == "") {
uniqueTags = [];
}
$.each(book.tags, function(i, el) {
if ($.inArray(el, uniqueTags) === -1) uniqueTags.push(el);
});
var uniqueTags = getUniqueValues('tags', book)
var uniqueLanguages = getUniqueValues('languages', book)
var ampSeparatedAuthors = (book.authors || []).join(" & ");
$("#bookAuthor").val(ampSeparatedAuthors);
$("#book_title").val(book.title);
$("#tags").val(uniqueTags.join(", "));
$("#languages").val(uniqueLanguages.join(", "));
$("#rating").data("rating").setValue(Math.round(book.rating));
if(book.cover !== null){
if(book.cover && $("#cover_url").length){
$(".cover img").attr("src", book.cover);
$("#cover_url").val(book.cover);
}
@@ -48,7 +55,32 @@ $(function () {
$("#publisher").val(book.publisher);
if (typeof book.series !== "undefined") {
$("#series").val(book.series);
$("#series_index").val(book.series_index);
}
if (typeof book.identifiers !== "undefined") {
populateIdentifiers(book.identifiers)
}
}
function populateIdentifiers(identifiers){
for (const property in identifiers) {
console.log(`${property}: ${identifiers[property]}`);
if ($('input[name="identifier-type-'+property+'"]').length) {
$('input[name="identifier-val-'+property+'"]').val(identifiers[property])
}
else {
addIdentifier(property, identifiers[property])
}
}
}
function addIdentifier(name, value){
var line = '<tr>';
line += '<td><input type="text" class="form-control" name="identifier-type-'+ name +'" required="required" placeholder="' + _("Identifier Type") +'" value="'+ name +'"></td>';
line += '<td><input type="text" class="form-control" name="identifier-val-'+ name +'" required="required" placeholder="' + _("Identifier Value") +'" value="'+ value +'"></td>';
line += '<td><a class="btn btn-default" onclick="removeIdentifierLine(this)">'+_("Remove")+'</a></td>';
line += '</tr>';
$("#identifier-table").append(line);
}
function doSearch (keyword) {
@@ -60,14 +92,19 @@ $(function () {
data: {"query": keyword},
dataType: "json",
success: function success(data) {
$("#meta-info").html("<ul id=\"book-list\" class=\"media-list\"></ul>");
data.forEach(function(book) {
var $book = $(templates.bookResult(book));
$book.find("img").on("click", function () {
populateForm(book);
if (data.length) {
$("#meta-info").html("<ul id=\"book-list\" class=\"media-list\"></ul>");
data.forEach(function(book) {
var $book = $(templates.bookResult(book));
$book.find("img").on("click", function () {
populateForm(book);
});
$("#book-list").append($book);
});
$("#book-list").append($book);
});
}
else {
$("#meta-info").html("<p class=\"text-danger\">" + msg.no_result + "!</p>" + $("#meta-info")[0].innerHTML)
}
},
error: function error() {
$("#meta-info").html("<p class=\"text-danger\">" + msg.search_error + "!</p>" + $("#meta-info")[0].innerHTML);
@@ -128,9 +165,7 @@ $(function () {
e.preventDefault();
keyword = $("#keyword").val();
$('.pill').each(function(){
// console.log($(this).data('control'));
$(this).data("initial", $(this).prop('checked'));
// console.log($(this).data('initial'));
});
doSearch(keyword);
});

View File

@@ -164,6 +164,14 @@ kthoom.ImageFile = function(file) {
this.mimeType = undefined;
break;
}
// Reset mime type for special files originating from Apple devices
// This folder may contain files having image extensions (for example .jpg) but those files are not actual images
// Trying to view these files cause corrupted/empty pages in the comic reader and files should be ignored
if (this.filename.indexOf("__MACOSX") !== -1) {
this.mimeType = undefined;
}
if ( this.mimeType !== undefined) {
this.dataURI = createURLFromArray(file.fileData, this.mimeType);
}

File diff suppressed because one or more lines are too long

View File

@@ -177,6 +177,9 @@
whileplaying: function () {
// get csrf_token
let csrf_token = $("input[name='csrf_token']").val();
//This sends a bookmark update to calibreweb every 30 seconds.
if (this.progressBuffer == undefined) {
@@ -187,7 +190,10 @@
$.ajax(calibre.bookmarkUrl, {
method: "post",
data: { bookmark: this.position }
data: {
csrf_token: csrf_token,
bookmark: this.position
}
}).fail(function (xhr, status, error) {
console.error(error);
});
@@ -313,14 +319,14 @@
},
onstop: function () {
$.ajax(calibre.bookmarkUrl, {
method: "post",
data: { bookmark: this.position }
}).fail(function (xhr, status, error) {
console.error(error);
});
utils.css.remove(dom.o, 'playing');
},

View File

@@ -0,0 +1 @@
!function(a){a.fn.datepicker.dates.gl={days:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],daysShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],daysMin:["Do","Lu","Ma","Me","Xo","Ve","Sa"],months:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthsShort:["Xan","Feb","Mar","Abr","Mai","Xun","Xul","Ago","Sep","Out","Nov","Dec"],today:"Hoxe",clear:"Limpar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);

View File

@@ -0,0 +1 @@
!function(a){a.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],daysShort:["Mgu","Sen","Sel","Rab","Kam","Jum","Sab"],daysMin:["Mg","Sn","Sl","Ra","Ka","Ju","Sa"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],today:"Hari Ini",clear:"Kosongkan"}}(jQuery);

View File

@@ -0,0 +1 @@
!function(a){a.fn.datepicker.dates.ko={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],today:"오늘",clear:"삭제",format:"yyyy-mm-dd",titleFormat:"yyyy년mm월",weekStart:0}}(jQuery);

View File

@@ -0,0 +1 @@
!function(a){a.fn.datepicker.dates.no={days:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],daysShort:["søn","man","tir","ons","tor","fre","lør"],daysMin:["sø","ma","ti","on","to","fr","lø"],months:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthsShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],today:"i dag",monthsTitle:"Måneder",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);

View File

@@ -0,0 +1 @@
!function(a){a.fn.datepicker.dates.vi={days:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"],daysShort:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],daysMin:["CN","T2","T3","T4","T5","T6","T7"],months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"Hôm nay",clear:"Xóa",format:"dd/mm/yyyy"}}(jQuery);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

18539
cps/static/js/libs/pdf.js vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,261 @@
tinymce.addI18n('ko_KR',{
"Redo": "\ub2e4\uc2dc\uc2e4\ud589",
"Undo": "\uc2e4\ud589\ucde8\uc18c",
"Cut": "\uc798\ub77c\ub0b4\uae30",
"Copy": "\ubcf5\uc0ac\ud558\uae30",
"Paste": "\ubd99\uc5ec\ub123\uae30",
"Select all": "\uc804\uccb4\uc120\ud0dd",
"New document": "\uc0c8 \ubb38\uc11c",
"Ok": "\ud655\uc778",
"Cancel": "\ucde8\uc18c",
"Visual aids": "\uc2dc\uac01\uad50\uc7ac",
"Bold": "\uad75\uac8c",
"Italic": "\uae30\uc6b8\uc784\uaf34",
"Underline": "\ubc11\uc904",
"Strikethrough": "\ucde8\uc18c\uc120",
"Superscript": "\uc717\ucca8\uc790",
"Subscript": "\uc544\ub798\ucca8\uc790",
"Clear formatting": "\ud3ec\ub9f7\ucd08\uae30\ud654",
"Align left": "\uc67c\ucabd\uc815\ub82c",
"Align center": "\uac00\uc6b4\ub370\uc815\ub82c",
"Align right": "\uc624\ub978\ucabd\uc815\ub82c",
"Justify": "\uc591\ucabd\uc815\ub82c",
"Bullet list": "\uc810\ub9ac\uc2a4\ud2b8",
"Numbered list": "\uc22b\uc790\ub9ac\uc2a4\ud2b8",
"Decrease indent": "\ub0b4\uc5b4\uc4f0\uae30",
"Increase indent": "\ub4e4\uc5ec\uc4f0\uae30",
"Close": "\ub2eb\uae30",
"Formats": "\ud3ec\ub9f7",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\ube0c\ub77c\uc6b0\uc838\uac00 \ud074\ub9bd\ubcf4\ub4dc \uc811\uadfc\uc744 \ud5c8\uc6a9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. Ctrl+X\/C\/V \ud0a4\ub97c \uc774\uc6a9\ud574 \uc8fc\uc138\uc694.",
"Headers": "\uc2a4\ud0c0\uc77c",
"Header 1": "\uc81c\ubaa9 1",
"Header 2": "\uc81c\ubaa9 2",
"Header 3": "\uc81c\ubaa9 3",
"Header 4": "\uc81c\ubaa9 4",
"Header 5": "\uc81c\ubaa9 5",
"Header 6": "\uc81c\ubaa9 6",
"Headings": "\uc81c\ubaa9",
"Heading 1": "\uc81c\ubaa9 1",
"Heading 2": "\uc81c\ubaa9 2",
"Heading 3": "\uc81c\ubaa9 3",
"Heading 4": "\uc81c\ubaa9 4",
"Heading 5": "\uc81c\ubaa9 5",
"Heading 6": "\uc81c\ubaa9 6",
"Preformatted": "Preformatted",
"Div": "\uad6c\ubd84",
"Pre": "Pre",
"Code": "\ucf54\ub4dc",
"Paragraph": "\ub2e8\ub77d",
"Blockquote": "\uad6c\ud68d",
"Inline": "\ub77c\uc778 \uc124\uc815",
"Blocks": "\ube14\ub85d \uc124\uc815",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\uc2a4\ud0c0\uc77c\ubcf5\uc0ac \ub044\uae30. \uc774 \uc635\uc158\uc744 \ub044\uae30 \uc804\uc5d0\ub294 \ubcf5\uc0ac \uc2dc, \uc2a4\ud0c0\uc77c\uc774 \ubcf5\uc0ac\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",
"Font Family": "\uae00\uaf34",
"Font Sizes": "\ud3f0\ud2b8 \uc0ac\uc774\uc988",
"Class": "\ud074\ub798\uc2a4",
"Browse for an image": "\uc774\ubbf8\uc9c0 \ucc3e\uae30",
"OR": "\ud639\uc740",
"Drop an image here": "\uc774\ubbf8\uc9c0 \ub4dc\ub86d",
"Upload": "\uc5c5\ub85c\ub4dc",
"Block": "\ube14\ub85d",
"Align": "\uc815\ub82c",
"Default": "\uae30\ubcf8",
"Circle": "\uc6d0",
"Disc": "\uc6d0\ubc18",
"Square": "\uc0ac\uac01",
"Lower Alpha": "\uc54c\ud30c\ubcb3 \uc18c\ubb38\uc790",
"Lower Greek": "\uadf8\ub9ac\uc2a4\uc5b4 \uc18c\ubb38\uc790",
"Lower Roman": "\ub85c\ub9c8\uc790 \uc18c\ubb38\uc790",
"Upper Alpha": "\uc54c\ud30c\ubcb3 \uc18c\ubb38\uc790",
"Upper Roman": "\ub85c\ub9c8\uc790 \ub300\ubb38\uc790",
"Anchor": "\uc575\ucee4",
"Name": "\uc774\ub984",
"Id": "\uc544\uc774\ub514",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\uc544\uc774\ub514\ub294 \ubb38\uc790, \uc22b\uc790, \ub300\uc2dc, \uc810, \ucf5c\ub860 \ub610\ub294 \ubc11\uc904\ub85c \uc2dc\uc791\ud574\uc57c\ud569\ub2c8\ub2e4.",
"You have unsaved changes are you sure you want to navigate away?": "\uc800\uc7a5\ud558\uc9c0 \uc54a\uc740 \uc815\ubcf4\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud398\uc774\uc9c0\ub97c \ubc97\uc5b4\ub098\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
"Restore last draft": "\ub9c8\uc9c0\ub9c9 \ucd08\uc548 \ubcf5\uc6d0",
"Special character": "\ud2b9\uc218\ubb38\uc790",
"Source code": "\uc18c\uc2a4\ucf54\ub4dc",
"Insert\/Edit code sample": "\ucf54\ub4dc\uc0d8\ud50c \uc0bd\uc785\/\ud3b8\uc9d1",
"Language": "\uc5b8\uc5b4",
"Code sample": "\ucf54\ub4dc\uc0d8\ud50c",
"Color": "\uc0c9\uc0c1",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\uc67c\ucabd\uc5d0\uc11c \uc624\ub978\ucabd",
"Right to left": "\uc624\ub978\ucabd\uc5d0\uc11c \uc67c\ucabd",
"Emoticons": "\uc774\ubaa8\ud2f0\ucf58",
"Document properties": "\ubb38\uc11c \uc18d\uc131",
"Title": "\uc81c\ubaa9",
"Keywords": "\ud0a4\uc6cc\ub4dc",
"Description": "\uc124\uba85",
"Robots": "\ub85c\ubd07",
"Author": "\uc800\uc790",
"Encoding": "\uc778\ucf54\ub529",
"Fullscreen": "\uc804\uccb4\ud654\uba74",
"Action": "\ub3d9\uc791",
"Shortcut": "\ub2e8\ucd95\ud0a4",
"Help": "\ub3c4\uc6c0\ub9d0",
"Address": "\uc8fc\uc18c",
"Focus to menubar": "\uba54\ub274\uc5d0 \ud3ec\ucee4\uc2a4",
"Focus to toolbar": "\ud234\ubc14\uc5d0 \ud3ec\ucee4\uc2a4",
"Focus to element path": "element path\uc5d0 \ud3ec\ucee4\uc2a4",
"Focus to contextual toolbar": "\ucf04\ud14d\uc2a4\ud2b8 \ud234\ubc14\uc5d0 \ud3ec\ucee4\uc2a4",
"Insert link (if link plugin activated)": "\ub9c1\ud06c \uc0bd\uc785 (link \ud50c\ub7ec\uadf8\uc778\uc774 \ud65c\uc131\ud654\ub41c \uc0c1\ud0dc\uc5d0\uc11c)",
"Save (if save plugin activated)": "\uc800\uc7a5 (save \ud50c\ub7ec\uadf8\uc778\uc774 \ud65c\uc131\ud654\ub41c \uc0c1\ud0dc\uc5d0\uc11c)",
"Find (if searchreplace plugin activated)": "\ucc3e\uae30(searchreplace \ud50c\ub7ec\uadf8\uc778\uc774 \ud65c\uc131\ud654\ub41c \uc0c1\ud0dc\uc5d0\uc11c)",
"Plugins installed ({0}):": "\uc124\uce58\ub41c \ud50c\ub7ec\uadf8\uc778 ({0}):",
"Premium plugins:": "\uace0\uae09 \ud50c\ub7ec\uadf8\uc778",
"Learn more...": "\uc880 \ub354 \uc0b4\ud3b4\ubcf4\uae30",
"You are using {0}": "{0}\ub97c \uc0ac\uc6a9\uc911",
"Plugins": "\ud50c\ub7ec\uadf8\uc778",
"Handy Shortcuts": "\ub2e8\ucd95\ud0a4",
"Horizontal line": "\uac00\ub85c",
"Insert\/edit image": "\uc774\ubbf8\uc9c0 \uc0bd\uc785\/\uc218\uc815",
"Image description": "\uc774\ubbf8\uc9c0 \uc124\uba85",
"Source": "\uc18c\uc2a4",
"Dimensions": "\ud06c\uae30",
"Constrain proportions": "\uc791\uc5c5 \uc81c\ud55c",
"General": "\uc77c\ubc18",
"Advanced": "\uace0\uae09",
"Style": "\uc2a4\ud0c0\uc77c",
"Vertical space": "\uc218\uc9c1 \uacf5\ubc31",
"Horizontal space": "\uc218\ud3c9 \uacf5\ubc31",
"Border": "\ud14c\ub450\ub9ac",
"Insert image": "\uc774\ubbf8\uc9c0 \uc0bd\uc785",
"Image": "\uc774\ubbf8\uc9c0",
"Image list": "\uc774\ubbf8\uc9c0 \ubaa9\ub85d",
"Rotate counterclockwise": "\uc2dc\uacc4\ubc18\ub300\ubc29\ud5a5\uc73c\ub85c \ud68c\uc804",
"Rotate clockwise": "\uc2dc\uacc4\ubc29\ud5a5\uc73c\ub85c \ud68c\uc804",
"Flip vertically": "\uc218\uc9c1 \ub4a4\uc9d1\uae30",
"Flip horizontally": "\uc218\ud3c9 \ub4a4\uc9d1\uae30",
"Edit image": "\uc774\ubbf8\uc9c0 \ud3b8\uc9d1",
"Image options": "\uc774\ubbf8\uc9c0 \uc635\uc158",
"Zoom in": "\ud655\ub300",
"Zoom out": "\ucd95\uc18c",
"Crop": "\uc790\ub974\uae30",
"Resize": "\ud06c\uae30 \uc870\uc808",
"Orientation": "\ubc29\ud5a5",
"Brightness": "\ubc1d\uae30",
"Sharpen": "\uc120\uba85\ud558\uac8c",
"Contrast": "\ub300\ube44",
"Color levels": "\uc0c9\uc0c1\ub808\ubca8",
"Gamma": "\uac10\ub9c8",
"Invert": "\ubc18\uc804",
"Apply": "\uc801\uc6a9",
"Back": "\ub4a4\ub85c",
"Insert date\/time": "\ub0a0\uc9dc\/\uc2dc\uac04\uc0bd\uc785",
"Date\/time": "\ub0a0\uc9dc\/\uc2dc\uac04",
"Insert link": "\ub9c1\ud06c \uc0bd\uc785 ",
"Insert\/edit link": "\ub9c1\ud06c \uc0bd\uc785\/\uc218\uc815",
"Text to display": "\ubcf8\ubb38",
"Url": "\uc8fc\uc18c",
"Target": "\ub300\uc0c1",
"None": "\uc5c6\uc74c",
"New window": "\uc0c8\ucc3d",
"Remove link": "\ub9c1\ud06c\uc0ad\uc81c",
"Anchors": "\ucc45\uac08\ud53c",
"Link": "\ub9c1\ud06c",
"Paste or type a link": "\ub9c1\ud06c\ub97c \ubd99\uc5ec\ub123\uac70\ub098 \uc785\ub825\ud558\uc138\uc694",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\ud604\uc7ac E-mail\uc8fc\uc18c\ub97c \uc785\ub825\ud558\uc168\uc2b5\ub2c8\ub2e4. E-mail \uc8fc\uc18c\uc5d0 \ub9c1\ud06c\ub97c \uac78\uae4c\uc694?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\ud604\uc7ac \uc6f9\uc0ac\uc774\ud2b8 \uc8fc\uc18c\ub97c \uc785\ub825\ud558\uc168\uc2b5\ub2c8\ub2e4. \ud574\ub2f9 \uc8fc\uc18c\uc5d0 \ub9c1\ud06c\ub97c \uac78\uae4c\uc694?",
"Link list": "\ub9c1\ud06c \ub9ac\uc2a4\ud2b8",
"Insert video": "\ube44\ub514\uc624 \uc0bd\uc785",
"Insert\/edit video": "\ube44\ub514\uc624 \uc0bd\uc785\/\uc218\uc815",
"Insert\/edit media": "\ubbf8\ub514\uc5b4 \uc0bd\uc785\/\uc218\uc815",
"Alternative source": "\ub300\uccb4 \uc18c\uc2a4",
"Poster": "\ud3ec\uc2a4\ud130",
"Paste your embed code below:": "\uc544\ub798\uc5d0 \ucf54\ub4dc\ub97c \ubd99\uc5ec\ub123\uc73c\uc138\uc694:",
"Embed": "\uc0bd\uc785",
"Media": "\ubbf8\ub514\uc5b4",
"Nonbreaking space": "\ub744\uc5b4\uc4f0\uae30",
"Page break": "\ud398\uc774\uc9c0 \uad6c\ubd84\uc790",
"Paste as text": "\ud14d\uc2a4\ud2b8\ub85c \ubd99\uc5ec\ub123\uae30",
"Preview": "\ubbf8\ub9ac\ubcf4\uae30",
"Print": "\ucd9c\ub825",
"Save": "\uc800\uc7a5",
"Find": "\ucc3e\uae30",
"Replace with": "\uad50\uccb4",
"Replace": "\uad50\uccb4",
"Replace all": "\uc804\uccb4 \uad50\uccb4",
"Prev": "\uc774\uc804",
"Next": "\ub2e4\uc74c",
"Find and replace": "\ucc3e\uc544\uc11c \uad50\uccb4",
"Could not find the specified string.": "\ubb38\uc790\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
"Match case": "\ub300\uc18c\ubb38\uc790 \uc77c\uce58",
"Whole words": "\uc804\uccb4 \ub2e8\uc5b4",
"Spellcheck": "\ubb38\ubc95\uccb4\ud06c",
"Ignore": "\ubb34\uc2dc",
"Ignore all": "\uc804\uccb4\ubb34\uc2dc",
"Finish": "\uc644\ub8cc",
"Add to Dictionary": "\uc0ac\uc804\uc5d0 \ucd94\uac00",
"Insert table": "\ud14c\uc774\ube14 \uc0bd\uc785",
"Table properties": "\ud14c\uc774\ube14 \uc18d\uc131",
"Delete table": "\ud14c\uc774\ube14 \uc0ad\uc81c",
"Cell": "\uc140",
"Row": "\uc5f4",
"Column": "\ud589",
"Cell properties": "\uc140 \uc18d",
"Merge cells": "\uc140 \ud569\uce58\uae30",
"Split cell": "\uc140 \ub098\ub204\uae30",
"Insert row before": "\uc774\uc804\uc5d0 \ud589 \uc0bd\uc785",
"Insert row after": "\ub2e4\uc74c\uc5d0 \ud589 \uc0bd\uc785",
"Delete row": "\ud589 \uc9c0\uc6b0\uae30",
"Row properties": "\ud589 \uc18d\uc131",
"Cut row": "\ud589 \uc798\ub77c\ub0b4\uae30",
"Copy row": "\ud589 \ubcf5\uc0ac",
"Paste row before": "\uc774\uc804\uc5d0 \ud589 \ubd99\uc5ec\ub123\uae30",
"Paste row after": "\ub2e4\uc74c\uc5d0 \ud589 \ubd99\uc5ec\ub123\uae30",
"Insert column before": "\uc774\uc804\uc5d0 \ud589 \uc0bd\uc785",
"Insert column after": "\ub2e4\uc74c\uc5d0 \uc5f4 \uc0bd\uc785",
"Delete column": "\uc5f4 \uc9c0\uc6b0\uae30",
"Cols": "\uc5f4",
"Rows": "\ud589",
"Width": "\ub113\uc774",
"Height": "\ub192\uc774",
"Cell spacing": "\uc140 \uac04\uaca9",
"Cell padding": "\uc140 \uc548\ucabd \uc5ec\ubc31",
"Caption": "\ucea1\uc158",
"Left": "\uc67c\ucabd",
"Center": "\uac00\uc6b4\ub370",
"Right": "\uc624\ub978\ucabd",
"Cell type": "\uc140 \ud0c0\uc785",
"Scope": "\ubc94\uc704",
"Alignment": "\uc815\ub82c",
"H Align": "\uac00\ub85c \uc815\ub82c",
"V Align": "\uc138\ub85c \uc815\ub82c",
"Top": "\uc0c1\ub2e8",
"Middle": "\uc911\uac04",
"Bottom": "\ud558\ub2e8",
"Header cell": "\ud5e4\ub354 \uc140",
"Row group": "\ud589 \uadf8\ub8f9",
"Column group": "\uc5f4 \uadf8\ub8f9",
"Row type": "\ud589 \ud0c0\uc785",
"Header": "\ud5e4\ub354",
"Body": "\ubc14\ub514",
"Footer": "\ud478\ud130",
"Border color": "\ud14c\ub450\ub9ac \uc0c9",
"Insert template": "\ud15c\ud50c\ub9bf \uc0bd\uc785",
"Templates": "\ud15c\ud50c\ub9bf",
"Template": "\ud15c\ud50c\ub9bf",
"Text color": "\ubb38\uc790 \uc0c9\uae54",
"Background color": "\ubc30\uacbd\uc0c9",
"Custom...": "\uc9c1\uc811 \uc0c9\uae54 \uc9c0\uc815\ud558\uae30",
"Custom color": "\uc9c1\uc811 \uc9c0\uc815\ud55c \uc0c9\uae54",
"No color": "\uc0c9\uc0c1 \uc5c6\uc74c",
"Table of Contents": "\ubaa9\ucc28",
"Show blocks": "\ube14\ub7ed \ubcf4\uc5ec\uc8fc\uae30",
"Show invisible characters": "\uc548\ubcf4\uc774\ub294 \ubb38\uc790 \ubcf4\uc774\uae30",
"Words: {0}": "\ub2e8\uc5b4: {0}",
"{0} words": "{0} \ub2e8\uc5b4",
"File": "\ud30c\uc77c",
"Edit": "\uc218\uc815",
"Insert": "\uc0bd\uc785",
"View": "\ubcf4\uae30",
"Format": "\ud3ec\ub9f7",
"Table": "\ud14c\uc774\ube14",
"Tools": "\ub3c4\uad6c",
"Powered by {0}": "Powered by {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\uc11c\uc2dd \uc788\ub294 \ud14d\uc2a4\ud2b8 \ud3b8\uc9d1\uae30 \uc785\ub2c8\ub2e4. ALT-F9\ub97c \ub204\ub974\uba74 \uba54\ub274, ALT-F10\ub97c \ub204\ub974\uba74 \ud234\ubc14, ALT-0\uc744 \ub204\ub974\uba74 \ub3c4\uc6c0\ub9d0\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4."
});

View File

@@ -0,0 +1,412 @@
/*!
* TinyMCE Language Pack
*
* Copyright (c) 2022 Ephox Corporation DBA Tiny Technologies, Inc.
* Licensed under the Tiny commercial license. See https://www.tiny.cloud/legal/
*/
tinymce.addI18n('nb_NO', {
"Redo": "Gjør om",
"Undo": "Angre",
"Cut": "Klipp ut",
"Copy": "Kopier",
"Paste": "Lim inn",
"Select all": "Marker alt",
"New document": "Nytt dokument",
"Ok": "",
"Cancel": "Avbryt",
"Visual aids": "Visuelle hjelpemidler",
"Bold": "Fet",
"Italic": "Kursiv",
"Underline": "Understreking",
"Strikethrough": "Gjennomstreking",
"Superscript": "Hevet skrift",
"Subscript": "Senket skrift",
"Clear formatting": "Fjern formateringer",
"Remove": "",
"Align left": "Venstrejuster",
"Align center": "Midtstill",
"Align right": "Høyrejuster",
"No alignment": "",
"Justify": "Blokkjuster",
"Bullet list": "Punktliste",
"Numbered list": "Nummerliste",
"Decrease indent": "Reduser innrykk",
"Increase indent": "Øk innrykk",
"Close": "Lukk",
"Formats": "Stiler",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.": "Nettleseren din støtter ikke direkte tilgang til utklippsboken. Bruk istedet tastatursnarveiene Ctrl+X/C/V.",
"Headings": "Overskrifter",
"Heading 1": "Overskrift 1",
"Heading 2": "Overskrift 2",
"Heading 3": "Overskrift 3",
"Heading 4": "Overskrift 4",
"Heading 5": "Overskrift 5",
"Heading 6": "Overskrift 6",
"Preformatted": "Forhåndsformatert",
"Div": "",
"Pre": "",
"Code": "Kode",
"Paragraph": "Avsnitt",
"Blockquote": "",
"Inline": "Innkapslet",
"Blocks": "Blokker",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Lim inn er nå i ren tekst-modus. Kopiert innhold vil bli limt inn som ren tekst inntil du slår av dette valget.",
"Fonts": "Fonter",
"Font sizes": "",
"Class": "Klasse",
"Browse for an image": "Søk etter bilde",
"OR": "",
"Drop an image here": "Slipp et bilde her",
"Upload": "Last opp",
"Uploading image": "",
"Block": "Blokk",
"Align": "Juster",
"Default": "Standard",
"Circle": "Sirkel",
"Disc": "Disk",
"Square": "Firkant",
"Lower Alpha": "Små bokstaver",
"Lower Greek": "Greske minuskler",
"Lower Roman": "Små romertall",
"Upper Alpha": "Store bokstaver",
"Upper Roman": "Store romertall",
"Anchor...": "Lenke",
"Anchor": "",
"Name": "Navn",
"ID": "",
"ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "",
"You have unsaved changes are you sure you want to navigate away?": "Du har ikke arkivert endringene. Vil du fortsette uten å arkivere?",
"Restore last draft": "Gjenopprett siste utkast",
"Special character...": "Spesialtegn...",
"Special Character": "",
"Source code": "Kildekode",
"Insert/Edit code sample": "Sett inn / endre kodeeksempel",
"Language": "Språk",
"Code sample...": "Kodeeksempel",
"Left to right": "Venstre til høyre",
"Right to left": "Høyre til venstre",
"Title": "Tittel",
"Fullscreen": "Fullskjerm",
"Action": "Handling",
"Shortcut": "Snarvei",
"Help": "Hjelp",
"Address": "Adresse",
"Focus to menubar": "Fokus på menylinje",
"Focus to toolbar": "Fokus på verktøylinje",
"Focus to element path": "Fokus på elementsti",
"Focus to contextual toolbar": "Fokus på kontekstuell verktøylinje",
"Insert link (if link plugin activated)": "Sett inn lenke (dersom lenketillegg er aktivert)",
"Save (if save plugin activated)": "Lagre (dersom lagretillegg er aktivert)",
"Find (if searchreplace plugin activated)": "Finn (dersom tillegg for søk og erstatt er aktivert)",
"Plugins installed ({0}):": "Installerte tillegg ({0}):",
"Premium plugins:": "Premiumtillegg:",
"Learn more...": "Les mer ...",
"You are using {0}": "Du bruker {0}",
"Plugins": "Programtillegg",
"Handy Shortcuts": "Nyttige snarveier",
"Horizontal line": "Horisontal linje",
"Insert/edit image": "Sett inn / rediger bilde",
"Alternative description": "Alternativ beskrivelse",
"Accessibility": "Tilgjengelighet",
"Image is decorative": "Bilde er dekorasjon",
"Source": "Kilde",
"Dimensions": "Størrelser",
"Constrain proportions": "Begrens proporsjoner",
"General": "Generelt",
"Advanced": "Avansert",
"Style": "Stil",
"Vertical space": "Vertikal avstand",
"Horizontal space": "Horisontal avstand",
"Border": "Ramme",
"Insert image": "Sett inn bilde",
"Image...": "Bilde...",
"Image list": "Bildeliste",
"Resize": "Skaler",
"Insert date/time": "Sett inn dato/tid",
"Date/time": "Dato/tid",
"Insert/edit link": "Sett inn / rediger lenke",
"Text to display": "Tekst som skal vises",
"Url": "",
"Open link in...": "Åpne lenke i..",
"Current window": "Nåværende vindu",
"None": "Ingen",
"New window": "Nytt vindu",
"Open link": "Åpne lenke",
"Remove link": "Fjern lenke",
"Anchors": "Forankringspunkter",
"Link...": "Lenke...",
"Paste or type a link": "Lim inn eller skriv en lenke",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Oppgitt URL ser ut til å være en e-postadresse. Ønsker du å sette inn påkrevet mailto: prefiks foran e-postadressen?",
"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?": "URL du skrev inn ser ut som en ekstern adresse. Vil du legge til det obligatoriske prefikset http://?",
"The URL you entered seems to be an external link. Do you want to add the required https:// prefix?": "Nettadressen du fylte inn ser ut til å være en ekstern. Ønsker du å legge til påkrevd 'https://'-prefiks?",
"Link list": "Liste over lenker",
"Insert video": "Sett inn video",
"Insert/edit video": "Sett inn / rediger video",
"Insert/edit media": "Sett inn / endre media",
"Alternative source": "Alternativ kilde",
"Alternative source URL": "Alternativ kilde URL",
"Media poster (Image URL)": "Mediaposter (bilde-URL)",
"Paste your embed code below:": "Lim inn inkluderingskoden nedenfor:",
"Embed": "Inkluder",
"Media...": "Media..",
"Nonbreaking space": "Hardt mellomrom",
"Page break": "Sideskifte",
"Paste as text": "Lim inn som tekst",
"Preview": "Forhåndsvis",
"Print": "",
"Print...": "Skriv ut...",
"Save": "Lagre",
"Find": "Søk etter",
"Replace with": "Erstatt med",
"Replace": "Erstatt",
"Replace all": "Erstatt alle",
"Previous": "Forrige",
"Next": "Neste",
"Find and Replace": "Finn og erstatt",
"Find and replace...": "Finn og erstatt...",
"Could not find the specified string.": "Kunne ikke finne den spesifiserte teksten",
"Match case": "Skill mellom store / små bokstaver",
"Find whole words only": "Finn kun hele ord",
"Find in selection": "Finn i utvalg",
"Insert table": "Sett inn tabell",
"Table properties": "Tabellegenskaper",
"Delete table": "Slett tabell",
"Cell": "Celle",
"Row": "Rad",
"Column": "Kolonne",
"Cell properties": "Celleegenskaper",
"Merge cells": "Slå sammen celler",
"Split cell": "Splitt celle",
"Insert row before": "Sett inn rad før",
"Insert row after": "Sett inn rad etter",
"Delete row": "Slett rad",
"Row properties": "Radegenskaper",
"Cut row": "Klipp ut rad",
"Cut column": "",
"Copy row": "Kopier rad",
"Copy column": "",
"Paste row before": "Lim inn rad før",
"Paste column before": "",
"Paste row after": "Lim inn rad etter",
"Paste column after": "",
"Insert column before": "Sett inn kolonne før",
"Insert column after": "Sett inn kolonne etter",
"Delete column": "Slett kolonne",
"Cols": "Kolonner",
"Rows": "Rader",
"Width": "Bredde",
"Height": "Høyde",
"Cell spacing": "Celleavstand",
"Cell padding": "Cellemarg",
"Row clipboard actions": "",
"Column clipboard actions": "",
"Table styles": "",
"Cell styles": "",
"Column header": "",
"Row header": "",
"Table caption": "",
"Caption": "Bildetekst",
"Show caption": "Vis bildetekst",
"Left": "Venstre",
"Center": "Senter",
"Right": "Høyre",
"Cell type": "Celletype",
"Scope": "Omfang",
"Alignment": "Justering",
"Horizontal align": "",
"Vertical align": "",
"Top": "Topp",
"Middle": "Sentrert",
"Bottom": "Bunn",
"Header cell": "Overskriftscelle",
"Row group": "Radgruppe",
"Column group": "Kolonnegruppe",
"Row type": "Radtype",
"Header": "",
"Body": "Brødtekst",
"Footer": "Bunntekst",
"Border color": "Rammefarge",
"Solid": "",
"Dotted": "",
"Dashed": "",
"Double": "",
"Groove": "",
"Ridge": "",
"Inset": "",
"Outset": "",
"Hidden": "",
"Insert template...": "Sett inn mal..",
"Templates": "Maler",
"Template": "Mal",
"Insert Template": "",
"Text color": "Tekstfarge",
"Background color": "Bakgrunnsfarge",
"Custom...": "Tilpasset...",
"Custom color": "Tilpasset farge",
"No color": "Ingen farge",
"Remove color": "Fjern farge",
"Show blocks": "Vis blokker",
"Show invisible characters": "Vis skjulte tegn",
"Word count": "Ordtelling",
"Count": "Opptelling",
"Document": "Dokument",
"Selection": "Utvalg",
"Words": "Ord",
"Words: {0}": "Ord: {0}",
"{0} words": "{0} ord",
"File": "Fil",
"Edit": "Rediger",
"Insert": "Sett inn",
"View": "Vis",
"Format": "",
"Table": "Tabell",
"Tools": "Verktøy",
"Powered by {0}": "Drevet av {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Tekstredigering. Tast ALT-F9 for meny. Tast ALT-F10 for verktøylinje. Tast ALT-0 for hjelp.",
"Image title": "Bildetittel",
"Border width": "Bordbredde",
"Border style": "Bordstil",
"Error": "Feil",
"Warn": "Advarsel",
"Valid": "Gyldig",
"To open the popup, press Shift+Enter": "For å åpne popup, trykk Shift+Enter",
"Rich Text Area": "",
"Rich Text Area. Press ALT-0 for help.": "Rik-tekstområde. Trykk ALT-0 for hjelp.",
"System Font": "Systemfont",
"Failed to upload image: {0}": "Opplasting av bilde feilet: {0}",
"Failed to load plugin: {0} from url {1}": "Kunne ikke laste tillegg: {0} from url {1}",
"Failed to load plugin url: {0}": "Kunne ikke laste tillegg url: {0}",
"Failed to initialize plugin: {0}": "Kunne ikke initialisere tillegg: {0}",
"example": "eksempel",
"Search": "Søk",
"All": "Alle",
"Currency": "Valuta",
"Text": "Tekst",
"Quotations": "Sitater",
"Mathematical": "Matematisk",
"Extended Latin": "Utvidet latin",
"Symbols": "Symboler",
"Arrows": "Piler",
"User Defined": "Brukerdefinert",
"dollar sign": "dollartegn",
"currency sign": "valutasymbol",
"euro-currency sign": "Euro-valutasymbol",
"colon sign": "kolon-symbol",
"cruzeiro sign": "cruzeiro-symbol",
"french franc sign": "franske franc-symbol",
"lira sign": "lire-symbol",
"mill sign": "mill-symbol",
"naira sign": "naira-symbol",
"peseta sign": "peseta-symbol",
"rupee sign": "rupee-symbol",
"won sign": "won-symbol",
"new sheqel sign": "Ny sheqel-symbol",
"dong sign": "dong-symbol",
"kip sign": "kip-symbol",
"tugrik sign": "tugrik-symbol",
"drachma sign": "drachma-symbol",
"german penny symbol": "tysk penny-symbol",
"peso sign": "peso-symbol",
"guarani sign": "quarani-symbol",
"austral sign": "austral-symbol",
"hryvnia sign": "hryvina-symbol",
"cedi sign": "credi-symbol",
"livre tournois sign": "livre tournois-symbol",
"spesmilo sign": "spesmilo-symbol",
"tenge sign": "tenge-symbol",
"indian rupee sign": "indisk rupee-symbol",
"turkish lira sign": "tyrkisk lire-symbol",
"nordic mark sign": "nordisk mark-symbol",
"manat sign": "manat-symbol",
"ruble sign": "ruble-symbol",
"yen character": "yen-symbol",
"yuan character": "yuan-symbol",
"yuan character, in hong kong and taiwan": "yuan-symbol, i Hongkong og Taiwan",
"yen/yuan character variant one": "yen/yuan-symbol variant en",
"Emojis": "",
"Emojis...": "",
"Loading emojis...": "",
"Could not load emojis": "",
"People": "Mennesker",
"Animals and Nature": "Dyr og natur",
"Food and Drink": "Mat og drikke",
"Activity": "Aktivitet",
"Travel and Places": "Reise og steder",
"Objects": "Objekter",
"Flags": "Flagg",
"Characters": "Tegn",
"Characters (no spaces)": "Tegn (uten mellomrom)",
"{0} characters": "{0} tegn",
"Error: Form submit field collision.": "Feil: Skjemafelt innsendingskollisjon.",
"Error: No form element found.": "Feil: Intet skjemafelt funnet.",
"Color swatch": "Fargepalett",
"Color Picker": "Fargevelger",
"Invalid hex color code: {0}": "",
"Invalid input": "",
"R": "",
"Red component": "",
"G": "",
"Green component": "",
"B": "",
"Blue component": "",
"#": "",
"Hex color code": "",
"Range 0 to 255": "",
"Turquoise": "Turkis",
"Green": "Grønn",
"Blue": "Blå",
"Purple": "Lilla",
"Navy Blue": "Marineblå",
"Dark Turquoise": "Mørk turkis",
"Dark Green": "Mørkegrønn",
"Medium Blue": "Mellomblå",
"Medium Purple": "Medium lilla",
"Midnight Blue": "Midnattblå",
"Yellow": "Gul",
"Orange": "Oransje",
"Red": "Rød",
"Light Gray": "Lys grå",
"Gray": "Grå",
"Dark Yellow": "Mørk gul",
"Dark Orange": "Mørk oransje",
"Dark Red": "Mørkerød",
"Medium Gray": "Medium grå",
"Dark Gray": "Mørk grå",
"Light Green": "Lys grønn",
"Light Yellow": "Lys gul",
"Light Red": "Lys rød",
"Light Purple": "Lys lilla",
"Light Blue": "Lys blå",
"Dark Purple": "Mørk lilla",
"Dark Blue": "Mørk blå",
"Black": "Svart",
"White": "Hvit",
"Switch to or from fullscreen mode": "Bytt til eller fra fullskjermmodus",
"Open help dialog": "Åpne hjelp-dialog",
"history": "historikk",
"styles": "stiler",
"formatting": "formatering",
"alignment": "justering",
"indentation": "innrykk",
"Font": "Skrift",
"Size": "Størrelse",
"More...": "Mer...",
"Select...": "Velg...",
"Preferences": "Innstillinger",
"Yes": "Ja",
"No": "Nei",
"Keyboard Navigation": "Navigering med tastaturet",
"Version": "Versjon",
"Code view": "Kodevisning",
"Open popup menu for split buttons": "Åpne sprettoppmeny for splitt-knapper",
"List Properties": "Listeegenskaper",
"List properties...": "Listeegenskaper ...",
"Start list at number": "Start liste på nummer",
"Line height": "Linjehøyde",
"Dropped file type is not supported": "",
"Loading...": "",
"ImageProxy HTTP error: Rejected request": "",
"ImageProxy HTTP error: Could not find Image Proxy": "",
"ImageProxy HTTP error: Incorrect Image Proxy URL": "",
"ImageProxy HTTP error: Unknown ImageProxy error": ""
});

View File

@@ -1,4 +1,4 @@
tinymce.addI18n('zh_CN',{
tinymce.addI18n('zh_Hans_CN',{
"Redo": "\u91cd\u505a",
"Undo": "\u64a4\u9500",
"Cut": "\u526a\u5207",

View File

@@ -1,4 +1,4 @@
tinymce.addI18n('zh_TW',{
tinymce.addI18n('zh_Hant_TW',{
"Redo": "\u91cd\u505a",
"Undo": "\u64a4\u92b7",
"Cut": "\u526a\u4e0b",
@@ -416,4 +416,4 @@ tinymce.addI18n('zh_TW',{
"Spellcheck": "\u62fc\u5b57\u6aa2\u67e5",
"Caption": "\u8868\u683c\u6a19\u984c",
"Insert template": "\u63d2\u5165\u6a23\u7248"
});
});

File diff suppressed because it is too large Load Diff

View File

@@ -20,6 +20,20 @@ function getPath() {
return jsFileLocation.substr(0, jsFileLocation.search("/static/js/libs/jquery.min.js")); // the js folder path
}
function postButton(event, action){
event.preventDefault();
var newForm = jQuery('<form>', {
"action": action,
'target': "_top",
'method': "post"
}).append(jQuery('<input>', {
'name': 'csrf_token',
'value': $("input[name=\'csrf_token\']").val(),
'type': 'hidden'
})).appendTo('body');
newForm.submit();
}
function elementSorter(a, b) {
a = +a.slice(0, -2);
b = +b.slice(0, -2);
@@ -71,6 +85,22 @@ $(document).on("change", "select[data-controlall]", function() {
}
});
/*$(document).on("click", "#sendbtn", function (event) {
postButton(event, $(this).data('action'));
});
$(document).on("click", ".sendbutton", function (event) {
// $(".sendbutton").on("click", "body", function(event) {
postButton(event, $(this).data('action'));
});*/
$(document).on("click", ".postAction", function (event) {
// $(".sendbutton").on("click", "body", function(event) {
postButton(event, $(this).data('action'));
});
// Syntax has to be bind not on, otherwise problems with firefox
$(".container-fluid").bind("dragenter dragover", function () {
if($("#btn-upload").length && !$('body').hasClass('shelforder')) {
@@ -168,18 +198,18 @@ function confirmDialog(id, dialogid, dataValue, yesFn, noFn) {
$confirm.modal('show');
}
$("#delete_confirm").click(function() {
$("#delete_confirm").click(function(event) {
//get data-id attribute of the clicked element
var deleteId = $(this).data("delete-id");
var bookFormat = $(this).data("delete-format");
var ajaxResponse = $(this).data("ajax");
if (bookFormat) {
window.location.href = getPath() + "/delete/" + deleteId + "/" + bookFormat;
postButton(event, getPath() + "/delete/" + deleteId + "/" + bookFormat);
} else {
if (ajaxResponse) {
path = getPath() + "/ajax/delete/" + deleteId;
$.ajax({
method:"get",
method:"post",
url: path,
timeout: 900,
success:function(data) {
@@ -198,8 +228,7 @@ $("#delete_confirm").click(function() {
}
});
} else {
window.location.href = getPath() + "/delete/" + deleteId;
postButton(event, getPath() + "/delete/" + deleteId);
}
}
@@ -284,11 +313,7 @@ $(function() {
}
function fillFileTable(path, type, folder, filt) {
if (window.location.pathname.endsWith("/basicconfig")) {
var request_path = "/../basicconfig/pathchooser/";
} else {
var request_path = "/../../ajax/pathchooser/";
}
var request_path = "/../../ajax/pathchooser/";
$.ajax({
dataType: "json",
data: {
@@ -339,12 +364,6 @@ $(function() {
layoutMode : "fitRows"
});
$(".grid").isotope({
// options
itemSelector : ".grid-item",
layoutMode : "fitColumns"
});
if ($(".load-more").length && $(".next").length) {
var $loadMore = $(".load-more .row").infiniteScroll({
debug: false,
@@ -356,8 +375,8 @@ $(function() {
//extraScrollPx: 300
});
$loadMore.on( "append.infiniteScroll", function( event, response, path, data ) {
$(".pagination").addClass("hidden").html(() => $(response).find(".pagination").html());
if ($("body").hasClass("blur")) {
$(".pagination").addClass("hidden").html(() => $(response).find(".pagination").html());
$(" a:not(.dropdown-toggle) ")
.removeAttr("data-toggle");
}
@@ -380,9 +399,11 @@ $(function() {
$("#restart").click(function() {
$.ajax({
method:"post",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: window.location.pathname + "/../../shutdown",
data: {"parameter":0},
url: getPath() + "/shutdown",
data: JSON.stringify({"parameter":0}),
success: function success() {
$("#spinner").show();
setTimeout(restartTimer, 3000);
@@ -391,9 +412,11 @@ $(function() {
});
$("#shutdown").click(function() {
$.ajax({
method:"post",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: window.location.pathname + "/../../shutdown",
data: {"parameter":1},
url: getPath() + "/shutdown",
data: JSON.stringify({"parameter":1}),
success: function success(data) {
return alert(data.text);
}
@@ -445,15 +468,45 @@ $(function() {
}
});
});
$("#admin_refresh_cover_cache").click(function() {
confirmDialog("admin_refresh_cover_cache", "GeneralChangeModal", 0, function () {
$.ajax({
method:"post",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: getPath() + "/ajax/updateThumbnails",
});
});
});
$("#restart_database").click(function() {
$("#DialogHeader").addClass("hidden");
$("#DialogFinished").addClass("hidden");
$("#DialogContent").html("");
$("#spinner2").show();
$.ajax({
method:"post",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: getPath() + "/shutdown",
data: {"parameter":2},
data: JSON.stringify({"parameter":2}),
success: function success(data) {
$("#spinner2").hide();
$("#DialogContent").html(data.text);
$("#DialogFinished").removeClass("hidden");
}
});
});
$("#metadata_backup").click(function() {
$("#DialogHeader").addClass("hidden");
$("#DialogFinished").addClass("hidden");
$("#DialogContent").html("");
$("#spinner2").show();
$.ajax({
method: "post",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: getPath() + "/metadata_backup",
success: function success(data) {
$("#spinner2").hide();
$("#DialogContent").html(data.text);
@@ -484,6 +537,7 @@ $(function() {
$("#bookDetailsModal")
.on("show.bs.modal", function(e) {
$("#flash_danger").remove();
var $modalBody = $(this).find(".modal-body");
// Prevent static assets from loading multiple times
@@ -504,6 +558,7 @@ $(function() {
$("#modal_kobo_token")
.on("show.bs.modal", function(e) {
$(e.relatedTarget).one('focus', function(e){$(this).blur();});
var $modalBody = $(this).find(".modal-body");
// Prevent static assets from loading multiple times
@@ -521,6 +576,7 @@ $(function() {
.on("hidden.bs.modal", function() {
$(this).find(".modal-body").html("...");
$("#config_delete_kobo_token").show();
$("#kobo_full_sync").show();
});
$("#config_delete_kobo_token").click(function() {
@@ -530,10 +586,11 @@ $(function() {
$(this).data('value'),
function (value) {
$.ajax({
method: "get",
method: "post",
url: getPath() + "/kobo_auth/deleteauthtoken/" + value,
});
$("#config_delete_kobo_token").hide();
$("#kobo_full_sync").hide();
}
);
});
@@ -567,6 +624,33 @@ $(function() {
}
);
});
$("#kobo_full_sync").click(function() {
confirmDialog(
"btnfullsync",
"GeneralDeleteModal",
$(this).data('value'),
function(value){
path = getPath() + "/ajax/fullsync"
$.ajax({
method:"post",
url: path,
timeout: 900,
success:function(data) {
data.forEach(function(item) {
if (!jQuery.isEmptyObject(item)) {
$( ".navbar" ).after( '<div class="row-fluid text-center" >' +
'<div id="flash_'+item.type+'" class="alert alert-'+item.type+'">'+item.message+'</div>' +
'</div>');
}
});
}
});
}
);
});
$("#user_submit").click(function() {
this.closest("form").submit();
});
@@ -604,8 +688,8 @@ $(function() {
if ( data.change ) {
if ( data.valid ) {
confirmDialog(
"db_submit",
"GeneralChangeModal",
"db_submit",
"GeneralChangeModal",
0,
changeDbSettings
);
@@ -613,7 +697,7 @@ $(function() {
else {
$("#InvalidDialog").modal('show');
}
} else {
} else {
changeDbSettings();
}
}
@@ -654,13 +738,14 @@ $(function() {
});
});
$("#delete_shelf").click(function() {
$("#delete_shelf").click(function(event) {
confirmDialog(
$(this).attr('id'),
"GeneralDeleteModal",
$(this).data('value'),
function(value){
window.location.href = window.location.pathname + "/../../shelf/delete/" + value
postButton(event, $("#delete_shelf").data("action"));
// $("#delete_shelf").closest("form").submit()
}
);
@@ -709,7 +794,8 @@ $(function() {
$("#DialogContent").html("");
$("#spinner2").show();
$.ajax({
method:"get",
method:"post",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: getPath() + "/import_ldap_users",
success: function success(data) {
@@ -743,4 +829,3 @@ $(function() {
});
});
});

View File

@@ -13,6 +13,11 @@ var reader;
bookmarks: calibre.bookmark ? [calibre.bookmark] : []
});
reader.rendition.themes.register("lightTheme", "/static/css/epub_themes.css");
reader.rendition.themes.register("darkTheme", "/static/css/epub_themes.css");
reader.rendition.themes.register("sepiaTheme", "/static/css/epub_themes.css");
reader.rendition.themes.register("blackTheme", "/static/css/epub_themes.css");
if (calibre.useBookmarks) {
reader.on("reader:bookmarked", updateBookmark.bind(reader, "add"));
reader.on("reader:unbookmarked", updateBookmark.bind(reader, "remove"));
@@ -61,11 +66,14 @@ var reader;
this.removeBookmark(bookmark);
}.bind(this));
}
var csrftoken = $("input[name='csrf_token']").val();
// Save to database
$.ajax(calibre.bookmarkUrl, {
method: "post",
data: { bookmark: location || "" }
data: { bookmark: location || "" },
headers: { "X-CSRFToken": csrftoken }
}).fail(function (xhr, status, error) {
alert(error);
});

View File

@@ -15,7 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* exported TableActions, RestrictionActions, EbookActions, responseHandler */
/* exported TableActions, RestrictionActions, EbookActions, TaskActions, responseHandler */
/* global getPath, confirmDialog */
var selections = [];
@@ -42,20 +42,38 @@ $(function() {
}, 1000);
}
$("#cancel_task_confirm").click(function() {
//get data-id attribute of the clicked element
var taskId = $(this).data("task-id");
$.ajax({
method: "post",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: window.location.pathname + "/../ajax/canceltask",
data: JSON.stringify({"task_id": taskId}),
});
});
//triggered when modal is about to be shown
$("#cancelTaskModal").on("show.bs.modal", function(e) {
//get data-id attribute of the clicked element and store in button
var taskId = $(e.relatedTarget).data("task-id");
$(e.currentTarget).find("#cancel_task_confirm").data("task-id", taskId);
});
$("#books-table").on("check.bs.table check-all.bs.table uncheck.bs.table uncheck-all.bs.table",
function (e, rowsAfter, rowsBefore) {
var rows = rowsAfter;
if (e.type === "uncheck-all") {
rows = rowsBefore;
selections = [];
} else {
var ids = $.map(!$.isArray(rows) ? [rows] : rows, function (row) {
return row.id;
});
var func = $.inArray(e.type, ["check", "check-all"]) > -1 ? "union" : "difference";
selections = window._[func](selections, ids);
}
var ids = $.map(!$.isArray(rows) ? [rows] : rows, function (row) {
return row.id;
});
var func = $.inArray(e.type, ["check", "check-all"]) > -1 ? "union" : "difference";
selections = window._[func](selections, ids);
if (selections.length >= 2) {
$("#merge_books").removeClass("disabled");
$("#merge_books").attr("aria-disabled", false);
@@ -107,8 +125,9 @@ $(function() {
url: window.location.pathname + "/../ajax/simulatemerge",
data: JSON.stringify({"Merge_books":selections}),
success: function success(booTitles) {
$('#merge_from').empty();
$.each(booTitles.from, function(i, item) {
$("<span>- " + item + "</span>").appendTo("#merge_from");
$("<span>- " + item + "</span><p></p>").appendTo("#merge_from");
});
$("#merge_to").text("- " + booTitles.to);
@@ -529,25 +548,19 @@ $(function() {
},
});
$("#user-table").on("click-cell.bs.table", function (field, value, row, $element) {
if (value === "denied_column_value") {
ConfirmDialog("btndeluser", "GeneralDeleteModal", $element.id, user_handle);
}
});
$("#user-table").on("check.bs.table check-all.bs.table uncheck.bs.table uncheck-all.bs.table",
function (e, rowsAfter, rowsBefore) {
var rows = rowsAfter;
if (e.type === "uncheck-all") {
rows = rowsBefore;
selections = [];
} else {
var ids = $.map(!$.isArray(rows) ? [rows] : rows, function (row) {
return row.id;
});
var func = $.inArray(e.type, ["check", "check-all"]) > -1 ? "union" : "difference";
selections = window._[func](selections, ids);
}
var ids = $.map(!$.isArray(rows) ? [rows] : rows, function (row) {
return row.id;
});
var func = $.inArray(e.type, ["check", "check-all"]) > -1 ? "union" : "difference";
selections = window._[func](selections, ids);
handle_header_buttons();
});
});
@@ -581,6 +594,7 @@ function handle_header_buttons () {
$(".header_select").removeAttr("disabled");
}
}
/* Function for deleting domain restrictions */
function TableActions (value, row) {
return [
@@ -618,6 +632,19 @@ function UserActions (value, row) {
].join("");
}
/* Function for cancelling tasks */
function TaskActions (value, row) {
var cancellableStats = [0, 1, 2];
if (row.task_id && row.is_cancellable && cancellableStats.includes(row.stat)) {
return [
"<div class=\"danger task-cancel\" data-toggle=\"modal\" data-target=\"#cancelTaskModal\" data-task-id=\"" + row.task_id + "\" title=\"Cancel\">",
"<i class=\"glyphicon glyphicon-ban-circle\"></i>",
"</div>"
].join("");
}
return '';
}
/* Function for keeping checked rows */
function responseHandler(res) {
$.each(res.rows, function (i, row) {
@@ -631,14 +658,21 @@ function singleUserFormatter(value, row) {
}
function checkboxFormatter(value, row){
if(value & this.column)
if (value & this.column)
return '<input type="checkbox" class="chk" data-pk="' + row.id + '" data-name="' + this.field + '" checked onchange="checkboxChange(this, ' + row.id + ', \'' + this.name + '\', ' + this.column + ')">';
else
return '<input type="checkbox" class="chk" data-pk="' + row.id + '" data-name="' + this.field + '" onchange="checkboxChange(this, ' + row.id + ', \'' + this.name + '\', ' + this.column + ')">';
}
function bookCheckboxFormatter(value, row){
if (value)
return '<input type="checkbox" class="chk" data-pk="' + row.id + '" data-name="' + this.field + '" checked onchange="BookCheckboxChange(this, ' + row.id + ', \'' + this.name + '\')">';
else
return '<input type="checkbox" class="chk" data-pk="' + row.id + '" data-name="' + this.field + '" onchange="BookCheckboxChange(this, ' + row.id + ', \'' + this.name + '\')">';
}
function singlecheckboxFormatter(value, row){
if(value)
if (value)
return '<input type="checkbox" class="chk" data-pk="' + row.id + '" data-name="' + this.field + '" checked onchange="checkboxChange(this, ' + row.id + ', \'' + this.name + '\', 0)">';
else
return '<input type="checkbox" class="chk" data-pk="' + row.id + '" data-name="' + this.field + '" onchange="checkboxChange(this, ' + row.id + ', \'' + this.name + '\', 0)">';
@@ -793,7 +827,7 @@ function handleListServerResponse (data) {
function checkboxChange(checkbox, userId, field, field_index) {
$.ajax({
method: "post",
url: window.location.pathname + "/../../ajax/editlistusers/" + field,
url: getPath() + "/ajax/editlistusers/" + field,
data: {"pk": userId, "field_index": field_index, "value": checkbox.checked},
error: function(data) {
handleListServerResponse([{type:"danger", message:data.responseText}])
@@ -802,6 +836,22 @@ function checkboxChange(checkbox, userId, field, field_index) {
});
}
function BookCheckboxChange(checkbox, userId, field) {
var value = checkbox.checked ? "True" : "False";
var element = checkbox;
$.ajax({
method: "post",
url: getPath() + "/ajax/editbooks/" + field,
data: {"pk": userId, "value": value},
error: function(data) {
element.checked = !element.checked;
handleListServerResponse([{type:"danger", message:data.responseText}])
},
success: handleListServerResponse
});
}
function selectHeader(element, field) {
if (element.value !== "None") {
confirmDialog(element.id, "GeneralChangeModal", 0, function () {