/**
* Categories
*
* Toggle category metadata.
* Displays dynamic selects on upload.php.
* These change with each category.
*/
function Categories() {
let def = [
'javdb', // Accession Number
'audio', // Version
'title', // Torrent Title
'title_rj', // Organism
'title_jp', // Strain/Variety
'artists', // Authors(s)
'studio', // Department/Lab
'series', // Location
'year', // Year
'codec', // License
// Platform *changes below*
'resolution', // Scope *changes below*
// Format *changes below*
'archive', // Archive
'tags', // Tags
'cover', // Picture
'mirrors', // Mirrors
'screenshots', // Publications
'group_desc', // Torrent Group Description
'release_desc', // Torrent Description
'censored', // Aligned/Annotated
'anon', // Upload Anonymously
]
let cats = [
{ // Sequences
'media': {}, // Platform
'container': {}, // Format
},
{ // Graphs
'media_graphs': {}, // Platform
'container_graphs': {}, // Format
},
{ // Systems
'media_graphs': {}, // Platform
'container_graphs': {}, // Format
},
{ // Geometric
'media_graphs': {}, // Platform
'container_graphs': {}, // Format
},
{ // Scalars/Vectors
'media_scalars_vectors': {}, // Platform
'container_scalars_vectors': {}, // Format
},
{ // Patterns
'media_graphs': {}, // Platform
'container_graphs': {}, // Format
},
{ // Constraints
'media_graphs': {}, // Platform
'container_graphs': {}, // Format
},
{ // Images
'media_images': {}, // Platform
'container_images': {}, // Format
},
{ // Spatial
'media_graphs': {}, // Platform
'container_spatial': {}, // Format
},
{ // Models
'media_graphs': {}, // Platform
'container_spatial': {}, // Format
},
{ // Documents
'media_documents': {}, // Platform
'container_documents': {}, // Format
},
{ // Machine Data
'media_machine_data': {}, // Platform
'container': {}, // Format
},
]
let active = {}
for (let field of def) active[field] = {}
let category = 0
if ($('input[name="type"]').raw()) category = $('input[name="type"]').raw().value
if ($('#categories').raw()) category = $('#categories').raw().value
active = Object.assign(active, cats[category])
let hide = el => {
Array.from($(`#${el.id} input, #${el.id} select, #${el.id} textarea`)).forEach(inp => inp.disabled = true)
$(el).ghide()
}
let show = el => {
Array.from($(`#${el.id} input, #${el.id} select, #${el.id} textarea`)).forEach(inp => inp.disabled = false)
$(el).gshow()
}
let trs = $('#dynamic_form tr')
for (let tr of trs) {
let field = tr.id.slice(0, -3)
if (active[field]) {
if (active[field].name) {
tr.children[0].innerHTML = active[field].name
}
let notes = $(`#${tr.id} p.notes`).raw()
if (notes) notes.innerHTML = active[field].notes || ''
show(tr)
} else {
hide(tr)
}
}
}
/**
* add_tag
*/
function add_tag() {
if ($('#tags').raw().value == "") {
$('#tags').raw().value = $('#genre_tags').raw().options[$('#genre_tags').raw().selectedIndex].value;
} else if ($('#genre_tags').raw().options[$('#genre_tags').raw().selectedIndex].value == '---') {
} else {
$('#tags').raw().value = $('#tags').raw().value + ', ' + $('#genre_tags').raw().options[$('#genre_tags').raw().selectedIndex].value;
}
}
/**
* AddLogField
*/
var LogCount = 1;
function AddLogField() {
if (LogCount >= 200) {
return;
}
var LogField = document.createElement("input");
LogField.type = "file";
LogField.id = "file";
LogField.name = "logfiles[]";
LogField.size = 50;
var x = $('#logfields').raw();
x.appendChild(document.createElement("br"));
x.appendChild(LogField);
LogCount++;
}
/**
* RemoveLogField
*/
function RemoveLogField() {
if (LogCount == 1) {
return;
}
var x = $('#logfields').raw();
for (i = 0; i < 2; i++) {
x.removeChild(x.lastChild);
}
LogCount--;
}
/**
* AddExtraLogField
*/
var ExtraLogCount = 1;
function AddExtraLogField(id) {
if (LogCount >= 200) {
return;
}
var LogField = document.createElement("input");
LogField.type = "file";
LogField.id = "file_" + id;
LogField.name = "logfiles_" + id + "[]";
LogField.size = 50;
var x = $('#logfields_' + id).raw();
x.appendChild(document.createElement("br"));
x.appendChild(LogField);
LogCount++;
}
/**
* RemoveLogField
*/
function RemoveLogField() {
if (LogCount == 1) {
return;
}
var x = $('#logfields').raw();
for (i = 0; i < 2; i++) {
x.removeChild(x.lastChild);
}
LogCount--;
}
/**
* AddFormat
*/
var FormatCount = 0;
function AddFormat() {
if (FormatCount >= 10) {
return;
}
FormatCount++;
$('#extras').raw().value = FormatCount;
var NewRow = document.createElement("tr");
NewRow.id = "new_torrent_row" + FormatCount;
NewRow.setAttribute("style", "border-top-width: 5px; border-left-width: 5px; border-right-width: 5px;");
var NewCell1 = document.createElement("td");
NewCell1.setAttribute("class", "label");
NewCell1.innerHTML = "Extra Torrent File";
var NewCell2 = document.createElement("td");
var TorrentField = document.createElement("input");
TorrentField.type = "file";
TorrentField.id = "extra_torrent_file" + FormatCount;
TorrentField.name = "extra_torrent_files[]";
TorrentField.size = 50;
NewCell2.appendChild(TorrentField);
NewRow.appendChild(NewCell1);
NewRow.appendChild(NewCell2);
NewRow = document.createElement("tr");
NewRow.id = "new_format_row" + FormatCount;
NewRow.setAttribute("style", "border-left-width: 5px; border-right-width: 5px;");
NewCell1 = document.createElement("td");
NewCell1.setAttribute("class", "label");
NewCell1.innerHTML = "Extra Format / Bitrate";
NewCell2 = document.createElement("td");
tmp = '";
var bitrates = ["1", "2", "3"];
tmp += '";
NewCell2.innerHTML = tmp;
NewRow.appendChild(NewCell1);
NewRow.appendChild(NewCell2);
NewRow = document.createElement("tr");
NewRow.id = "new_description_row" + FormatCount;
NewRow.setAttribute("style", "border-bottom-width: 5px; border-left-width: 5px; border-right-width: 5px;");
NewCell1 = document.createElement("td");
NewCell1.setAttribute("class", "label");
NewCell1.innerHTML = "Extra Release Description";
NewCell2 = document.createElement("td");
NewCell2.innerHTML = '';
NewRow.appendChild(NewCell1);
NewRow.appendChild(NewCell2);
}
/**
* RemoveFormat
*/
function RemoveFormat() {
if (FormatCount == 0) {
return;
}
$('#extras').raw().value = FormatCount;
var x = $('#new_torrent_row' + FormatCount).raw();
x.parentNode.removeChild(x);
x = $('#new_format_row' + FormatCount).raw();
x.parentNode.removeChild(x);
x = $('#new_description_row' + FormatCount).raw();
x.parentNode.removeChild(x);
FormatCount--;
}
/**
* AddArtistField
*/
var ArtistCount = 1;
function AddArtistField() {
window.getSelection().removeAllRanges()
ArtistCount = $('input[name="artists[]"]').length;
if (ArtistCount >= 200) {
return;
}
var ArtistField = document.createElement("input");
ArtistField.type = "text";
ArtistField.id = "artist_" + ArtistCount;
ArtistField.name = "artists[]";
ArtistField.size = 45;
var x = $('#artistfields').raw();
x.appendChild(document.createElement("br"));
x.appendChild(ArtistField);
x.appendChild(document.createTextNode('\n'));
if ($("#artist_0").data("gazelle-autocomplete")) {
$(ArtistField).on('focus', function () {
$(ArtistField).autocomplete({
serviceUrl: ARTIST_AUTOCOMPLETE_URL
});
});
}
ArtistCount++;
}
/**
* RemoveArtistField
*/
function RemoveArtistField() {
window.getSelection().removeAllRanges()
ArtistCount = $('input[name="artists[]"]').length;
if (ArtistCount == 1) {
return;
}
var x = $('#artistfields').raw();
for (i = 0; i < 3; i++) {
x.removeChild(x.lastChild);
}
ArtistCount--;
}
/**
* AddScreenshotField
*/
function AddScreenshotField() {
var sss = $('[name="screenshots[]"]')
if (sss.length >= 10) return
var ScreenshotField = document.createElement("input");
ScreenshotField.type = "text";
ScreenshotField.id = "ss_" + sss.length;
ScreenshotField.name = "screenshots[]";
ScreenshotField.size = 45;
var a = document.createElement("a")
a.className = "brackets"
a.innerHTML = "−"
a.onclick = function () { RemoveScreenshotField(this) }
var x = $('#screenshots').raw()
var y = document.createElement("div")
y.appendChild(ScreenshotField);
y.appendChild(document.createTextNode('\n'));
y.appendChild(a);
x.appendChild(y);
}
function RemoveScreenshotField(el) {
var sss = $('[name="screenshots[]"]')
el.parentElement.remove()
}
/**
* AnimeAutofill
*/
function AnimeAutofill() {
var map = {
artist: 'artist_0',
title: 'title',
title_rj: 'title_rj',
title_jp: 'title_jp',
year: 'year',
description: 'album_desc'
}
var aid = $('#anidb').raw().value
$.getJSON('/ajax.php?action=autofill&cat=anime&aid=' + aid, function (data) {
if (data.status != "success") return
for (i in data.response) {
if (map[i] && !($('#' + map[i]).raw().value)) {
$('#' + map[i]).raw().value = data.response[i]
}
}
})
}
/**
* JavAutofill
*/
function JavAutofill() {
var map = {
cn: 'javdb',
artists: 'artists',
title: 'title',
title_jp: 'title_jp',
year: 'year',
studio: 'studio',
image: 'image',
tags: 'tags',
description: 'album_desc'
}
var cn = $('#javdb_tr #catalogue').raw().value.toUpperCase()
$.getJSON('/ajax.php?action=autofill&cat=jav&cn=' + cn, function (data) {
if (data.status != "success") {
$('#catalogue').raw().value = 'Failed'
return
} else {
$('#catalogue').raw().value = data.response.cn
}
for (i in data.response) {
if (Array.isArray(data.response[i])) {
for (j in data.response[i]) {
if (i == 'artists') {
if (!($('#' + map[i] + '_' + j).raw())) {
AddArtistField()
}
$('#' + map[i] + '_' + j).raw().value = data.response[i][j]
}
if (map[i] == 'tags' && !($('#' + map[i]).raw().value)) {
$('#' + map[i]).raw().value = data.response[i].join(', ')
}
}
}
if (map[i] && $('#' + map[i]).raw() && !($('#' + map[i]).raw().value)) {
$('#' + map[i]).raw().value = data.response[i]
}
}
if (data.response.screens.length) {
$('#album_desc').raw().value = ('[spoiler=Automatically located thumbs][img]' + data.response.screens.join('[/img][img]') + '[/img][/spoiler]\n\n') + $('#album_desc').raw().value
}
})
}
/**
* MangaAutofill
*/
function MangaAutofill() {
var map = {
artists: 'artists',
title: 'title',
title_jp: 'title_jp',
year: 'year',
tags: 'tags',
lang: 'lang',
cover: 'image',
circle: 'series',
pages: 'pages',
description: 'release_desc'
}
var nh = $('#ehentai_tr #catalogue').raw().value
$.getJSON('/ajax.php?action=autofill&cat=manga&url=' + nh, function (data) {
if (data.status != "success") {
$('#catalogue').raw().value = 'Failed'
return
}
for (i in data.response) {
if (Array.isArray(data.response[i])) {
for (j in data.response[i]) {
if (i == 'artists') {
if (!($('#' + map[i] + '_' + j).raw())) {
AddArtistField()
}
$('#' + map[i] + '_' + j).raw().value = data.response[i][j]
}
if (map[i] == 'tags' && !($('#' + map[i]).raw().value)) {
$('#' + map[i]).raw().value = data.response[i].join(', ')
}
}
}
if (map[i] && $('#' + map[i]).raw() && (!($('#' + map[i]).raw().value) || $('#' + map[i]).raw().value == '---')) {
$('#' + map[i]).raw().value = data.response[i]
}
}
})
}
/**
* SetResolution
*/
function SetResolution() {
if ($('#ressel').raw().value != 'Other') {
$('#resolution').raw().value = $('#ressel').raw().value
$('#resolution').ghide()
} else {
$('#resolution').raw().value = ''
$('#resolution').gshow()
$('#resolution').raw().readOnly = false
}
}
/**
* initAutofill
*/
function initAutofill() {
$('[autofill]').each(function (i, el) {
el.addEventListener('click', function (event) {
({ 'douj': MangaAutofill, 'anime': AnimeAutofill, 'jav': JavAutofill })[el.attributes['autofill'].value]()
})
})
}
$(function () {
Categories();
initAutofill();
$(document).on('click', '.add_artist_button', AddArtistField);
$(document).on('click', '.remove_artist_button', RemoveArtistField);
})