-
+
{{ __(label) }}
+
+ {{ __(description) }}
+
-
- {{ __(description) }}
-
diff --git a/frontend/src/components/Settings/SettingFields.vue b/frontend/src/components/Settings/SettingFields.vue
index 7dfacb3d..11a9a3f3 100644
--- a/frontend/src/components/Settings/SettingFields.vue
+++ b/frontend/src/components/Settings/SettingFields.vue
@@ -20,6 +20,7 @@
:doctype="field.doctype"
:label="__(field.label)"
:description="__(field.description)"
+ :required="field.reqd"
/>
@@ -115,6 +116,7 @@
:rows="field.rows"
:options="field.options"
:description="field.description"
+ :required="field.reqd"
placeholder=""
/>
diff --git a/frontend/src/components/Settings/Settings.vue b/frontend/src/components/Settings/Settings.vue
index 0365ed02..4275642d 100644
--- a/frontend/src/components/Settings/Settings.vue
+++ b/frontend/src/components/Settings/Settings.vue
@@ -76,6 +76,7 @@ import PaymentGateways from '@/components/Settings/PaymentGateways.vue'
import Coupons from '@/components/Settings/Coupons/Coupons.vue'
import Transactions from '@/components/Settings/Transactions/Transactions.vue'
import ZoomSettings from '@/components/Settings/ZoomSettings.vue'
+import GoogleMeetSettings from '@/components/Settings/GoogleMeetSettings.vue'
import Badges from '@/components/Settings/Badges.vue'
const show = defineModel()
@@ -268,34 +269,6 @@ const tabsStructure = computed(() => {
},
],
},
- ],
- },
- {
- label: 'Lists',
- hideLabel: false,
- items: [
- {
- label: 'Members',
- description:
- 'Add new members or manage roles and permissions of existing members',
- icon: 'UserRoundPlus',
- template: markRaw(Members),
- },
- {
- label: 'Evaluators',
- description: '',
- icon: 'UserCheck',
- description:
- 'Add new evaluators or check the slots existing evaluators',
- template: markRaw(Evaluators),
- },
- {
- label: 'Zoom Accounts',
- description:
- 'Manage zoom accounts to conduct live classes from batches',
- icon: 'Video',
- template: markRaw(ZoomSettings),
- },
{
label: 'Badges',
description:
@@ -317,6 +290,27 @@ const tabsStructure = computed(() => {
},
],
},
+ {
+ label: 'Users',
+ hideLabel: false,
+ items: [
+ {
+ label: 'Members',
+ description:
+ 'Add new members or manage roles and permissions of existing members',
+ icon: 'User',
+ template: markRaw(Members),
+ },
+ {
+ label: 'Evaluators',
+ description: '',
+ icon: 'UserCircle2',
+ description:
+ 'Add new evaluators or check the slots of existing evaluators',
+ template: markRaw(Evaluators),
+ },
+ ],
+ },
{
label: 'Payment',
hideLabel: false,
@@ -387,6 +381,26 @@ const tabsStructure = computed(() => {
},
],
},
+ {
+ label: 'Conferencing',
+ hideLabel: false,
+ items: [
+ {
+ label: 'Zoom',
+ description:
+ 'Manage zoom accounts to conduct live classes from batches',
+ icon: 'Video',
+ template: markRaw(ZoomSettings),
+ },
+ {
+ label: 'Google Meet',
+ description:
+ 'Manage Google Meet accounts to conduct live classes from batches',
+ icon: 'Presentation',
+ template: markRaw(GoogleMeetSettings),
+ },
+ ],
+ },
{
label: 'Customize',
hideLabel: false,
@@ -394,6 +408,8 @@ const tabsStructure = computed(() => {
{
label: 'Branding',
icon: 'Blocks',
+ description:
+ 'Customize the brand name and logo to make the application your own',
template: markRaw(BrandSettings),
sections: [
{
@@ -482,6 +498,8 @@ const tabsStructure = computed(() => {
{
label: 'Signup',
icon: 'LogIn',
+ description:
+ 'Manage the settings related to user signup and registration',
sections: [
{
columns: [
@@ -517,6 +535,8 @@ const tabsStructure = computed(() => {
{
label: 'SEO',
icon: 'Search',
+ description:
+ 'Manage the SEO settings to improve your website ranking on search engines',
sections: [
{
columns: [
diff --git a/frontend/src/components/Settings/Transactions/TransactionList.vue b/frontend/src/components/Settings/Transactions/TransactionList.vue
index 305b24a8..0ae1c3a7 100644
--- a/frontend/src/components/Settings/Transactions/TransactionList.vue
+++ b/frontend/src/components/Settings/Transactions/TransactionList.vue
@@ -2,7 +2,7 @@
-
+
{{ __(label) }}
diff --git a/frontend/src/pages/Batches/BatchForm.vue b/frontend/src/pages/Batches/BatchForm.vue
index 4b1b5b9b..317030d6 100644
--- a/frontend/src/pages/Batches/BatchForm.vue
+++ b/frontend/src/pages/Batches/BatchForm.vue
@@ -165,24 +165,48 @@
"
/>
-
-
-
-
+
+
+
+
+
+
+ {{ __('Conferencing') }}
+
+
+
+
+
@@ -463,14 +487,31 @@ const trashBatch = (close) => {
})
}
+const conferencingOptions = computed(() => {
+ return [
+ {
+ label: '',
+ value: '',
+ },
+ {
+ label: __('Zoom'),
+ value: 'Zoom',
+ },
+ {
+ label: __('Google Meet'),
+ value: 'Google Meet',
+ },
+ ]
+})
+
const mediumOptions = computed(() => {
return [
{
- label: 'Online',
+ label: __('Online'),
value: 'Online',
},
{
- label: 'Offline',
+ label: __('Offline'),
value: 'Offline',
},
]
diff --git a/frontend/src/pages/Batches/components/LiveClass.vue b/frontend/src/pages/Batches/components/LiveClass.vue
index 0d3fdb42..466bb08d 100644
--- a/frontend/src/pages/Batches/components/LiveClass.vue
+++ b/frontend/src/pages/Batches/components/LiveClass.vue
@@ -1,14 +1,14 @@
{{
__(
- 'Link a Zoom account to this batch from the Settings tab to create live classes'
+ 'Please select a conferencing provider and add an account to the batch to create live classes.'
)
}}
@@ -64,12 +64,12 @@
@@ -165,6 +167,8 @@ const liveClasses = createListResource({
'start_url',
'join_url',
'owner',
+ 'conferencing_provider',
+ 'batch_name',
],
orderBy: 'date',
auto: true,
@@ -174,9 +178,20 @@ const openLiveClassModal = () => {
showLiveClassModal.value = true
}
+const hasProviderAccount = () => {
+ const data = props.batch.data
+ if (data?.conferencing_provider === 'Zoom' && data?.zoom_account) return true
+ if (
+ data?.conferencing_provider === 'Google Meet' &&
+ data?.google_meet_account
+ )
+ return true
+ return false
+}
+
const canCreateClass = () => {
if (readOnlyMode) return false
- if (!props.batch.data?.zoom_account) return false
+ if (!hasProviderAccount()) return false
return isAdmin()
}
@@ -209,8 +224,8 @@ const hasClassEnded = (cls) => {
const openAttendanceModal = (cls) => {
if (!isAdmin()) return
if (cls.attendees <= 0) return
- showAttendance.value = true
attendanceFor.value = cls
+ showAttendance.value = true
}