mirror of
https://activitypub.software/TransFem-org/Sharkey
synced 2024-12-22 16:30:13 +00:00
Resolve #6276
This commit is contained in:
parent
4364122804
commit
8d39283d46
4 changed files with 48 additions and 8 deletions
|
@ -778,6 +778,8 @@ _pages:
|
||||||
post: "投稿フォーム"
|
post: "投稿フォーム"
|
||||||
_post:
|
_post:
|
||||||
text: "内容"
|
text: "内容"
|
||||||
|
attachCanvasImage: "キャンバスの画像を添付する"
|
||||||
|
canvasId: "キャンバスID"
|
||||||
|
|
||||||
textInput: "テキスト入力"
|
textInput: "テキスト入力"
|
||||||
_textInput:
|
_textInput:
|
||||||
|
|
|
@ -10,6 +10,7 @@ import Vue from 'vue';
|
||||||
import i18n from '../../i18n';
|
import i18n from '../../i18n';
|
||||||
import MkTextarea from '../ui/textarea.vue';
|
import MkTextarea from '../ui/textarea.vue';
|
||||||
import MkButton from '../ui/button.vue';
|
import MkButton from '../ui/button.vue';
|
||||||
|
import { apiUrl } from '../../config';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n,
|
i18n,
|
||||||
|
@ -41,10 +42,39 @@ export default Vue.extend({
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
post() {
|
upload() {
|
||||||
|
return new Promise((ok) => {
|
||||||
|
const dialog = this.$root.dialog({
|
||||||
|
type: 'waiting',
|
||||||
|
text: this.$t('uploading') + '...',
|
||||||
|
showOkButton: false,
|
||||||
|
showCancelButton: false,
|
||||||
|
cancelableByBgClick: false
|
||||||
|
});
|
||||||
|
const canvas = this.script.aoiScript.canvases[this.value.canvasId];
|
||||||
|
canvas.toBlob(blob => {
|
||||||
|
const data = new FormData();
|
||||||
|
data.append('file', blob);
|
||||||
|
data.append('i', this.$store.state.i.token);
|
||||||
|
|
||||||
|
fetch(apiUrl + '/drive/files/create', {
|
||||||
|
method: 'POST',
|
||||||
|
body: data
|
||||||
|
})
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(f => {
|
||||||
|
dialog.close();
|
||||||
|
ok(f);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
async post() {
|
||||||
this.posting = true;
|
this.posting = true;
|
||||||
|
const file = this.value.attachCanvasImage ? await this.upload() : null;
|
||||||
this.$root.api('notes/create', {
|
this.$root.api('notes/create', {
|
||||||
text: this.text,
|
text: this.text,
|
||||||
|
fileIds: file ? [file.id] : undefined,
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.posted = true;
|
this.posted = true;
|
||||||
this.$root.dialog({
|
this.$root.dialog({
|
||||||
|
@ -59,9 +89,11 @@ export default Vue.extend({
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.ngbfujlo {
|
.ngbfujlo {
|
||||||
|
position: relative;
|
||||||
padding: 32px;
|
padding: 32px;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
box-shadow: 0 2px 8px var(--shadow);
|
box-shadow: 0 2px 8px var(--shadow);
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
> .button {
|
> .button {
|
||||||
margin-top: 32px;
|
margin-top: 32px;
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
<x-container @remove="() => $emit('remove')" :draggable="true">
|
<x-container @remove="() => $emit('remove')" :draggable="true">
|
||||||
<template #header><fa :icon="faPaperPlane"/> {{ $t('_pages.blocks.post') }}</template>
|
<template #header><fa :icon="faPaperPlane"/> {{ $t('_pages.blocks.post') }}</template>
|
||||||
|
|
||||||
<section style="padding: 0 16px 16px 16px;">
|
<section style="padding: 16px;">
|
||||||
<mk-textarea v-model="value.text">{{ $t('_pages.blocks._post.text') }}</mk-textarea>
|
<mk-textarea v-model="value.text">{{ $t('_pages.blocks._post.text') }}</mk-textarea>
|
||||||
|
<mk-switch v-model="value.attachCanvasImage"><span>{{ $t('_pages.blocks._post.attachCanvasImage') }}</span></mk-switch>
|
||||||
|
<mk-input v-if="value.attachCanvasImage" v-model="value.canvasId"><span>{{ $t('_pages.blocks._post.canvasId') }}</span></mk-input>
|
||||||
</section>
|
</section>
|
||||||
</x-container>
|
</x-container>
|
||||||
</template>
|
</template>
|
||||||
|
@ -14,12 +16,14 @@ import { faPaperPlane } from '@fortawesome/free-regular-svg-icons';
|
||||||
import i18n from '../../../i18n';
|
import i18n from '../../../i18n';
|
||||||
import XContainer from '../page-editor.container.vue';
|
import XContainer from '../page-editor.container.vue';
|
||||||
import MkTextarea from '../../../components/ui/textarea.vue';
|
import MkTextarea from '../../../components/ui/textarea.vue';
|
||||||
|
import MkInput from '../../../components/ui/input.vue';
|
||||||
|
import MkSwitch from '../../../components/ui/switch.vue';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n,
|
i18n,
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
XContainer, MkTextarea
|
XContainer, MkTextarea, MkInput, MkSwitch
|
||||||
},
|
},
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
|
@ -36,6 +40,8 @@ export default Vue.extend({
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
if (this.value.text == null) Vue.set(this.value, 'text', '');
|
if (this.value.text == null) Vue.set(this.value, 'text', '');
|
||||||
|
if (this.value.attachCanvasImage == null) Vue.set(this.value, 'attachCanvasImage', false);
|
||||||
|
if (this.value.canvasId == null) Vue.set(this.value, 'canvasId', '');
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -34,7 +34,7 @@ export class ASEvaluator {
|
||||||
private envVars: Record<keyof typeof envVarsDef, any>;
|
private envVars: Record<keyof typeof envVarsDef, any>;
|
||||||
public aiscript?: AiScript;
|
public aiscript?: AiScript;
|
||||||
private pageVarUpdatedCallback;
|
private pageVarUpdatedCallback;
|
||||||
private canvases: Record<string, HTMLCanvasElement> = {};
|
public canvases: Record<string, HTMLCanvasElement> = {};
|
||||||
|
|
||||||
private opts: {
|
private opts: {
|
||||||
randomSeed: string; visitor?: any; page?: any; url?: string;
|
randomSeed: string; visitor?: any; page?: any; url?: string;
|
||||||
|
@ -104,10 +104,10 @@ export class ASEvaluator {
|
||||||
},
|
},
|
||||||
layout: {
|
layout: {
|
||||||
padding: {
|
padding: {
|
||||||
left: 0,
|
left: 32,
|
||||||
right: 0,
|
right: 32,
|
||||||
top: 8,
|
top: opts.value.has('title') ? 16 : 32,
|
||||||
bottom: 0
|
bottom: 16
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
legend: {
|
legend: {
|
||||||
|
|
Loading…
Reference in a new issue