diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9670fdbf..929adbda 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,11 +34,11 @@ jobs: - name: setup python uses: actions/setup-python@v2 with: - python-version: '3.10' + python-version: '3.14' - name: setup node uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '24' check-latest: true - name: setup cache for bench uses: actions/cache@v4 diff --git a/.github/workflows/ui-tests.yml b/.github/workflows/ui-tests.yml index 84651bf1..40fba7cf 100644 --- a/.github/workflows/ui-tests.yml +++ b/.github/workflows/ui-tests.yml @@ -38,7 +38,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v4 with: - python-version: '3.11' + python-version: '3.14' - name: Check for valid Python & Merge Conflicts run: | @@ -50,7 +50,7 @@ jobs: - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 24 check-latest: true - name: Add to Hosts diff --git a/frontend/components.d.ts b/frontend/components.d.ts index 6dc3781d..2b0e68e0 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -42,6 +42,8 @@ declare module 'vue' { CodeEditor: typeof import('./src/components/Controls/CodeEditor.vue')['default'] CollapseSidebar: typeof import('./src/components/Icons/CollapseSidebar.vue')['default'] ColorSwatches: typeof import('./src/components/Controls/ColorSwatches.vue')['default'] + CommandPalette: typeof import('./src/components/CommandPalette/CommandPalette.vue')['default'] + CommandPaletteGroup: typeof import('./src/components/CommandPalette/CommandPaletteGroup.vue')['default'] Configuration: typeof import('./src/components/Sidebar/Configuration.vue')['default'] ContactUsEmail: typeof import('./src/components/ContactUsEmail.vue')['default'] CouponDetails: typeof import('./src/components/Settings/Coupons/CouponDetails.vue')['default'] diff --git a/frontend/package.json b/frontend/package.json index 4a7937b0..b64fe72a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -55,8 +55,9 @@ "@vitejs/plugin-vue": "5.0.3", "autoprefixer": "10.4.2", "postcss": "8.4.5", - "vite": "5.0.11", "tailwindcss": "^3.4.15", + "unplugin-auto-import": "^20.3.0", + "vite": "5.0.11", "vite-plugin-pwa": "0.15.0" }, "resolutions": { diff --git a/frontend/src/components/AssessmentPlugin.vue b/frontend/src/components/AssessmentPlugin.vue index f1253608..75e747c5 100644 --- a/frontend/src/components/AssessmentPlugin.vue +++ b/frontend/src/components/AssessmentPlugin.vue @@ -26,28 +26,51 @@ v-model="quiz" doctype="LMS Quiz" :label="__('Select a quiz')" + placeholder=" " :onCreate="(value, close) => redirectToForm()" /> - +
+ + + +
+ diff --git a/frontend/src/components/CommandPalette/CommandPaletteGroup.vue b/frontend/src/components/CommandPalette/CommandPaletteGroup.vue new file mode 100644 index 00000000..715b53ea --- /dev/null +++ b/frontend/src/components/CommandPalette/CommandPaletteGroup.vue @@ -0,0 +1,45 @@ + + diff --git a/frontend/src/components/CourseCard.vue b/frontend/src/components/CourseCard.vue index 34f2094e..0e63c036 100644 --- a/frontend/src/components/CourseCard.vue +++ b/frontend/src/components/CourseCard.vue @@ -152,21 +152,10 @@ const props = defineProps({ }) const getGradientColor = () => { - let theme = - localStorage.getItem('theme') == 'light' ? 'lightMode' : 'darkMode' + let theme = localStorage.getItem('theme') == 'dark' ? 'darkMode' : 'lightMode' let color = props.course.card_gradient?.toLowerCase() || 'blue' let colorMap = colors[theme][color] return `linear-gradient(to top right, black, ${colorMap[400]})` - /* return `bg-gradient-to-br from-${color}-100 via-${color}-200 to-${color}-400` */ - /* return `linear-gradient(to bottom right, ${colorMap[100]}, ${colorMap[400]})` */ - /* return `radial-gradient(ellipse at 80% 20%, black 20%, ${colorMap[500]} 100%)` */ - /* return `radial-gradient(ellipse at 30% 70%, black 50%, ${colorMap[500]} 100%)` */ - /* return `radial-gradient(ellipse at 80% 20%, ${colorMap[100]} 0%, ${colorMap[300]} 50%, ${colorMap[500]} 100%)` */ - /* return `conic-gradient(from 180deg at 50% 50%, ${colorMap[100]} 0%, ${colorMap[200]} 50%, ${colorMap[400]} 100%)` */ - /* return `linear-gradient(135deg, ${colorMap[100]}, ${colorMap[300]}), linear-gradient(120deg, rgba(255,255,255,0.4) 0%, transparent 60%) ` */ - /* return `radial-gradient(circle at 20% 30%, ${colorMap[100]} 0%, transparent 40%), - radial-gradient(circle at 80% 40%, ${colorMap[200]} 0%, transparent 50%), - linear-gradient(135deg, ${colorMap[300]} 0%, ${colorMap[400]} 100%);` */ } diff --git a/lms/templates/livecode/extension_header.html b/lms/templates/livecode/extension_header.html deleted file mode 100644 index 1499d750..00000000 --- a/lms/templates/livecode/extension_header.html +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/lms/templates/reviews.html b/lms/templates/reviews.html deleted file mode 100644 index e6c1a6be..00000000 --- a/lms/templates/reviews.html +++ /dev/null @@ -1,167 +0,0 @@ -{% if not course.upcoming %} -
- {% set reviews = get_reviews(course.name) %} -
{{ _("Reviews") }}
- - - {% if avg_rating %} -
-
-
- {{ frappe.utils.flt(avg_rating, frappe.get_system_settings("float_precision") or 3) }} -
- - -
-
- {% for i in [1, 2, 3, 4, 5] %} - - - - {% endfor %} -
-
- -
{{ reviews | length }} {{ _("ratings") }}
- - -
- {% include "lms/templates/reviews_cta.html" %} -
-
- - -
- {% set sorted_reviews = get_sorted_reviews(course.name) %} -
- {% for review in sorted_reviews %} -
-
- {{ frappe.utils.cint(review) }} {{ _("stars") }} -
-
-
- {{ sorted_reviews[review] }} {{ _("Complete") }} -
-
-
{{ frappe.utils.cint(sorted_reviews[review]) }}%
-
- {% endfor %} -
-
- {% endif %} - - - {% if reviews | length %} -
- {% for review in reviews %} -
-
-
- {{ widgets.Avatar(member=review.owner_details, avatar_class="avatar-medium") }} -
-
-
- - - {{ review.owner_details.full_name }} - - -
- {{ review.creation }} -
-
-
- {% for i in [1, 2, 3, 4, 5] %} - - - - {% endfor %} -
-
-
-
{{ review.review }}
-
- {% if loop.index != reviews | length %} -
- {% endif %} - {% endfor %} -
- - - {% else %} -
- -
-
{{ _("Review the course") }}
-
{{ _("Help us improve our course material.") }}
-
- {% include "lms/templates/reviews_cta.html" %} -
-
-
- {% endif %} -
- - - -{% endif %} diff --git a/lms/templates/reviews_cta.html b/lms/templates/reviews_cta.html deleted file mode 100644 index f10250ae..00000000 --- a/lms/templates/reviews_cta.html +++ /dev/null @@ -1,9 +0,0 @@ -{% if membership and is_eligible_to_review(course.name) %} - - {{ _("Write a review") }} - -{% elif not is_instructor and frappe.session.user == "Guest" %} - - {{ _("Write a review") }} - -{% endif %} diff --git a/pyproject.toml b/pyproject.toml index e0ffb3de..3159040f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,8 +11,8 @@ dependencies = [ # core dependencies "websocket_client~=1.6.4", "markdown~=3.5.1", - "beautifulsoup4~=4.13.4", - "lxml~=4.9.3", + "beautifulsoup4>=4.12,<4.14", + "lxml~=6.0.2", "cairocffi==1.5.1", "razorpay~=1.4.1", "fuzzywuzzy~=0.18.0",