|
8 | 8 | ref="cardSidebar" |
9 | 9 | :active="tabId" |
10 | 10 | :name="displayTitle" |
11 | | - :subname="subtitle" |
12 | 11 | :subtitle="subtitleTooltip" |
13 | 12 | :name-editable.sync="isEditingTitle" |
14 | 13 | @update:name="(value) => titleEditing = value" |
|
17 | 16 | @submit-name="handleSubmitTitle" |
18 | 17 | @opened="focusHeader" |
19 | 18 | @close="closeSidebar"> |
| 19 | + <template #subname> |
| 20 | + <span>{{ subtitle }}</span> |
| 21 | + <template v-if="cardOwner"> |
| 22 | + <span> ⸱ </span> |
| 23 | + <NcUserBubble :user="cardOwner.uid" :display-name="cardOwner.displayName" /> |
| 24 | + </template> |
| 25 | + </template> |
20 | 26 | <template #secondary-actions> |
21 | 27 | <NcActionButton v-if="cardDetailsInModal && isFullApp" icon="icon-menu-sidebar" @click.stop="closeModal()"> |
22 | 28 | {{ t('deck', 'Open in sidebar view') }} |
|
75 | 81 | </template> |
76 | 82 |
|
77 | 83 | <script> |
78 | | -import { NcActionButton, NcAppSidebar, NcAppSidebarTab } from '@nextcloud/vue' |
| 84 | +import { NcActionButton, NcAppSidebar, NcAppSidebarTab, NcUserBubble } from '@nextcloud/vue' |
79 | 85 | import { NcReferenceList } from '@nextcloud/vue/dist/Components/NcRichText.js' |
80 | 86 | import { getCapabilities } from '@nextcloud/capabilities' |
81 | 87 | import { mapState, mapGetters } from 'vuex' |
@@ -116,6 +122,7 @@ export default { |
116 | 122 | HomeIcon, |
117 | 123 | HomeOutlineIcon, |
118 | 124 | CardMenuEntries, |
| 125 | + NcUserBubble, |
119 | 126 | }, |
120 | 127 | mixins: [relativeDate], |
121 | 128 | props: { |
@@ -156,11 +163,27 @@ export default { |
156 | 163 | cardOwnerDisplayName() { |
157 | 164 | return this.currentCard.owner?.displayname ?? this.currentCard.owner?.uid ?? this.currentCard.owner ?? null |
158 | 165 | }, |
| 166 | + cardOwner() { |
| 167 | + const owner = this.currentCard.owner |
| 168 | + if (!owner) return null |
| 169 | + return { |
| 170 | + uid: owner?.uid ?? (typeof owner === 'string' ? owner : null), |
| 171 | + displayName: this.cardOwnerDisplayName, |
| 172 | + } |
| 173 | + }, |
159 | 174 | subtitle() { |
160 | | - return this.buildSubtitle() |
| 175 | + const modifiedDate = this.relativeDate(this.currentCard.lastModified * 1000) |
| 176 | + const createdDate = this.relativeDate(this.currentCard.createdAt * 1000) |
| 177 | + return t('deck', 'Modified: {modifiedDate} ⸱ Created: {createdDate}', { modifiedDate, createdDate }) |
161 | 178 | }, |
162 | 179 | subtitleTooltip() { |
163 | | - return this.buildSubtitleTooltip() |
| 180 | + const modifiedDate = this.formatDate(this.currentCard.lastModified) |
| 181 | + const createdDate = this.formatDate(this.currentCard.createdAt) |
| 182 | + const owner = this.cardOwnerDisplayName |
| 183 | + if (owner) { |
| 184 | + return t('deck', 'Modified: {modifiedDate}\nCreated: {createdDate}\nCreated by: {owner}', { modifiedDate, createdDate, owner }) |
| 185 | + } |
| 186 | + return t('deck', 'Modified: {modifiedDate}\nCreated: {createdDate}', { modifiedDate, createdDate }) |
164 | 187 | }, |
165 | 188 | cardDetailsInModal: { |
166 | 189 | get() { |
@@ -193,34 +216,6 @@ export default { |
193 | 216 | }, |
194 | 217 | }, |
195 | 218 | methods: { |
196 | | - buildSubtitle() { |
197 | | - const modifiedDate = this.relativeDate(this.currentCard.lastModified * 1000) |
198 | | - const createdDate = this.relativeDate(this.currentCard.createdAt * 1000) |
199 | | - const owner = this.cardOwnerDisplayName |
200 | | - const cardMeta = { |
201 | | - generic: t('deck', '{modified}: {modifiedDate} ⸱ {created}: {createdDate}', |
202 | | - { modified: t('deck', 'Modified'), modifiedDate, created: t('deck', 'Created'), createdDate }, |
203 | | - undefined, { escape: false }), |
204 | | - withOwner: t('deck', '{modified}: {modifiedDate} ⸱ {created}: {createdDate} ⸱ {by}: {owner}', |
205 | | - { modified: t('deck', 'Modified'), modifiedDate, created: t('deck', 'Created'), createdDate, by: t('deck', 'by'), owner }, |
206 | | - undefined, { escape: false }), |
207 | | - } |
208 | | - return owner ? cardMeta.withOwner : cardMeta.generic |
209 | | - }, |
210 | | - buildSubtitleTooltip() { |
211 | | - const modifiedDate = this.formatDate(this.currentCard.lastModified) |
212 | | - const createdDate = this.formatDate(this.currentCard.createdAt) |
213 | | - const owner = this.cardOwnerDisplayName |
214 | | - const cardMeta = { |
215 | | - generic: t('deck', '{modified}: {modifiedDate}\n{created}: {createdDate}', |
216 | | - { modified: t('deck', 'Modified'), modifiedDate, created: t('deck', 'Created'), createdDate }, |
217 | | - undefined, { escape: false }), |
218 | | - withOwner: t('deck', '{modified}: {modifiedDate}\n{created}: {createdDate}\n{by}: {owner}', |
219 | | - { modified: t('deck', 'Modified'), modifiedDate, created: t('deck', 'Created'), createdDate, by: t('deck', 'by'), owner }, |
220 | | - undefined, { escape: false }), |
221 | | - } |
222 | | - return owner ? cardMeta.withOwner : cardMeta.generic |
223 | | - }, |
224 | 219 | focusHeader() { |
225 | 220 | this.$nextTick(() => { |
226 | 221 | this.$refs?.cardSidebar.$el.querySelector('.app-sidebar-header__mainname')?.focus() |
|
0 commit comments