Merge pull request #1736 from pateljannat/pwa-customizations
feat: PWA Customizations
This commit is contained in:
3
frontend/components.d.ts
vendored
3
frontend/components.d.ts
vendored
@@ -86,11 +86,8 @@ declare module 'vue' {
|
|||||||
Notes: typeof import('./src/components/Notes/Notes.vue')['default']
|
Notes: typeof import('./src/components/Notes/Notes.vue')['default']
|
||||||
NotPermitted: typeof import('./src/components/NotPermitted.vue')['default']
|
NotPermitted: typeof import('./src/components/NotPermitted.vue')['default']
|
||||||
PageModal: typeof import('./src/components/Modals/PageModal.vue')['default']
|
PageModal: typeof import('./src/components/Modals/PageModal.vue')['default']
|
||||||
PaymentGateway: typeof import('./src/components/Settings/PaymentGateway.vue')['default']
|
|
||||||
PaymentGatewayDetails: typeof import('./src/components/Settings/PaymentGatewayDetails.vue')['default']
|
PaymentGatewayDetails: typeof import('./src/components/Settings/PaymentGatewayDetails.vue')['default']
|
||||||
PaymentGateways: typeof import('./src/components/Settings/PaymentGateways.vue')['default']
|
PaymentGateways: typeof import('./src/components/Settings/PaymentGateways.vue')['default']
|
||||||
PaymentSettings: typeof import('./src/components/Settings/PaymentSettings.vue')['default']
|
|
||||||
PaymentTransactions: typeof import('./src/components/Settings/PaymentTransactions.vue')['default']
|
|
||||||
Play: typeof import('./src/components/Icons/Play.vue')['default']
|
Play: typeof import('./src/components/Icons/Play.vue')['default']
|
||||||
ProgressBar: typeof import('./src/components/ProgressBar.vue')['default']
|
ProgressBar: typeof import('./src/components/ProgressBar.vue')['default']
|
||||||
Question: typeof import('./src/components/Modals/Question.vue')['default']
|
Question: typeof import('./src/components/Modals/Question.vue')['default']
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" href="{{ favicon }}" />
|
<link rel="icon" href="{{ favicon }}" />
|
||||||
|
<link rel="manifest" href="/api/method/lms.lms.api.get_pwa_manifest" />
|
||||||
<link rel="apple-touch-icon" href="public/manifest/apple-icon-180.png" />
|
<link rel="apple-touch-icon" href="public/manifest/apple-icon-180.png" />
|
||||||
<meta name="mobile-web-app-capable" content="yes" />
|
<meta name="mobile-web-app-capable" content="yes" />
|
||||||
<meta name="theme-color" content="#FFFFFF" media="(prefers-color-scheme: light)" />
|
<meta name="theme-color" content="#FFFFFF" media="(prefers-color-scheme: light)" />
|
||||||
|
|||||||
@@ -33,30 +33,7 @@ export default defineConfig({
|
|||||||
cleanupOutdatedCaches: true,
|
cleanupOutdatedCaches: true,
|
||||||
maximumFileSizeToCacheInBytes: 5 * 1024 * 1024,
|
maximumFileSizeToCacheInBytes: 5 * 1024 * 1024,
|
||||||
},
|
},
|
||||||
manifest: {
|
manifest: false,
|
||||||
display: 'standalone',
|
|
||||||
name: 'Learning',
|
|
||||||
short_name: 'Learning',
|
|
||||||
start_url: '/lms',
|
|
||||||
description:
|
|
||||||
'Easy to use, 100% open source Learning Management System',
|
|
||||||
theme_color: '#0f7159',
|
|
||||||
background_color: '#ffffff',
|
|
||||||
icons: [
|
|
||||||
{
|
|
||||||
src: '/assets/lms/frontend/manifest/manifest-icon-192.maskable.png',
|
|
||||||
sizes: '192x192',
|
|
||||||
type: 'image/png',
|
|
||||||
purpose: 'maskable any',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
src: '/assets/lms/frontend/manifest/manifest-icon-512.maskable.png',
|
|
||||||
sizes: '512x512',
|
|
||||||
type: 'image/png',
|
|
||||||
purpose: 'maskable any',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
server: {
|
server: {
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import re
|
|||||||
import shutil
|
import shutil
|
||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
import zipfile
|
import zipfile
|
||||||
from dataclasses import fields
|
|
||||||
from xml.dom.minidom import parseString
|
from xml.dom.minidom import parseString
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
@@ -26,6 +25,7 @@ from frappe.utils import (
|
|||||||
get_datetime,
|
get_datetime,
|
||||||
now,
|
now,
|
||||||
)
|
)
|
||||||
|
from frappe.utils.response import Response
|
||||||
|
|
||||||
from lms.lms.doctype.course_lesson.course_lesson import save_progress
|
from lms.lms.doctype.course_lesson.course_lesson import save_progress
|
||||||
from lms.lms.utils import get_average_rating, get_lesson_count
|
from lms.lms.utils import get_average_rating, get_lesson_count
|
||||||
@@ -1647,3 +1647,26 @@ def get_progress_distribution(progressList):
|
|||||||
]
|
]
|
||||||
|
|
||||||
return distribution
|
return distribution
|
||||||
|
|
||||||
|
|
||||||
|
@frappe.whitelist(allow_guest=True)
|
||||||
|
def get_pwa_manifest():
|
||||||
|
title = frappe.db.get_single_value("Website Settings", "app_name") or "Frappe Learning"
|
||||||
|
banner_image = frappe.db.get_single_value("Website Settings", "banner_image")
|
||||||
|
|
||||||
|
manifest = {
|
||||||
|
"name": title,
|
||||||
|
"short_name": title,
|
||||||
|
"description": "Easy to use, 100% open source Learning Management System",
|
||||||
|
"start_url": "/lms",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": banner_image or "/assets/lms/frontend/manifest/manifest-icon-192.maskable.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png",
|
||||||
|
"purpose": "maskable any",
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
return Response(json.dumps(manifest), status=200, content_type="application/manifest+json")
|
||||||
|
|||||||
Reference in New Issue
Block a user