This commit is contained in:
Fabricio20 2024-11-22 05:22:17 +00:00 committed by GitHub
commit f497616fb7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 82 additions and 26 deletions

View file

@ -15,10 +15,13 @@ $cancel-button-color = tomato
&.inactive .skip-duplicates &.inactive .skip-duplicates
&.inactive .always-upload-similar &.inactive .always-upload-similar
&.inactive .pause-remain-on-error &.inactive .pause-remain-on-error
&.inactive .upload-all-anonymous
&.inactive #common-tags,
&.uploading input[type=submit], &.uploading input[type=submit],
&.uploading .skip-duplicates, &.uploading .skip-duplicates,
&.uploading .always-upload-similar &.uploading .always-upload-similar
&.uploading .pause-remain-on-error &.uploading .pause-remain-on-error
&.uploading .upload-all-anonymous
&:not(.uploading) .cancel &:not(.uploading) .cancel
display: none display: none
@ -30,6 +33,9 @@ $cancel-button-color = tomato
small small
font-size: 60% font-size: 60%
label[for=common-tags]
display: none !important
input[type=submit] input[type=submit]
margin-top: 1em margin-top: 1em
@ -49,9 +55,21 @@ $cancel-button-color = tomato
.pause-remain-on-error .pause-remain-on-error
margin-left: 1em margin-left: 1em
.upload-all-anonymous
margin-left: 1em
form>.messages form>.messages
margin-top: 1em margin-top: 1em
.control-strip
display: flex
flex-direction: column
gap: 0.5em
.control-options
display: flex
flex-direction: column
.uploadables-container .uploadables-container
list-style-type: none list-style-type: none
margin: 0 margin: 0

View file

@ -5,29 +5,41 @@
<div class='control-strip'> <div class='control-strip'>
<input type='submit' value='Upload all' class='submit'/> <input type='submit' value='Upload all' class='submit'/>
<span class='skip-duplicates'> <div class='control-options'>
<%= ctx.makeCheckbox({ <span class='skip-duplicates'>
text: 'Skip duplicate', <%= ctx.makeCheckbox({
name: 'skip-duplicates', text: 'Skip duplicate',
checked: false, name: 'skip-duplicates',
}) %> checked: false,
</span> }) %>
</span>
<span class='always-upload-similar'> <span class='always-upload-similar'>
<%= ctx.makeCheckbox({ <%= ctx.makeCheckbox({
text: 'Force upload similar', text: 'Force upload similar',
name: 'always-upload-similar', name: 'always-upload-similar',
checked: false, checked: false,
}) %> }) %>
</span> </span>
<span class='pause-remain-on-error'> <span class='pause-remain-on-error'>
<%= ctx.makeCheckbox({ <%= ctx.makeCheckbox({
text: 'Pause on error', text: 'Pause on error',
name: 'pause-remain-on-error', name: 'pause-remain-on-error',
checked: true, checked: true,
}) %> }) %>
</span> </span>
<span class='upload-all-anonymous'>
<%= ctx.makeCheckbox({
text: 'Upload anonymously',
name: 'upload-all-anonymous',
checked: false,
}) %>
</span>
</div>
<%= ctx.makeTextInput({placeholder: 'Common tags', id: 'common-tags', name: 'common-tags'}) %>
<input type='button' value='Cancel' class='cancel'/> <input type='button' value='Cancel' class='cancel'/>
</div> </div>

View file

@ -8,6 +8,10 @@ const FileDropperControl = require("../controls/file_dropper_control.js");
const template = views.getTemplate("post-upload"); const template = views.getTemplate("post-upload");
const rowTemplate = views.getTemplate("post-upload-row"); const rowTemplate = views.getTemplate("post-upload-row");
const misc = require('../util/misc.js');
const TagAutoCompleteControl =
require('../controls/tag_auto_complete_control.js');
function _mimeTypeToPostType(mimeType) { function _mimeTypeToPostType(mimeType) {
return ( return (
{ {
@ -185,6 +189,16 @@ class PostUploadView extends events.EventTarget {
this._evtFormSubmit(e) this._evtFormSubmit(e)
); );
this._formNode.classList.add("inactive"); this._formNode.classList.add("inactive");
if (this._commonTagsInputNode) {
this._autoCompleteControl = new TagAutoCompleteControl(
this._commonTagsInputNode,
{
confirm: tag =>
this._autoCompleteControl.replaceSelectedText(
misc.escapeSearchTerm(tag.names[0]), true),
});
}
} }
enableForm() { enableForm() {
@ -299,14 +313,18 @@ class PostUploadView extends events.EventTarget {
uploadable.safety = safetyNode.value; uploadable.safety = safetyNode.value;
} }
const anonymousNode = rowNode.querySelector( let anonymous = this._uploadAllAnonymous.checked;
".anonymous input:checked" if (!anonymous) {
); anonymous = rowNode.querySelector(".anonymous input:checked");
if (anonymousNode) {
uploadable.anonymous = true;
} }
uploadable.anonymous = anonymous;
uploadable.tags = []; uploadable.tags = [];
if (this._commonTagsInputNode) {
var tags = this._commonTagsInputNode.value.split(' ');
tags = tags.filter(t => t != "").map(t => t.replace('\\', ''));
uploadable.tags = uploadable.tags.concat(tags);
}
uploadable.relations = []; uploadable.relations = [];
for (let [i, lookalike] of uploadable.lookalikes.entries()) { for (let [i, lookalike] of uploadable.lookalikes.entries()) {
let lookalikeNode = rowNode.querySelector( let lookalikeNode = rowNode.querySelector(
@ -441,6 +459,10 @@ class PostUploadView extends events.EventTarget {
); );
} }
get _uploadAllAnonymous() {
return this._hostNode.querySelector("form [name=upload-all-anonymous]");
}
get _submitButtonNode() { get _submitButtonNode() {
return this._hostNode.querySelector("form [type=submit]"); return this._hostNode.querySelector("form [type=submit]");
} }
@ -452,6 +474,10 @@ class PostUploadView extends events.EventTarget {
get _contentInputNode() { get _contentInputNode() {
return this._formNode.querySelector(".dropper-container"); return this._formNode.querySelector(".dropper-container");
} }
get _commonTagsInputNode() {
return this._formNode.querySelector('form [name=common-tags]');
}
} }
module.exports = PostUploadView; module.exports = PostUploadView;