diff --git a/locales/ja.yml b/locales/ja.yml index a467c4ba68..42d4df54a1 100644 --- a/locales/ja.yml +++ b/locales/ja.yml @@ -443,6 +443,7 @@ desktop/views/components/drive-window.vue: desktop/views/components/drive.file.vue: avatar: "アイコン" banner: "バナー" + nsfw: "閲覧注意" contextmenu: rename: "名前を変更" mark-as-sensitive: "閲覧注意に設定" @@ -954,12 +955,15 @@ mobile/views/components/drive-file-chooser.vue: select-file: "ファイルを選択" mobile/views/components/drive-folder-chooser.vue: select-folder: "フォルダーを選択" +mobile/views/components/drive.file.vue: + nsfw: "閲覧注意" mobile/views/components/drive.file-detail.vue: download: "ダウンロード" rename: "名前を変更" move: "移動" hash: "ハッシュ (md5)" exif: "EXIF" + nsfw: "閲覧注意" mobile/views/components/media-image.vue: sensitive: "閲覧注意" click-to-show: "クリックして表示" diff --git a/src/client/app/desktop/views/components/drive.file.vue b/src/client/app/desktop/views/components/drive.file.vue index 3b5be19dcf..3ac8923c51 100644 --- a/src/client/app/desktop/views/components/drive.file.vue +++ b/src/client/app/desktop/views/components/drive.file.vue @@ -9,12 +9,18 @@ @contextmenu.prevent.stop="onContextmenu" :title="title" > - <div class="label" v-if="$store.state.i.avatarId == file.id"><img src="/assets/label.svg"/> + <div class="label" v-if="$store.state.i.avatarId == file.id"> + <img src="/assets/label.svg"/> <p>%i18n:@avatar%</p> </div> - <div class="label" v-if="$store.state.i.bannerId == file.id"><img src="/assets/label.svg"/> + <div class="label" v-if="$store.state.i.bannerId == file.id"> + <img src="/assets/label.svg"/> <p>%i18n:@banner%</p> </div> + <div class="label red" v-if="file.isSensitive"> + <img src="/assets/label-red.svg"/> + <p>%i18n:@nsfw%</p> + </div> <div class="thumbnail" ref="thumbnail" :style="`background-color: ${ background }`"> <img :src="file.thumbnailUrl" alt="" @load="onThumbnailLoaded"/> </div> @@ -212,6 +218,11 @@ root(isDark) &:after background #0b65a5 + &.red + &:before + &:after + background #c12113 + &:active background rgba(#000, 0.1) @@ -220,6 +231,11 @@ root(isDark) &:after background #0b588c + &.red + &:before + &:after + background #ce2212 + &[data-is-selected] background $theme-color @@ -256,26 +272,29 @@ root(isDark) pointer-events none &:before - content "" - display block - position absolute - z-index 1 - top 0 - left 57px - width 28px - height 8px - background #0c7ac9 - &:after content "" display block position absolute z-index 1 + background #0c7ac9 + + &:before + top 0 + left 57px + width 28px + height 8px + + &:after top 57px left 0 width 8px height 28px - background #0c7ac9 + + &.red + &:before + &:after + background #c12113 > img position absolute diff --git a/src/client/app/mobile/views/components/drive.file-detail.vue b/src/client/app/mobile/views/components/drive.file-detail.vue index f6a22f95f0..deb9941be8 100644 --- a/src/client/app/mobile/views/components/drive.file-detail.vue +++ b/src/client/app/mobile/views/components/drive.file-detail.vue @@ -30,6 +30,10 @@ <span class="data-size">{{ file.datasize | bytes }}</span> <span class="separator"></span> <span class="created-at" @click="showCreatedAt">%fa:R clock%<mk-time :time="file.createdAt"/></span> + <template v-if="file.isSensitive"> + <span class="separator"></span> + <span class="nsfw">%fa:eye-slash% %i18n:@nsfw%</span> + </template> </div> </div> <div class="menu"> @@ -198,6 +202,9 @@ export default Vue.extend({ > [data-fa] margin-right 2px + > .nsfw + color #bf4633 + > .menu padding 14px border-top solid 1px #dfdfdf diff --git a/src/client/app/mobile/views/components/drive.file.vue b/src/client/app/mobile/views/components/drive.file.vue index c337629cb6..6dec4b9f4f 100644 --- a/src/client/app/mobile/views/components/drive.file.vue +++ b/src/client/app/mobile/views/components/drive.file.vue @@ -14,13 +14,17 @@ li.tag(style={background: tag.color, color: contrast(tag.color)})= tag.name --> <footer> - <p class="type"><mk-file-type-icon :type="file.type"/>{{ file.type }}</p> - <p class="separator"></p> - <p class="data-size">{{ file.datasize | bytes }}</p> - <p class="separator"></p> - <p class="created-at"> + <span class="type"><mk-file-type-icon :type="file.type"/>{{ file.type }}</span> + <span class="separator"></span> + <span class="data-size">{{ file.datasize | bytes }}</span> + <span class="separator"></span> + <span class="created-at"> %fa:R clock%<mk-time :time="file.createdAt"/> - </p> + </span> + <template v-if="file.isSensitive"> + <span class="separator"></span> + <span class="nsfw">%fa:eye-slash% %i18n:@nsfw%</span> + </template> </footer> </div> </div> @@ -133,35 +137,27 @@ export default Vue.extend({ font-size 0.7em > .separator - display inline - margin 0 padding 0 4px color #CDCDCD > .type - display inline - margin 0 - padding 0 color #9D9D9D > .mk-file-type-icon margin-right 4px > .data-size - display inline - margin 0 - padding 0 color #9D9D9D > .created-at - display inline - margin 0 - padding 0 color #BDBDBD > [data-fa] margin-right 2px + > .nsfw + color #bf4633 + &[data-is-selected] background $theme-color diff --git a/src/client/assets/label-red.svg b/src/client/assets/label-red.svg new file mode 100644 index 0000000000..45996aa9ce --- /dev/null +++ b/src/client/assets/label-red.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" + y="0px" width="96px" height="96px" viewBox="0 0 96 96" enable-background="new 0 0 96 96" xml:space="preserve"> +<polygon fill="#ea2412" points="0,45.255 45.254,0 84.854,0 0,84.854 "/> +</svg>