From e573decdb02de6182aacb9a824b5c6630b1c3283 Mon Sep 17 00:00:00 2001 From: christianbeeznst Date: Fri, 8 Mar 2024 13:05:33 -0500 Subject: [PATCH 1/4] Minor: Fix query error typo --- public/main/inc/lib/statistics.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/main/inc/lib/statistics.lib.php b/public/main/inc/lib/statistics.lib.php index f060f8f1e9..80de9205f1 100644 --- a/public/main/inc/lib/statistics.lib.php +++ b/public/main/inc/lib/statistics.lib.php @@ -163,7 +163,7 @@ class Statistics } else { $sql = "SELECT COUNT(DISTINCT(id)) AS number FROM $user_table - WHERE 1 = 1 AND active <> ".USER_SOFT_DELETED." AND $status_filter $active_filter"; + WHERE 1 = 1 AND active <> ".USER_SOFT_DELETED." $status_filter $active_filter"; if (isset($categoryCode)) { $categoryCode = Database::escape_string($categoryCode); $status_filter = isset($status) ? ' AND status = '.intval($status) : ''; From 48ebf329e256a5efa3c195a7ea00fb029097c85f Mon Sep 17 00:00:00 2001 From: christianbeeznst Date: Fri, 8 Mar 2024 18:12:01 -0500 Subject: [PATCH 2/4] Course: Implement course creation process for trainers --- assets/css/scss/atoms/_checkbox.scss | 2 +- assets/css/scss/atoms/_dropdown.scss | 9 +- .../basecomponents/BaseAutocomplete.vue | 10 +- .../basecomponents/BaseDropdown.vue | 8 +- .../basecomponents/BaseInputTags.vue | 58 ++ .../basecomponents/BaseInputText.vue | 34 +- .../basecomponents/BaseMultiSelect.vue | 67 ++ .../components/basecomponents/BaseToolbar.vue | 19 +- assets/vue/components/course/Form.vue | 340 +++++----- assets/vue/layouts/MyCourses.vue | 7 + assets/vue/services/courseService.js | 38 +- assets/vue/views/course/Create.vue | 87 +-- public/main/forum/forumfunction.inc.php | 10 +- public/main/inc/global.inc.php | 32 +- public/main/inc/lib/add_course.lib.inc.php | 601 ++++++++++-------- public/main/inc/lib/course.lib.php | 43 +- public/main/inc/lib/plugin.class.php | 43 +- .../Controller/CourseController.php | 105 +++ .../Repository/CourseCategoryRepository.php | 2 +- .../Repository/Node/CourseRepository.php | 18 +- 20 files changed, 933 insertions(+), 600 deletions(-) create mode 100644 assets/vue/components/basecomponents/BaseInputTags.vue create mode 100644 assets/vue/components/basecomponents/BaseMultiSelect.vue diff --git a/assets/css/scss/atoms/_checkbox.scss b/assets/css/scss/atoms/_checkbox.scss index 75e8557a91..e340cf6e2e 100644 --- a/assets/css/scss/atoms/_checkbox.scss +++ b/assets/css/scss/atoms/_checkbox.scss @@ -2,7 +2,7 @@ @apply h-4 w-4; .p-checkbox-box { - @apply border border-solid border-gray-50 bg-white h-4 rounded w-4 transition-none; + @apply border border-solid border-gray-50 bg-white h-4 rounded w-4 transition-none invisible; .p-checkbox-icon { @apply text-caption font-semibold text-white; diff --git a/assets/css/scss/atoms/_dropdown.scss b/assets/css/scss/atoms/_dropdown.scss index 08dcca0093..19aa3b17ce 100644 --- a/assets/css/scss/atoms/_dropdown.scss +++ b/assets/css/scss/atoms/_dropdown.scss @@ -1,4 +1,4 @@ -.p-dropdown { +.p-dropdown, .p-multiselect { @apply border border-support-3 bg-white rounded-lg transition w-full duration-200 hover:border-primary hover:text-gray-90 hover:outline-0 hover:outline-none; @@ -8,7 +8,7 @@ } } - .p-dropdown-label { + .p-dropdown-label, .p-multiselect-label { @apply bg-transparent border-none focus:outline-0 focus:outline-none; @@ -29,7 +29,7 @@ } } -.p-dropdown-panel { +.p-dropdown-panel, .p-autocomplete-panel, .p-multiselect-panel { @apply bg-white rounded-lg text-gray-90 shadow-lg; .p-dropdown-header { @@ -88,4 +88,7 @@ } } } +.p-multiselect-label-container { + @apply p-2; +} diff --git a/assets/vue/components/basecomponents/BaseAutocomplete.vue b/assets/vue/components/basecomponents/BaseAutocomplete.vue index 4a2de10ea1..06bd4bb145 100644 --- a/assets/vue/components/basecomponents/BaseAutocomplete.vue +++ b/assets/vue/components/basecomponents/BaseAutocomplete.vue @@ -86,8 +86,12 @@ const baseModel = ref([]) const suggestions = ref([]) const onComplete = async (event) => { - const members = await props.search(event.query) - - suggestions.value = members.length > 0 ? members : [] + try { + const members = await props.search(event.query) + suggestions.value = members && members.length ? members : [] + } catch (error) { + console.error('Error during onComplete:', error) + suggestions.value = [] + } } diff --git a/assets/vue/components/basecomponents/BaseDropdown.vue b/assets/vue/components/basecomponents/BaseDropdown.vue index 6c07108563..3a5a8a6c53 100644 --- a/assets/vue/components/basecomponents/BaseDropdown.vue +++ b/assets/vue/components/basecomponents/BaseDropdown.vue @@ -15,11 +15,12 @@