fix: fix input/output file upload feature for configure pages, per oruga

This commit is contained in:
Lance Edgar 2024-08-23 16:18:17 -05:00
parent c1a2c9cc70
commit b7991b5dc6

View file

@ -92,7 +92,7 @@
<b-select name="${tmpl['setting_file']}" <b-select name="${tmpl['setting_file']}"
v-model="inputFileTemplateSettings['${tmpl['setting_file']}']" v-model="inputFileTemplateSettings['${tmpl['setting_file']}']"
@input="settingsNeedSaved = true"> @input="settingsNeedSaved = true">
<option :value="null">-new-</option> <option value="">-new-</option>
<option v-for="option in inputFileTemplateFileOptions['${tmpl['key']}']" <option v-for="option in inputFileTemplateFileOptions['${tmpl['key']}']"
:key="option" :key="option"
:value="option"> :value="option">
@ -104,22 +104,40 @@
<b-field label="Upload" <b-field label="Upload"
v-show="inputFileTemplateSettings['${tmpl['setting_mode']}'] == 'hosted' && !inputFileTemplateSettings['${tmpl['setting_file']}']"> v-show="inputFileTemplateSettings['${tmpl['setting_mode']}'] == 'hosted' && !inputFileTemplateSettings['${tmpl['setting_file']}']">
<b-field class="file is-primary" % if request.use_oruga:
:class="{'has-name': !!inputFileTemplateSettings['${tmpl['setting_file']}']}"> <o-field class="file">
<b-upload name="${tmpl['setting_file']}.upload" <o-upload name="${tmpl['setting_file']}.upload"
v-model="inputFileTemplateUploads['${tmpl['key']}']" v-model="inputFileTemplateUploads['${tmpl['key']}']"
class="file-label" v-slot="{ onclick }"
@input="settingsNeedSaved = true"> @input="settingsNeedSaved = true">
<span class="file-cta"> <o-button variant="primary"
<b-icon class="file-icon" pack="fas" icon="upload"></b-icon> @click="onclick">
<span class="file-label">Click to upload</span> <o-icon icon="upload" />
</span> <span>Click to upload</span>
</b-upload> </o-button>
<span v-if="inputFileTemplateUploads['${tmpl['key']}']" <span class="file-name" v-if="inputFileTemplateUploads['${tmpl['key']}']">
class="file-name"> {{ inputFileTemplateUploads['${tmpl['key']}'].name }}
{{ inputFileTemplateUploads['${tmpl['key']}'].name }} </span>
</span> </o-upload>
</b-field> </o-field>
% else:
<b-field class="file is-primary"
:class="{'has-name': !!inputFileTemplateSettings['${tmpl['setting_file']}']}">
<b-upload name="${tmpl['setting_file']}.upload"
v-model="inputFileTemplateUploads['${tmpl['key']}']"
class="file-label"
@input="settingsNeedSaved = true">
<span class="file-cta">
<b-icon class="file-icon" pack="fas" icon="upload"></b-icon>
<span class="file-label">Click to upload</span>
</span>
</b-upload>
<span v-if="inputFileTemplateUploads['${tmpl['key']}']"
class="file-name">
{{ inputFileTemplateUploads['${tmpl['key']}'].name }}
</span>
</b-field>
% endif
</b-field> </b-field>
@ -162,7 +180,7 @@
<b-select name="${tmpl['setting_file']}" <b-select name="${tmpl['setting_file']}"
v-model="outputFileTemplateSettings['${tmpl['setting_file']}']" v-model="outputFileTemplateSettings['${tmpl['setting_file']}']"
@input="settingsNeedSaved = true"> @input="settingsNeedSaved = true">
<option :value="null">-new-</option> <option value="">-new-</option>
<option v-for="option in outputFileTemplateFileOptions['${tmpl['key']}']" <option v-for="option in outputFileTemplateFileOptions['${tmpl['key']}']"
:key="option" :key="option"
:value="option"> :value="option">
@ -174,23 +192,40 @@
<b-field label="Upload" <b-field label="Upload"
v-show="outputFileTemplateSettings['${tmpl['setting_mode']}'] == 'hosted' && !outputFileTemplateSettings['${tmpl['setting_file']}']"> v-show="outputFileTemplateSettings['${tmpl['setting_mode']}'] == 'hosted' && !outputFileTemplateSettings['${tmpl['setting_file']}']">
<b-field class="file is-primary" % if request.use_oruga:
:class="{'has-name': !!outputFileTemplateSettings['${tmpl['setting_file']}']}"> <o-field class="file">
<b-upload name="${tmpl['setting_file']}.upload" <o-upload name="${tmpl['setting_file']}.upload"
v-model="outputFileTemplateUploads['${tmpl['key']}']" v-model="outputFileTemplateUploads['${tmpl['key']}']"
class="file-label" v-slot="{ onclick }"
@input="settingsNeedSaved = true"> @input="settingsNeedSaved = true">
<span class="file-cta"> <o-button variant="primary"
<b-icon class="file-icon" pack="fas" icon="upload"></b-icon> @click="onclick">
<span class="file-label">Click to upload</span> <o-icon icon="upload" />
</span> <span>Click to upload</span>
</b-upload> </o-button>
<span v-if="outputFileTemplateUploads['${tmpl['key']}']" <span class="file-name" v-if="outputFileTemplateUploads['${tmpl['key']}']">
class="file-name"> {{ outputFileTemplateUploads['${tmpl['key']}'].name }}
{{ outputFileTemplateUploads['${tmpl['key']}'].name }} </span>
</span> </o-upload>
</b-field> </o-field>
% else:
<b-field class="file is-primary"
:class="{'has-name': !!outputFileTemplateSettings['${tmpl['setting_file']}']}">
<b-upload name="${tmpl['setting_file']}.upload"
v-model="outputFileTemplateUploads['${tmpl['key']}']"
class="file-label"
@input="settingsNeedSaved = true">
<span class="file-cta">
<b-icon class="file-icon" pack="fas" icon="upload"></b-icon>
<span class="file-label">Click to upload</span>
</span>
</b-upload>
<span v-if="outputFileTemplateUploads['${tmpl['key']}']"
class="file-name">
{{ outputFileTemplateUploads['${tmpl['key']}'].name }}
</span>
</b-field>
% endif
</b-field> </b-field>
</b-field> </b-field>
@ -275,16 +310,6 @@
ThisPageData.simpleSettings = ${json.dumps(simple_settings)|n} ThisPageData.simpleSettings = ${json.dumps(simple_settings)|n}
% endif % endif
% if input_file_template_settings is not Undefined:
ThisPageData.inputFileTemplateSettings = ${json.dumps(input_file_template_settings)|n}
ThisPageData.inputFileTemplateFileOptions = ${json.dumps(input_file_options)|n}
ThisPageData.inputFileTemplateUploads = {
% for key in input_file_templates:
'${key}': null,
% endfor
}
% endif
ThisPageData.purgeSettingsShowDialog = false ThisPageData.purgeSettingsShowDialog = false
ThisPageData.purgingSettings = false ThisPageData.purgingSettings = false
@ -297,30 +322,7 @@
this.purgeSettingsShowDialog = true this.purgeSettingsShowDialog = true
} }
% if input_file_template_settings is not Undefined: ThisPage.methods.validateSettings = function() {}
ThisPage.methods.validateInputFileTemplateSettings = function() {
% for tmpl in input_file_templates.values():
if (this.inputFileTemplateSettings['${tmpl['setting_mode']}'] == 'hosted') {
if (!this.inputFileTemplateSettings['${tmpl['setting_file']}']) {
if (!this.inputFileTemplateUploads['${tmpl['key']}']) {
return "You must provide a file to upload for the ${tmpl['label']} template."
}
}
}
% endfor
}
% endif
ThisPage.methods.validateSettings = function() {
let msg
% if input_file_template_settings is not Undefined:
msg = this.validateInputFileTemplateSettings()
if (msg) {
return msg
}
% endif
}
ThisPage.methods.saveSettings = function() { ThisPage.methods.saveSettings = function() {
let msg let msg
@ -366,6 +368,36 @@
window.addEventListener('beforeunload', this.beforeWindowUnload) window.addEventListener('beforeunload', this.beforeWindowUnload)
} }
##############################
## input file templates
##############################
% if input_file_template_settings is not Undefined:
ThisPageData.inputFileTemplateSettings = ${json.dumps(input_file_template_settings)|n}
ThisPageData.inputFileTemplateFileOptions = ${json.dumps(input_file_options)|n}
ThisPageData.inputFileTemplateUploads = {
% for key in input_file_templates:
'${key}': null,
% endfor
}
ThisPage.methods.validateInputFileTemplateSettings = function() {
% for tmpl in input_file_templates.values():
if (this.inputFileTemplateSettings['${tmpl['setting_mode']}'] == 'hosted') {
if (!this.inputFileTemplateSettings['${tmpl['setting_file']}']) {
if (!this.inputFileTemplateUploads['${tmpl['key']}']) {
return "You must provide a file to upload for the ${tmpl['label']} template."
}
}
}
% endfor
}
ThisPageData.validators.push(ThisPage.methods.validateInputFileTemplateSettings)
% endif
############################## ##############################
## output file templates ## output file templates
############################## ##############################