Skip to content

Commit 7d2aaec

Browse files
committed
add to current topic
1 parent 8c8730d commit 7d2aaec

3 files changed

Lines changed: 132 additions & 5 deletions

File tree

contentcuration/contentcuration/frontend/channelEdit/views/CurrentTopicView.vue

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,56 @@
55
fluid
66
class="ma-0 main pa-0 panel"
77
>
8+
<div
9+
v-if="canEdit && !announcementDismissed"
10+
class="recommendations-announcement"
11+
:style="{
12+
backgroundColor: $themePalette.blue.v_100,
13+
}"
14+
>
15+
<div
16+
class="recommendations-announcement-icon-wrapper"
17+
:style="{
18+
backgroundColor: $themePalette.blue.v_200,
19+
}"
20+
>
21+
<KIcon
22+
icon="library"
23+
class="recommendations-announcement-icon"
24+
:color="$themePalette.white"
25+
:style="{
26+
backgroundColor: $themePalette.blue.v_400,
27+
}"
28+
/>
29+
</div>
30+
<div class="recommendations-announcement-content">
31+
<div>
32+
<h2>
33+
{{ searchRecommendationsStrings.trySearchRecommendationsHeader$() }}
34+
</h2>
35+
<p>
36+
{{ searchRecommendationsStrings.trySearchRecommendationsText$() }}
37+
</p>
38+
</div>
39+
<KRouterLink
40+
v-if="canEdit"
41+
appearance="flat-button"
42+
:primary="true"
43+
:to="importFromChannelsRoute"
44+
class="recommendations-announcement-cta"
45+
@click="trackClickEvent('View recommendations')"
46+
>
47+
{{ searchRecommendationsStrings.viewRecommendationsButton$() }}
48+
</KRouterLink>
49+
</div>
50+
<KIconButton
51+
icon="close"
52+
:tooltip="searchRecommendationsStrings.closeAction$()"
53+
class="recommendations-announcement-dismiss"
54+
@click="dismissAnnouncement"
55+
/>
56+
</div>
57+
858
<!-- Breadcrumbs -->
959
<VToolbar
1060
dense
@@ -306,6 +356,7 @@
306356
import { DraggableTypes, DropEffect } from 'shared/mixins/draggable/constants';
307357
import { DraggableFlags } from 'shared/vuex/draggablePlugin/module/constants';
308358
import DraggableRegion from 'shared/views/draggable/DraggableRegion';
359+
import { searchRecommendationsStrings } from 'shared/strings/searchRecommendationsStrings';
309360
310361
export default {
311362
name: 'CurrentTopicView',
@@ -322,6 +373,9 @@
322373
InheritAncestorMetadataModal,
323374
},
324375
mixins: [titleMixin, routerMixin],
376+
setup() {
377+
return { searchRecommendationsStrings };
378+
},
325379
props: {
326380
topicId: {
327381
type: String,
@@ -335,6 +389,8 @@
335389
},
336390
data() {
337391
return {
392+
announcementDismissed:
393+
localStorage.getItem('recommendations-announcement-dismissed') === 'true',
338394
loadingAncestors: false,
339395
elevated: false,
340396
moveModalOpen: false,
@@ -650,6 +706,10 @@
650706
]),
651707
...mapMutations('contentNode', ['CLEAR_INHERITING_NODES']),
652708
...mapActions('clipboard', ['copyAll']),
709+
dismissAnnouncement() {
710+
localStorage.setItem('recommendations-announcement-dismissed', 'true');
711+
this.announcementDismissed = true;
712+
},
653713
clearSelections() {
654714
this.selected = [];
655715
},
@@ -1075,4 +1135,58 @@
10751135
flex-shrink: 0;
10761136
}
10771137
1138+
.recommendations-announcement {
1139+
display: flex;
1140+
gap: 20px;
1141+
align-items: flex-start;
1142+
padding: 20px;
1143+
margin: 24px 36px;
1144+
border-radius: 4px;
1145+
1146+
.recommendations-announcement-content {
1147+
display: flex;
1148+
flex: 1;
1149+
flex-direction: column;
1150+
align-items: flex-end;
1151+
1152+
p {
1153+
margin: 0;
1154+
}
1155+
}
1156+
1157+
.recommendations-announcement-cta {
1158+
margin-top: 12px;
1159+
}
1160+
1161+
.recommendations-announcement-icon-wrapper {
1162+
display: flex;
1163+
flex-shrink: 0;
1164+
align-items: center;
1165+
justify-content: center;
1166+
width: 96px;
1167+
height: 96px;
1168+
border-radius: 2px;
1169+
1170+
.recommendations-announcement-icon {
1171+
width: 40px;
1172+
height: 40px;
1173+
padding: 6px;
1174+
border-radius: 50%;
1175+
}
1176+
1177+
.recommendations-button {
1178+
align-items: flex-end;
1179+
}
1180+
}
1181+
1182+
h2 {
1183+
font-size: 18px;
1184+
}
1185+
1186+
.recommendations-announcement-dismiss {
1187+
flex-shrink: 0;
1188+
align-self: flex-start;
1189+
}
1190+
}
1191+
10781192
</style>

contentcuration/contentcuration/frontend/channelList/views/Channel/StudioChannelsPage/index.vue

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@
2424
</div>
2525
<div>
2626
<h2>
27-
{{ $tr('trySearchRecommendationsHeader') }}
27+
{{ searchRecommendationsStrings.trySearchRecommendationsHeader$() }}
2828
</h2>
2929
<p>
30-
{{ $tr('trySearchRecommendationsText') }}
30+
{{ searchRecommendationsStrings.trySearchRecommendationsText$() }}
3131
</p>
3232
</div>
3333
</div>
@@ -86,6 +86,7 @@
8686
import useKResponsiveWindow from 'kolibri-design-system/lib/composables/useKResponsiveWindow';
8787
import ChannelInvitation from '../ChannelInvitation';
8888
import StudioRaisedBox from 'shared/views/StudioRaisedBox';
89+
import { searchRecommendationsStrings } from 'shared/strings/searchRecommendationsStrings';
8990
9091
export default {
9192
name: 'StudioChannelsPage',
@@ -134,6 +135,7 @@
134135
channelsMaxWidthStyle,
135136
invitationsMaxWidthStyle,
136137
skeletonsConfig,
138+
searchRecommendationsStrings,
137139
};
138140
},
139141
props: {
@@ -149,9 +151,6 @@
149151
$trs: {
150152
noChannelsFound: 'No channels found',
151153
invitations: 'You have {count, plural,\n =1 {# invitation}\n other {# invitations}}',
152-
trySearchRecommendationsHeader: "Try our new 'Recommendations' feature!",
153-
trySearchRecommendationsText:
154-
"Based on the title and descriptions of your folders, we'll suggest content from the Kolibri Library. Choose 'Import from channels' in any channel folder to see your recommendations.",
155154
},
156155
};
157156
@@ -172,6 +171,7 @@
172171
}
173172
174173
.invitations {
174+
margin-top: 24px; // added for space between search recs announcement and invitations box
175175
margin-bottom: 24px;
176176
}
177177

contentcuration/contentcuration/frontend/shared/strings/searchRecommendationsStrings.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
import { createTranslator } from 'shared/i18n';
22

33
export const searchRecommendationsStrings = createTranslator('SearchRecommendationsStrings', {
4+
trySearchRecommendationsHeader: {
5+
message: "Try our new 'Recommendations' feature!",
6+
context: 'Header for a banner announcing the new recommendations feature',
7+
},
8+
trySearchRecommendationsText: {
9+
message:
10+
"Based on the title and descriptions of your folders, we'll suggest content from the Kolibri Library. Choose 'Import from channels' in any channel folder to see your recommendations.",
11+
context: 'Body text for a banner announcing the new recommendations feature',
12+
},
13+
viewRecommendationsButton: {
14+
message: 'View recommendations',
15+
context: 'Label for a button that takes the user to the recommendations feature',
16+
},
417
aboutRecommendationsText: {
518
message: 'About recommendations',
619
context: 'A title that introduces how the recommendation system works',

0 commit comments

Comments
 (0)