diff --git a/cypress/e2e/course_creation.cy.js b/cypress/e2e/course_creation.cy.js
index 8d6f60f0..b8bdd28e 100644
--- a/cypress/e2e/course_creation.cy.js
+++ b/cypress/e2e/course_creation.cy.js
@@ -5,7 +5,7 @@ describe("Course Creation", () => {
cy.visit("/lms/courses");
// Create a course
- cy.get("a").contains("New Course").click();
+ cy.get("a").contains("New").click();
cy.wait(1000);
cy.url().should("include", "/courses/new/edit");
diff --git a/frontend/src/components/AppSidebar.vue b/frontend/src/components/AppSidebar.vue
index 9bbbb0c9..7defc5d5 100644
--- a/frontend/src/components/AppSidebar.vue
+++ b/frontend/src/components/AppSidebar.vue
@@ -107,6 +107,7 @@ const unreadCount = ref(0)
const sidebarLinks = ref(getSidebarLinks())
const showPageModal = ref(false)
const isModerator = ref(false)
+const isInstructor = ref(false)
const pageToEdit = ref(null)
const showWebPages = ref(false)
@@ -167,6 +168,17 @@ const addNotifications = () => {
}
}
+const addQuizzes = () => {
+ if (isInstructor.value || isModerator.value) {
+ sidebarLinks.value.push({
+ label: 'Quizzes',
+ icon: 'CircleHelp',
+ to: 'Quizzes',
+ activeFor: ['Quizzes', 'QuizForm'],
+ })
+ }
+}
+
const openPageModal = (link) => {
showPageModal.value = true
pageToEdit.value = link
@@ -197,6 +209,8 @@ const getSidebarFromStorage = () => {
watch(userResource, () => {
if (userResource.data) {
isModerator.value = userResource.data.is_moderator
+ isInstructor.value = userResource.data.is_instructor
+ addQuizzes()
}
})
diff --git a/frontend/src/components/Assessments.vue b/frontend/src/components/Assessments.vue
index bfe429e6..55c849dd 100644
--- a/frontend/src/components/Assessments.vue
+++ b/frontend/src/components/Assessments.vue
@@ -160,7 +160,7 @@ const getRowRoute = (row) => {
}
} else {
return {
- name: 'Quiz',
+ name: 'QuizPage',
params: {
quizID: row.assessment_name,
},
diff --git a/frontend/src/components/LessonContent.vue b/frontend/src/components/LessonContent.vue
index f98f0289..39957f3a 100644
--- a/frontend/src/components/LessonContent.vue
+++ b/frontend/src/components/LessonContent.vue
@@ -37,7 +37,7 @@
diff --git a/frontend/src/components/MobileLayout.vue b/frontend/src/components/MobileLayout.vue
index dd298bab..fb54935d 100644
--- a/frontend/src/components/MobileLayout.vue
+++ b/frontend/src/components/MobileLayout.vue
@@ -5,9 +5,11 @@
+
+
+
+
+
+
+
+
+
+ {{ link.label }}
+
+
+
+
+
diff --git a/frontend/src/pages/QuizSubmission.vue b/frontend/src/pages/QuizSubmission.vue
index 5129574e..0bc0729b 100644
--- a/frontend/src/pages/QuizSubmission.vue
+++ b/frontend/src/pages/QuizSubmission.vue
@@ -2,47 +2,121 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ row.idx }}. {{ row.question }}
+
+
+
+
+
+
diff --git a/frontend/src/pages/QuizSubmissionList.vue b/frontend/src/pages/QuizSubmissionList.vue
new file mode 100644
index 00000000..6aeea286
--- /dev/null
+++ b/frontend/src/pages/QuizSubmissionList.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/pages/Quizzes.vue b/frontend/src/pages/Quizzes.vue
index c94ed135..740b8faa 100644
--- a/frontend/src/pages/Quizzes.vue
+++ b/frontend/src/pages/Quizzes.vue
@@ -19,7 +19,7 @@
-
+
import('@/pages/QuizPage.vue'),
+ props: true,
+ },
+ {
+ path: '/quiz-submissions/:quizID',
+ name: 'QuizSubmissionList',
+ component: () => import('@/pages/QuizSubmissionList.vue'),
+ props: true,
+ },
+ {
+ path: '/quiz-submission/:submission',
+ name: 'QuizSubmission',
component: () => import('@/pages/QuizSubmission.vue'),
props: true,
},
diff --git a/frontend/src/utils/upload.js b/frontend/src/utils/upload.js
index 3ceb5ec8..c54cfae4 100644
--- a/frontend/src/utils/upload.js
+++ b/frontend/src/utils/upload.js
@@ -56,9 +56,11 @@ export class Upload {
app.mount(this.wrapper)
return
} else if (file.file_type == 'PDF') {
- this.wrapper.innerHTML = ``
+ )}&embedded=true" width='100%' height='700px' class="mb-4" type="application/pdf">`
return
} else {
this.wrapper.innerHTML = `
1:
+ frappe.throw(
+ _(
+ "If you want open ended questions then make sure each question in the quiz is of open ended type."
+ )
+ )
+ else:
+ self.show_answers = 0
+
def autoname(self):
if not self.name:
self.name = generate_slug(self.title, "LMS Quiz")
@@ -81,34 +99,50 @@ def set_total_marks(questions):
def quiz_summary(quiz, results):
score = 0
results = results and json.loads(results)
+ is_open_ended = False
for result in results:
- correct = result["is_correct"][0]
- for point in result["is_correct"]:
- correct = correct and point
- result["is_correct"] = correct
-
question_details = frappe.db.get_value(
"LMS Quiz Question",
{"parent": quiz, "question": result["question_name"]},
- ["question", "marks", "question_detail"],
+ ["question", "marks", "question_detail", "type"],
as_dict=1,
)
result["question_name"] = question_details.question
result["question"] = question_details.question_detail
- marks = question_details.marks if correct else 0
+ result["marks_out_of"] = question_details.marks
- result["marks"] = marks
- score += marks
+ quiz_details = frappe.get_doc(
+ "LMS Quiz",
+ quiz,
+ ["total_marks", "passing_percentage", "lesson", "course"],
+ as_dict=1,
+ )
- del result["question_name"]
+ score = 0
+ percentage = 0
+ score_out_of = quiz_details.total_marks
- quiz_details = frappe.db.get_value(
- "LMS Quiz", quiz, ["total_marks", "passing_percentage", "lesson", "course"], as_dict=1
- )
- score_out_of = quiz_details.total_marks
- percentage = (score / score_out_of) * 100
+ if question_details.type != "Open Ended":
+ correct = result["is_correct"][0]
+ for point in result["is_correct"]:
+ correct = correct and point
+ result["is_correct"] = correct
+
+ marks = question_details.marks if correct else 0
+ result["marks"] = marks
+ score += marks
+
+ del result["question_name"]
+ percentage = (score / score_out_of) * 100
+ else:
+ result["is_correct"] = 0
+ is_open_ended = True
+
+ result["answer"] = re.sub(
+ r'
]*src\s*=\s*["\'](?=data:)(.*?)["\']', _save_file, result["answer"]
+ )
submission = frappe.get_doc(
{
@@ -139,128 +173,51 @@ def quiz_summary(quiz, results):
"submission": submission.name,
"pass": percentage == quiz_details.passing_percentage,
"percentage": percentage,
+ "is_open_ended": is_open_ended,
}
-@frappe.whitelist()
-def save_quiz(
- quiz_title,
- passing_percentage,
- questions,
- max_attempts=0,
- quiz=None,
- show_answers=1,
- show_submission_history=0,
-):
- if not has_course_moderator_role() or not has_course_instructor_role():
- return
+def _save_file(match):
+ data = match.group(1).split("data:")[1]
+ headers, content = data.split(",")
+ mtype = headers.split(";", 1)[0]
- values = {
- "title": quiz_title,
- "passing_percentage": passing_percentage,
- "max_attempts": max_attempts,
- "show_answers": show_answers,
- "show_submission_history": show_submission_history,
- }
+ if isinstance(content, str):
+ content = content.encode("utf-8")
+ if b"," in content:
+ content = content.split(b",")[1]
+
+ try:
+ content = safe_b64decode(content)
+ except BinasciiError:
+ frappe.flags.has_dataurl = True
+ return f'
cint(row.marks_out_of):
+ frappe.throw(
+ _(
+ "Marks for question number {0} cannot be greater than the marks allotted for that question."
+ ).format(row.idx)
+ )
+ else:
+ self.score += cint(row.marks)
def set_percentage(self):
if self.score and self.score_out_of:
diff --git a/lms/lms/payments.py b/lms/lms/payments.py
index 2080318b..7cff8ca7 100644
--- a/lms/lms/payments.py
+++ b/lms/lms/payments.py
@@ -42,6 +42,10 @@ def get_payment_link(doctype, docname, title, amount, total_amount, currency, ad
"redirect_to": redirect_to,
"payment": payment.name,
}
+ if payment_gateway == "Razorpay":
+ order = controller.create_order(**payment_details)
+ payment_details.update({"order_id": order.get("id")})
+
url = controller.get_payment_url(**payment_details)
return url
diff --git a/lms/lms/utils.py b/lms/lms/utils.py
index bd70e2ce..ca81644b 100644
--- a/lms/lms/utils.py
+++ b/lms/lms/utils.py
@@ -17,6 +17,7 @@ from frappe.utils import (
add_months,
cint,
cstr,
+ ceil,
flt,
fmt_money,
format_date,
@@ -948,7 +949,7 @@ def check_multicurrency(amount, currency, country=None, amount_usd=None):
if apply_rounding and amount % 100 != 0:
amount = amount + 100 - amount % 100
- return amount, currency
+ return ceil(amount), currency
def apply_gst(amount, country=None):
diff --git a/lms/locale/main.pot b/lms/locale/main.pot
index a0ba1618..538b1576 100644
--- a/lms/locale/main.pot
+++ b/lms/locale/main.pot
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Frappe LMS VERSION\n"
"Report-Msgid-Bugs-To: jannat@frappe.io\n"
-"POT-Creation-Date: 2024-09-27 16:04+0000\n"
-"PO-Revision-Date: 2024-09-27 16:04+0000\n"
+"POT-Creation-Date: 2024-10-04 16:04+0000\n"
+"PO-Revision-Date: 2024-10-04 16:04+0000\n"
"Last-Translator: jannat@frappe.io\n"
"Language-Team: jannat@frappe.io\n"
"MIME-Version: 1.0\n"
@@ -92,6 +92,7 @@ msgstr ""
#: frontend/src/components/BatchCourses.vue:11
#: frontend/src/components/BatchStudents.vue:6
#: frontend/src/components/Categories.vue:26
+#: frontend/src/components/LiveClass.vue:11
#: frontend/src/components/Members.vue:43
msgid "Add"
msgstr ""
@@ -107,10 +108,6 @@ msgstr ""
msgid "Add Lesson"
msgstr ""
-#: frontend/src/components/LiveClass.vue:12
-msgid "Add Live Class"
-msgstr ""
-
#: frontend/src/pages/ProfileEvaluator.vue:75
msgid "Add Slot"
msgstr ""
@@ -161,12 +158,12 @@ msgid "Add your assignment as {0}"
msgstr ""
#. Label of the address (Link) field in DocType 'LMS Payment'
-#: frontend/src/pages/Billing.vue:62
+#: frontend/src/pages/Billing.vue:17 frontend/src/pages/Billing.vue:69
#: lms/lms/doctype/lms_payment/lms_payment.json
msgid "Address"
msgstr ""
-#: frontend/src/pages/Billing.vue:77
+#: frontend/src/pages/Billing.vue:79
msgid "Address Line 1"
msgstr ""
@@ -328,7 +325,7 @@ msgstr ""
msgid "Assessment added successfully"
msgstr ""
-#: lms/lms/doctype/lms_batch/lms_batch.py:66
+#: lms/lms/doctype/lms_batch/lms_batch.py:74
msgid "Assessment {0} has already been added to this batch."
msgstr ""
@@ -346,7 +343,6 @@ msgstr ""
#. Label of the section_break_16 (Section Break) field in DocType 'Course
#. Lesson'
#. Label of the assignment (Link) field in DocType 'LMS Assignment Submission'
-#: lms/lms/doctype/course_lesson/course_lesson.js:32
#: lms/lms/doctype/course_lesson/course_lesson.json
#: lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json
#: lms/templates/assignment.html:3
@@ -522,7 +518,7 @@ msgstr ""
msgid "Batch Updated"
msgstr ""
-#: lms/lms/doctype/lms_batch/lms_batch.py:37
+#: lms/lms/doctype/lms_batch/lms_batch.py:39
msgid "Batch end date cannot be before the batch start date"
msgstr ""
@@ -555,7 +551,7 @@ msgid "Billing Details"
msgstr ""
#. Label of the billing_name (Data) field in DocType 'LMS Payment'
-#: frontend/src/pages/Billing.vue:71
+#: frontend/src/pages/Billing.vue:75
#: lms/lms/doctype/lms_payment/lms_payment.json
msgid "Billing Name"
msgstr ""
@@ -752,7 +748,7 @@ msgid "Choose one answer"
msgstr ""
#. Label of the city (Data) field in DocType 'User'
-#: frontend/src/pages/Billing.vue:89 lms/fixtures/custom_field.json
+#: frontend/src/pages/Billing.vue:86 lms/fixtures/custom_field.json
msgid "City"
msgstr ""
@@ -968,10 +964,6 @@ msgstr ""
msgid "Content"
msgstr ""
-#: lms/lms/doctype/course_lesson/course_lesson.js:17
-msgid "Content Type"
-msgstr ""
-
#: frontend/src/components/CourseCardOverlay.vue:29
msgid "Continue Learning"
msgstr ""
@@ -985,18 +977,6 @@ msgstr ""
msgid "Cookie Policy"
msgstr ""
-#: lms/lms/doctype/course_lesson/course_lesson.js:17
-msgid "Copy and paste the syntax in the editor. Replace 'embed_src' with the embed source that YouTube provides. To get the source, follow the steps mentioned below."
-msgstr ""
-
-#: lms/lms/doctype/course_lesson/course_lesson.js:29
-msgid "Copy and paste the syntax in the editor. Replace 'exercise_id' with the ID of the Exercise you want to add. You can get the ID of the exercise from the {0}."
-msgstr ""
-
-#: lms/lms/doctype/course_lesson/course_lesson.js:23
-msgid "Copy and paste the syntax in the editor. Replace 'lms_quiz_id' with the ID of the Quiz you want to add. You can get the ID of the quiz from the {0}."
-msgstr ""
-
#: frontend/src/components/LessonHelp.vue:53
msgid "Copy the URL of the video from YouTube and paste it in the editor."
msgstr ""
@@ -1021,7 +1001,7 @@ msgstr ""
#. Label of the country (Link) field in DocType 'User'
#. Label of the country (Link) field in DocType 'Payment Country'
-#: frontend/src/pages/Billing.vue:103 lms/fixtures/custom_field.json
+#: frontend/src/pages/Billing.vue:97 lms/fixtures/custom_field.json
#: lms/lms/doctype/payment_country/payment_country.json
msgid "Country"
msgstr ""
@@ -1175,7 +1155,7 @@ msgstr ""
msgid "Course Title"
msgstr ""
-#: lms/lms/doctype/lms_batch/lms_batch.py:324
+#: lms/lms/doctype/lms_batch/lms_batch.py:318
msgid "Course already added to the batch."
msgstr ""
@@ -1183,7 +1163,7 @@ msgstr ""
msgid "Course price and currency are mandatory for paid courses"
msgstr ""
-#: lms/lms/doctype/lms_batch/lms_batch.py:55
+#: lms/lms/doctype/lms_batch/lms_batch.py:57
msgid "Course {0} has already been added to this batch."
msgstr ""
@@ -1354,7 +1334,6 @@ msgstr ""
#: lms/lms/doctype/cohort/cohort.json
#: lms/lms/doctype/cohort_subgroup/cohort_subgroup.json
#: lms/lms/doctype/course_chapter/course_chapter.json
-#: lms/lms/doctype/course_lesson/course_lesson.js:17
#: lms/lms/doctype/lms_badge/lms_badge.json
#: lms/lms/doctype/lms_batch/lms_batch.json
#: lms/lms/doctype/lms_batch_old/lms_batch_old.json
@@ -1404,7 +1383,6 @@ msgstr ""
#. Option for the 'File Type' (Select) field in DocType 'Course Lesson'
#. Option for the 'Type' (Select) field in DocType 'LMS Assignment'
#. Option for the 'Type' (Select) field in DocType 'LMS Assignment Submission'
-#: lms/lms/doctype/course_lesson/course_lesson.js:32
#: lms/lms/doctype/course_lesson/course_lesson.json
#: lms/lms/doctype/lms_assignment/lms_assignment.json
#: lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json
@@ -1573,7 +1551,7 @@ msgstr ""
msgid "Enrolled successfully"
msgstr ""
-#: lms/lms/doctype/lms_batch/lms_batch.py:89
+#: lms/lms/doctype/lms_batch/lms_batch.py:97
msgid "Enrollment Confirmation for the Next Training Batch"
msgstr ""
@@ -1582,6 +1560,10 @@ msgstr ""
msgid "Enrollment Count"
msgstr ""
+#: lms/lms/utils.py:1682
+msgid "Enrollment Failed"
+msgstr ""
+
#. Label of a chart in the LMS Workspace
#. Label of a shortcut in the LMS Workspace
#: frontend/src/pages/Statistics.vue:45 lms/lms/workspace/lms/lms.json
@@ -1600,10 +1582,6 @@ msgstr ""
msgid "Enter a title and save the quiz to proceed"
msgstr ""
-#: frontend/src/pages/Billing.vue:11
-msgid "Enter the billing information to complete the payment."
-msgstr ""
-
#: lms/templates/quiz/quiz.html:53
msgid "Enter the correct answer"
msgstr ""
@@ -1611,14 +1589,11 @@ msgstr ""
#: frontend/src/components/Modals/Question.vue:242
#: frontend/src/components/Modals/Question.vue:262
#: frontend/src/components/Modals/Question.vue:319
-#: frontend/src/pages/QuizForm.vue:314 frontend/src/pages/QuizForm.vue:329
+#: frontend/src/pages/Billing.vue:255 frontend/src/pages/QuizForm.vue:314
+#: frontend/src/pages/QuizForm.vue:329
msgid "Error"
msgstr ""
-#: lms/lms/utils.py:1070
-msgid "Error during payment: {0} Please contact the Administrator. Amount {1} Currency {2} Formatted {3}"
-msgstr ""
-
#. Label of a Link in the LMS Workspace
#. Label of a shortcut in the LMS Workspace
#: frontend/src/components/Modals/Event.vue:364 lms/lms/workspace/lms/lms.json
@@ -1643,7 +1618,7 @@ msgstr ""
msgid "Evaluation Request"
msgstr ""
-#: lms/lms/doctype/lms_batch/lms_batch.py:73
+#: lms/lms/doctype/lms_batch/lms_batch.py:81
msgid "Evaluation end date cannot be less than the batch end date."
msgstr ""
@@ -1706,10 +1681,6 @@ msgstr ""
msgid "Exercise Latest Submission"
msgstr ""
-#: lms/lms/doctype/course_lesson/course_lesson.js:10
-msgid "Exercise List"
-msgstr ""
-
#. Name of a DocType
#: lms/lms/doctype/exercise_submission/exercise_submission.json
msgid "Exercise Submission"
@@ -1787,10 +1758,6 @@ msgstr ""
msgid "Field of Major/Study"
msgstr ""
-#: lms/lms/doctype/course_lesson/course_lesson.js:13
-msgid "File DocType"
-msgstr ""
-
#. Label of the file_type (Select) field in DocType 'Course Lesson'
#: lms/lms/doctype/course_lesson/course_lesson.json
msgid "File Type"
@@ -1876,11 +1843,11 @@ msgstr ""
msgid "Function"
msgstr ""
-#: frontend/src/pages/Billing.vue:42
+#: frontend/src/pages/Billing.vue:48
msgid "GST Amount"
msgstr ""
-#: frontend/src/pages/Billing.vue:135
+#: frontend/src/pages/Billing.vue:115
msgid "GST Number"
msgstr ""
@@ -2058,7 +2025,6 @@ msgstr ""
#. Option for the 'Type' (Select) field in DocType 'LMS Assignment Submission'
#. Label of the image (Attach Image) field in DocType 'LMS Badge'
#. Label of the image (Code) field in DocType 'LMS Exercise'
-#: lms/lms/doctype/course_lesson/course_lesson.js:32
#: lms/lms/doctype/course_lesson/course_lesson.json
#: lms/lms/doctype/exercise_latest_submission/exercise_latest_submission.json
#: lms/lms/doctype/exercise_submission/exercise_submission.json
@@ -2192,10 +2158,6 @@ msgstr ""
msgid "Invalid Start or End Time."
msgstr ""
-#: lms/lms/utils.py:914
-msgid "Invalid document provided."
-msgstr ""
-
#. Label of the invite_code (Data) field in DocType 'Cohort Subgroup'
#. Label of the invite_code (Data) field in DocType 'Invite Request'
#: lms/lms/doctype/cohort_subgroup/cohort_subgroup.json
@@ -2309,7 +2271,7 @@ msgstr ""
msgid "Jobs"
msgstr ""
-#: frontend/src/components/LiveClass.vue:56
+#: frontend/src/components/LiveClass.vue:53
#: lms/templates/upcoming_evals.html:15
msgid "Join"
msgstr ""
@@ -2631,7 +2593,7 @@ msgid "Live"
msgstr ""
#. Label of the show_live_class (Check) field in DocType 'LMS Settings'
-#: frontend/src/components/LiveClass.vue:16
+#: frontend/src/components/LiveClass.vue:4
#: lms/lms/doctype/lms_settings/lms_settings.json
msgid "Live Class"
msgstr ""
@@ -2679,12 +2641,6 @@ msgstr ""
msgid "Login to apply"
msgstr ""
-#. Label of the exception_country (Table MultiSelect) field in DocType 'LMS
-#. Settings'
-#: lms/lms/doctype/lms_settings/lms_settings.json
-msgid "Maintain Original Currency"
-msgstr ""
-
#. Label of the default_home (Check) field in DocType 'LMS Settings'
#: lms/lms/doctype/lms_settings/lms_settings.json
msgid "Make LMS the default home"
@@ -3057,7 +3013,7 @@ msgstr ""
msgid "No jobs posted"
msgstr ""
-#: frontend/src/components/LiveClass.vue:62
+#: frontend/src/components/LiveClass.vue:59
msgid "No live classes scheduled"
msgstr ""
@@ -3114,6 +3070,7 @@ msgid "Not Permitted"
msgstr ""
#: frontend/src/components/BrandSettings.vue:10
+#: frontend/src/components/PaymentSettings.vue:9
#: frontend/src/components/SettingDetails.vue:10
msgid "Not Saved"
msgstr ""
@@ -3146,10 +3103,6 @@ msgstr ""
msgid "Offline"
msgstr ""
-#: lms/lms/doctype/course_lesson/course_lesson.js:21
-msgid "On clicking it, it provides an iframe. Copy the source (src) of the iframe and paste it here."
-msgstr ""
-
#: lms/templates/emails/certification.html:16
msgid "Once again, congratulations on this significant accomplishment."
msgstr ""
@@ -3221,11 +3174,19 @@ msgstr ""
msgid "Order ID"
msgstr ""
+#: frontend/src/pages/Billing.vue:26
+msgid "Ordered Item"
+msgstr ""
+
#. Label of the organization (Data) field in DocType 'Certification'
#: lms/lms/doctype/certification/certification.json
msgid "Organization"
msgstr ""
+#: frontend/src/pages/Billing.vue:37
+msgid "Original Amount"
+msgstr ""
+
#. Option for the 'User Category' (Select) field in DocType 'User'
#: lms/fixtures/custom_field.json lms/templates/signup-form.html:28
msgid "Others"
@@ -3243,7 +3204,6 @@ msgstr ""
#. Option for the 'File Type' (Select) field in DocType 'Course Lesson'
#. Option for the 'Type' (Select) field in DocType 'LMS Assignment'
#. Option for the 'Type' (Select) field in DocType 'LMS Assignment Submission'
-#: lms/lms/doctype/course_lesson/course_lesson.js:32
#: lms/lms/doctype/course_lesson/course_lesson.json
#: lms/lms/doctype/lms_assignment/lms_assignment.json
#: lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json
@@ -3268,7 +3228,7 @@ msgstr ""
msgid "Paid Course"
msgstr ""
-#: frontend/src/pages/Billing.vue:141
+#: frontend/src/pages/Billing.vue:120
msgid "Pan Number"
msgstr ""
@@ -3325,7 +3285,9 @@ msgid "Payment Details"
msgstr ""
#. Label of the payment_gateway (Link) field in DocType 'Web Form'
+#. Label of the payment_gateway (Data) field in DocType 'LMS Settings'
#: lms/fixtures/custom_field.json
+#: lms/lms/doctype/lms_settings/lms_settings.json
msgid "Payment Gateway"
msgstr ""
@@ -3357,15 +3319,17 @@ msgstr ""
msgid "Payment for Document Type"
msgstr ""
-#: lms/lms/utils.py:931
-msgid "Payment for {0} course"
-msgstr ""
-
#. Label of the payments_tab (Tab Break) field in DocType 'Web Form'
#: lms/fixtures/custom_field.json
msgid "Payments"
msgstr ""
+#. Label of the payments_app_is_not_installed (HTML) field in DocType 'LMS
+#. Settings'
+#: lms/lms/doctype/lms_settings/lms_settings.json
+msgid "Payments app is not installed"
+msgstr ""
+
#. Option for the 'Status' (Select) field in DocType 'Cohort Join Request'
#. Option for the 'Status' (Select) field in DocType 'Invite Request'
#. Option for the 'Status' (Select) field in DocType 'LMS Certificate
@@ -3389,7 +3353,7 @@ msgstr ""
msgid "Percentage (e.g. 70%)"
msgstr ""
-#: frontend/src/pages/Billing.vue:119
+#: frontend/src/pages/Billing.vue:104
msgid "Phone Number"
msgstr ""
@@ -3409,7 +3373,7 @@ msgstr ""
msgid "Please click on the following button to set your new password"
msgstr ""
-#: lms/lms/doctype/lms_batch/lms_batch.py:235
+#: lms/lms/doctype/lms_batch/lms_batch.py:229
msgid "Please enable Zoom Settings to use this feature."
msgstr ""
@@ -3426,6 +3390,18 @@ msgstr ""
msgid "Please enter your answer"
msgstr ""
+#: lms/lms/doctype/lms_batch/lms_batch.py:64
+msgid "Please install the Payments app to create a paid batches."
+msgstr ""
+
+#: lms/lms/doctype/lms_course/lms_course.py:52
+msgid "Please install the Payments app to create a paid courses."
+msgstr ""
+
+#: frontend/src/pages/Billing.vue:247
+msgid "Please let us know where you heard about us from."
+msgstr ""
+
#: frontend/src/components/QuizBlock.vue:5
msgid "Please login to access the quiz."
msgstr ""
@@ -3485,7 +3461,7 @@ msgstr ""
msgid "Post"
msgstr ""
-#: frontend/src/pages/Billing.vue:113
+#: frontend/src/pages/Billing.vue:100
msgid "Postal Code"
msgstr ""
@@ -3537,6 +3513,12 @@ msgstr ""
msgid "Pricing"
msgstr ""
+#. Label of the exception_country (Table MultiSelect) field in DocType 'LMS
+#. Settings'
+#: lms/lms/doctype/lms_settings/lms_settings.json
+msgid "Primary Countries"
+msgstr ""
+
#. Label of the subgroup (Link) field in DocType 'Cohort Mentor'
#: lms/lms/doctype/cohort_mentor/cohort_mentor.json
msgid "Primary Subgroup"
@@ -3557,7 +3539,7 @@ msgstr ""
msgid "Private Information includes your Grade and Work Environment Preferences"
msgstr ""
-#: frontend/src/pages/Billing.vue:148
+#: frontend/src/pages/Billing.vue:126
msgid "Proceed to Payment"
msgstr ""
@@ -3674,7 +3656,6 @@ msgstr ""
#. Label of the quiz (Link) field in DocType 'LMS Quiz Submission'
#. Label of a Link in the LMS Workspace
#: frontend/src/utils/quiz.js:24
-#: lms/lms/doctype/course_lesson/course_lesson.js:23
#: lms/lms/doctype/lms_quiz_submission/lms_quiz_submission.json
#: lms/lms/workspace/lms/lms.json
msgid "Quiz"
@@ -3685,10 +3666,6 @@ msgstr ""
msgid "Quiz ID"
msgstr ""
-#: lms/lms/doctype/course_lesson/course_lesson.js:9
-msgid "Quiz List"
-msgstr ""
-
#. Label of a Link in the LMS Workspace
#: frontend/src/pages/QuizSubmission.vue:46 lms/lms/workspace/lms/lms.json
msgid "Quiz Submission"
@@ -3735,16 +3712,6 @@ msgstr ""
msgid "Rating cannot be 0"
msgstr ""
-#. Label of the razorpay_key (Data) field in DocType 'LMS Settings'
-#: lms/lms/doctype/lms_settings/lms_settings.json
-msgid "Razorpay Key"
-msgstr ""
-
-#. Label of the razorpay_secret (Password) field in DocType 'LMS Settings'
-#: lms/lms/doctype/lms_settings/lms_settings.json
-msgid "Razorpay Secret"
-msgstr ""
-
#: frontend/src/pages/AssignmentSubmission.vue:30
msgid "Read the question carefully before attempting the assignment."
msgstr ""
@@ -3850,10 +3817,6 @@ msgstr ""
msgid "Review the course"
msgstr ""
-#: frontend/src/pages/Billing.vue:18
-msgid "Review the details of your purchase."
-msgstr ""
-
#. Label of the reviewed_by (Link) field in DocType 'LMS Mentor Request'
#: lms/lms/doctype/lms_mentor_request/lms_mentor_request.json
msgid "Reviewed By"
@@ -3880,19 +3843,19 @@ msgstr ""
msgid "Route"
msgstr ""
-#: lms/lms/doctype/lms_batch/lms_batch.py:164
+#: lms/lms/doctype/lms_batch/lms_batch.py:172
msgid "Row #{0} Date cannot be outside the batch duration."
msgstr ""
-#: lms/lms/doctype/lms_batch/lms_batch.py:159
+#: lms/lms/doctype/lms_batch/lms_batch.py:167
msgid "Row #{0} End time cannot be outside the batch duration."
msgstr ""
-#: lms/lms/doctype/lms_batch/lms_batch.py:141
+#: lms/lms/doctype/lms_batch/lms_batch.py:149
msgid "Row #{0} Start time cannot be greater than or equal to end time."
msgstr ""
-#: lms/lms/doctype/lms_batch/lms_batch.py:150
+#: lms/lms/doctype/lms_batch/lms_batch.py:158
msgid "Row #{0} Start time cannot be outside the batch duration."
msgstr ""
@@ -4154,17 +4117,12 @@ msgstr ""
#. Label of the source (Link) field in DocType 'Batch Student'
#. Label of the source (Link) field in DocType 'LMS Payment'
#. Label of the source (Data) field in DocType 'LMS Source'
-#: frontend/src/pages/Billing.vue:125
#: lms/lms/doctype/batch_student/batch_student.json
#: lms/lms/doctype/lms_payment/lms_payment.json
#: lms/lms/doctype/lms_source/lms_source.json
msgid "Source"
msgstr ""
-#: frontend/src/pages/Billing.vue:65
-msgid "Specify your billing address correctly."
-msgstr ""
-
#. Option for the 'Role' (Select) field in DocType 'Cohort Staff'
#. Option for the 'Member Type' (Select) field in DocType 'LMS Enrollment'
#: lms/lms/doctype/cohort_staff/cohort_staff.json
@@ -4177,7 +4135,7 @@ msgstr ""
msgid "Stage"
msgstr ""
-#: frontend/src/components/LiveClass.vue:48 frontend/src/components/Quiz.vue:47
+#: frontend/src/components/LiveClass.vue:45 frontend/src/components/Quiz.vue:47
#: lms/templates/quiz/quiz.html:39
msgid "Start"
msgstr ""
@@ -4241,7 +4199,7 @@ msgstr ""
msgid "Startup Organization"
msgstr ""
-#: frontend/src/pages/Billing.vue:95
+#: frontend/src/pages/Billing.vue:88
msgid "State"
msgstr ""
@@ -4310,7 +4268,7 @@ msgstr ""
msgid "Student Reviews"
msgstr ""
-#: lms/lms/doctype/lms_batch/lms_batch.py:44
+#: lms/lms/doctype/lms_batch/lms_batch.py:46
msgid "Student {0} has already been added to this batch."
msgstr ""
@@ -4383,7 +4341,6 @@ msgstr ""
#. Label of the summary (Small Text) field in DocType 'LMS Certificate
#. Evaluation'
#: frontend/src/components/Modals/Event.vue:97
-#: frontend/src/pages/Billing.vue:15
#: lms/lms/doctype/lms_certificate_evaluation/lms_certificate_evaluation.json
msgid "Summary"
msgstr ""
@@ -4395,15 +4352,6 @@ msgstr ""
msgid "Sunday"
msgstr ""
-#: lms/lms/doctype/course_lesson/course_lesson.js:32
-msgid "Supported File Types for Assignment"
-msgstr ""
-
-#: lms/lms/doctype/course_lesson/course_lesson.js:17
-#: lms/lms/doctype/course_lesson/course_lesson.js:32
-msgid "Syntax"
-msgstr ""
-
#. Name of a role
#: lms/job/doctype/job_opportunity/job_opportunity.json
#: lms/job/doctype/job_settings/job_settings.json
@@ -4537,7 +4485,7 @@ msgstr ""
msgid "There are no chapters in this course. Create and manage chapters from here."
msgstr ""
-#: lms/lms/doctype/lms_batch/lms_batch.py:132
+#: lms/lms/doctype/lms_batch/lms_batch.py:140
msgid "There are no seats available in this batch."
msgstr ""
@@ -4549,10 +4497,6 @@ msgstr ""
msgid "There are no {0} on this site."
msgstr ""
-#: lms/lms/utils.py:1052
-msgid "There is a problem with the payment gateway. Please contact the Administrator to proceed."
-msgstr ""
-
#. Description of the 'section_break_ubxi' (Section Break) field in DocType
#. 'LMS Batch'
#: lms/lms/doctype/lms_batch/lms_batch.json
@@ -4572,7 +4516,7 @@ msgstr ""
msgid "This course has:"
msgstr ""
-#: lms/lms/utils.py:1010 lms/lms/utils.py:1752
+#: lms/lms/utils.py:1562
msgid "This course is free."
msgstr ""
@@ -4706,7 +4650,7 @@ msgstr ""
msgid "To Date is mandatory in Work Experience."
msgstr ""
-#: lms/lms/utils.py:1019 lms/lms/utils.py:1763
+#: lms/lms/utils.py:1573
msgid "To join this batch, please contact the Administrator."
msgstr ""
@@ -4718,8 +4662,8 @@ msgstr ""
msgid "Too many users signed up recently, so the registration is disabled. Please try back in an hour"
msgstr ""
-#: frontend/src/pages/Billing.vue:53
-msgid "Total Amount"
+#: frontend/src/pages/Billing.vue:58
+msgid "Total"
msgstr ""
#. Label of the total_marks (Int) field in DocType 'LMS Quiz'
@@ -4836,6 +4780,7 @@ msgid "Upcoming Evaluations"
msgstr ""
#: frontend/src/components/BrandSettings.vue:22
+#: frontend/src/components/PaymentSettings.vue:27
#: frontend/src/components/SettingDetails.vue:23
msgid "Update"
msgstr ""
@@ -4848,14 +4793,6 @@ msgstr ""
msgid "Upload File"
msgstr ""
-#: lms/lms/doctype/course_lesson/course_lesson.js:26
-msgid "Upload a video from your local machine to the {0}. Copy and paste this syntax in the editor. Replace 'url_of_source' with the File URL field of the document you created in the File DocType."
-msgstr ""
-
-#: lms/lms/doctype/course_lesson/course_lesson.js:19
-msgid "Upload the video on youtube."
-msgstr ""
-
#: frontend/src/pages/AssignmentSubmission.vue:68
msgid "Uploading {0}%"
msgstr ""
@@ -4919,10 +4856,6 @@ msgstr ""
msgid "Value Change"
msgstr ""
-#: lms/lms/doctype/course_lesson/course_lesson.js:26
-msgid "Video"
-msgstr ""
-
#. Label of the video_link (Data) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Video Embed Link"
@@ -4980,8 +4913,8 @@ msgstr ""
msgid "When a course gets submitted for review, it will be listed here."
msgstr ""
-#: lms/lms/doctype/course_lesson/course_lesson.js:19
-msgid "When you share a youtube video, it shows an option called Embed."
+#: frontend/src/pages/Billing.vue:111
+msgid "Where did you hear about us?"
msgstr ""
#: lms/templates/emails/certification.html:10
@@ -5045,10 +4978,6 @@ msgstr ""
msgid "You are not a mentor of the course {0}"
msgstr ""
-#: lms/lms/doctype/course_lesson/course_lesson.js:15
-msgid "You can add some more additional content to the lesson using a special syntax. The table below mentions all types of dynamic content that you can add to the lessons and the syntax for the same."
-msgstr ""
-
#: lms/templates/emails/lms_course_interest.html:13
#: lms/templates/emails/lms_invite_request_approved.html:11
msgid "You can also copy-paste following link in your browser"
@@ -5124,10 +5053,6 @@ msgstr ""
msgid "You've successfully submitted the assignment."
msgstr ""
-#: lms/lms/doctype/course_lesson/course_lesson.js:17
-msgid "YouTube Video"
-msgstr ""
-
#. Label of the youtube (Data) field in DocType 'Course Lesson'
#: lms/lms/doctype/course_lesson/course_lesson.json
msgid "YouTube Video URL"
@@ -5229,6 +5154,10 @@ msgstr ""
msgid "you can"
msgstr ""
+#: lms/lms/api.py:725 lms/lms/api.py:733
+msgid "{0} Settings not found"
+msgstr ""
+
#: lms/templates/emails/job_application.html:2
msgid "{0} has applied for the job position {1}"
msgstr ""