diff --git a/locales/ja.yml b/locales/ja.yml index ab87494f93..90764f7e60 100644 --- a/locales/ja.yml +++ b/locales/ja.yml @@ -43,6 +43,28 @@ common: update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" + widgets: + profile: "プロフィール" + calendar: "カレンダー" + timemachine: "カレンダー(タイムマシン)" + activity: "アクティビティ" + rss: "RSSリーダー" + memo: "メモ" + trends: "トレンド" + photo-stream: "フォトストリーム" + slideshow: "スライドショー" + version: "バージョン" + broadcast: "ブロードキャスト" + notifications: "通知" + users: "おすすめユーザー" + polls: "投票" + post-form: "投稿フォーム" + messaging: "メッセージ" + server: "サーバー情報" + donation: "寄付のお願い" + nav: "ナビゲーション" + tips: "ヒント" + common/views/components/connect-failed.vue: title: "サーバーに接続できません" description: "インターネット回線に問題があるか、サーバーがダウンまたはメンテナンスしている可能性があります。しばらくしてから{再度お試し}ください。" @@ -201,6 +223,11 @@ common/views/widgets/server.vue: title: "サーバー情報" toggle: "表示を切り替え" +common/views/widgets/memo.vue: + title: "メモ" + memo: "ここに書いて!" + save: "保存" + desktop/views/components/activity.chart.vue: total: "Black ... Total" notes: "Blue ... Notes" @@ -319,25 +346,6 @@ desktop/views/components/game-window.vue: desktop/views/components/home.vue: done: "完了" add-widget: "ウィジェットを追加:" - profile: "プロフィール" - calendar: "カレンダー" - timemachine: "カレンダー(タイムマシン)" - activity: "アクティビティ" - rss: "RSSリーダー" - trends: "トレンド" - photostream: "フォトストリーム" - slideshow: "スライドショー" - version: "バージョン" - broadcast: "ブロードキャスト" - notifications: "通知" - users: "おすすめユーザー" - polls: "投票" - post-form: "投稿フォーム" - messaging: "メッセージ" - server: "サーバー情報" - donation: "寄付のお願い" - nav: "ナビゲーション" - tips: "ヒント" add: "追加" desktop/views/input-dialog.vue: diff --git a/src/client/app/common/views/widgets/index.ts b/src/client/app/common/views/widgets/index.ts index 9107d90ce7..7ef4e02092 100644 --- a/src/client/app/common/views/widgets/index.ts +++ b/src/client/app/common/views/widgets/index.ts @@ -3,6 +3,7 @@ import Vue from 'vue'; import wVersion from './version.vue'; import wRss from './rss.vue'; import wServer from './server.vue'; +import wMemo from './memo.vue'; import wBroadcast from './broadcast.vue'; import wCalendar from './calendar.vue'; import wPhotoStream from './photo-stream.vue'; @@ -19,5 +20,6 @@ Vue.component('mkw-tips', wTips); Vue.component('mkw-donation', wDonation); Vue.component('mkw-broadcast', wBroadcast); Vue.component('mkw-server', wServer); +Vue.component('mkw-memo', wMemo); Vue.component('mkw-rss', wRss); Vue.component('mkw-version', wVersion); diff --git a/src/client/app/common/views/widgets/memo.vue b/src/client/app/common/views/widgets/memo.vue new file mode 100644 index 0000000000..3f599c82a0 --- /dev/null +++ b/src/client/app/common/views/widgets/memo.vue @@ -0,0 +1,110 @@ +<template> +<div class="mkw-memo"> + <mk-widget-container :show-header="!props.compact"> + <template slot="header">%fa:R sticky-note%%i18n:@title%</template> + + <div class="mkw-memo--body"> + <textarea v-model="text" placeholder="%i18n:@memo%" @input="onChange"></textarea> + <button @click="saveMemo" :disabled="!changed">%i18n:@save%</button> + </div> + </mk-widget-container> +</div> +</template> + +<script lang="ts"> +import define from '../../define-widget'; + +export default define({ + name: 'memo', + props: () => ({ + compact: false + }) +}).extend({ + data() { + return { + text: null, + changed: false + }; + }, + + created() { + this.text = this.$store.state.settings.memo; + + this.$watch('$store.state.settings.memo', text => { + this.text = text; + }); + }, + + methods: { + func() { + this.props.compact = !this.props.compact; + this.save(); + }, + + onChange() { + this.changed = true; + }, + + saveMemo() { + this.$store.dispatch('settings/set', { + key: 'memo', + value: this.text + }); + this.changed = false; + } + } +}); +</script> + +<style lang="stylus" scoped> +@import '~const.styl' + +root(isDark) + .mkw-memo--body + padding-bottom 28px + 16px + + > textarea + display block + width 100% + max-width 100% + min-width 100% + padding 16px + color isDark ? #fff : #222 + background isDark ? #282c37 : #fff + border none + border-bottom solid 1px isDark ? #1c2023 : #eee + + > button + display block + position absolute + bottom 8px + right 8px + margin 0 + padding 0 10px + height 28px + color $theme-color-foreground + background $theme-color !important + outline none + border none + border-radius 4px + transition background 0.1s ease + cursor pointer + + &:hover + background lighten($theme-color, 10%) !important + + &:active + background darken($theme-color, 10%) !important + transition background 0s ease + + &:disabled + opacity 0.7 + cursor default + +.mkw-memo[data-darkmode] + root(true) + +.mkw-memo:not([data-darkmode]) + root(false) + +</style> diff --git a/src/client/app/desktop/views/components/home.vue b/src/client/app/desktop/views/components/home.vue index 9d34575e55..f51fed7454 100644 --- a/src/client/app/desktop/views/components/home.vue +++ b/src/client/app/desktop/views/components/home.vue @@ -6,25 +6,26 @@ <div class="adder"> <p>%i18n:@add-widget%</p> <select v-model="widgetAdderSelected"> - <option value="profile">%i18n:@profile%</option> - <option value="calendar">%i18n:@calendar%</option> - <option value="timemachine">%i18n:@timemachine%</option> - <option value="activity">%i18n:@activity%</option> - <option value="rss">%i18n:@rss%</option> - <option value="trends">%i18n:@trends%</option> - <option value="photo-stream">%i18n:@photo-stream%</option> - <option value="slideshow">%i18n:@slideshow%</option> - <option value="version">%i18n:@version%</option> - <option value="broadcast">%i18n:@broadcast%</option> - <option value="notifications">%i18n:@notifications%</option> - <option value="users">%i18n:@users%</option> - <option value="polls">%i18n:@polls%</option> - <option value="post-form">%i18n:@post-form%</option> - <option value="messaging">%i18n:@messaging%</option> - <option value="server">%i18n:@server%</option> - <option value="donation">%i18n:@donation%</option> - <option value="nav">%i18n:@nav%</option> - <option value="tips">%i18n:@tips%</option> + <option value="profile">%i18n:common.widgets.profile%</option> + <option value="calendar">%i18n:common.widgets.calendar%</option> + <option value="timemachine">%i18n:common.widgets.timemachine%</option> + <option value="activity">%i18n:common.widgets.activity%</option> + <option value="rss">%i18n:common.widgets.rss%</option> + <option value="trends">%i18n:common.widgets.trends%</option> + <option value="photo-stream">%i18n:common.widgets.photo-stream%</option> + <option value="slideshow">%i18n:common.widgets.slideshow%</option> + <option value="version">%i18n:common.widgets.version%</option> + <option value="broadcast">%i18n:common.widgets.broadcast%</option> + <option value="notifications">%i18n:common.widgets.notifications%</option> + <option value="users">%i18n:common.widgets.users%</option> + <option value="polls">%i18n:common.widgets.polls%</option> + <option value="post-form">%i18n:common.widgets.post-form%</option> + <option value="messaging">%i18n:common.widgets.messaging%</option> + <option value="memo">%i18n:common.widgets.memo%</option> + <option value="server">%i18n:common.widgets.server%</option> + <option value="donation">%i18n:common.widgets.donation%</option> + <option value="nav">%i18n:common.widgets.nav%</option> + <option value="tips">%i18n:common.widgets.tips%</option> </select> <button @click="addWidget">%i18n:@add%</button> </div> diff --git a/src/client/app/mobile/views/pages/widgets.vue b/src/client/app/mobile/views/pages/widgets.vue index 03abcabe8f..9d047fa635 100644 --- a/src/client/app/mobile/views/pages/widgets.vue +++ b/src/client/app/mobile/views/pages/widgets.vue @@ -8,17 +8,18 @@ <template v-if="customizing"> <header> <select v-model="widgetAdderSelected"> - <option value="profile">プロフィール</option> - <option value="calendar">カレンダー</option> - <option value="activity">アクティビティ</option> - <option value="rss">RSSリーダー</option> - <option value="photo-stream">フォトストリーム</option> - <option value="slideshow">スライドショー</option> - <option value="version">バージョン</option> - <option value="server">サーバー情報</option> - <option value="donation">寄付のお願い</option> - <option value="nav">ナビゲーション</option> - <option value="tips">ヒント</option> + <option value="profile">%i18n:common.widgets.profile%</option> + <option value="calendar">%i18n:common.widgets.calendar%</option> + <option value="activity">%i18n:common.widgets.activity%</option> + <option value="rss">%i18n:common.widgets.rss%</option> + <option value="photo-stream">%i18n:common.widgets.photo-stream%</option> + <option value="slideshow">%i18n:common.widgets.slideshow%</option> + <option value="version">%i18n:common.widgets.version%</option> + <option value="server">%i18n:common.widgets.server%</option> + <option value="memo">%i18n:common.widgets.memo%</option> + <option value="donation">%i18n:common.widgets.donation%</option> + <option value="nav">%i18n:common.widgets.nav%</option> + <option value="tips">%i18n:common.widgets.tips%</option> </select> <button @click="addWidget">追加</button> <p><a @click="hint">カスタマイズのヒント</a></p> diff --git a/src/client/app/store.ts b/src/client/app/store.ts index c27ff0dfcf..905ec0501c 100644 --- a/src/client/app/store.ts +++ b/src/client/app/store.ts @@ -16,7 +16,8 @@ const defaultSettings = { showMyRenotes: true, showRenotedMyNotes: true, loadRemoteMedia: true, - disableViaMobile: false + disableViaMobile: false, + memo: null }; const defaultDeviceSettings = {