Skip to content

Commit 94937a6

Browse files
marcellamakirtibbles
authored andcommitted
Update the modal and manage the metadata keys and translation
1 parent 4069f69 commit 94937a6

File tree

2 files changed

+113
-16
lines changed

2 files changed

+113
-16
lines changed

contentcuration/contentcuration/frontend/channelEdit/components/edit/EditModal.vue

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@
127127
/>
128128
<InheritAncestorMetadataModal
129129
:contentNode="createMode ? { parent: $route.params.nodeId } : null"
130+
@inherit="indicateInheritableMetadata"
130131
/>
131132
</VDialog>
132133

@@ -255,6 +256,7 @@
255256
promptFailed: false,
256257
listElevated: false,
257258
storagePoll: null,
259+
parentNodeMetadataToInherit: {},
258260
};
259261
},
260262
computed: {
@@ -429,6 +431,9 @@
429431
scroll(e) {
430432
this.listElevated = e.target.scrollTop > 0;
431433
},
434+
indicateInheritableMetadata(args) {
435+
this.parentNodeMetadataToInherit = args;
436+
},
432437
433438
/* Button actions */
434439
handleClose() {
@@ -476,6 +481,10 @@
476481
[ContentKindLearningActivityDefaults[kind]]: true,
477482
};
478483
}
484+
if (Object.keys(this.parentNodeMetadataToInherit).length) {
485+
console.log('Inheriting metadata', this.parentNodeMetadataToInherit);
486+
payload = { ...this.parentNodeMetadataToInherit };
487+
}
479488
return this.createContentNode({
480489
kind,
481490
parent: this.$route.params.nodeId,

contentcuration/contentcuration/frontend/channelEdit/components/edit/InheritAncestorMetadataModal.vue

Lines changed: 104 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,45 @@
77
:submitText="$tr('continueAction')"
88
:cancelText="$tr('cancelAction')"
99
@submit="handleContinue"
10-
@cancel="close"
10+
@cancel="closed = true"
1111
>
12-
<div class="inherit-metadata-dialog">
13-
<p class="inherit-metadata-dialog__description">
12+
<div>
13+
<p v-if="parentHasInheritableMetadata">
1414
{{ $tr('inheritMetadataDescription') }}
1515
</p>
16-
<div class="inherit-metadata-dialog-checkboxes">
16+
<div>
1717
<KCheckbox
18-
v-for="item, key in inheritableMetadataItems"
19-
:key="key"
20-
:checked="checks[key]"
21-
:label="generateLabel(key)"
22-
@change="checks[key] = !checks[key]"
18+
v-if="!!inheritableMetadataItems.categories"
19+
key="categories"
20+
:label="generateInheritableCategories(inheritableMetadataItems.categories)"
21+
:checked="checks['categories']"
22+
@change="checks['categories'] = !checks['categories']"
2323
/>
24+
<KCheckbox
25+
v-if="!!inheritableMetadataItems.grade_levels"
26+
key="levels"
27+
:checked="checks['grade_levels']"
28+
:label="generateInheritableLevels(inheritableMetadataItems.grade_levels)"
29+
@change="checks['grade_levels'] = !checks['grade_levels']"
30+
/>
31+
<KCheckbox
32+
v-if="!!inheritableMetadataItems.learner_needs"
33+
key="needs"
34+
:checked="checks['learner_needs']"
35+
:label="generateInheritableLearnerNeeds(inheritableMetadataItems.learner_needs)"
36+
@change="checks['learner_needs'] = !checks['learner_needs']"
37+
/>
38+
<p v-if="!!inheritableMetadataItems.language" class="language-description">
39+
{{ $tr('updateLanguage') }}
40+
</p>
41+
<KCheckbox
42+
v-if="!!inheritableMetadataItems.language"
43+
key="language"
44+
:label="generateInheritableLanguage(inheritableMetadataItems.language)"
45+
:checked="checks['language']"
46+
@change="checks['language'] = !checks['language']"
47+
/>
48+
2449
</div>
2550
<div class="divider"></div>
2651
<KCheckbox
@@ -40,13 +65,19 @@
4065
4166
import { mapActions } from 'vuex';
4267
import isEmpty from 'lodash/isEmpty';
68+
import camelCase from 'lodash/camelCase';
4369
import isUndefined from 'lodash/isUndefined';
4470
import { ContentNode } from 'shared/data/resources';
71+
import { ContentLevels, ResourcesNeededTypes, Categories } from 'shared/constants';
72+
import LanguagesMap from 'shared/leUtils/Languages';
73+
import { metadataTranslationMixin } from 'shared/mixins';
4574
4675
const inheritableFields = ['categories', 'grade_levels', 'language', 'learner_needs'];
4776
4877
export default {
4978
name: 'InheritAncestorMetadataModal',
79+
mixins: [metadataTranslationMixin],
80+
5081
props: {
5182
contentNode: {
5283
type: Object,
@@ -237,30 +268,83 @@
237268
}
238269
this.closed = true;
239270
},
240-
generateLabel(item) {
241-
// TO DO generate label with all of the metadata le-consts, etc.
242-
return `${item}`;
271+
generateInheritableCategories(categories) {
272+
let categoryTranslationKeys = [];
273+
Object.keys(categories).forEach(id => {
274+
categoryTranslationKeys.push(Object.keys(Categories).find(key => Categories[key] === id));
275+
});
276+
categoryTranslationKeys = categoryTranslationKeys
277+
.map(key => {
278+
return this.translateMetadataString(camelCase(key));
279+
})
280+
.join(', ');
281+
return this.$tr('categories', { categories: categoryTranslationKeys });
282+
},
283+
generateInheritableLearnerNeeds(learnerNeeds) {
284+
let learnerNeedsTranslationKeys = [];
285+
Object.keys(learnerNeeds).forEach(id => {
286+
learnerNeedsTranslationKeys.push(
287+
Object.keys(ResourcesNeededTypes).find(key => ResourcesNeededTypes[key] === id)
288+
);
289+
});
290+
learnerNeedsTranslationKeys = learnerNeedsTranslationKeys
291+
.map(key => {
292+
return this.translateMetadataString(camelCase(key));
293+
})
294+
.join(', ');
295+
return this.$tr('learnerNeeds', { learnerNeeds: learnerNeedsTranslationKeys });
243296
},
244-
close() {
245-
this.$emit('close');
297+
generateInheritableLevels(gradeLevels) {
298+
let gradeLevelsTranslationKeys = [];
299+
Object.keys(gradeLevels).forEach(id => {
300+
gradeLevelsTranslationKeys.push(
301+
Object.keys(ContentLevels).find(key => ContentLevels[key] === id)
302+
);
303+
});
304+
gradeLevelsTranslationKeys = gradeLevelsTranslationKeys
305+
.map(level => {
306+
let translationKey;
307+
if (level === 'PROFESSIONAL') {
308+
translationKey = 'specializedProfessionalTraining';
309+
} else if (level === 'WORK_SKILLS') {
310+
translationKey = 'allLevelsWorkSkills';
311+
} else if (level === 'BASIC_SKILLS') {
312+
translationKey = 'allLevelsBasicSkills';
313+
} else {
314+
translationKey = this.translateMetadataString(camelCase(level));
315+
}
316+
return translationKey;
317+
})
318+
.join(', ');
319+
return this.$tr('levels', { levels: gradeLevelsTranslationKeys });
320+
},
321+
322+
generateInheritableLanguage(parentLanguage) {
323+
const language = LanguagesMap.get(parentLanguage).native_name || parentLanguage;
324+
return this.$tr('language', { language: language });
246325
},
247326
},
248327
$trs: {
249328
applyResourceDetailsTitle: 'Apply resource details',
250329
/* eslint-disable kolibri/vue-no-unused-translations */
251330
applyResourceDetailsDescriptionUpload:
252-
'The folder `{folder}` has the following details. Select the details you want to apply to your upload.',
331+
'The folder `{folder}` has the following details. Select the details you want to apply to your upload. You can add edit these details and add additional resource information later.',
253332
applyResourceDetailsDescriptionImport:
254333
'The folder `{folder}` has the following details. Select the details you want to apply to the {resource, plural, one {resource}, other {resources}} you are importing.',
255334
applyResourceDetailsDescriptionMoving:
256335
'The folder `{folder}` has the following details. Select the details you want to apply to the {resource, plural, one {resource}, other {resources}} you are moving.',
257336
/* eslint-enable kolibri/vue-no-unused-translations */
258337
continueAction: 'Continue',
259338
cancelAction: 'Cancel',
260-
inheritMetadataDescription: 'Inherit metadata from the folder above',
339+
inheritMetadataDescription: 'Add metadata from the folder above',
340+
updateLanguage: 'Update language to match the folder above',
261341
doNotShowThisAgain: "Don't ask me about this folder again",
262342
doNotShowAgainDescription:
263343
'All future additions to this folder will have the selected information by default',
344+
language: 'Language: {language}',
345+
categories: 'Categories: {categories}',
346+
learnerNeeds: 'Learner needs: {learnerNeeds}',
347+
levels: 'Levels: {levels}',
264348
},
265349
};
266350
@@ -280,4 +364,8 @@
280364
color: #9e9e9e;
281365
}
282366
367+
.language-description {
368+
margin: 16px 0 8px;
369+
}
370+
283371
</style>

0 commit comments

Comments
 (0)