Compare commits
44 Commits
discussion
...
web-form-c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9d530e35fb | ||
|
|
2c2ad78eb7 | ||
|
|
f61c5a2fa1 | ||
|
|
3e24ff9678 | ||
|
|
b0280c3be4 | ||
|
|
b10eb5c979 | ||
|
|
e2072c72da | ||
|
|
84a43912db | ||
|
|
841819436a | ||
|
|
14a984c75f | ||
|
|
445de61ce4 | ||
|
|
f83007788d | ||
|
|
aefee791ca | ||
|
|
00154d80df | ||
|
|
a1e12d29ac | ||
|
|
5069832165 | ||
|
|
e2cb003935 | ||
|
|
b83a10c282 | ||
|
|
c6fc0a22d2 | ||
|
|
c6d3994383 | ||
|
|
07f9721aeb | ||
|
|
dba956e473 | ||
|
|
2894a5e479 | ||
|
|
ad0913500c | ||
|
|
79a765b725 | ||
|
|
eaec991f47 | ||
|
|
e31b189045 | ||
|
|
eb58b1c149 | ||
|
|
af9760f944 | ||
|
|
21b2412362 | ||
|
|
7e5e167eec | ||
|
|
7bf254319b | ||
|
|
d7e1745c09 | ||
|
|
ef238c1b25 | ||
|
|
cb60d97bb7 | ||
|
|
7c3189e273 | ||
|
|
ace74febc7 | ||
|
|
8dbdabd52c | ||
|
|
f0ee8d7b88 | ||
|
|
7e5203f058 | ||
|
|
7017382451 | ||
|
|
3e2c6b3343 | ||
|
|
5ea744de5c | ||
|
|
aedb3d3d45 |
@@ -1,5 +1,5 @@
|
|||||||
{% set color = member.get_palette() %}
|
{% set color = member.get_palette() %}
|
||||||
<a class="button-links" href="/{{member.username}}">
|
<a class="button-links" href="/user/{{member.username}}">
|
||||||
<span class="avatar {{ avatar_class }}" title="{{ member.full_name }}">
|
<span class="avatar {{ avatar_class }}" title="{{ member.full_name }}">
|
||||||
{% if member.user_image %}
|
{% if member.user_image %}
|
||||||
<img class="avatar-frame standard-image" style="object-fit: cover;" src="{{ member.user_image }}" title="{{ member.full_name }}">
|
<img class="avatar-frame standard-image" style="object-fit: cover;" src="{{ member.user_image }}" title="{{ member.full_name }}">
|
||||||
|
|||||||
@@ -28,9 +28,9 @@ order_by="creation") %}
|
|||||||
<div class="d-flex flex-column align-items-center font-weight-bold">
|
<div class="d-flex flex-column align-items-center font-weight-bold">
|
||||||
Want to join the discussion?
|
Want to join the discussion?
|
||||||
{% if frappe.session.user == "Guest" %}
|
{% if frappe.session.user == "Guest" %}
|
||||||
<div class="button is-primary" id="login-from-discussion">Log In</div>
|
<div class="button is-primary mt-5" id="login-from-discussion">Log In</div>
|
||||||
{% elif not condition %}
|
{% elif not condition %}
|
||||||
<div class="button is-primary" id="login-from-discussion" data-redirect="{{ redirect_to }}">{{ button_name }}</div>
|
<div class="button is-primary mt-5" id="login-from-discussion" data-redirect="{{ redirect_to }}">{{ button_name }}</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|||||||
0
community/event_management/__init__.py
Normal file
0
community/event_management/__init__.py
Normal file
0
community/event_management/doctype/__init__.py
Normal file
0
community/event_management/doctype/__init__.py
Normal file
14
community/event_management/doctype/attendee/attendee.js
Normal file
14
community/event_management/doctype/attendee/attendee.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
// Copyright (c) 2021, FOSS United and contributors
|
||||||
|
// For license information, please see license.txt
|
||||||
|
|
||||||
|
frappe.ui.form.on('Attendee', {
|
||||||
|
onload: function (frm) {
|
||||||
|
frm.set_query('user', function (doc) {
|
||||||
|
return {
|
||||||
|
filters: {
|
||||||
|
"ignore_user_type": 1,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
80
community/event_management/doctype/attendee/attendee.json
Normal file
80
community/event_management/doctype/attendee/attendee.json
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"actions": [],
|
||||||
|
"creation": "2021-08-11 10:07:53.262504",
|
||||||
|
"doctype": "DocType",
|
||||||
|
"editable_grid": 1,
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"field_order": [
|
||||||
|
"user",
|
||||||
|
"full_name",
|
||||||
|
"column_break_3",
|
||||||
|
"company",
|
||||||
|
"is_paid",
|
||||||
|
"section_break_6",
|
||||||
|
"what_are_you_hoping_to_learn"
|
||||||
|
],
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "company",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Company"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "what_are_you_hoping_to_learn",
|
||||||
|
"fieldtype": "Text",
|
||||||
|
"label": "What are you hoping to learn?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "user",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "User",
|
||||||
|
"options": "User"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fetch_from": "user.full_name",
|
||||||
|
"fieldname": "full_name",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Full Name",
|
||||||
|
"read_only": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "0",
|
||||||
|
"fieldname": "is_paid",
|
||||||
|
"fieldtype": "Check",
|
||||||
|
"label": "Is Paid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "column_break_3",
|
||||||
|
"fieldtype": "Column Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "section_break_6",
|
||||||
|
"fieldtype": "Section Break"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"index_web_pages_for_search": 1,
|
||||||
|
"links": [],
|
||||||
|
"modified": "2021-08-20 17:03:09.741997",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "Attendee",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
"email": 1,
|
||||||
|
"export": 1,
|
||||||
|
"print": 1,
|
||||||
|
"read": 1,
|
||||||
|
"report": 1,
|
||||||
|
"role": "System Manager",
|
||||||
|
"share": 1,
|
||||||
|
"write": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sort_field": "modified",
|
||||||
|
"sort_order": "DESC",
|
||||||
|
"title_field": "user",
|
||||||
|
"track_changes": 1
|
||||||
|
}
|
||||||
8
community/event_management/doctype/attendee/attendee.py
Normal file
8
community/event_management/doctype/attendee/attendee.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and contributors
|
||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
from frappe.model.document import Document
|
||||||
|
|
||||||
|
class Attendee(Document):
|
||||||
|
pass
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and Contributors
|
||||||
|
# See license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class TestAttendee(unittest.TestCase):
|
||||||
|
pass
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// Copyright (c) 2021, FOSS United and contributors
|
||||||
|
// For license information, please see license.txt
|
||||||
|
|
||||||
|
frappe.ui.form.on('Event Details', {
|
||||||
|
// refresh: function(frm) {
|
||||||
|
|
||||||
|
// }
|
||||||
|
});
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
"actions": [],
|
||||||
|
"autoname": "field:event_name",
|
||||||
|
"creation": "2021-08-11 10:05:41.072432",
|
||||||
|
"doctype": "DocType",
|
||||||
|
"editable_grid": 1,
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"field_order": [
|
||||||
|
"event_name",
|
||||||
|
"start_date",
|
||||||
|
"end_date",
|
||||||
|
"event_description"
|
||||||
|
],
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "event_name",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "Event Name",
|
||||||
|
"reqd": 1,
|
||||||
|
"unique": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "start_date",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "Start Date",
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "end_date",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "End Date",
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "event_description",
|
||||||
|
"fieldtype": "Markdown Editor",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "Event Description"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"index_web_pages_for_search": 1,
|
||||||
|
"links": [],
|
||||||
|
"modified": "2021-08-18 23:51:30.432691",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "Event Details",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
"email": 1,
|
||||||
|
"export": 1,
|
||||||
|
"print": 1,
|
||||||
|
"read": 1,
|
||||||
|
"report": 1,
|
||||||
|
"role": "System Manager",
|
||||||
|
"share": 1,
|
||||||
|
"write": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sort_field": "modified",
|
||||||
|
"sort_order": "DESC",
|
||||||
|
"track_changes": 1
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and contributors
|
||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
from frappe.model.document import Document
|
||||||
|
|
||||||
|
class EventDetails(Document):
|
||||||
|
pass
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and Contributors
|
||||||
|
# See license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class TestEventDetails(unittest.TestCase):
|
||||||
|
pass
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// Copyright (c) 2021, FOSS United and contributors
|
||||||
|
// For license information, please see license.txt
|
||||||
|
|
||||||
|
frappe.ui.form.on('Event Ticket', {
|
||||||
|
// refresh: function(frm) {
|
||||||
|
|
||||||
|
// }
|
||||||
|
});
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
"actions": [],
|
||||||
|
"creation": "2021-08-11 11:17:28.452289",
|
||||||
|
"doctype": "DocType",
|
||||||
|
"editable_grid": 1,
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"field_order": [
|
||||||
|
"event",
|
||||||
|
"ticket",
|
||||||
|
"attendee"
|
||||||
|
],
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "ticket",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Ticket"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "attendee",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "attendee",
|
||||||
|
"options": "Attendee"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "event",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Event",
|
||||||
|
"options": "Event Details"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"index_web_pages_for_search": 1,
|
||||||
|
"links": [],
|
||||||
|
"modified": "2021-08-20 13:38:28.688115",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "Event Ticket",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
"email": 1,
|
||||||
|
"export": 1,
|
||||||
|
"print": 1,
|
||||||
|
"read": 1,
|
||||||
|
"report": 1,
|
||||||
|
"role": "System Manager",
|
||||||
|
"share": 1,
|
||||||
|
"write": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sort_field": "modified",
|
||||||
|
"sort_order": "DESC",
|
||||||
|
"track_changes": 1
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and contributors
|
||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
from frappe.model.document import Document
|
||||||
|
|
||||||
|
class EventTicket(Document):
|
||||||
|
pass
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and Contributors
|
||||||
|
# See license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class TestEventTicket(unittest.TestCase):
|
||||||
|
pass
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// Copyright (c) 2021, FOSS United and contributors
|
||||||
|
// For license information, please see license.txt
|
||||||
|
|
||||||
|
frappe.ui.form.on('Exhibitor', {
|
||||||
|
// refresh: function(frm) {
|
||||||
|
|
||||||
|
// }
|
||||||
|
});
|
||||||
87
community/event_management/doctype/exhibitor/exhibitor.json
Normal file
87
community/event_management/doctype/exhibitor/exhibitor.json
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
"actions": [],
|
||||||
|
"creation": "2021-08-16 16:26:46.189119",
|
||||||
|
"doctype": "DocType",
|
||||||
|
"editable_grid": 1,
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"field_order": [
|
||||||
|
"event",
|
||||||
|
"is_paid",
|
||||||
|
"column_break_3",
|
||||||
|
"user",
|
||||||
|
"full_name",
|
||||||
|
"company",
|
||||||
|
"section_break_7",
|
||||||
|
"description"
|
||||||
|
],
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fetch_from": "user.full_name",
|
||||||
|
"fieldname": "full_name",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Full Name",
|
||||||
|
"read_only": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "company",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Company "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "description",
|
||||||
|
"fieldtype": "Text Editor",
|
||||||
|
"label": "Description"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "0",
|
||||||
|
"fieldname": "is_paid",
|
||||||
|
"fieldtype": "Check",
|
||||||
|
"label": "Is Paid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "user",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "User",
|
||||||
|
"options": "User"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "event",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Event",
|
||||||
|
"options": "Event Details"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "column_break_3",
|
||||||
|
"fieldtype": "Column Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "section_break_7",
|
||||||
|
"fieldtype": "Section Break"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"index_web_pages_for_search": 1,
|
||||||
|
"links": [],
|
||||||
|
"modified": "2021-08-20 16:32:58.031324",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "Exhibitor",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
"email": 1,
|
||||||
|
"export": 1,
|
||||||
|
"print": 1,
|
||||||
|
"read": 1,
|
||||||
|
"report": 1,
|
||||||
|
"role": "System Manager",
|
||||||
|
"share": 1,
|
||||||
|
"write": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sort_field": "modified",
|
||||||
|
"sort_order": "DESC",
|
||||||
|
"title_field": "user",
|
||||||
|
"track_changes": 1
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and contributors
|
||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
from frappe.model.document import Document
|
||||||
|
|
||||||
|
class Exhibitor(Document):
|
||||||
|
pass
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and Contributors
|
||||||
|
# See license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class TestExhibitor(unittest.TestCase):
|
||||||
|
pass
|
||||||
0
community/event_management/doctype/host/__init__.py
Normal file
0
community/event_management/doctype/host/__init__.py
Normal file
8
community/event_management/doctype/host/host.js
Normal file
8
community/event_management/doctype/host/host.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// Copyright (c) 2021, FOSS United and contributors
|
||||||
|
// For license information, please see license.txt
|
||||||
|
|
||||||
|
frappe.ui.form.on('Host', {
|
||||||
|
// refresh: function(frm) {
|
||||||
|
|
||||||
|
// }
|
||||||
|
});
|
||||||
57
community/event_management/doctype/host/host.json
Normal file
57
community/event_management/doctype/host/host.json
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"actions": [],
|
||||||
|
"creation": "2021-08-11 10:51:47.234690",
|
||||||
|
"doctype": "DocType",
|
||||||
|
"editable_grid": 1,
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"field_order": [
|
||||||
|
"event",
|
||||||
|
"user",
|
||||||
|
"full_name"
|
||||||
|
],
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "event",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Event",
|
||||||
|
"options": "Event Details"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "full_name",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "Full Name",
|
||||||
|
"unique": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "user",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "User"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"index_web_pages_for_search": 1,
|
||||||
|
"links": [],
|
||||||
|
"modified": "2021-08-20 17:03:26.733195",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "Host",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
"email": 1,
|
||||||
|
"export": 1,
|
||||||
|
"print": 1,
|
||||||
|
"read": 1,
|
||||||
|
"report": 1,
|
||||||
|
"role": "System Manager",
|
||||||
|
"share": 1,
|
||||||
|
"write": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sort_field": "modified",
|
||||||
|
"sort_order": "DESC",
|
||||||
|
"title_field": "user",
|
||||||
|
"track_changes": 1
|
||||||
|
}
|
||||||
8
community/event_management/doctype/host/host.py
Normal file
8
community/event_management/doctype/host/host.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and contributors
|
||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
from frappe.model.document import Document
|
||||||
|
|
||||||
|
class Host(Document):
|
||||||
|
pass
|
||||||
8
community/event_management/doctype/host/test_host.py
Normal file
8
community/event_management/doctype/host/test_host.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and Contributors
|
||||||
|
# See license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class TestHost(unittest.TestCase):
|
||||||
|
pass
|
||||||
14
community/event_management/doctype/speaker/speaker.js
Normal file
14
community/event_management/doctype/speaker/speaker.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
// Copyright (c) 2021, FOSS United and contributors
|
||||||
|
// For license information, please see license.txt
|
||||||
|
|
||||||
|
frappe.ui.form.on('Speaker', {
|
||||||
|
onload: function (frm) {
|
||||||
|
frm.set_query('user', function (doc) {
|
||||||
|
return {
|
||||||
|
filters: {
|
||||||
|
"ignore_user_type": 1,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
72
community/event_management/doctype/speaker/speaker.json
Normal file
72
community/event_management/doctype/speaker/speaker.json
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
"actions": [],
|
||||||
|
"creation": "2021-08-11 10:37:32.124651",
|
||||||
|
"doctype": "DocType",
|
||||||
|
"editable_grid": 1,
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"field_order": [
|
||||||
|
"event",
|
||||||
|
"company",
|
||||||
|
"column_break_8",
|
||||||
|
"user",
|
||||||
|
"full_name"
|
||||||
|
],
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "user",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "User",
|
||||||
|
"options": "User"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fetch_from": "user.full_name",
|
||||||
|
"fieldname": "full_name",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "Full Name",
|
||||||
|
"read_only": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "company",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "Company"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "column_break_8",
|
||||||
|
"fieldtype": "Column Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "event",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Event",
|
||||||
|
"options": "Event Details"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"index_web_pages_for_search": 1,
|
||||||
|
"links": [],
|
||||||
|
"modified": "2021-08-20 16:53:43.968260",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "Speaker",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
"email": 1,
|
||||||
|
"export": 1,
|
||||||
|
"print": 1,
|
||||||
|
"read": 1,
|
||||||
|
"report": 1,
|
||||||
|
"role": "System Manager",
|
||||||
|
"share": 1,
|
||||||
|
"write": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sort_field": "modified",
|
||||||
|
"sort_order": "DESC",
|
||||||
|
"title_field": "user",
|
||||||
|
"track_changes": 1
|
||||||
|
}
|
||||||
8
community/event_management/doctype/speaker/speaker.py
Normal file
8
community/event_management/doctype/speaker/speaker.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and contributors
|
||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
from frappe.model.document import Document
|
||||||
|
|
||||||
|
class Speaker(Document):
|
||||||
|
pass
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and Contributors
|
||||||
|
# See license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class TestSpeaker(unittest.TestCase):
|
||||||
|
pass
|
||||||
0
community/event_management/doctype/talk/__init__.py
Normal file
0
community/event_management/doctype/talk/__init__.py
Normal file
8
community/event_management/doctype/talk/talk.js
Normal file
8
community/event_management/doctype/talk/talk.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
// Copyright (c) 2021, FOSS United and contributors
|
||||||
|
// For license information, please see license.txt
|
||||||
|
|
||||||
|
frappe.ui.form.on('Talk', {
|
||||||
|
// refresh: function(frm) {
|
||||||
|
|
||||||
|
// }
|
||||||
|
});
|
||||||
139
community/event_management/doctype/talk/talk.json
Normal file
139
community/event_management/doctype/talk/talk.json
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
{
|
||||||
|
"actions": [],
|
||||||
|
"creation": "2021-08-18 08:42:58.711932",
|
||||||
|
"doctype": "DocType",
|
||||||
|
"editable_grid": 1,
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"field_order": [
|
||||||
|
"event",
|
||||||
|
"title",
|
||||||
|
"url",
|
||||||
|
"column_break_5",
|
||||||
|
"speaker",
|
||||||
|
"category",
|
||||||
|
"thumbnail",
|
||||||
|
"schedule_section",
|
||||||
|
"date",
|
||||||
|
"status",
|
||||||
|
"column_break_11",
|
||||||
|
"start_time",
|
||||||
|
"end_time",
|
||||||
|
"section_break_9",
|
||||||
|
"about",
|
||||||
|
"attachment",
|
||||||
|
"name_of_the_speaker"
|
||||||
|
],
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "title",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Title"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "name_of_the_speaker",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Name of the Speaker"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "url",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Video Embed Link"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "thumbnail",
|
||||||
|
"fieldtype": "Attach",
|
||||||
|
"label": "Preview Image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "event",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Event",
|
||||||
|
"options": "Event Details"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "about",
|
||||||
|
"fieldtype": "Text",
|
||||||
|
"label": "About the Talk"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "attachment",
|
||||||
|
"fieldtype": "Attach",
|
||||||
|
"label": "Attachment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "speaker",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Speaker",
|
||||||
|
"options": "Speaker"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "Pending",
|
||||||
|
"fieldname": "status",
|
||||||
|
"fieldtype": "Select",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"label": "Status",
|
||||||
|
"options": "Pending\nApproved\nRejected"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "column_break_5",
|
||||||
|
"fieldtype": "Column Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "section_break_9",
|
||||||
|
"fieldtype": "Section Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "category",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Category"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "schedule_section",
|
||||||
|
"fieldtype": "Section Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "date",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"label": "Date"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "column_break_11",
|
||||||
|
"fieldtype": "Column Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "start_time",
|
||||||
|
"fieldtype": "Time",
|
||||||
|
"label": "Start Time"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "end_time",
|
||||||
|
"fieldtype": "Time",
|
||||||
|
"label": "End Time"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"index_web_pages_for_search": 1,
|
||||||
|
"links": [],
|
||||||
|
"modified": "2021-08-24 16:47:34.557010",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "Talk",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
"email": 1,
|
||||||
|
"export": 1,
|
||||||
|
"print": 1,
|
||||||
|
"read": 1,
|
||||||
|
"report": 1,
|
||||||
|
"role": "System Manager",
|
||||||
|
"share": 1,
|
||||||
|
"write": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sort_field": "modified",
|
||||||
|
"sort_order": "DESC",
|
||||||
|
"title_field": "title",
|
||||||
|
"track_changes": 1
|
||||||
|
}
|
||||||
29
community/event_management/doctype/talk/talk.py
Normal file
29
community/event_management/doctype/talk/talk.py
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and contributors
|
||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
import frappe
|
||||||
|
from frappe.model.document import Document
|
||||||
|
|
||||||
|
class Talk(Document):
|
||||||
|
def before_save(self):
|
||||||
|
if not self.speaker:
|
||||||
|
self.save_speaker()
|
||||||
|
|
||||||
|
def save_speaker(self):
|
||||||
|
exists = frappe.db.exists({
|
||||||
|
'doctype': 'Speaker',
|
||||||
|
'user': frappe.session.user
|
||||||
|
})
|
||||||
|
|
||||||
|
if exists:
|
||||||
|
self.speaker = frappe.db.get_value(
|
||||||
|
'Speaker', {'user': frappe.session.user}, ["name"])
|
||||||
|
|
||||||
|
else:
|
||||||
|
speaker = frappe.get_doc({
|
||||||
|
"doctype": "Speaker",
|
||||||
|
"event": self.event,
|
||||||
|
"user": frappe.session.user
|
||||||
|
})
|
||||||
|
speaker.save(ignore_permissions=True)
|
||||||
|
self.speaker = speaker.name
|
||||||
8
community/event_management/doctype/talk/test_talk.py
Normal file
8
community/event_management/doctype/talk/test_talk.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and Contributors
|
||||||
|
# See license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class TestTalk(unittest.TestCase):
|
||||||
|
pass
|
||||||
0
community/event_management/web_form/__init__.py
Normal file
0
community/event_management/web_form/__init__.py
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
frappe.ready(function () {
|
||||||
|
frappe.web_form.after_load = () => {
|
||||||
|
frappe.web_form.set_value("user", frappe.session.user);
|
||||||
|
}
|
||||||
|
|
||||||
|
frappe.web_form.after_save = () => {
|
||||||
|
setTimeout(function () {
|
||||||
|
window.location.href = '/about';
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
{
|
||||||
|
"accept_payment": 0,
|
||||||
|
"allow_comments": 0,
|
||||||
|
"allow_delete": 0,
|
||||||
|
"allow_edit": 0,
|
||||||
|
"allow_incomplete": 0,
|
||||||
|
"allow_multiple": 0,
|
||||||
|
"allow_print": 0,
|
||||||
|
"amount": 0.0,
|
||||||
|
"amount_based_on_field": 0,
|
||||||
|
"apply_document_permissions": 0,
|
||||||
|
"button_label": "",
|
||||||
|
"creation": "2021-08-19 15:26:56.594526",
|
||||||
|
"custom_css": "[data-doctype=\"Web Form\"] {\n max-width: 720px;\n margin: 6rem auto;\n}",
|
||||||
|
"doc_type": "Attendee",
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "Web Form",
|
||||||
|
"idx": 0,
|
||||||
|
"is_standard": 1,
|
||||||
|
"login_required": 1,
|
||||||
|
"max_attachment_size": 0,
|
||||||
|
"modified": "2021-08-24 19:57:25.516319",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "attendee-registration",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"payment_button_label": "Buy Now",
|
||||||
|
"published": 1,
|
||||||
|
"route": "attendee-registration",
|
||||||
|
"route_to_success_link": 1,
|
||||||
|
"show_attachments": 0,
|
||||||
|
"show_in_grid": 0,
|
||||||
|
"show_sidebar": 0,
|
||||||
|
"sidebar_items": [],
|
||||||
|
"success_url": "/about",
|
||||||
|
"title": "Attendee Registration",
|
||||||
|
"web_form_fields": [
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"default": "",
|
||||||
|
"fieldname": "user",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "User",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"options": "User",
|
||||||
|
"read_only": 1,
|
||||||
|
"reqd": 0,
|
||||||
|
"show_in_filter": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"fieldname": "company",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Company",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"show_in_filter": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"fieldname": "what_are_you_hoping_to_learn",
|
||||||
|
"fieldtype": "Text",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "What are you hoping to learn",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"show_in_filter": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import frappe
|
||||||
|
|
||||||
|
def get_context(context):
|
||||||
|
# do your magic here
|
||||||
|
pass
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
frappe.ready(function () {
|
||||||
|
|
||||||
|
frappe.web_form.after_load = () => {
|
||||||
|
frappe.web_form.set_value("user", frappe.session.user);
|
||||||
|
}
|
||||||
|
|
||||||
|
frappe.web_form.after_save = () => {
|
||||||
|
setTimeout(function () {
|
||||||
|
window.location.href = '/about';
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
{
|
||||||
|
"accept_payment": 0,
|
||||||
|
"allow_comments": 0,
|
||||||
|
"allow_delete": 0,
|
||||||
|
"allow_edit": 0,
|
||||||
|
"allow_incomplete": 0,
|
||||||
|
"allow_multiple": 0,
|
||||||
|
"allow_print": 0,
|
||||||
|
"amount": 0.0,
|
||||||
|
"amount_based_on_field": 0,
|
||||||
|
"apply_document_permissions": 0,
|
||||||
|
"button_label": "Save",
|
||||||
|
"creation": "2021-08-16 16:27:06.566564",
|
||||||
|
"custom_css": "[data-doctype=\"Web Form\"] {\n max-width: 720px;\n margin: 6rem auto;\n}",
|
||||||
|
"doc_type": "Exhibitor",
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "Web Form",
|
||||||
|
"idx": 0,
|
||||||
|
"is_standard": 1,
|
||||||
|
"login_required": 1,
|
||||||
|
"max_attachment_size": 0,
|
||||||
|
"modified": "2021-08-23 10:12:24.038572",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "exhibitor-registration",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"payment_button_label": "Buy Now",
|
||||||
|
"published": 1,
|
||||||
|
"route": "exhibitor-registration",
|
||||||
|
"route_to_success_link": 0,
|
||||||
|
"show_attachments": 0,
|
||||||
|
"show_in_grid": 0,
|
||||||
|
"show_sidebar": 0,
|
||||||
|
"sidebar_items": [],
|
||||||
|
"success_url": "",
|
||||||
|
"title": "Exhibitor Registration",
|
||||||
|
"web_form_fields": [
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"fieldname": "user",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "User",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"options": "User",
|
||||||
|
"read_only": 1,
|
||||||
|
"reqd": 0,
|
||||||
|
"show_in_filter": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"fieldname": "company",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Company ",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"show_in_filter": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"fieldname": "description",
|
||||||
|
"fieldtype": "Text Editor",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Description",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"show_in_filter": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import frappe
|
||||||
|
|
||||||
|
def get_context(context):
|
||||||
|
# do your magic here
|
||||||
|
pass
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
frappe.ready(function () {
|
||||||
|
frappe.web_form.after_load = () => {
|
||||||
|
frappe.web_form.set_value("user", frappe.session.user);
|
||||||
|
}
|
||||||
|
|
||||||
|
frappe.web_form.after_save = () => {
|
||||||
|
setTimeout(function () {
|
||||||
|
window.location.href = '/about';
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
{
|
||||||
|
"accept_payment": 0,
|
||||||
|
"allow_comments": 0,
|
||||||
|
"allow_delete": 0,
|
||||||
|
"allow_edit": 0,
|
||||||
|
"allow_incomplete": 0,
|
||||||
|
"allow_multiple": 0,
|
||||||
|
"allow_print": 0,
|
||||||
|
"amount": 0.0,
|
||||||
|
"amount_based_on_field": 0,
|
||||||
|
"apply_document_permissions": 0,
|
||||||
|
"button_label": "Submit",
|
||||||
|
"client_script": "",
|
||||||
|
"creation": "2021-08-19 15:16:22.341723",
|
||||||
|
"custom_css": "[data-doctype=\"Web Form\"] {\n max-width: 720px;\n margin: 6rem auto;\n}",
|
||||||
|
"doc_type": "Talk",
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "Web Form",
|
||||||
|
"idx": 0,
|
||||||
|
"is_standard": 1,
|
||||||
|
"login_required": 1,
|
||||||
|
"max_attachment_size": 0,
|
||||||
|
"modified": "2021-08-24 19:57:06.806994",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "purpose-a-talk",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"payment_button_label": "Buy Now",
|
||||||
|
"published": 1,
|
||||||
|
"route": "propose-talk",
|
||||||
|
"route_to_success_link": 0,
|
||||||
|
"show_attachments": 0,
|
||||||
|
"show_in_grid": 0,
|
||||||
|
"show_sidebar": 0,
|
||||||
|
"sidebar_items": [],
|
||||||
|
"success_message": "Talk Submitted!",
|
||||||
|
"success_url": "/purpose-a-talk",
|
||||||
|
"title": "Propose a Talk",
|
||||||
|
"web_form_fields": [
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"fieldname": "title",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Title",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 1,
|
||||||
|
"show_in_filter": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"fieldname": "category",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Category",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"show_in_filter": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"fieldname": "event",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Event",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"options": "Event Details",
|
||||||
|
"read_only": 1,
|
||||||
|
"reqd": 0,
|
||||||
|
"show_in_filter": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"fieldname": "thumbnail",
|
||||||
|
"fieldtype": "Attach",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Preview Image",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"show_in_filter": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"fieldname": "about",
|
||||||
|
"fieldtype": "Text Editor",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "About",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 1,
|
||||||
|
"show_in_filter": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import frappe
|
||||||
|
|
||||||
|
def get_context(context):
|
||||||
|
# do your magic here
|
||||||
|
pass
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
frappe.ready(function () {
|
||||||
|
frappe.web_form.after_load = () => {
|
||||||
|
frappe.web_form.set_value("user", frappe.session.user);
|
||||||
|
}
|
||||||
|
frappe.web_form.after_save = () => {
|
||||||
|
setTimeout(function () {
|
||||||
|
window.location.href = '/event/conference2021/propose-talk';
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
{
|
||||||
|
"accept_payment": 0,
|
||||||
|
"allow_comments": 0,
|
||||||
|
"allow_delete": 0,
|
||||||
|
"allow_edit": 0,
|
||||||
|
"allow_incomplete": 0,
|
||||||
|
"allow_multiple": 0,
|
||||||
|
"allow_print": 0,
|
||||||
|
"amount": 0.0,
|
||||||
|
"amount_based_on_field": 0,
|
||||||
|
"apply_document_permissions": 0,
|
||||||
|
"button_label": "Register",
|
||||||
|
"creation": "2021-08-19 15:29:01.167930",
|
||||||
|
"custom_css": "[data-doctype=\"Web Form\"] {\n max-width: 720px;\n margin: 6rem auto;\n}",
|
||||||
|
"doc_type": "Speaker",
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "Web Form",
|
||||||
|
"idx": 0,
|
||||||
|
"is_standard": 1,
|
||||||
|
"login_required": 1,
|
||||||
|
"max_attachment_size": 0,
|
||||||
|
"modified": "2021-08-20 16:16:51.107177",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "speaker-registration",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"payment_button_label": "Buy Now",
|
||||||
|
"published": 1,
|
||||||
|
"route": "speaker-registration",
|
||||||
|
"route_to_success_link": 1,
|
||||||
|
"show_attachments": 0,
|
||||||
|
"show_in_grid": 0,
|
||||||
|
"show_sidebar": 0,
|
||||||
|
"sidebar_items": [],
|
||||||
|
"success_url": "/speaker-registration",
|
||||||
|
"title": "Speaker Registration",
|
||||||
|
"web_form_fields": [
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"fieldname": "event",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Event",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"options": "Event Details",
|
||||||
|
"read_only": 1,
|
||||||
|
"reqd": 0,
|
||||||
|
"show_in_filter": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"fieldname": "user",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "User",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"options": "User",
|
||||||
|
"read_only": 1,
|
||||||
|
"reqd": 0,
|
||||||
|
"show_in_filter": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"fieldname": "full_name",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Full Name",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"show_in_filter": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_read_on_all_link_options": 0,
|
||||||
|
"fieldname": "company",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"label": "Company",
|
||||||
|
"max_length": 0,
|
||||||
|
"max_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"reqd": 1,
|
||||||
|
"show_in_filter": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import frappe
|
||||||
|
|
||||||
|
def get_context(context):
|
||||||
|
# do your magic here
|
||||||
|
pass
|
||||||
0
community/event_management/web_template/__init__.py
Normal file
0
community/event_management/web_template/__init__.py
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<div class="section-with-cards">
|
||||||
|
<h1 class="course-home-headings">{{title}}</h1>
|
||||||
|
{%- if subtitle -%}
|
||||||
|
<p class="section-description">{{ subtitle }}</p>
|
||||||
|
{%- endif -%}
|
||||||
|
<div>
|
||||||
|
<div class="mentors-section">
|
||||||
|
{% for exhibitor in exhibitor_details %}
|
||||||
|
{% set exhibitor_doc = frappe.db.get_value("Exhibitor", exhibitor.exhibitor, ["user", "company"], as_dict= True)
|
||||||
|
%}
|
||||||
|
{% set member = frappe.get_doc("User", exhibitor_doc.user) %}
|
||||||
|
|
||||||
|
<div class="common-card-style member-card">
|
||||||
|
{{ widgets.Avatar(member=member, avatar_class="avatar-large")}}
|
||||||
|
<div class="small-title member-card-title">
|
||||||
|
{{ member.full_name }}
|
||||||
|
</div>
|
||||||
|
<div class="small-title">
|
||||||
|
{{exhibitor_doc.company}}
|
||||||
|
</div>
|
||||||
|
<a class="stretched-link" href=""></a>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<div class="event-btn"><a href="/exhibitor-registration?new=1&user={{ frappe.session.user }}&event={{ event }}"
|
||||||
|
class="btn btn-primary ">Become an Exhibitor</a></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"__unsaved": 1,
|
||||||
|
"creation": "2021-08-13 15:05:41.606772",
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "Web Template",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "title",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Title",
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "subtitle",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Subtitle",
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "event",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Event",
|
||||||
|
"options": "Event Details",
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "exhibitor_details",
|
||||||
|
"fieldtype": "Table Break",
|
||||||
|
"label": "Exhibitor Details",
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "exhibitor",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Exhibitor",
|
||||||
|
"options": "Exhibitor",
|
||||||
|
"reqd": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"idx": 1,
|
||||||
|
"modified": "2021-08-20 16:28:22.779057",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "Exhibitor Section",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"standard": 1,
|
||||||
|
"template": "",
|
||||||
|
"type": "Section"
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<div class="section-with-cards">
|
||||||
|
<h1 class="course-home-headings">{{title}}</h1>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"__unsaved": 1,
|
||||||
|
"creation": "2021-08-20 08:12:29.549625",
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "Web Template",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "title",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Title",
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "subtitle",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Subtitle",
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__unsaved": 1,
|
||||||
|
"fieldname": "hosts",
|
||||||
|
"fieldtype": "Table Break",
|
||||||
|
"label": "Hosts",
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "host",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Host",
|
||||||
|
"options": "Host",
|
||||||
|
"reqd": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"idx": 0,
|
||||||
|
"modified": "2021-08-20 08:16:25.805456",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "Host Section",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"standard": 1,
|
||||||
|
"template": "",
|
||||||
|
"type": "Section"
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<div class="section-with-cards">
|
||||||
|
<h1 class="course-home-headings">{{section_title}}</h1>
|
||||||
|
{%- if subtitle -%}
|
||||||
|
<p class="section-description">{{ subtitle }}</p>
|
||||||
|
{%- endif -%}
|
||||||
|
<div class="mentors-section">
|
||||||
|
{% for speaker in speaker_details %}
|
||||||
|
{% set speaker_doc = frappe.db.get_value("Speaker", speaker.speaker, ["user", "company"], as_dict= True)
|
||||||
|
%}
|
||||||
|
{% set member = frappe.get_doc("User", speaker_doc.user) %}
|
||||||
|
|
||||||
|
<div class="common-card-style member-card">
|
||||||
|
{{ widgets.Avatar(member=member, avatar_class="avatar-large") }}
|
||||||
|
|
||||||
|
<div class="small-title member-card-title">
|
||||||
|
{{ member.full_name }}
|
||||||
|
</div>
|
||||||
|
<div class="small-title">
|
||||||
|
{{speaker_doc.company}}
|
||||||
|
</div>
|
||||||
|
<a class="stretched-link" href=""></a>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="event-btn">
|
||||||
|
<a href='/propose-talk?new=1&event={{ event }}' class="btn btn-primary ">Propose a Talk</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"__unsaved": 1,
|
||||||
|
"creation": "2021-08-12 21:15:14.492000",
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "Web Template",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "section_title",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Section Title",
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "subtitle",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Subtitle",
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "event_",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Event ",
|
||||||
|
"options": "Event Details",
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "speaker_details",
|
||||||
|
"fieldtype": "Table Break",
|
||||||
|
"label": "Speaker Details",
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "speaker",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Speaker",
|
||||||
|
"options": "Speaker",
|
||||||
|
"reqd": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"idx": 1,
|
||||||
|
"modified": "2021-08-20 10:59:54.965714",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "Speaker Section",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"standard": 1,
|
||||||
|
"template": "",
|
||||||
|
"type": "Section"
|
||||||
|
}
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
<div class="section-with-cards">
|
||||||
|
<div class="course-home-headings">{{title}}</div>
|
||||||
|
{%- if subtitle -%}
|
||||||
|
<p class="section-description">{{ subtitle }}</p>
|
||||||
|
{%- endif -%}
|
||||||
|
<div class="cards-parent">
|
||||||
|
|
||||||
|
{% for talk in talk_details %}
|
||||||
|
|
||||||
|
{% set talk_doc = frappe.db.get_value('Talk', talk.talk,
|
||||||
|
["title", "category", "speaker", "url", "thumbnail", "date", "start_time", "end_time"], as_dict=True) %}
|
||||||
|
{% set speaker_info = frappe.db.get_value("Speaker", talk_doc.speaker, ["user"], as_dict=True) %}
|
||||||
|
{% set member = frappe.get_doc("User", speaker_info.user) %}
|
||||||
|
|
||||||
|
{% if talk_doc.thumbnail %}
|
||||||
|
{% set thumbnail = talk_doc.thumbnail %}
|
||||||
|
{% else %}
|
||||||
|
{% set video_id = talk_doc.url and talk_doc.url.split("/")[-1] %}
|
||||||
|
{% set thumbnail = video_id and "https://img.youtube.com/vi/" + video_id + "/maxresdefault.jpg" %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="common-card-style flex-column">
|
||||||
|
<div class="course-image {% if not thumbnail %}default-image{% endif %}" {% if thumbnail %}
|
||||||
|
style="background-image: url( {{ thumbnail }} );" {% endif %}>
|
||||||
|
<div class="course-tags">
|
||||||
|
{% for tag in talk_doc.category.split(",") %}
|
||||||
|
<div class="course-card-pills">{{ tag }}</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% if not thumbnail %}
|
||||||
|
<div class="default-image-text">{{ talk_doc.title[0] }}</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="course-card-content">
|
||||||
|
<div class="course-card-content"></div>
|
||||||
|
<div class="course-card-title">{{talk_doc.title}}</div>
|
||||||
|
<div class="muted-text mb-3">
|
||||||
|
{% if talk_doc.date %}
|
||||||
|
<span>
|
||||||
|
<img src="/assets/community/icons/calendar.svg">
|
||||||
|
{{ frappe.utils.format_date(talk_doc.date, "medium") }}
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
|
<span class="pull-right">
|
||||||
|
{% if talk_doc.start_time %}
|
||||||
|
<span class="mr-3">
|
||||||
|
<b>From:</b>
|
||||||
|
{{ frappe.utils.format_time(talk_doc.start_time, "HH:mm") }}
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
|
{% if talk_doc.end_time %}
|
||||||
|
<span>
|
||||||
|
<b>To:</b>
|
||||||
|
{{ frappe.utils.format_time(talk_doc.end_time, "HH:mm") }}
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="card-divider"></div>
|
||||||
|
<div class="course-card-meta-2">
|
||||||
|
{{ widgets.Avatar(member=member, avatar_class="avatar-small")}}
|
||||||
|
<span class="course-instructor"> {{ member.full_name }} </span>
|
||||||
|
<span class="small-title company-name"></span>
|
||||||
|
</div>
|
||||||
|
<div class="view-talk-link">
|
||||||
|
Vew Talk
|
||||||
|
<img class="ml-3" src="/assets/community/icons/black-arrow.svg" />
|
||||||
|
</div>
|
||||||
|
<a class="stretched-link" href="{{talk_doc.url}}"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"__unsaved": 1,
|
||||||
|
"creation": "2021-08-13 11:34:07.611034",
|
||||||
|
"docstatus": 0,
|
||||||
|
"doctype": "Web Template",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "title",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Title",
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "subtitle",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"label": "Subtitle",
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "event",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Event",
|
||||||
|
"options": "Event Details",
|
||||||
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "talk_details",
|
||||||
|
"fieldtype": "Table Break",
|
||||||
|
"label": "Talk Details",
|
||||||
|
"reqd": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "talk",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Talk",
|
||||||
|
"options": "Talk",
|
||||||
|
"reqd": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"idx": 1,
|
||||||
|
"modified": "2021-08-20 10:58:45.556636",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "Event Management",
|
||||||
|
"name": "Talk Section",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"standard": 1,
|
||||||
|
"template": "",
|
||||||
|
"type": "Section"
|
||||||
|
}
|
||||||
@@ -85,7 +85,8 @@ web_include_css = "community.bundle.css"
|
|||||||
# Override standard doctype classes
|
# Override standard doctype classes
|
||||||
|
|
||||||
override_doctype_class = {
|
override_doctype_class = {
|
||||||
"User": "community.overrides.user.CustomUser"
|
"User": "community.overrides.user.CustomUser",
|
||||||
|
"Web Template": "community.overrides.web_template.CustomWebTemplate"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Document Events
|
# Document Events
|
||||||
@@ -130,7 +131,7 @@ fixtures = ["Custom Field"]
|
|||||||
# auto_cancel_exempted_doctypes = ["Auto Repeat"]
|
# auto_cancel_exempted_doctypes = ["Auto Repeat"]
|
||||||
|
|
||||||
# Add all simple route rules here
|
# Add all simple route rules here
|
||||||
primary_rules = [
|
website_route_rules = [
|
||||||
{"from_route": "/sketches/<sketch>", "to_route": "sketches/sketch"},
|
{"from_route": "/sketches/<sketch>", "to_route": "sketches/sketch"},
|
||||||
{"from_route": "/courses/<course>", "to_route": "courses/course"},
|
{"from_route": "/courses/<course>", "to_route": "courses/course"},
|
||||||
{"from_route": "/courses/<course>/<topic>", "to_route": "courses/topic"},
|
{"from_route": "/courses/<course>/<topic>", "to_route": "courses/topic"},
|
||||||
@@ -146,40 +147,10 @@ primary_rules = [
|
|||||||
{"from_route": "/courses/<course>/about", "to_route": "batch/about"},
|
{"from_route": "/courses/<course>/about", "to_route": "batch/about"},
|
||||||
{"from_route": "/courses/<course>/progress", "to_route": "batch/progress"},
|
{"from_route": "/courses/<course>/progress", "to_route": "batch/progress"},
|
||||||
{"from_route": "/courses/<course>/join", "to_route": "batch/join"},
|
{"from_route": "/courses/<course>/join", "to_route": "batch/join"},
|
||||||
{"from_route": "/discussions/<discussion>", "to_route": "discussions/discussion"}
|
{"from_route": "/discussions/<discussion>", "to_route": "discussions/discussion"},
|
||||||
|
{"from_route": "/user/<string(minlength=4):username>", "to_route": "profiles/profile"},
|
||||||
]
|
]
|
||||||
|
|
||||||
# Any frappe default URL is blocked by profile-rules, add it here to unblock it
|
|
||||||
whitelist = [
|
|
||||||
"/home",
|
|
||||||
"/login",
|
|
||||||
"/update-password",
|
|
||||||
"/update-profile",
|
|
||||||
"/third-party-apps",
|
|
||||||
"/website_script.js",
|
|
||||||
"/courses",
|
|
||||||
"/sketches",
|
|
||||||
"/admin",
|
|
||||||
"/socket.io",
|
|
||||||
"/hackathons",
|
|
||||||
"/dashboard",
|
|
||||||
"/join-request",
|
|
||||||
"/add-a-new-batch",
|
|
||||||
"/new-sign-up",
|
|
||||||
"/message",
|
|
||||||
"/about",
|
|
||||||
"/edit-profile",
|
|
||||||
"/discussions"
|
|
||||||
]
|
|
||||||
whitelist_rules = [{"from_route": p, "to_route": p[1:]} for p in whitelist]
|
|
||||||
|
|
||||||
# regex rule to match all profiles
|
|
||||||
profile_rules = [
|
|
||||||
{"from_route": "/<string(minlength=4):username>", "to_route": "profiles/profile"},
|
|
||||||
]
|
|
||||||
|
|
||||||
website_route_rules = primary_rules + whitelist_rules + profile_rules
|
|
||||||
|
|
||||||
website_redirects = [
|
website_redirects = [
|
||||||
{"source": "/update-profile", "target": "/edit-profile"},
|
{"source": "/update-profile", "target": "/edit-profile"},
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -8,7 +8,9 @@
|
|||||||
"field_order": [
|
"field_order": [
|
||||||
"course",
|
"course",
|
||||||
"title",
|
"title",
|
||||||
|
"column_break_3",
|
||||||
"description",
|
"description",
|
||||||
|
"section_break_5",
|
||||||
"lessons"
|
"lessons"
|
||||||
],
|
],
|
||||||
"fields": [
|
"fields": [
|
||||||
@@ -20,7 +22,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fieldname": "description",
|
"fieldname": "description",
|
||||||
"fieldtype": "Markdown Editor",
|
"fieldtype": "Small Text",
|
||||||
"label": "Description"
|
"label": "Description"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -35,6 +37,14 @@
|
|||||||
"fieldtype": "Table",
|
"fieldtype": "Table",
|
||||||
"label": "Lessons",
|
"label": "Lessons",
|
||||||
"options": "Lessons"
|
"options": "Lessons"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "column_break_3",
|
||||||
|
"fieldtype": "Column Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "section_break_5",
|
||||||
|
"fieldtype": "Section Break"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
@@ -45,7 +55,7 @@
|
|||||||
"link_fieldname": "chapter"
|
"link_fieldname": "chapter"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"modified": "2021-07-27 16:28:08.667964",
|
"modified": "2021-08-19 13:43:51.025072",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "LMS",
|
"module": "LMS",
|
||||||
"name": "Chapter",
|
"name": "Chapter",
|
||||||
|
|||||||
@@ -3,11 +3,6 @@
|
|||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
from ..lesson.lesson import update_progress
|
|
||||||
|
|
||||||
class ExerciseSubmission(Document):
|
class ExerciseSubmission(Document):
|
||||||
|
pass
|
||||||
def after_insert(self):
|
|
||||||
course_details = frappe.get_doc("LMS Course", self.course)
|
|
||||||
if not (course_details.is_mentor(frappe.session.user) or frappe.flags.in_test):
|
|
||||||
update_progress(self.lesson)
|
|
||||||
|
|||||||
@@ -91,42 +91,5 @@ def save_progress(lesson, course, status):
|
|||||||
"lesson": lesson,
|
"lesson": lesson,
|
||||||
"status": status,
|
"status": status,
|
||||||
}).save(ignore_permissions=True)
|
}).save(ignore_permissions=True)
|
||||||
return "OK"
|
course_details = frappe.get_doc("LMS Course", course)
|
||||||
|
return course_details.get_course_progress()
|
||||||
def update_progress(lesson):
|
|
||||||
user = frappe.session.user
|
|
||||||
if not all_dynamic_content_submitted(lesson, user):
|
|
||||||
return
|
|
||||||
if frappe.db.exists("LMS Course Progress", {"lesson": lesson, "owner": user}):
|
|
||||||
course_progress = frappe.get_doc("LMS Course Progress", {"lesson": lesson, "owner": user})
|
|
||||||
course_progress.status = "Complete"
|
|
||||||
course_progress.save(ignore_permissions=True)
|
|
||||||
|
|
||||||
def all_dynamic_content_submitted(lesson, user):
|
|
||||||
all_exercises_submitted = check_all_exercise_submission(lesson, user)
|
|
||||||
all_quiz_submitted = check_all_quiz_submitted(lesson, user)
|
|
||||||
return all_exercises_submitted and all_quiz_submitted
|
|
||||||
|
|
||||||
def check_all_exercise_submission(lesson, user):
|
|
||||||
exercise_names = frappe.get_list("Exercise", {"lesson": lesson}, pluck="name", ignore_permissions=True)
|
|
||||||
if not len(exercise_names):
|
|
||||||
return True
|
|
||||||
query = {
|
|
||||||
"exercise": ["in", exercise_names],
|
|
||||||
"owner": user
|
|
||||||
}
|
|
||||||
if frappe.db.count("Exercise Submission", query) == len(exercise_names):
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def check_all_quiz_submitted(lesson, user):
|
|
||||||
quizzes = frappe.get_list("LMS Quiz", {"lesson": lesson}, pluck="name", ignore_permissions=True)
|
|
||||||
if not len(quizzes):
|
|
||||||
return True
|
|
||||||
query = {
|
|
||||||
"quiz": ["in", quizzes],
|
|
||||||
"owner": user
|
|
||||||
}
|
|
||||||
if frappe.db.count("LMS Quiz Submission", query) == len(quizzes):
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|||||||
@@ -35,14 +35,6 @@ class LMSBatch(Document):
|
|||||||
filters['member_type'] = member_type
|
filters['member_type'] = member_type
|
||||||
return frappe.db.exists("LMS Batch Membership", filters)
|
return frappe.db.exists("LMS Batch Membership", filters)
|
||||||
|
|
||||||
def get_messages(self):
|
|
||||||
messages = frappe.get_all("LMS Message", {"batch": self.name}, ["*"], order_by="creation")
|
|
||||||
for message in messages:
|
|
||||||
message.message = frappe.utils.md_to_html(message.message)
|
|
||||||
if message.author == frappe.session.user:
|
|
||||||
message.author_name = "You"
|
|
||||||
message.is_author = True
|
|
||||||
return messages
|
|
||||||
|
|
||||||
def get_membership(self, email):
|
def get_membership(self, email):
|
||||||
"""Returns the membership document of given user.
|
"""Returns the membership document of given user.
|
||||||
|
|||||||
0
community/lms/doctype/lms_certification/__init__.py
Normal file
0
community/lms/doctype/lms_certification/__init__.py
Normal file
14
community/lms/doctype/lms_certification/lms_certification.js
Normal file
14
community/lms/doctype/lms_certification/lms_certification.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
// Copyright (c) 2021, FOSS United and contributors
|
||||||
|
// For license information, please see license.txt
|
||||||
|
|
||||||
|
frappe.ui.form.on('LMS Certification', {
|
||||||
|
onload: function (frm) {
|
||||||
|
frm.set_query("student", function (doc) {
|
||||||
|
return {
|
||||||
|
filters: {
|
||||||
|
"ignore_user_type": 1,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"actions": [],
|
||||||
|
"creation": "2021-08-16 15:47:19.494055",
|
||||||
|
"doctype": "DocType",
|
||||||
|
"editable_grid": 1,
|
||||||
|
"engine": "InnoDB",
|
||||||
|
"field_order": [
|
||||||
|
"student",
|
||||||
|
"issue_date",
|
||||||
|
"column_break_3",
|
||||||
|
"course",
|
||||||
|
"expiry_date"
|
||||||
|
],
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldname": "student",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"in_standard_filter": 1,
|
||||||
|
"label": "Student",
|
||||||
|
"options": "User"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "issue_date",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"label": "Issue Date"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "column_break_3",
|
||||||
|
"fieldtype": "Column Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "course",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"in_standard_filter": 1,
|
||||||
|
"label": "Course",
|
||||||
|
"options": "LMS Course"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "expiry_date",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"label": "Expiry Date"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"index_web_pages_for_search": 1,
|
||||||
|
"links": [],
|
||||||
|
"modified": "2021-08-16 15:47:19.494055",
|
||||||
|
"modified_by": "Administrator",
|
||||||
|
"module": "LMS",
|
||||||
|
"name": "LMS Certification",
|
||||||
|
"owner": "Administrator",
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
"email": 1,
|
||||||
|
"export": 1,
|
||||||
|
"print": 1,
|
||||||
|
"read": 1,
|
||||||
|
"report": 1,
|
||||||
|
"role": "System Manager",
|
||||||
|
"share": 1,
|
||||||
|
"write": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sort_field": "modified",
|
||||||
|
"sort_order": "DESC",
|
||||||
|
"track_changes": 1
|
||||||
|
}
|
||||||
41
community/lms/doctype/lms_certification/lms_certification.py
Normal file
41
community/lms/doctype/lms_certification/lms_certification.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and contributors
|
||||||
|
# For license information, please see license.txt
|
||||||
|
|
||||||
|
import frappe
|
||||||
|
from frappe.model.document import Document
|
||||||
|
from frappe.utils import nowdate, add_years
|
||||||
|
from frappe import _
|
||||||
|
from frappe.utils.pdf import get_pdf
|
||||||
|
|
||||||
|
class LMSCertification(Document):
|
||||||
|
|
||||||
|
def validate(self):
|
||||||
|
certificates = frappe.get_all("LMS Certification", {
|
||||||
|
"student": self.student,
|
||||||
|
"course": self.course,
|
||||||
|
"expiry_date": [">", nowdate()]
|
||||||
|
})
|
||||||
|
if len(certificates):
|
||||||
|
full_name = frappe.db.get_value("User", self.student, "full_name")
|
||||||
|
course_name = frappe.db.get_value("LMS Course", self.course, "title")
|
||||||
|
frappe.throw(_("There is already a valid certificate for user {0} for the course {1}").format(full_name, course_name))
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def create_certificate(course):
|
||||||
|
course_details = frappe.get_doc("LMS Course", course)
|
||||||
|
certificate = course_details.is_certified()
|
||||||
|
|
||||||
|
if certificate:
|
||||||
|
return certificate
|
||||||
|
|
||||||
|
else:
|
||||||
|
expires_after_yrs = course_details.expiry
|
||||||
|
certificate = frappe.get_doc({
|
||||||
|
"doctype": "LMS Certification",
|
||||||
|
"student": frappe.session.user,
|
||||||
|
"course": course,
|
||||||
|
"issue_date": nowdate(),
|
||||||
|
"expiry_date": add_years(nowdate(), int(expires_after_yrs))
|
||||||
|
})
|
||||||
|
certificate.save(ignore_permissions=True)
|
||||||
|
return certificate.name
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Copyright (c) 2021, FOSS United and Contributors
|
||||||
|
# See license.txt
|
||||||
|
|
||||||
|
# import frappe
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class TestLMSCertification(unittest.TestCase):
|
||||||
|
pass
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
frappe.ui.form.on('LMS Course', {
|
frappe.ui.form.on('LMS Course', {
|
||||||
|
|
||||||
onload: function (frm) {
|
onload: function (frm) {
|
||||||
|
|
||||||
frm.set_query("chapter", "chapters", function () {
|
frm.set_query("chapter", "chapters", function () {
|
||||||
return {
|
return {
|
||||||
filters: {
|
filters: {
|
||||||
@@ -11,6 +12,14 @@ frappe.ui.form.on('LMS Course', {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
frm.set_query("instructor", function (doc) {
|
||||||
|
return {
|
||||||
|
filters: {
|
||||||
|
"ignore_user_type": 1,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -18,9 +18,13 @@
|
|||||||
"video_link",
|
"video_link",
|
||||||
"image",
|
"image",
|
||||||
"column_break_3",
|
"column_break_3",
|
||||||
|
"instructor",
|
||||||
"tags",
|
"tags",
|
||||||
|
"section_break_7",
|
||||||
"is_published",
|
"is_published",
|
||||||
|
"column_break_9",
|
||||||
"upcoming",
|
"upcoming",
|
||||||
|
"column_break_11",
|
||||||
"disable_self_learning",
|
"disable_self_learning",
|
||||||
"section_break_5",
|
"section_break_5",
|
||||||
"short_introduction",
|
"short_introduction",
|
||||||
@@ -94,6 +98,27 @@
|
|||||||
"fieldtype": "Table",
|
"fieldtype": "Table",
|
||||||
"label": "Chapters",
|
"label": "Chapters",
|
||||||
"options": "Chapters"
|
"options": "Chapters"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "instructor",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"in_list_view": 1,
|
||||||
|
"in_standard_filter": 1,
|
||||||
|
"label": "Instructor",
|
||||||
|
"options": "User"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "section_break_7",
|
||||||
|
"fieldtype": "Section Break",
|
||||||
|
"label": "Course Settings"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "column_break_9",
|
||||||
|
"fieldtype": "Column Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "column_break_11",
|
||||||
|
"fieldtype": "Column Break"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
@@ -115,7 +140,7 @@
|
|||||||
"link_fieldname": "course"
|
"link_fieldname": "course"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"modified": "2021-07-28 19:01:50.677445",
|
"modified": "2021-08-20 11:01:15.795219",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "LMS",
|
"module": "LMS",
|
||||||
"name": "LMS Course",
|
"name": "LMS Course",
|
||||||
|
|||||||
@@ -144,6 +144,8 @@ class LMSCourse(Document):
|
|||||||
return batch_name and frappe.get_doc("LMS Batch", batch_name)
|
return batch_name and frappe.get_doc("LMS Batch", batch_name)
|
||||||
|
|
||||||
def get_instructor(self):
|
def get_instructor(self):
|
||||||
|
if self.instructor:
|
||||||
|
return frappe.get_doc("User", self.instructor)
|
||||||
return frappe.get_doc("User", self.owner)
|
return frappe.get_doc("User", self.owner)
|
||||||
|
|
||||||
def get_chapters(self):
|
def get_chapters(self):
|
||||||
@@ -347,6 +349,16 @@ class LMSCourse(Document):
|
|||||||
"next": numbers[index+1] if index+1 < len(numbers) else None
|
"next": numbers[index+1] if index+1 < len(numbers) else None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def is_certified(self):
|
||||||
|
certificate = frappe.get_all("LMS Certification",
|
||||||
|
{
|
||||||
|
"student": frappe.session.user,
|
||||||
|
"course": self.name
|
||||||
|
})
|
||||||
|
if len(certificate):
|
||||||
|
return certificate[0].name
|
||||||
|
return
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def reindex_exercises(doc):
|
def reindex_exercises(doc):
|
||||||
course_data = json.loads(doc)
|
course_data = json.loads(doc)
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
# Copyright (c) 2021, FOSS United and contributors
|
# Copyright (c) 2021, FOSS United and contributors
|
||||||
# For license information, please see license.txt
|
# For license information, please see license.txt
|
||||||
|
|
||||||
from community.lms.doctype.lesson.lesson import update_progress
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
import json
|
import json
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from ..lesson.lesson import update_progress
|
|
||||||
|
|
||||||
class LMSQuiz(Document):
|
class LMSQuiz(Document):
|
||||||
def validate(self):
|
def validate(self):
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ frappe.ready(function () {
|
|||||||
|
|
||||||
frappe.web_form.after_save = () => {
|
frappe.web_form.after_save = () => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
window.location.href = `/${frappe.web_form.get_value(["username"])}`;
|
window.location.href = `/user/${frappe.web_form.get_value(["username"])}`;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -14,15 +14,15 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% set is_instructor = frappe.session.user == course.instructor %}
|
||||||
<div class="lessons">
|
<div class="lessons">
|
||||||
|
|
||||||
{% for lesson in course.get_lessons(chapter) %}
|
{% for lesson in course.get_lessons(chapter) %}
|
||||||
|
|
||||||
<div class="lesson-info{% if membership.current_lesson == lesson.name %} active-lesson {% endif %}">
|
<div class="lesson-info{% if membership.current_lesson == lesson.name %} active-lesson {% endif %}">
|
||||||
|
|
||||||
{% if membership or lesson.include_in_preview %}
|
{% if membership or lesson.include_in_preview or is_instructor %}
|
||||||
<a class="lesson-links"
|
<a class="lesson-links" href="{{ course.get_learn_url(lesson.number) }}{{course.query_parameter}}"
|
||||||
href="{{ course.get_learn_url(lesson.number) }}{{course.query_parameter}}"
|
|
||||||
data-course="{{ course.name }}">
|
data-course="{{ course.name }}">
|
||||||
{{ lesson.title }}
|
{{ lesson.title }}
|
||||||
|
|
||||||
@@ -56,6 +56,11 @@
|
|||||||
<script>
|
<script>
|
||||||
frappe.ready(() => {
|
frappe.ready(() => {
|
||||||
expand_the_active_chapter();
|
expand_the_active_chapter();
|
||||||
|
|
||||||
|
$(".chapter-title").click((e) => {
|
||||||
|
rotate_chapter_icon(e);
|
||||||
|
});
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
var expand_the_first_chapter = () => {
|
var expand_the_first_chapter = () => {
|
||||||
@@ -97,4 +102,14 @@
|
|||||||
$(element).siblings(".chapter-title").children(".chapter-icon").css("transform", "rotate(90deg)");
|
$(element).siblings(".chapter-title").children(".chapter-icon").css("transform", "rotate(90deg)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var rotate_chapter_icon = (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
var icon = $(e.currentTarget).children(".chapter-icon");
|
||||||
|
if (icon.css("transform") == "none") {
|
||||||
|
icon.css("transform", "rotate(90deg)");
|
||||||
|
} else {
|
||||||
|
icon.css("transform", "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="course-author">
|
<div class="course-author">
|
||||||
{% with author = course.get_instructor() %}
|
{% with author = course.get_instructor() %}
|
||||||
{{ widgets.Avatar(member=author, avatar_class="avatar-medium") }} <a href="/{{author.username}}">{{ author.full_name }}</a>
|
{{ widgets.Avatar(member=author, avatar_class="avatar-medium") }} <a href="/user/{{author.username}}">{{ author.full_name }}</a>
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<div class="instructor">
|
<div class="instructor">
|
||||||
{{ widgets.Avatar(member=instructor, avatar_class="avatar-medium") }}
|
{{ widgets.Avatar(member=instructor, avatar_class="avatar-medium") }}
|
||||||
<a class="ml-1 instructor-title" href="/{{instructor.username}}">{{ instructor.full_name }}</a>
|
<a class="ml-1 instructor-title" href="/user/{{instructor.username}}">{{ instructor.full_name }}</a>
|
||||||
<div class="instructor-subtitle">Course Creator</div>
|
<div class="instructor-subtitle">Course Creator</div>
|
||||||
<!-- <div class="instructor-subtitle">Created {{instructor.get_course_count()}} courses</div> -->
|
<!-- <div class="instructor-subtitle">Created {{instructor.get_course_count()}} courses</div> -->
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -11,5 +11,5 @@
|
|||||||
Created {{ course_count }} {{ suffix }}
|
Created {{ course_count }} {{ suffix }}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a class="stretched-link" href="/{{ member.username }}"></a>
|
<a class="stretched-link" href="/user/{{ member.username }}"></a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
<div class="review-card-footer">
|
<div class="review-card-footer">
|
||||||
<div>
|
<div>
|
||||||
{{ widgets.Avatar(member=review.owner_details, avatar_class="avatar-medium") }}
|
{{ widgets.Avatar(member=review.owner_details, avatar_class="avatar-medium") }}
|
||||||
<a class="button-links" href="/{{review.owner_details.username}}">
|
<a class="button-links" href="/user/{{review.owner_details.username}}">
|
||||||
<span class="course-instructor">
|
<span class="course-instructor">
|
||||||
{{ review.owner_details.full_name }}
|
{{ review.owner_details.full_name }}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
<div class="sketch-teaser">
|
|
||||||
<div class="sketch-image">
|
|
||||||
<a href="/sketches/{{sketch.sketch_id}}">
|
|
||||||
{{ sketch.to_svg() }}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="sketch-footer">
|
|
||||||
<div class="sketch-title">
|
|
||||||
<a href="sketches/{{sketch.sketch_id}}">{{sketch.title}}</a>
|
|
||||||
</div>
|
|
||||||
<div class="sketch-author">
|
|
||||||
{% set owner = sketch.get_owner() %}
|
|
||||||
by <a href="/{{owner.username}}">{{owner.full_name}}</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@@ -2,3 +2,4 @@ Community
|
|||||||
Hackathon
|
Hackathon
|
||||||
LMS
|
LMS
|
||||||
Conference
|
Conference
|
||||||
|
Event Management
|
||||||
15
community/overrides/web_template.py
Normal file
15
community/overrides/web_template.py
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import frappe
|
||||||
|
from frappe.website.doctype.web_template.web_template import WebTemplate
|
||||||
|
from community.widgets import Widgets
|
||||||
|
import json
|
||||||
|
|
||||||
|
class CustomWebTemplate(WebTemplate):
|
||||||
|
|
||||||
|
def render(self, values=None):
|
||||||
|
if not values:
|
||||||
|
values = {}
|
||||||
|
values = frappe.parse_json(values)
|
||||||
|
values.update({"values": values})
|
||||||
|
values.update({"widgets": Widgets()})
|
||||||
|
template = self.get_template(self.standard)
|
||||||
|
return frappe.render_template(template, values)
|
||||||
@@ -8,3 +8,4 @@ community.patches.replace_member_with_user_in_lms_message
|
|||||||
community.patches.replace_member_with_user_in_mentor_request
|
community.patches.replace_member_with_user_in_mentor_request
|
||||||
community.patches.v0_0.chapter_lesson_index_table
|
community.patches.v0_0.chapter_lesson_index_table
|
||||||
execute:frappe.delete_doc("DocType", "LMS Message")
|
execute:frappe.delete_doc("DocType", "LMS Message")
|
||||||
|
community.patches.v0_0.course_instructor_update
|
||||||
|
|||||||
7
community/patches/v0_0/course_instructor_update.py
Normal file
7
community/patches/v0_0/course_instructor_update.py
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import frappe
|
||||||
|
|
||||||
|
def execute():
|
||||||
|
frappe.reload_doc("lms", "doctype", "lms_course")
|
||||||
|
courses = frappe.get_all("LMS Course", fields=["name", "owner"])
|
||||||
|
for course in courses:
|
||||||
|
frappe.db.set_value("LMS Course", course.name, "instructor", course.owner)
|
||||||
@@ -279,6 +279,16 @@ input[type=checkbox] {
|
|||||||
line-height: 135%;
|
line-height: 135%;
|
||||||
color: var(--text-color);
|
color: var(--text-color);
|
||||||
}
|
}
|
||||||
|
.view-talk-link {
|
||||||
|
background: var(--button-background);
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 8px 22px 8px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 135%;
|
||||||
|
color: var(--text-color);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
.cards-parent {
|
.cards-parent {
|
||||||
display: grid;
|
display: grid;
|
||||||
@@ -620,6 +630,10 @@ input[type=checkbox] {
|
|||||||
margin-bottom: 0.75rem;
|
margin-bottom: 0.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.course-content-parent .chapter-description {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
.chapter-icon {
|
.chapter-icon {
|
||||||
margin-right: .25rem;
|
margin-right: .25rem;
|
||||||
}
|
}
|
||||||
@@ -749,6 +763,10 @@ input[type=checkbox] {
|
|||||||
padding: 20px 0px 16px;
|
padding: 20px 0px 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.member-card .talk-title{
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
.member-card-large {
|
.member-card-large {
|
||||||
width: 256px;
|
width: 256px;
|
||||||
height: 188px;
|
height: 188px;
|
||||||
@@ -774,6 +792,7 @@ input[type=checkbox] {
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.member-card-xl .member-card-title {
|
.member-card-xl .member-card-title {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
@@ -828,6 +847,11 @@ input[type=checkbox] {
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.avatar-medium-schedule{
|
||||||
|
width: 70px;
|
||||||
|
height: 70px;
|
||||||
|
}
|
||||||
|
|
||||||
.avatar-large {
|
.avatar-large {
|
||||||
width: 88px;
|
width: 88px;
|
||||||
height: 88px;
|
height: 88px;
|
||||||
@@ -1263,6 +1287,99 @@ pre {
|
|||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.talk-title {
|
||||||
|
border-bottom: 1px solid #cecdcd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mt-5 {
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-name {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.speaker-cards-parent {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||||
|
-moz-column-gap: 32px;
|
||||||
|
column-gap: 14px;
|
||||||
|
row-gap: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatar img {
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-with-cards .course-home-headings {
|
||||||
|
margin: 0px 0px 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-container {
|
||||||
|
padding-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-inner-container {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1.2fr 2fr 1fr 0.2fr;
|
||||||
|
padding: 0 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-slot {
|
||||||
|
font-weight: bolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-title {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.schedule-info{
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.drop-down-icon {
|
||||||
|
padding : 5px 0 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.event-btn {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.exhibitor-card {
|
||||||
|
text-align: center;
|
||||||
|
padding-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.exhibitor-card .company-name{
|
||||||
|
font-size: 25px;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.exhibitor-card .company-logo{
|
||||||
|
height: 158px;
|
||||||
|
width: 252px;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-speaker-avatar {
|
||||||
|
display: flex;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-speaker {
|
||||||
|
margin-left: 1rem;
|
||||||
|
padding-bottom: 0;
|
||||||
|
margin-top: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-avatar img{
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
|
||||||
.thread-card {
|
.thread-card {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
@@ -1295,3 +1412,40 @@ textarea.form-control {
|
|||||||
color: #192734;
|
color: #192734;
|
||||||
margin-left: 0.5rem;
|
margin-left: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.certificate-page .common-card-style {
|
||||||
|
flex-direction: column;
|
||||||
|
font-family: Inter;
|
||||||
|
color: black;
|
||||||
|
font-size: 2rem;
|
||||||
|
text-align: center;
|
||||||
|
padding: 5rem;
|
||||||
|
background-image: url(/assets/community/images/certificate-background.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.certificate-heading {
|
||||||
|
font-size: 4rem;
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.certificate-para {
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.certificate-page .common-card-style {
|
||||||
|
padding: 2rem;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.certificate-heading {
|
||||||
|
font-size: 3rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 360px) {
|
||||||
|
.certificate-heading {
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
3
community/public/icons/down-arrow-white.svg
Normal file
3
community/public/icons/down-arrow-white.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||||
|
<path d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 293 B |
3
community/public/icons/down-arrow1.svg
Normal file
3
community/public/icons/down-arrow1.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||||
|
<path d="M6 9l6 6 6-6"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 206 B |
3
community/public/icons/like.svg
Normal file
3
community/public/icons/like.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M13.0746 3.60967C12.7814 3.31071 12.4333 3.07355 12.0501 2.91174C11.6669 2.74994 11.2562 2.66666 10.8415 2.66666C10.4267 2.66666 10.016 2.74994 9.63283 2.91174C9.24966 3.07355 8.90152 3.31071 8.60831 3.60967L7.99979 4.22983L7.39126 3.60967C6.79899 3.00607 5.9957 2.66697 5.1581 2.66697C4.32051 2.66697 3.51721 3.00607 2.92494 3.60967C2.33267 4.21327 1.99994 5.03192 1.99994 5.88554C1.99994 6.73916 2.33267 7.55782 2.92494 8.16142L3.53347 8.78158L7.99979 13.3333L12.4661 8.78158L13.0746 8.16142C13.368 7.86259 13.6007 7.5078 13.7595 7.11729C13.9182 6.72679 13.9999 6.30824 13.9999 5.88554C13.9999 5.46284 13.9182 5.04429 13.7595 4.65379C13.6007 4.26329 13.368 3.90849 13.0746 3.60967V3.60967Z" stroke="#4C5A67" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 871 B |
3
community/public/icons/up-arrow-white.svg
Normal file
3
community/public/icons/up-arrow-white.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||||
|
<path fill-rule="evenodd" d="M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708l6-6z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 296 B |
BIN
community/public/images/certificate-background.png
Normal file
BIN
community/public/images/certificate-background.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.2 MiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user