Skip to content

Commit 0f127c7

Browse files
committed
Merge branch 'master' of github.com:chamilo/chamilo-lms
2 parents f6ba1e9 + 73e11eb commit 0f127c7

19 files changed

Lines changed: 20244 additions & 192 deletions

File tree

assets/vue/components/course/Form.vue

Lines changed: 50 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,6 @@
4646
option-label="name"
4747
option-value="id"
4848
/>
49-
<BaseCheckbox
50-
id="demo-content"
51-
v-model="fillDemoContent"
52-
:label="t('Fill with demo content')"
53-
name=""
54-
/>
55-
<!--BaseAutocomplete
56-
id="template"
57-
v-model="courseTemplate"
58-
:label="t('Course template')"
59-
:search="searchTemplates"
60-
/-->
6149
</div>
6250
<!-- Form Footer -->
6351
<div class="form-footer">
@@ -83,20 +71,32 @@ import { onMounted, ref, nextTick } from "vue"
8371
import BaseInputText from "../basecomponents/BaseInputText.vue"
8472
import BaseAdvancedSettingsButton from "../basecomponents/BaseAdvancedSettingsButton.vue"
8573
import BaseSelect from "../basecomponents/BaseSelect.vue"
86-
import BaseCheckbox from "../basecomponents/BaseCheckbox.vue"
8774
import BaseButton from "../basecomponents/BaseButton.vue"
8875
import { useRouter } from "vue-router"
8976
import courseService from "../../services/courseService"
9077
import languageService from "../../services/languageService"
9178
import BaseMultiSelect from "../basecomponents/BaseMultiSelect.vue"
9279
import { useI18n } from "vue-i18n"
9380
94-
const { t } = useI18n()
81+
const props = defineProps({
82+
values: {
83+
type: Object,
84+
default: () => ({}),
85+
},
86+
errors: {
87+
type: [Array, Object, null],
88+
default: null,
89+
},
90+
})
91+
92+
const emit = defineEmits(["submit"])
93+
94+
const { t, locale } = useI18n()
95+
9596
const courseName = ref("")
9697
const courseCategory = ref([])
9798
const courseCode = ref("")
9899
const courseLanguage = ref(null)
99-
const fillDemoContent = ref(false)
100100
const courseTemplate = ref(null)
101101
const showAdvancedSettings = ref(false)
102102
const router = useRouter()
@@ -111,7 +111,38 @@ const isCourseNameInvalid = ref(false)
111111
112112
const formSubmitted = ref(false)
113113
114-
const emit = defineEmits(["submit"])
114+
function normalizeLocale(value) {
115+
return String(value || "")
116+
.trim()
117+
.replace("-", "_")
118+
.toLowerCase()
119+
}
120+
121+
function resolveDefaultLanguageId(options, desiredLocale) {
122+
// Options are { name, id } where id is language.isocode (e.g. "en", "fr", "es")
123+
const desired = normalizeLocale(desiredLocale)
124+
const base = desired.split("_")[0] // e.g. "en_US" -> "en"
125+
126+
const byExact = options.find((opt) => normalizeLocale(opt.id) === desired)
127+
if (byExact) return byExact.id
128+
129+
const byBase = options.find((opt) => normalizeLocale(opt.id) === base)
130+
if (byBase) return byBase.id
131+
132+
return null
133+
}
134+
135+
function applyDefaultLanguageIfEmpty() {
136+
if (courseLanguage.value) return
137+
if (!languageOptions.value || languageOptions.value.length === 0) return
138+
139+
const desired = props.values?.language || locale.value
140+
const resolvedId = resolveDefaultLanguageId(languageOptions.value, desired)
141+
142+
if (resolvedId) {
143+
courseLanguage.value = resolvedId
144+
}
145+
}
115146
116147
const validateCourseCode = () => {
117148
const pattern = /^[a-zA-Z0-9]*$/
@@ -147,7 +178,7 @@ const submitForm = () => {
147178
code: courseCode.value,
148179
language: courseLanguage.value,
149180
template: courseTemplate.value ? courseTemplate.value.value : null,
150-
fillDemoContent: fillDemoContent.value,
181+
fillDemoContent: false,
151182
})
152183
}
153184
@@ -188,19 +219,13 @@ onMounted(async () => {
188219
name: language.originalName,
189220
id: language.isocode,
190221
}))
222+
// Apply default language after options are loaded
223+
applyDefaultLanguageIfEmpty()
191224
} catch (error) {
192225
// Keep messages in English
193226
console.error("Failed to load dropdown data", error)
194227
}
195228
})
196-
197-
const searchTemplates = async (query) => {
198-
if (query && query.length >= 3) {
199-
return courseService.searchTemplates(query)
200-
}
201-
return []
202-
}
203-
204229
const goBack = () => {
205230
router.go(-1)
206231
}

0 commit comments

Comments
 (0)