CWが適用されない箇所を修正

This commit is contained in:
syuilo 2018-09-13 17:44:36 +09:00
parent 44099c551c
commit 700f8c9bb4
No known key found for this signature in database
GPG key ID: BDC4C49D06AB9D69
11 changed files with 355 additions and 122 deletions

View file

@ -37,6 +37,11 @@
</router-link> </router-link>
</header> </header>
<div class="body"> <div class="body">
<p v-if="p.cw != null" class="cw">
<span class="text" v-if="p.cw != ''">{{ p.cw }}</span>
<span class="toggle" @click="showContent = !showContent">{{ showContent ? '%i18n:@hide%' : '%i18n:@see-more%' }}</span>
</p>
<div class="content" v-show="p.cw == null || showContent">
<div class="text"> <div class="text">
<span v-if="p.isHidden" style="opacity: 0.5">%i18n:@private%</span> <span v-if="p.isHidden" style="opacity: 0.5">%i18n:@private%</span>
<span v-if="p.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span> <span v-if="p.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span>
@ -53,6 +58,7 @@
<mk-note-preview :note="p.renote"/> <mk-note-preview :note="p.renote"/>
</div> </div>
</div> </div>
</div>
<footer> <footer>
<mk-reactions-viewer :note="p"/> <mk-reactions-viewer :note="p"/>
<button class="replyButton" @click="reply" title=""> <button class="replyButton" @click="reply" title="">
@ -105,6 +111,7 @@ export default Vue.extend({
data() { data() {
return { return {
showContent: false,
conversation: [], conversation: [],
conversationFetching: false, conversationFetching: false,
replies: [] replies: []
@ -118,17 +125,21 @@ export default Vue.extend({
this.note.fileIds.length == 0 && this.note.fileIds.length == 0 &&
this.note.poll == null); this.note.poll == null);
}, },
p(): any { p(): any {
return this.isRenote ? this.note.renote : this.note; return this.isRenote ? this.note.renote : this.note;
}, },
reactionsCount(): number { reactionsCount(): number {
return this.p.reactionCounts return this.p.reactionCounts
? sum(Object.values(this.p.reactionCounts)) ? sum(Object.values(this.p.reactionCounts))
: 0; : 0;
}, },
title(): string { title(): string {
return new Date(this.p.createdAt).toLocaleString(); return new Date(this.p.createdAt).toLocaleString();
}, },
urls(): string[] { urls(): string[] {
if (this.p.text) { if (this.p.text) {
const ast = parse(this.p.text); const ast = parse(this.p.text);
@ -183,22 +194,26 @@ export default Vue.extend({
this.conversation = conversation.reverse(); this.conversation = conversation.reverse();
}); });
}, },
reply() { reply() {
(this as any).os.new(MkPostFormWindow, { (this as any).os.new(MkPostFormWindow, {
reply: this.p reply: this.p
}); });
}, },
renote() { renote() {
(this as any).os.new(MkRenoteFormWindow, { (this as any).os.new(MkRenoteFormWindow, {
note: this.p note: this.p
}); });
}, },
react() { react() {
(this as any).os.new(MkReactionPicker, { (this as any).os.new(MkReactionPicker, {
source: this.$refs.reactButton, source: this.$refs.reactButton,
note: this.p note: this.p
}); });
}, },
menu() { menu() {
(this as any).os.new(MkNoteMenu, { (this as any).os.new(MkNoteMenu, {
source: this.$refs.menuButton, source: this.$refs.menuButton,
@ -326,6 +341,31 @@ root(isDark)
> .body > .body
padding 8px 0 padding 8px 0
> .cw
cursor default
display block
margin 0
padding 0
overflow-wrap break-word
color isDark ? #fff : #717171
> .text
margin-right 8px
> .toggle
display inline-block
padding 4px 8px
font-size 0.7em
color isDark ? #393f4f : #fff
background isDark ? #687390 : #b1b9c1
border-radius 2px
cursor pointer
user-select none
&:hover
background isDark ? #707b97 : #bbc4ce
> .content
> .text > .text
cursor default cursor default
display block display block
@ -338,7 +378,7 @@ root(isDark)
> .renote > .renote
margin 8px 0 margin 8px 0
> .mk-note-preview > *
padding 16px padding 16px
border dashed 1px #c0dac6 border dashed 1px #c0dac6
border-radius 8px border-radius 8px

View file

@ -1,12 +1,18 @@
<template> <template>
<div class="mk-note-preview" :title="title"> <div class="qiziqtywpuaucsgarwajitwaakggnisj" :title="title">
<mk-avatar class="avatar" :user="note.user" v-if="!mini"/> <mk-avatar class="avatar" :user="note.user" v-if="!mini"/>
<div class="main"> <div class="main">
<mk-note-header class="header" :note="note" :mini="true"/> <mk-note-header class="header" :note="note" :mini="true"/>
<div class="body"> <div class="body">
<p v-if="note.cw != null" class="cw">
<span class="text" v-if="note.cw != ''">{{ note.cw }}</span>
<span class="toggle" @click="showContent = !showContent">{{ showContent ? '%i18n:@hide%' : '%i18n:@see-more%' }}</span>
</p>
<div class="content" v-show="note.cw == null || showContent">
<mk-sub-note-content class="text" :note="note"/> <mk-sub-note-content class="text" :note="note"/>
</div> </div>
</div> </div>
</div>
</div> </div>
</template> </template>
@ -25,6 +31,13 @@ export default Vue.extend({
default: false default: false
} }
}, },
data() {
return {
showContent: false
};
},
computed: { computed: {
title(): string { title(): string {
return new Date(this.note.createdAt).toLocaleString(); return new Date(this.note.createdAt).toLocaleString();
@ -52,16 +65,41 @@ root(isDark)
> .body > .body
> .cw
cursor default
display block
margin 0
padding 0
overflow-wrap break-word
color isDark ? #fff : #717171
> .text
margin-right 8px
> .toggle
display inline-block
padding 4px 8px
font-size 0.7em
color isDark ? #393f4f : #fff
background isDark ? #687390 : #b1b9c1
border-radius 2px
cursor pointer
user-select none
&:hover
background isDark ? #707b97 : #bbc4ce
> .content
> .text > .text
cursor default cursor default
margin 0 margin 0
padding 0 padding 0
color isDark ? #959ba7 : #717171 color isDark ? #959ba7 : #717171
.mk-note-preview[data-darkmode] .qiziqtywpuaucsgarwajitwaakggnisj[data-darkmode]
root(true) root(true)
.mk-note-preview:not([data-darkmode]) .qiziqtywpuaucsgarwajitwaakggnisj:not([data-darkmode])
root(false) root(false)
</style> </style>

View file

@ -1,12 +1,18 @@
<template> <template>
<div class="sub" :title="title"> <div class="tkfdzaxtkdeianobciwadajxzbddorql" :title="title">
<mk-avatar class="avatar" :user="note.user"/> <mk-avatar class="avatar" :user="note.user"/>
<div class="main"> <div class="main">
<mk-note-header class="header" :note="note"/> <mk-note-header class="header" :note="note"/>
<div class="body"> <div class="body">
<p v-if="note.cw != null" class="cw">
<span class="text" v-if="note.cw != ''">{{ note.cw }}</span>
<span class="toggle" @click="showContent = !showContent">{{ showContent ? '%i18n:@hide%' : '%i18n:@see-more%' }}</span>
</p>
<div class="content" v-show="note.cw == null || showContent">
<mk-sub-note-content class="text" :note="note"/> <mk-sub-note-content class="text" :note="note"/>
</div> </div>
</div> </div>
</div>
</div> </div>
</template> </template>
@ -14,7 +20,19 @@
import Vue from 'vue'; import Vue from 'vue';
export default Vue.extend({ export default Vue.extend({
props: ['note'], props: {
note: {
type: Object,
required: true
}
},
data() {
return {
showContent: false
};
},
computed: { computed: {
title(): string { title(): string {
return new Date(this.note.createdAt).toLocaleString(); return new Date(this.note.createdAt).toLocaleString();
@ -48,6 +66,31 @@ root(isDark)
> .body > .body
> .cw
cursor default
display block
margin 0
padding 0
overflow-wrap break-word
color isDark ? #fff : #717171
> .text
margin-right 8px
> .toggle
display inline-block
padding 4px 8px
font-size 0.7em
color isDark ? #393f4f : #fff
background isDark ? #687390 : #b1b9c1
border-radius 2px
cursor pointer
user-select none
&:hover
background isDark ? #707b97 : #bbc4ce
> .content
> .text > .text
cursor default cursor default
margin 0 margin 0
@ -58,10 +101,10 @@ root(isDark)
max-height 120px max-height 120px
font-size 80% font-size 80%
.sub[data-darkmode] .tkfdzaxtkdeianobciwadajxzbddorql[data-darkmode]
root(true) root(true)
.sub:not([data-darkmode]) .tkfdzaxtkdeianobciwadajxzbddorql:not([data-darkmode])
root(false) root(false)
</style> </style>

View file

@ -34,9 +34,7 @@
<mk-poll v-if="p.poll" :note="p" ref="pollViewer"/> <mk-poll v-if="p.poll" :note="p" ref="pollViewer"/>
<a class="location" v-if="p.geo" :href="`https://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% 位置情報</a> <a class="location" v-if="p.geo" :href="`https://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% 位置情報</a>
<div class="map" v-if="p.geo" ref="map"></div> <div class="map" v-if="p.geo" ref="map"></div>
<div class="renote" v-if="p.renote"> <div class="renote" v-if="p.renote"><mk-note-preview :note="p.renote"/></div>
<mk-note-preview :note="p.renote"/>
</div>
<mk-url-preview v-for="url in urls" :url="url" :key="url"/> <mk-url-preview v-for="url in urls" :url="url" :key="url"/>
</div> </div>
</div> </div>
@ -96,7 +94,12 @@ export default Vue.extend({
XSub XSub
}, },
props: ['note'], props: {
note: {
type: Object,
required: true
}
},
data() { data() {
return { return {
@ -469,7 +472,7 @@ root(isDark)
> .renote > .renote
margin 8px 0 margin 8px 0
> .mk-note-preview > *
padding 16px padding 16px
border dashed 1px isDark ? #4e945e : #c0dac6 border dashed 1px isDark ? #4e945e : #c0dac6
border-radius 8px border-radius 8px

View file

@ -1,6 +1,6 @@
<template> <template>
<div class="mk-renote-form"> <div class="mk-renote-form">
<mk-note-preview :note="note"/> <mk-note-preview class="preview" :note="note"/>
<template v-if="!quote"> <template v-if="!quote">
<footer> <footer>
<a class="quote" v-if="!quote" @click="onQuote">%i18n:@quote%</a> <a class="quote" v-if="!quote" @click="onQuote">%i18n:@quote%</a>
@ -61,7 +61,7 @@ export default Vue.extend({
root(isDark) root(isDark)
> .mk-note-preview > .preview
margin 16px 22px margin 16px 22px
> footer > footer

View file

@ -394,7 +394,7 @@ root(isDark)
> .renote > .renote
margin 8px 0 margin 8px 0
> .mk-note-preview > *
padding 16px padding 16px
border dashed 1px isDark ? #4e945e : #c0dac6 border dashed 1px isDark ? #4e945e : #c0dac6
border-radius 8px border-radius 8px

View file

@ -35,6 +35,11 @@
</div> </div>
</header> </header>
<div class="body"> <div class="body">
<p v-if="p.cw != null" class="cw">
<span class="text" v-if="p.cw != ''">{{ p.cw }}</span>
<span class="toggle" @click="showContent = !showContent">{{ showContent ? '%i18n:@hide%' : '%i18n:@see-more%' }}</span>
</p>
<div class="content" v-show="p.cw == null || showContent">
<div class="text"> <div class="text">
<span v-if="p.isHidden" style="opacity: 0.5">(%i18n:@private%)</span> <span v-if="p.isHidden" style="opacity: 0.5">(%i18n:@private%)</span>
<span v-if="p.deletedAt" style="opacity: 0.5">(%i18n:@deleted%)</span> <span v-if="p.deletedAt" style="opacity: 0.5">(%i18n:@deleted%)</span>
@ -51,6 +56,7 @@
<mk-note-preview :note="p.renote"/> <mk-note-preview :note="p.renote"/>
</div> </div>
</div> </div>
</div>
<router-link class="time" :to="p | notePage"> <router-link class="time" :to="p | notePage">
<mk-time :time="p.createdAt" mode="detail"/> <mk-time :time="p.createdAt" mode="detail"/>
</router-link> </router-link>
@ -104,6 +110,7 @@ export default Vue.extend({
data() { data() {
return { return {
showContent: false,
conversation: [], conversation: [],
conversationFetching: false, conversationFetching: false,
replies: [] replies: []
@ -334,6 +341,32 @@ root(isDark)
> .body > .body
padding 8px 0 padding 8px 0
> .cw
cursor default
display block
margin 0
padding 0
overflow-wrap break-word
color isDark ? #fff : #717171
> .text
margin-right 8px
> .toggle
display inline-block
padding 4px 8px
font-size 0.7em
color isDark ? #393f4f : #fff
background isDark ? #687390 : #b1b9c1
border-radius 2px
cursor pointer
user-select none
&:hover
background isDark ? #707b97 : #bbc4ce
> .content
> .text > .text
display block display block
margin 0 margin 0
@ -348,7 +381,7 @@ root(isDark)
> .renote > .renote
margin 8px 0 margin 8px 0
> .mk-note-preview > *
padding 16px padding 16px
border dashed 1px #c0dac6 border dashed 1px #c0dac6
border-radius 8px border-radius 8px

View file

@ -1,12 +1,18 @@
<template> <template>
<div class="mk-note-preview" :class="{ smart: $store.state.device.postStyle == 'smart' }"> <div class="yohlumlkhizgfkvvscwfcrcggkotpvry" :class="{ smart: $store.state.device.postStyle == 'smart' }">
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle != 'smart'"/> <mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle != 'smart'"/>
<div class="main"> <div class="main">
<mk-note-header class="header" :note="note" :mini="true"/> <mk-note-header class="header" :note="note" :mini="true"/>
<div class="body"> <div class="body">
<p v-if="note.cw != null" class="cw">
<span class="text" v-if="note.cw != ''">{{ note.cw }}</span>
<span class="toggle" @click="showContent = !showContent">{{ showContent ? '%i18n:@hide%' : '%i18n:@see-more%' }}</span>
</p>
<div class="content" v-show="note.cw == null || showContent">
<mk-sub-note-content class="text" :note="note"/> <mk-sub-note-content class="text" :note="note"/>
</div> </div>
</div> </div>
</div>
</div> </div>
</template> </template>
@ -14,7 +20,18 @@
import Vue from 'vue'; import Vue from 'vue';
export default Vue.extend({ export default Vue.extend({
props: ['note'] props: {
note: {
type: Object,
required: true
}
},
data() {
return {
showContent: false
};
}
}); });
</script> </script>
@ -65,16 +82,41 @@ root(isDark)
> .body > .body
> .cw
cursor default
display block
margin 0
padding 0
overflow-wrap break-word
color isDark ? #fff : #717171
> .text
margin-right 8px
> .toggle
display inline-block
padding 4px 8px
font-size 0.7em
color isDark ? #393f4f : #fff
background isDark ? #687390 : #b1b9c1
border-radius 2px
cursor pointer
user-select none
&:hover
background isDark ? #707b97 : #bbc4ce
> .content
> .text > .text
cursor default cursor default
margin 0 margin 0
padding 0 padding 0
color isDark ? #959ba7 : #717171 color isDark ? #959ba7 : #717171
.mk-note-preview[data-darkmode] .yohlumlkhizgfkvvscwfcrcggkotpvry[data-darkmode]
root(true) root(true)
.mk-note-preview:not([data-darkmode]) .yohlumlkhizgfkvvscwfcrcggkotpvry:not([data-darkmode])
root(false) root(false)
</style> </style>

View file

@ -1,12 +1,18 @@
<template> <template>
<div class="sub" :class="{ smart: $store.state.device.postStyle == 'smart' }"> <div class="zlrxdaqttccpwhpaagdmkawtzklsccam" :class="{ smart: $store.state.device.postStyle == 'smart' }">
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle != 'smart'"/> <mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle != 'smart'"/>
<div class="main"> <div class="main">
<mk-note-header class="header" :note="note" :mini="true"/> <mk-note-header class="header" :note="note" :mini="true"/>
<div class="body"> <div class="body">
<p v-if="note.cw != null" class="cw">
<span class="text" v-if="note.cw != ''">{{ note.cw }}</span>
<span class="toggle" @click="showContent = !showContent">{{ showContent ? '%i18n:@hide%' : '%i18n:@see-more%' }}</span>
</p>
<div class="content" v-show="note.cw == null || showContent">
<mk-sub-note-content class="text" :note="note"/> <mk-sub-note-content class="text" :note="note"/>
</div> </div>
</div> </div>
</div>
</div> </div>
</template> </template>
@ -24,6 +30,12 @@ export default Vue.extend({
type: Boolean, type: Boolean,
default: true default: true
} }
},
data() {
return {
showContent: false
};
} }
}); });
</script> </script>
@ -77,7 +89,31 @@ root(isDark)
margin-bottom 2px margin-bottom 2px
> .body > .body
> .cw
cursor default
display block
margin 0
padding 0
overflow-wrap break-word
color isDark ? #fff : #717171
> .text
margin-right 8px
> .toggle
display inline-block
padding 4px 8px
font-size 0.7em
color isDark ? #393f4f : #fff
background isDark ? #687390 : #b1b9c1
border-radius 2px
cursor pointer
user-select none
&:hover
background isDark ? #707b97 : #bbc4ce
> .content
> .text > .text
margin 0 margin 0
padding 0 padding 0
@ -87,10 +123,10 @@ root(isDark)
max-height 120px max-height 120px
font-size 80% font-size 80%
.sub[data-darkmode] .zlrxdaqttccpwhpaagdmkawtzklsccam[data-darkmode]
root(true) root(true)
.sub:not([data-darkmode]) .zlrxdaqttccpwhpaagdmkawtzklsccam:not([data-darkmode])
root(false) root(false)
</style> </style>

View file

@ -35,9 +35,7 @@
<mk-url-preview v-for="url in urls" :url="url" :key="url"/> <mk-url-preview v-for="url in urls" :url="url" :key="url"/>
<a class="location" v-if="p.geo" :href="`https://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a> <a class="location" v-if="p.geo" :href="`https://maps.google.com/maps?q=${p.geo.coordinates[1]},${p.geo.coordinates[0]}`" target="_blank">%fa:map-marker-alt% %i18n:@location%</a>
<div class="map" v-if="p.geo" ref="map"></div> <div class="map" v-if="p.geo" ref="map"></div>
<div class="renote" v-if="p.renote"> <div class="renote" v-if="p.renote"><mk-note-preview :note="p.renote"/></div>
<mk-note-preview :note="p.renote"/>
</div>
</div> </div>
<span class="app" v-if="p.app">via <b>{{ p.app.name }}</b></span> <span class="app" v-if="p.app">via <b>{{ p.app.name }}</b></span>
</div> </div>
@ -436,7 +434,7 @@ root(isDark)
> .renote > .renote
margin 8px 0 margin 8px 0
> .mk-note-preview > *
padding 16px padding 16px
border dashed 1px isDark ? #4e945e : #c0dac6 border dashed 1px isDark ? #4e945e : #c0dac6
border-radius 8px border-radius 8px

View file

@ -10,8 +10,8 @@
</div> </div>
</header> </header>
<div class="form"> <div class="form">
<mk-note-preview v-if="reply" :note="reply"/> <mk-note-preview class="preview" v-if="reply" :note="reply"/>
<mk-note-preview v-if="renote" :note="renote"/> <mk-note-preview class="preview" v-if="renote" :note="renote"/>
<div v-if="visibility == 'specified'" class="visibleUsers"> <div v-if="visibility == 'specified'" class="visibleUsers">
<span v-for="u in visibleUsers">{{ u | userName }}<a @click="removeVisibleUser(u)">[x]</a></span> <span v-for="u in visibleUsers">{{ u | userName }}<a @click="removeVisibleUser(u)">[x]</a></span>
<a @click="addVisibleUser">+%i18n:@add-visible-user%</a> <a @click="addVisibleUser">+%i18n:@add-visible-user%</a>
@ -387,7 +387,7 @@ root(isDark)
max-width 500px max-width 500px
margin 0 auto margin 0 auto
> .mk-note-preview > .preview
padding 16px padding 16px
> .visibleUsers > .visibleUsers