Fix bug
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
<div class="mk-calendar" :data-melt="design == 4 || design == 5">
|
||||
<template v-if="design == 0 || design == 1">
|
||||
<button @click="prev" title="%i18n:@prev%">%fa:chevron-circle-left%</button>
|
||||
<p class="title">{{ '%i18n:@title%'.replace('{1}', year).replace('{2}', month) }}</p>
|
||||
<p class="title">{{ '%i18n:!@title%'.replace('{1}', year).replace('{2}', month) }}</p>
|
||||
<button @click="next" title="%i18n:@next%">%fa:chevron-circle-right%</button>
|
||||
</template>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
:data-is-out-of-range="isOutOfRange(i + 1)"
|
||||
:data-is-donichi="isDonichi(i + 1)"
|
||||
@click="go(i + 1)"
|
||||
:title="isOutOfRange(i + 1) ? null : '%i18n:@go%'"
|
||||
:title="isOutOfRange(i + 1) ? null : '%i18n:!@go%'"
|
||||
>
|
||||
<div>{{ i + 1 }}</div>
|
||||
</div>
|
||||
@@ -58,13 +58,13 @@ export default Vue.extend({
|
||||
month: new Date().getMonth() + 1,
|
||||
selected: new Date(),
|
||||
weekdayText: [
|
||||
'%i18n:common.weekday-short.sunday%',
|
||||
'%i18n:common.weekday-short.monday%',
|
||||
'%i18n:common.weekday-short.tuesday%',
|
||||
'%i18n:common.weekday-short.wednesday%',
|
||||
'%i18n:common.weekday-short.thursday%',
|
||||
'%i18n:common.weekday-short.friday%',
|
||||
'%i18n:common.weekday-short.satruday%'
|
||||
'%i18n:!common.weekday-short.sunday%',
|
||||
'%i18n:!common.weekday-short.monday%',
|
||||
'%i18n:!common.weekday-short.tuesday%',
|
||||
'%i18n:!common.weekday-short.wednesday%',
|
||||
'%i18n:!common.weekday-short.thursday%',
|
||||
'%i18n:!common.weekday-short.friday%',
|
||||
'%i18n:!common.weekday-short.satruday%'
|
||||
]
|
||||
};
|
||||
},
|
||||
|
@@ -64,46 +64,46 @@ export default Vue.extend({
|
||||
this.isContextmenuShowing = true;
|
||||
contextmenu(e, [{
|
||||
type: 'item',
|
||||
text: '%i18n:@contextmenu.rename%',
|
||||
text: '%i18n:!@contextmenu.rename%',
|
||||
icon: '%fa:i-cursor%',
|
||||
onClick: this.rename
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:@contextmenu.copy-url%',
|
||||
text: '%i18n:!@contextmenu.copy-url%',
|
||||
icon: '%fa:link%',
|
||||
onClick: this.copyUrl
|
||||
}, {
|
||||
type: 'link',
|
||||
href: `${this.file.url}?download`,
|
||||
text: '%i18n:@contextmenu.download%',
|
||||
text: '%i18n:!@contextmenu.download%',
|
||||
icon: '%fa:download%',
|
||||
}, {
|
||||
type: 'divider',
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:common.delete%',
|
||||
text: '%i18n:!common.delete%',
|
||||
icon: '%fa:R trash-alt%',
|
||||
onClick: this.deleteFile
|
||||
}, {
|
||||
type: 'divider',
|
||||
}, {
|
||||
type: 'nest',
|
||||
text: '%i18n:@contextmenu.else-files%',
|
||||
text: '%i18n:!@contextmenu.else-files%',
|
||||
menu: [{
|
||||
type: 'item',
|
||||
text: '%i18n:@contextmenu.set-as-avatar%',
|
||||
text: '%i18n:!@contextmenu.set-as-avatar%',
|
||||
onClick: this.setAsAvatar
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:@contextmenu.set-as-banner%',
|
||||
text: '%i18n:!@contextmenu.set-as-banner%',
|
||||
onClick: this.setAsBanner
|
||||
}]
|
||||
}, {
|
||||
type: 'nest',
|
||||
text: '%i18n:@contextmenu.open-in-app%',
|
||||
text: '%i18n:!@contextmenu.open-in-app%',
|
||||
menu: [{
|
||||
type: 'item',
|
||||
text: '%i18n:@contextmenu.add-app%...',
|
||||
text: '%i18n:!@contextmenu.add-app%...',
|
||||
onClick: this.addApp
|
||||
}]
|
||||
}], {
|
||||
@@ -141,8 +141,8 @@ export default Vue.extend({
|
||||
|
||||
rename() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:@contextmenu.rename-file%',
|
||||
placeholder: '%i18n:@contextmenu.input-new-file-name%',
|
||||
title: '%i18n:!@contextmenu.rename-file%',
|
||||
placeholder: '%i18n:!@contextmenu.input-new-file-name%',
|
||||
default: this.file.name,
|
||||
allowEmpty: false
|
||||
}).then(name => {
|
||||
@@ -157,9 +157,9 @@ export default Vue.extend({
|
||||
copyToClipboard(this.file.url);
|
||||
(this as any).apis.dialog({
|
||||
title: '%fa:check%%i18n:@contextmenu.copied%',
|
||||
text: '%i18n:@contextmenu.copied-url-to-clipboard%',
|
||||
text: '%i18n:!@contextmenu.copied-url-to-clipboard%',
|
||||
actions: [{
|
||||
text: '%i18n:common.ok%'
|
||||
text: '%i18n:!common.ok%'
|
||||
}]
|
||||
});
|
||||
},
|
||||
|
@@ -54,26 +54,26 @@ export default Vue.extend({
|
||||
this.isContextmenuShowing = true;
|
||||
contextmenu(e, [{
|
||||
type: 'item',
|
||||
text: '%i18n:@contextmenu.move-to-this-folder%',
|
||||
text: '%i18n:!@contextmenu.move-to-this-folder%',
|
||||
icon: '%fa:arrow-right%',
|
||||
onClick: this.go
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:@contextmenu.show-in-new-window%',
|
||||
text: '%i18n:!@contextmenu.show-in-new-window%',
|
||||
icon: '%fa:R window-restore%',
|
||||
onClick: this.newWindow
|
||||
}, {
|
||||
type: 'divider',
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:@contextmenu.rename%',
|
||||
text: '%i18n:!@contextmenu.rename%',
|
||||
icon: '%fa:i-cursor%',
|
||||
onClick: this.rename
|
||||
}, {
|
||||
type: 'divider',
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:common.delete%',
|
||||
text: '%i18n:!common.delete%',
|
||||
icon: '%fa:R trash-alt%',
|
||||
onClick: this.deleteFolder
|
||||
}], {
|
||||
@@ -159,15 +159,15 @@ export default Vue.extend({
|
||||
switch (err) {
|
||||
case 'detected-circular-definition':
|
||||
(this as any).apis.dialog({
|
||||
title: '%fa:exclamation-triangle%%i18n:@unable-to-process%',
|
||||
text: '%i18n:@circular-reference-detected%',
|
||||
title: '%fa:exclamation-triangle%%i18n:!@unable-to-process%',
|
||||
text: '%i18n:!@circular-reference-detected%',
|
||||
actions: [{
|
||||
text: '%i18n:common.ok%'
|
||||
text: '%i18n:!common.ok%'
|
||||
}]
|
||||
});
|
||||
break;
|
||||
default:
|
||||
alert('%i18n:@unhandled-error% ' + err);
|
||||
alert('%i18n:!@unhandled-error% ' + err);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -199,8 +199,8 @@ export default Vue.extend({
|
||||
|
||||
rename() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:@contextmenu.rename-folder%',
|
||||
placeholder: '%i18n:@contextmenu.input-new-folder-name%',
|
||||
title: '%i18n:!@contextmenu.rename-folder%',
|
||||
placeholder: '%i18n:!@contextmenu.input-new-folder-name%',
|
||||
default: this.folder.name
|
||||
}).then(name => {
|
||||
(this as any).api('drive/folders/update', {
|
||||
|
@@ -8,7 +8,7 @@
|
||||
@drop.stop="onDrop"
|
||||
>
|
||||
<template v-if="folder == null">%fa:cloud%</template>
|
||||
<span>{{ folder == null ? '%i18n:@drive%' : folder.name }}</span>
|
||||
<span>{{ folder == null ? '%i18n:!@drive%' : folder.name }}</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@@ -138,17 +138,17 @@ export default Vue.extend({
|
||||
onContextmenu(e) {
|
||||
contextmenu(e, [{
|
||||
type: 'item',
|
||||
text: '%i18n:@contextmenu.create-folder%',
|
||||
text: '%i18n:!@contextmenu.create-folder%',
|
||||
icon: '%fa:R folder%',
|
||||
onClick: this.createFolder
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:@contextmenu.upload%',
|
||||
text: '%i18n:!@contextmenu.upload%',
|
||||
icon: '%fa:upload%',
|
||||
onClick: this.selectLocalFile
|
||||
}, {
|
||||
type: 'item',
|
||||
text: '%i18n:@contextmenu.url-upload%',
|
||||
text: '%i18n:!@contextmenu.url-upload%',
|
||||
icon: '%fa:cloud-upload-alt%',
|
||||
onClick: this.urlUpload
|
||||
}]);
|
||||
@@ -306,15 +306,15 @@ export default Vue.extend({
|
||||
switch (err) {
|
||||
case 'detected-circular-definition':
|
||||
(this as any).apis.dialog({
|
||||
title: '%fa:exclamation-triangle%%i18n:@unable-to-process%',
|
||||
text: '%i18n:@circular-reference-detected%',
|
||||
title: '%fa:exclamation-triangle%%i18n:!@unable-to-process%',
|
||||
text: '%i18n:!@circular-reference-detected%',
|
||||
actions: [{
|
||||
text: '%i18n:common.ok%'
|
||||
text: '%i18n:!common.ok%'
|
||||
}]
|
||||
});
|
||||
break;
|
||||
default:
|
||||
alert('%i18n:@unhandled-error% ' + err);
|
||||
alert('%i18n:!@unhandled-error% ' + err);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -327,8 +327,8 @@ export default Vue.extend({
|
||||
|
||||
urlUpload() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:@url-upload%',
|
||||
placeholder: '%i18n:@url-of-file%'
|
||||
title: '%i18n:!@url-upload%',
|
||||
placeholder: '%i18n:!@url-of-file%'
|
||||
}).then(url => {
|
||||
(this as any).api('drive/files/upload_from_url', {
|
||||
url: url,
|
||||
@@ -337,9 +337,9 @@ export default Vue.extend({
|
||||
|
||||
(this as any).apis.dialog({
|
||||
title: '%fa:check%%i18n:@url-upload-requested%',
|
||||
text: '%i18n:@may-take-time%',
|
||||
text: '%i18n:!@may-take-time%',
|
||||
actions: [{
|
||||
text: '%i18n:common.ok%'
|
||||
text: '%i18n:!common.ok%'
|
||||
}]
|
||||
});
|
||||
});
|
||||
@@ -347,8 +347,8 @@ export default Vue.extend({
|
||||
|
||||
createFolder() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:@create-folder%',
|
||||
placeholder: '%i18n:@folder-name%'
|
||||
title: '%i18n:!@create-folder%',
|
||||
placeholder: '%i18n:!@folder-name%'
|
||||
}).then(name => {
|
||||
(this as any).api('drive/folders/create', {
|
||||
name: name,
|
||||
|
@@ -9,9 +9,9 @@
|
||||
<img class="avatar" :src="`${note.user.avatarUrl}?thumbnail&size=32`" alt="avatar"/>
|
||||
</router-link>
|
||||
%fa:retweet%
|
||||
<span>{{ '%i18n:@reposted-by%'.substr(0, '%i18n:@reposted-by%'.indexOf('{')) }}</span>
|
||||
<span>{{ '%i18n:!@reposted-by%'.substr(0, '%i18n:!@reposted-by%'.indexOf('{')) }}</span>
|
||||
<a class="name" :href="note.user | userPage" v-user-preview="note.userId">{{ note.user | userName }}</a>
|
||||
<span>{{ '%i18n:@reposted-by%'.substr('%i18n:@reposted-by%'.indexOf('}') + 1) }}</span>
|
||||
<span>{{ '%i18n:!@reposted-by%'.substr('%i18n:!@reposted-by%'.indexOf('}') + 1) }}</span>
|
||||
</p>
|
||||
<mk-time :time="note.createdAt"/>
|
||||
</div>
|
||||
|
@@ -93,7 +93,7 @@
|
||||
</template>
|
||||
</div>
|
||||
<button class="more" :class="{ fetching: fetchingMoreNotifications }" v-if="moreNotifications" @click="fetchMoreNotifications" :disabled="fetchingMoreNotifications">
|
||||
<template v-if="fetchingMoreNotifications">%fa:spinner .pulse .fw%</template>{{ fetchingMoreNotifications ? '%i18n:common.loading%' : '%i18n:@more%' }}
|
||||
<template v-if="fetchingMoreNotifications">%fa:spinner .pulse .fw%</template>{{ fetchingMoreNotifications ? '%i18n:!common.loading%' : '%i18n:!@more%' }}
|
||||
</button>
|
||||
<p class="empty" v-if="notifications.length == 0 && !fetching">%i18n:@empty%</p>
|
||||
<p class="loading" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
|
@@ -4,8 +4,8 @@
|
||||
<span :class="$style.icon" v-if="geo">%fa:map-marker-alt%</span>
|
||||
<span v-if="!reply">%i18n:@note%</span>
|
||||
<span v-if="reply">%i18n:@reply%</span>
|
||||
<span :class="$style.count" v-if="media.length != 0">{{ '%i18n:@attaches%'.replace('{}', media.length) }}</span>
|
||||
<span :class="$style.count" v-if="uploadings.length != 0">{{ '%i18n:@uploading-media%'.replace('{}', uploadings.length) }}<mk-ellipsis/></span>
|
||||
<span :class="$style.count" v-if="media.length != 0">{{ '%i18n:!@attaches%'.replace('{}', media.length) }}</span>
|
||||
<span :class="$style.count" v-if="uploadings.length != 0">{{ '%i18n:!@uploading-media%'.replace('{}', uploadings.length) }}<mk-ellipsis/></span>
|
||||
</span>
|
||||
|
||||
<mk-note-preview v-if="reply" :class="$style.notePreview" :note="reply"/>
|
||||
|
@@ -28,9 +28,9 @@
|
||||
<button class="kao" title="%i18n:@insert-a-kao%" @click="kao">%fa:R smile%</button>
|
||||
<button class="poll" title="%i18n:@create-poll%" @click="poll = true">%fa:chart-pie%</button>
|
||||
<button class="geo" title="位置情報を添付する" @click="geo ? removeGeo() : setGeo()">%fa:map-marker-alt%</button>
|
||||
<p class="text-count" :class="{ over: text.length > 1000 }">{{ '%i18n:@text-remain%'.replace('{}', 1000 - text.length) }}</p>
|
||||
<p class="text-count" :class="{ over: text.length > 1000 }">{{ '%i18n:!@text-remain%'.replace('{}', 1000 - text.length) }}</p>
|
||||
<button :class="{ posting }" class="submit" :disabled="!canPost" @click="post">
|
||||
{{ posting ? '%i18n:@posting%' : submitText }}<mk-ellipsis v-if="posting"/>
|
||||
{{ posting ? '%i18n:!@posting%' : submitText }}<mk-ellipsis v-if="posting"/>
|
||||
</button>
|
||||
<input ref="file" type="file" accept="image/*" multiple="multiple" tabindex="-1" @change="onChangeFile"/>
|
||||
<div class="dropzone" v-if="draghover"></div>
|
||||
@@ -69,17 +69,17 @@ export default Vue.extend({
|
||||
},
|
||||
placeholder(): string {
|
||||
return this.renote
|
||||
? '%i18n:@quote-placeholder%'
|
||||
? '%i18n:!@quote-placeholder%'
|
||||
: this.reply
|
||||
? '%i18n:@reply-placeholder%'
|
||||
: '%i18n:@note-placeholder%';
|
||||
? '%i18n:!@reply-placeholder%'
|
||||
: '%i18n:!@note-placeholder%';
|
||||
},
|
||||
submitText(): string {
|
||||
return this.renote
|
||||
? '%i18n:@renote%'
|
||||
? '%i18n:!@renote%'
|
||||
: this.reply
|
||||
? '%i18n:@reply%'
|
||||
: '%i18n:@note%';
|
||||
? '%i18n:!@reply%'
|
||||
: '%i18n:!@note%';
|
||||
},
|
||||
canPost(): boolean {
|
||||
return !this.posting && (this.text.length != 0 || this.files.length != 0 || this.poll || this.renote);
|
||||
@@ -236,16 +236,16 @@ export default Vue.extend({
|
||||
this.deleteDraft();
|
||||
this.$emit('posted');
|
||||
(this as any).apis.notify(this.renote
|
||||
? '%i18n:@reposted%'
|
||||
? '%i18n:!@reposted%'
|
||||
: this.reply
|
||||
? '%i18n:@replied%'
|
||||
: '%i18n:@posted%');
|
||||
? '%i18n:!@replied%'
|
||||
: '%i18n:!@posted%');
|
||||
}).catch(err => {
|
||||
(this as any).apis.notify(this.renote
|
||||
? '%i18n:@renote-failed%'
|
||||
? '%i18n:!@renote-failed%'
|
||||
: this.reply
|
||||
? '%i18n:@reply-failed%'
|
||||
: '%i18n:@note-failed%');
|
||||
? '%i18n:!@reply-failed%'
|
||||
: '%i18n:!@note-failed%');
|
||||
}).then(() => {
|
||||
this.posting = false;
|
||||
});
|
||||
|
@@ -5,7 +5,7 @@
|
||||
<footer>
|
||||
<a class="quote" v-if="!quote" @click="onQuote">%i18n:@quote%</a>
|
||||
<button class="cancel" @click="cancel">%i18n:@cancel%</button>
|
||||
<button class="ok" @click="ok" :disabled="wait">{{ wait ? '%i18n:@reposting%' : '%i18n:@renote%' }}</button>
|
||||
<button class="ok" @click="ok" :disabled="wait">{{ wait ? '%i18n:!@reposting%' : '%i18n:!@renote%' }}</button>
|
||||
</footer>
|
||||
</template>
|
||||
<template v-if="quote">
|
||||
@@ -32,9 +32,9 @@ export default Vue.extend({
|
||||
renoteId: this.note.id
|
||||
}).then(data => {
|
||||
this.$emit('posted');
|
||||
(this as any).apis.notify('%i18n:@success%');
|
||||
(this as any).apis.notify('%i18n:!@success%');
|
||||
}).catch(err => {
|
||||
(this as any).apis.notify('%i18n:@failure%');
|
||||
(this as any).apis.notify('%i18n:!@failure%');
|
||||
}).then(() => {
|
||||
this.wait = false;
|
||||
});
|
||||
|
131
src/client/app/desktop/views/components/repost-form.vue
Normal file
131
src/client/app/desktop/views/components/repost-form.vue
Normal file
@@ -0,0 +1,131 @@
|
||||
<template>
|
||||
<div class="mk-renote-form">
|
||||
<mk-note-preview :note="note"/>
|
||||
<template v-if="!quote">
|
||||
<footer>
|
||||
<a class="quote" v-if="!quote" @click="onQuote">%i18n:desktop.tags.mk-renote-form.quote%</a>
|
||||
<button class="cancel" @click="cancel">%i18n:desktop.tags.mk-renote-form.cancel%</button>
|
||||
<button class="ok" @click="ok" :disabled="wait">{{ wait ? '%i18n:!desktop.tags.mk-renote-form.reposting%' : '%i18n:!desktop.tags.mk-renote-form.renote%' }}</button>
|
||||
</footer>
|
||||
</template>
|
||||
<template v-if="quote">
|
||||
<mk-post-form ref="form" :renote="note" @posted="onChildFormPosted"/>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
|
||||
export default Vue.extend({
|
||||
props: ['note'],
|
||||
data() {
|
||||
return {
|
||||
wait: false,
|
||||
quote: false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
ok() {
|
||||
this.wait = true;
|
||||
(this as any).api('notes/create', {
|
||||
renoteId: this.note.id
|
||||
}).then(data => {
|
||||
this.$emit('posted');
|
||||
(this as any).apis.notify('%i18n:!desktop.tags.mk-renote-form.success%');
|
||||
}).catch(err => {
|
||||
(this as any).apis.notify('%i18n:!desktop.tags.mk-renote-form.failure%');
|
||||
}).then(() => {
|
||||
this.wait = false;
|
||||
});
|
||||
},
|
||||
cancel() {
|
||||
this.$emit('canceled');
|
||||
},
|
||||
onQuote() {
|
||||
this.quote = true;
|
||||
|
||||
this.$nextTick(() => {
|
||||
(this.$refs.form as any).focus();
|
||||
});
|
||||
},
|
||||
onChildFormPosted() {
|
||||
this.$emit('posted');
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
.mk-renote-form
|
||||
|
||||
> .mk-note-preview
|
||||
margin 16px 22px
|
||||
|
||||
> footer
|
||||
height 72px
|
||||
background lighten($theme-color, 95%)
|
||||
|
||||
> .quote
|
||||
position absolute
|
||||
bottom 16px
|
||||
left 28px
|
||||
line-height 40px
|
||||
|
||||
button
|
||||
display block
|
||||
position absolute
|
||||
bottom 16px
|
||||
cursor pointer
|
||||
padding 0
|
||||
margin 0
|
||||
width 120px
|
||||
height 40px
|
||||
font-size 1em
|
||||
outline none
|
||||
border-radius 4px
|
||||
|
||||
&:focus
|
||||
&:after
|
||||
content ""
|
||||
pointer-events none
|
||||
position absolute
|
||||
top -5px
|
||||
right -5px
|
||||
bottom -5px
|
||||
left -5px
|
||||
border 2px solid rgba($theme-color, 0.3)
|
||||
border-radius 8px
|
||||
|
||||
> .cancel
|
||||
right 148px
|
||||
color #888
|
||||
background linear-gradient(to bottom, #ffffff 0%, #f5f5f5 100%)
|
||||
border solid 1px #e2e2e2
|
||||
|
||||
&:hover
|
||||
background linear-gradient(to bottom, #f9f9f9 0%, #ececec 100%)
|
||||
border-color #dcdcdc
|
||||
|
||||
&:active
|
||||
background #ececec
|
||||
border-color #dcdcdc
|
||||
|
||||
> .ok
|
||||
right 16px
|
||||
font-weight bold
|
||||
color $theme-color-foreground
|
||||
background linear-gradient(to bottom, lighten($theme-color, 25%) 0%, lighten($theme-color, 10%) 100%)
|
||||
border solid 1px lighten($theme-color, 15%)
|
||||
|
||||
&:hover
|
||||
background linear-gradient(to bottom, lighten($theme-color, 8%) 0%, darken($theme-color, 8%) 100%)
|
||||
border-color $theme-color
|
||||
|
||||
&:active
|
||||
background $theme-color
|
||||
border-color $theme-color
|
||||
|
||||
</style>
|
@@ -34,7 +34,7 @@ export default Vue.extend({
|
||||
methods: {
|
||||
register() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:@enter-password%',
|
||||
title: '%i18n:!@enter-password%',
|
||||
type: 'password'
|
||||
}).then(password => {
|
||||
(this as any).api('i/2fa/register', {
|
||||
@@ -47,13 +47,13 @@ export default Vue.extend({
|
||||
|
||||
unregister() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:@enter-password%',
|
||||
title: '%i18n:!@enter-password%',
|
||||
type: 'password'
|
||||
}).then(password => {
|
||||
(this as any).api('i/2fa/unregister', {
|
||||
password: password
|
||||
}).then(() => {
|
||||
(this as any).apis.notify('%i18n:@unregistered%');
|
||||
(this as any).apis.notify('%i18n:!@unregistered%');
|
||||
(this as any).os.i.twoFactorEnabled = false;
|
||||
});
|
||||
});
|
||||
@@ -63,10 +63,10 @@ export default Vue.extend({
|
||||
(this as any).api('i/2fa/done', {
|
||||
token: this.token
|
||||
}).then(() => {
|
||||
(this as any).apis.notify('%i18n:@success%');
|
||||
(this as any).apis.notify('%i18n:!@success%');
|
||||
(this as any).os.i.twoFactorEnabled = true;
|
||||
}).catch(() => {
|
||||
(this as any).apis.notify('%i18n:@failed%');
|
||||
(this as any).apis.notify('%i18n:!@failed%');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@@ -15,7 +15,7 @@ export default Vue.extend({
|
||||
methods: {
|
||||
regenerateToken() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:@enter-password%',
|
||||
title: '%i18n:!@enter-password%',
|
||||
type: 'password'
|
||||
}).then(password => {
|
||||
(this as any).api('i/regenerate_token', {
|
||||
|
@@ -11,21 +11,21 @@ export default Vue.extend({
|
||||
methods: {
|
||||
reset() {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:@enter-current-password%',
|
||||
title: '%i18n:!@enter-current-password%',
|
||||
type: 'password'
|
||||
}).then(currentPassword => {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:@enter-new-password%',
|
||||
title: '%i18n:!@enter-new-password%',
|
||||
type: 'password'
|
||||
}).then(newPassword => {
|
||||
(this as any).apis.input({
|
||||
title: '%i18n:@enter-new-password-again%',
|
||||
title: '%i18n:!@enter-new-password-again%',
|
||||
type: 'password'
|
||||
}).then(newPassword2 => {
|
||||
if (newPassword !== newPassword2) {
|
||||
(this as any).apis.dialog({
|
||||
title: null,
|
||||
text: '%i18n:@not-match%',
|
||||
text: '%i18n:!@not-match%',
|
||||
actions: [{
|
||||
text: 'OK'
|
||||
}]
|
||||
@@ -36,7 +36,7 @@ export default Vue.extend({
|
||||
currentPasword: currentPassword,
|
||||
newPassword: newPassword
|
||||
}).then(() => {
|
||||
(this as any).apis.notify('%i18n:@changed%');
|
||||
(this as any).apis.notify('%i18n:!@changed%');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user