From cd7b7ae35b5a6a00ea4a48e194a74d9570662426 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 26 Sep 2016 17:03:55 +0530 Subject: [PATCH] [portal] enhancement to web form, introduced int, custom menu in portal settings etc --- frappe/templates/generators/web_form.html | 21 +++- frappe/utils/file_manager.py | 5 +- frappe/website/context.py | 18 ++- .../portal_settings/portal_settings.json | 107 +++++++++++++++++- frappe/website/doctype/web_form/web_form.py | 2 + .../web_form_field/web_form_field.json | 57 +++++++++- frappe/website/doctype/web_page/web_page.json | 107 +++++++++++++----- frappe/website/doctype/web_page/web_page.py | 5 +- frappe/website/router.py | 3 + 9 files changed, 284 insertions(+), 41 deletions(-) diff --git a/frappe/templates/generators/web_form.html b/frappe/templates/generators/web_form.html index 4fb520df86..93b3e9a124 100644 --- a/frappe/templates/generators/web_form.html +++ b/frappe/templates/generators/web_form.html @@ -89,11 +89,15 @@
{{ field.options }}
- {% elif field.fieldtype in ("Data", "Date", "Datetime") %} + {% elif field.fieldtype in ("Data", "Date", "Datetime", "Int", "Float") %}
{% if with_label %}{{ label(field) }}{% endif %} - + {{ help(field) }}
{% elif field.fieldtype=="Link" %} @@ -315,6 +319,7 @@ frappe.ready(function() { frappe.is_new = {{ 1 if frappe.form_dict.new else 0 }}; frappe.doc_name = "{{ frappe.form_dict.name or "" }}"; frappe.form_dirty = false; + frappe.max_attachment_size = {{ max_attachment_size }}; var $form = $("form[data-web-form='{{ name }}']"); @@ -335,6 +340,16 @@ frappe.ready(function() { "filename": file.name, "dataurl": reader.result }; + + if(input.filedata.dataurl.length > frappe.max_attachment_size) { + frappe.msgprint(__('Max file size allowed is {0}MB', + [frappe.max_attachment_size / 1024 / 1024])); + input.filedata = null + + // clear attachment + $(input).val(''); + + }; frappe.file_reading = false; } diff --git a/frappe/utils/file_manager.py b/frappe/utils/file_manager.py index dd163337d5..ece60b2e3a 100644 --- a/frappe/utils/file_manager.py +++ b/frappe/utils/file_manager.py @@ -201,8 +201,11 @@ def save_file_on_filesystem(fname, content, content_type=None, is_private=0): 'file_url': file_url } +def get_max_file_size(): + return conf.get('max_file_size') or 10485760 + def check_max_file_size(content): - max_file_size = conf.get('max_file_size') or 10485760 + max_file_size = get_max_file_size() file_size = len(content) if file_size > max_file_size: diff --git a/frappe/website/context.py b/frappe/website/context.py index 43e31d3708..4e3ef3501e 100644 --- a/frappe/website/context.py +++ b/frappe/website/context.py @@ -114,14 +114,22 @@ def add_sidebar_data(context): if not context.sidebar_items: sidebar_items = frappe.cache().hget('portal_menu_items', frappe.session.user) + print sidebar_items if sidebar_items == None: + sidebar_items = [] roles = frappe.get_roles() - sidebar_items = frappe.get_all('Portal Menu Item', - fields=['title', 'route', 'reference_doctype', 'role'], - filters={'enabled': 1, 'parent': 'Portal Settings'}, order_by='idx asc') + portal_settings = frappe.get_doc('Portal Settings', 'Portal Settings') - # filter sidebar items by role - sidebar_items = filter(lambda i: i.role==None or i.role in roles, sidebar_items) + def add_items(sidebar_items, menu_field): + for d in portal_settings.get(menu_field): + if d.enabled and ((not d.role) or d.role in roles): + sidebar_items.append(d.as_dict()) + + if not portal_settings.hide_standard_menu: + add_items(sidebar_items, 'menu') + + if portal_settings.custom_menu: + add_items(sidebar_items, 'custom_menu') frappe.cache().hset('portal_menu_items', frappe.session.user, sidebar_items) diff --git a/frappe/website/doctype/portal_settings/portal_settings.json b/frappe/website/doctype/portal_settings/portal_settings.json index be1f195f9f..66cb6f31ee 100644 --- a/frappe/website/doctype/portal_settings/portal_settings.json +++ b/frappe/website/doctype/portal_settings/portal_settings.json @@ -37,6 +37,58 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "standard_menu_items", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Standard Sidebar Menu", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "hide_standard_menu", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Hide Standard Menu", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_on_submit": 0, "bold": 0, @@ -63,6 +115,59 @@ "search_index": 0, "set_only_once": 0, "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "custom_sidebar_menu", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Custom Sidebar Menu", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "custom_menu", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Custom Menu Items", + "length": 0, + "no_copy": 0, + "options": "Portal Menu Item", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 } ], "hide_heading": 0, @@ -75,7 +180,7 @@ "issingle": 1, "istable": 0, "max_attachments": 0, - "modified": "2016-09-23 06:34:18.718351", + "modified": "2016-09-26 06:57:56.109257", "modified_by": "Administrator", "module": "Website", "name": "Portal Settings", diff --git a/frappe/website/doctype/web_form/web_form.py b/frappe/website/doctype/web_form/web_form.py index 52cd7174c6..365d47d4e0 100644 --- a/frappe/website/doctype/web_form/web_form.py +++ b/frappe/website/doctype/web_form/web_form.py @@ -10,6 +10,7 @@ from frappe.utils.file_manager import save_file, remove_file_by_url from frappe.website.utils import get_comment_list from frappe.custom.doctype.customize_form.customize_form import docfield_properties from frappe.integration_broker.doctype.integration_service.integration_service import get_integration_controller +from frappe.utils.file_manager import get_max_file_size class WebForm(WebsiteGenerator): website = frappe._dict( @@ -164,6 +165,7 @@ def get_context(context): self.add_custom_context_and_script(context) self.add_payment_gateway_url(context) + context.max_attachment_size = get_max_file_size() def add_payment_gateway_url(self, context): if context.doc and self.accept_payment: diff --git a/frappe/website/doctype/web_form_field/web_form_field.json b/frappe/website/doctype/web_form_field/web_form_field.json index 8c56fbdeeb..563039a0f7 100644 --- a/frappe/website/doctype/web_form_field/web_form_field.json +++ b/frappe/website/doctype/web_form_field/web_form_field.json @@ -25,7 +25,7 @@ "label": "Fieldtype", "length": 0, "no_copy": 0, - "options": "Attach\nCheck\nData\nDate\nDatetime\nHTML\nLink\nSelect\nText\nTable\nSection Break\nColumn Break\nPage Break", + "options": "Attach\nCheck\nData\nDate\nDatetime\nFloat\nHTML\nInt\nLink\nSelect\nText\nTable\nSection Break\nColumn Break\nPage Break", "permlevel": 0, "print_hide": 0, "print_hide_if_no_value": 0, @@ -210,6 +210,59 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "max_length", + "fieldtype": "Int", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Max Length", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "depends_on": "eval:doc.fieldtype=='Int'", + "fieldname": "max_value", + "fieldtype": "Int", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Max Value", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_on_submit": 0, "bold": 0, @@ -319,7 +372,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2016-09-19 08:02:36.033335", + "modified": "2016-09-26 07:22:54.305948", "modified_by": "Administrator", "module": "Website", "name": "Web Form Field", diff --git a/frappe/website/doctype/web_page/web_page.json b/frappe/website/doctype/web_page/web_page.json index de3b2e40db..133e4c0754 100644 --- a/frappe/website/doctype/web_page/web_page.json +++ b/frappe/website/doctype/web_page/web_page.json @@ -15,6 +15,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "section_title", "fieldtype": "Section Break", "hidden": 0, @@ -39,7 +40,8 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, - "description": "Title / headline of your page", + "columns": 0, + "description": "", "fieldname": "title", "fieldtype": "Data", "hidden": 0, @@ -64,15 +66,15 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, - "default": "1", - "fieldname": "show_title", - "fieldtype": "Check", + "columns": 0, + "fieldname": "route", + "fieldtype": "Data", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "label": "Show Title", + "label": "Route", "length": 0, "no_copy": 0, "permlevel": 0, @@ -84,13 +86,14 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, - "unique": 0 + "unique": 1 }, { "allow_on_submit": 0, "bold": 0, "collapsible": 0, - "description": "Begin this page with a slideshow of images", + "columns": 0, + "description": "", "fieldname": "slideshow", "fieldtype": "Link", "hidden": 0, @@ -116,6 +119,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "cb1", "fieldtype": "Column Break", "hidden": 0, @@ -140,18 +144,18 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, - "fieldname": "route", - "fieldtype": "Data", + "columns": 0, + "fieldname": "published", + "fieldtype": "Check", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "label": "Route", + "label": "Published", "length": 0, "no_copy": 0, "permlevel": 0, - "precision": "", "print_hide": 0, "print_hide_if_no_value": 0, "read_only": 0, @@ -159,23 +163,26 @@ "reqd": 0, "search_index": 0, "set_only_once": 0, - "unique": 1 + "unique": 0 }, { "allow_on_submit": 0, "bold": 0, "collapsible": 0, - "fieldname": "published", + "columns": 0, + "default": "1", + "fieldname": "show_title", "fieldtype": "Check", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "label": "Published", + "label": "Show Title", "length": 0, "no_copy": 0, "permlevel": 0, + "precision": "", "print_hide": 0, "print_hide_if_no_value": 0, "read_only": 0, @@ -189,18 +196,19 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, - "description": "Page content", - "fieldname": "sb1", - "fieldtype": "Section Break", + "columns": 0, + "fieldname": "show_sidebar", + "fieldtype": "Check", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "label": "Content", + "label": "Show Sidebar", "length": 0, "no_copy": 0, "permlevel": 0, + "precision": "", "print_hide": 0, "print_hide_if_no_value": 0, "read_only": 0, @@ -214,15 +222,16 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, - "description": "Content in markdown format that appears on the main side of your page", - "fieldname": "main_section", - "fieldtype": "Text Editor", + "columns": 0, + "description": "Page content", + "fieldname": "sb1", + "fieldtype": "Section Break", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "label": "Main Section", + "label": "Content", "length": 0, "no_copy": 0, "permlevel": 0, @@ -239,17 +248,19 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, - "fieldname": "fold_10", - "fieldtype": "Fold", + "columns": 0, + "description": "Content in markdown format that appears on the main side of your page", + "fieldname": "main_section", + "fieldtype": "Text Editor", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, + "label": "Main Section", "length": 0, "no_copy": 0, "permlevel": 0, - "precision": "", "print_hide": 0, "print_hide_if_no_value": 0, "read_only": 0, @@ -262,7 +273,8 @@ { "allow_on_submit": 0, "bold": 0, - "collapsible": 0, + "collapsible": 1, + "columns": 0, "fieldname": "custom_javascript", "fieldtype": "Section Break", "hidden": 0, @@ -287,6 +299,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "Add code as <script>", "fieldname": "insert_code", "fieldtype": "Check", @@ -312,6 +325,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "depends_on": "insert_code", "fieldname": "javascript", "fieldtype": "Code", @@ -337,7 +351,8 @@ { "allow_on_submit": 0, "bold": 0, - "collapsible": 0, + "collapsible": 1, + "columns": 0, "fieldname": "custom_css", "fieldtype": "Section Break", "hidden": 0, @@ -362,6 +377,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "insert_style", "fieldtype": "Check", "hidden": 0, @@ -386,6 +402,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "depends_on": "insert_style", "fieldname": "css", "fieldtype": "Code", @@ -412,6 +429,33 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, + "fieldname": "settings", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Settings", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, "fieldname": "section_break_17", "fieldtype": "Section Break", "hidden": 0, @@ -436,6 +480,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "enable_comments", "fieldtype": "Check", "hidden": 0, @@ -460,6 +505,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "text_align", "fieldtype": "Select", "hidden": 0, @@ -485,6 +531,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "column_break_20", "fieldtype": "Column Break", "hidden": 0, @@ -509,6 +556,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "0 is highest", "fieldname": "idx", "fieldtype": "Int", @@ -534,6 +582,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "depends_on": "eval:!doc.__islocal", "description": "", "fieldname": "sb2", @@ -560,6 +609,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "Description for search engine optimization.", "fieldname": "description", "fieldtype": "Small Text", @@ -585,6 +635,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "HTML for header section. Optional", "fieldname": "header", "fieldtype": "Text", @@ -618,7 +669,7 @@ "issingle": 0, "istable": 0, "max_attachments": 20, - "modified": "2016-07-08 06:22:38.925289", + "modified": "2016-09-26 07:09:08.700666", "modified_by": "Administrator", "module": "Website", "name": "Web Page", diff --git a/frappe/website/doctype/web_page/web_page.py b/frappe/website/doctype/web_page/web_page.py index 4b26facf63..bfe75bc086 100644 --- a/frappe/website/doctype/web_page/web_page.py +++ b/frappe/website/doctype/web_page/web_page.py @@ -24,6 +24,9 @@ class WebPage(WebsiteGenerator): return self.title def get_context(self, context): + if context.main_section == None: + context.main_section = '' + # if static page, get static content if context.slideshow: context.update(get_slideshow(self)) @@ -67,7 +70,7 @@ class WebPage(WebsiteGenerator): def set_breadcrumbs(self, context): """Build breadcrumbs template (deprecated)""" if not "no_breadcrumbs" in context: - if "" in context.main_section or '': + if "" in context.main_section: context.no_breadcrumbs = 1 def set_title_and_header(self, context): diff --git a/frappe/website/router.py b/frappe/website/router.py index f2bcc946fc..0a166d5d88 100644 --- a/frappe/website/router.py +++ b/frappe/website/router.py @@ -303,6 +303,9 @@ def load_properties(page_info): if "" in page_info.source: page_info.no_breadcrumbs = 1 + if "" in page_info.source: + page_info.show_sidebar = 1 + if "" in page_info.source: page_info.no_header = 1 else: