From ca4c64fd8a684fb98f14ef3ef968fc9b2b1f40a0 Mon Sep 17 00:00:00 2001 From: Kanchan Chauhan Date: Thu, 14 Apr 2016 16:51:58 +0530 Subject: [PATCH] Changes --- frappe/public/css/website.css | 36 ++++++++-- frappe/public/less/website.less | 35 +++++++++- frappe/templates/includes/footer/footer.html | 36 +++++----- .../includes/footer/footer_items.html | 24 +++++++ frappe/templates/includes/login/login.css | 12 +++- .../includes/navbar/navbar_items.html | 1 + frappe/templates/pages/about.html | 4 +- frappe/templates/pages/about.py | 1 + frappe/templates/pages/login.html | 30 +++++---- frappe/templates/pages/me.html | 66 +++++-------------- frappe/templates/pages/me.py | 2 + frappe/templates/pages/web_sidebar.html | 56 ++++++++++++++++ frappe/templates/pages/web_sidebar.py | 27 ++++++++ frappe/templates/web.html | 22 +++++-- .../doctype/top_bar_item/top_bar_item.json | 1 + .../website_settings/website_settings.js | 12 ++++ .../website_settings/website_settings.py | 59 ++++++++++------- 17 files changed, 301 insertions(+), 123 deletions(-) create mode 100644 frappe/templates/includes/footer/footer_items.html create mode 100644 frappe/templates/pages/web_sidebar.html create mode 100644 frappe/templates/pages/web_sidebar.py diff --git a/frappe/public/css/website.css b/frappe/public/css/website.css index 643f251104..c955be43bd 100644 --- a/frappe/public/css/website.css +++ b/frappe/public/css/website.css @@ -411,7 +411,7 @@ a.no-decoration:active { .web-footer { padding: 20px 0px; min-height: 140px; - border-top: 1px solid #ebeff2; + border-top: 1px solid #d1d8dd; } .carousel-control .icon { position: absolute; @@ -491,9 +491,6 @@ fieldset { .page-container { padding: 0px; } -.page-content { - padding-bottom: 20px; -} .page-content hr { margin-left: -15px; margin-right: -15px; @@ -830,3 +827,34 @@ body { .btn-next-wrapper { margin-top: 60px; } +.footer-group-label { + display: inline-block; + padding-bottom: 4px; + text-transform: uppercase; + font-size: 12px; +} +.show-sidebar { + border-left: 1px solid #d1d8dd; + padding-left: 50px; +} +.item-list { + padding-top: 20px; +} +.sidebar-block, +.content-block { + padding-top: 50px; + padding-bottom: 50px; +} +.content-header { + padding-bottom: 50px; + font-size: 28px; +} +.selected-p-item { + color: #78D6FF; +} +a:hover, +a:visited, +a:link, +a:active { + text-decoration: none; +} diff --git a/frappe/public/less/website.less b/frappe/public/less/website.less index be7af0c705..1ce11fe6c6 100644 --- a/frappe/public/less/website.less +++ b/frappe/public/less/website.less @@ -68,6 +68,7 @@ .web-footer { padding: 20px 0px; min-height: 140px; + border-top: 1px solid #d1d8dd; } .carousel-control .icon { @@ -162,7 +163,6 @@ fieldset { } .page-content { - padding-bottom: 20px; hr { margin-left: -15px; margin-right: -15px; @@ -423,3 +423,36 @@ a.active { .btn-next-wrapper { margin-top: 60px; } + +.footer-group-label { + display:inline-block; + padding-bottom: 4px; + text-transform: uppercase; + font-size: 12px; +} + +.show-sidebar { + border-left: 1px solid #d1d8dd; + padding-left:50px; +} +.item-list{ + padding-top: 20px; +} + +.sidebar-block, .content-block { + padding-top:50px; + padding-bottom:50px; +} +.content-header { + padding-bottom:50px; + font-size:28px; +} + +.selected-p-item { + color:#78D6FF; +} + +a:hover, a:visited, a:link, a:active +{ + text-decoration: none; +} diff --git a/frappe/templates/includes/footer/footer.html b/frappe/templates/includes/footer/footer.html index 3ad3d94ec9..d3ab196bd3 100644 --- a/frappe/templates/includes/footer/footer.html +++ b/frappe/templates/includes/footer/footer.html @@ -4,36 +4,32 @@
{% if facebook_share or google_plus_one or twitter_share or linked_in_share %} -
diff --git a/frappe/templates/includes/footer/footer_items.html b/frappe/templates/includes/footer/footer_items.html new file mode 100644 index 0000000000..15a3157750 --- /dev/null +++ b/frappe/templates/includes/footer/footer_items.html @@ -0,0 +1,24 @@ +{% for page in footer_items %} + {% if not page.parent_label -%} +
  • + + {%- if page.child_items -%} + {{ page.label }} + + + {%- else -%} + {{ page.label }} + + {%- endif -%} +
  • + {%- endif -%} +{% endfor %} \ No newline at end of file diff --git a/frappe/templates/includes/login/login.css b/frappe/templates/includes/login/login.css index 96b4fbdee6..413c42a83f 100644 --- a/frappe/templates/includes/login/login.css +++ b/frappe/templates/includes/login/login.css @@ -35,7 +35,9 @@ .form-signin { max-width: 360px; - padding: 30px; + padding-right: 30px; + padding-left: 30px; + padding-top: 10px; margin: 0 auto; border-radius: 5px; background-color: #fff; @@ -95,7 +97,8 @@ h5:before { font-size: 36px; position: relative; text-align: center; - margin:20px; + margin-bottom:20px; + } p{ @@ -104,4 +107,9 @@ p{ .btn-login, .btn-signup, .btn-forgot { background: #78D6FF; color: white; +} + +.content-block { + padding-top:10px; + padding-bottom:30px; } \ No newline at end of file diff --git a/frappe/templates/includes/navbar/navbar_items.html b/frappe/templates/includes/navbar/navbar_items.html index d9b66b4cec..7044e68001 100644 --- a/frappe/templates/includes/navbar/navbar_items.html +++ b/frappe/templates/includes/navbar/navbar_items.html @@ -13,5 +13,6 @@ {% include "templates/includes/navbar/navbar_link.html" %} {%- endif -%} {%- endfor %} +
  • {% include "templates/includes/navbar/navbar_login.html" %} diff --git a/frappe/templates/pages/about.html b/frappe/templates/pages/about.html index 881c2b5c0c..f65fc6b9ac 100644 --- a/frappe/templates/pages/about.html +++ b/frappe/templates/pages/about.html @@ -1,7 +1,9 @@ {% extends "templates/web.html" %} {% block title %}About Us{% endblock %} - +{% block page_sidebar %} +{% include "templates/pages/web_sidebar.html" %} +{% endblock %} {% block page_content %}
    diff --git a/frappe/templates/pages/about.py b/frappe/templates/pages/about.py index d144e85109..9788288e54 100644 --- a/frappe/templates/pages/about.py +++ b/frappe/templates/pages/about.py @@ -5,4 +5,5 @@ from __future__ import unicode_literals import frappe def get_context(context): + context.show_sidebar=True return { "doc": frappe.get_doc("About Us Settings", "About Us Settings") } diff --git a/frappe/templates/pages/login.html b/frappe/templates/pages/login.html index 42d694d959..5e0fa7accb 100644 --- a/frappe/templates/pages/login.html +++ b/frappe/templates/pages/login.html @@ -26,22 +26,28 @@
    - -
    {{ _("Or login with") }}
    + + {# {%- if social_login -%} #} +
    {{ _("Or login with") }}
    -

    +

    + {#{%- if facebook_login is defined %}#} + + + {#{%- endif -%} - - + {%- if google_login is defined %}#} + + + {#{%- endif -%} - - - - - - -

    + {%- if github_login is defined %}#} + + + {#{%- endif -%}#} +

    + {# {%- endif -%} #}
    {%- if not disable_signup -%} diff --git a/frappe/templates/pages/me.html b/frappe/templates/pages/me.html index 4ce8fcc229..9565716506 100644 --- a/frappe/templates/pages/me.html +++ b/frappe/templates/pages/me.html @@ -1,9 +1,14 @@ {% extends "templates/web.html" %} {% block title %}{{ _("My Account") }}{% endblock %} +{% block header %}{{ _("My Account") }}{% endblock %} + +{% block page_sidebar %} +{% include "templates/pages/web_sidebar.html" %} +{% endblock %} {% block page_content %} - +
    {{ _("My Account") }}
    -
    - +
    +

    + User Name + {{ fullname }} +

    +
    +














    {% endblock %} -{% block style %} - -{% endblock %} diff --git a/frappe/templates/pages/me.py b/frappe/templates/pages/me.py index 61b0554345..d145ceb422 100644 --- a/frappe/templates/pages/me.py +++ b/frappe/templates/pages/me.py @@ -11,6 +11,7 @@ no_cache = 1 no_sitemap = 1 def get_context(context): + context.show_sidebar=True if frappe.session.user == "Guest": frappe.throw(_("You need to be logged in to access this page."), frappe.PermissionError) @@ -24,3 +25,4 @@ def get_context(context): info = get_fullname_and_avatar(frappe.session.user) context["fullname"] = info.fullname context["user_image"] = info.avatar + \ No newline at end of file diff --git a/frappe/templates/pages/web_sidebar.html b/frappe/templates/pages/web_sidebar.html new file mode 100644 index 0000000000..adf2210853 --- /dev/null +++ b/frappe/templates/pages/web_sidebar.html @@ -0,0 +1,56 @@ +
    + + +
    + + + diff --git a/frappe/templates/pages/web_sidebar.py b/frappe/templates/pages/web_sidebar.py new file mode 100644 index 0000000000..0a0d8846e2 --- /dev/null +++ b/frappe/templates/pages/web_sidebar.py @@ -0,0 +1,27 @@ +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +# MIT License. See license.txt + +from __future__ import unicode_literals +import frappe +from frappe import _ +from frappe.utils.user import get_fullname_and_avatar +import frappe.templates.pages.list + +no_cache = 1 +no_sitemap = 1 + +def get_context(context): + if frappe.session.user == "Guest": + frappe.throw(_("You need to be logged in to access this page."), frappe.PermissionError) + + context.my_account_list = frappe.get_all('Portal Menu Item', + fields=['title', 'route', 'reference_doctype'], filters={'enabled': 1}, order_by='idx asc') + + for item in context.my_account_list: + if item.reference_doctype: + item.count = len(frappe.templates.pages.list.get(item.reference_doctype).get('result')) + + + info = get_fullname_and_avatar(frappe.session.user) + context["fullname"] = info.fullname + context["user_image"] = info.avatar diff --git a/frappe/templates/web.html b/frappe/templates/web.html index 5dd3ff4d0b..645e20a022 100644 --- a/frappe/templates/web.html +++ b/frappe/templates/web.html @@ -1,7 +1,7 @@ {% extends base_template_path %} {% block hero %}{% endblock %} - +{% block header %}{% endblock %} {% block content %}
    @@ -15,9 +15,7 @@ {% block breadcrumbs %}{% endblock %}
    {% endif %} -
    - {% block header %}{% endblock %} -
    +
    {% if not full_width %}
    @@ -27,10 +25,20 @@
    {% endif %} -
    - {%- block page_content -%}{%- endblock -%} -
    + +
    + {% if show_sidebar %} + + {% endif %} +
    +
    + {%- block page_content -%}{%- endblock -%} +
    +
    +
    {% endblock %} diff --git a/frappe/website/doctype/top_bar_item/top_bar_item.json b/frappe/website/doctype/top_bar_item/top_bar_item.json index 312cf279dc..938dec5da9 100644 --- a/frappe/website/doctype/top_bar_item/top_bar_item.json +++ b/frappe/website/doctype/top_bar_item/top_bar_item.json @@ -57,6 +57,7 @@ "length": 0, "no_column": 0, "no_copy": 0, + "options": "", "permlevel": 0, "print_hide": 0, "print_hide_if_no_value": 0, diff --git a/frappe/website/doctype/website_settings/website_settings.js b/frappe/website/doctype/website_settings/website_settings.js index 8712f24b0e..a517bfd2ae 100644 --- a/frappe/website/doctype/website_settings/website_settings.js +++ b/frappe/website/doctype/website_settings/website_settings.js @@ -34,6 +34,9 @@ $.extend(cur_frm.cscript, { if(item.parentfield === "top_bar_items") { this.set_parent_label_options(); } + else if(item.parentfield === "footer_items") { + this.set_parent_label_options_footer(); + } }, parent_label: function(doc, cdt, cdn) { @@ -52,6 +55,15 @@ $.extend(cur_frm.cscript, { cur_frm.fields_dict.top_bar_items.grid.refresh(); } }, + + set_parent_label_options_footer: function() { + frappe.meta.get_docfield("Top Bar Item", "parent_label", cur_frm.docname).options = + this.get_parent_options("footer_items"); + + if($(cur_frm.fields_dict.footer_items.grid.wrapper).find(".grid-row-open")) { + cur_frm.fields_dict.footer_items.grid.refresh(); + } + }, // get labels of parent items get_parent_options: function(table_field) { diff --git a/frappe/website/doctype/website_settings/website_settings.py b/frappe/website/doctype/website_settings/website_settings.py index 22483c8d3b..0572b5458b 100644 --- a/frappe/website/doctype/website_settings/website_settings.py +++ b/frappe/website/doctype/website_settings/website_settings.py @@ -39,10 +39,20 @@ class WebsiteSettings(Document): top_bar_item.idx)) def validate_footer_items(self): - """clear parent label in footer""" + """validate url in top bar items""" for footer_item in self.get("footer_items"): - footer_item.parent_label = None + if footer_item.parent_label: + parent_label_item = self.get("footer_items", {"label": footer_item.parent_label}) + if not parent_label_item: + # invalid item + frappe.throw(_("{0} does not exist in row {1}").format(footer_item.parent_label, footer_item.idx)) + + elif not parent_label_item[0] or parent_label_item[0].url: + # parent cannot have url + frappe.throw(_("{0} in row {1} cannot have both URL and child items").format(footer_item.parent_label, + footer_item.idx)) + def on_update(self): self.clear_cache() @@ -59,32 +69,12 @@ class WebsiteSettings(Document): frappe.clear_cache() + def get_website_settings(): hooks = frappe.get_hooks() - - all_top_items = frappe.db.sql("""\ - select * from `tabTop Bar Item` - where parent='Website Settings' and parentfield='top_bar_items' - order by idx asc""", as_dict=1) - - top_items = [d for d in all_top_items if not d['parent_label']] - - # attach child items to top bar - for d in all_top_items: - if d['parent_label']: - for t in top_items: - if t['label']==d['parent_label']: - if not 'child_items' in t: - t['child_items'] = [] - t['child_items'].append(d) - break - context = frappe._dict({ - 'top_bar_items': top_items, - 'footer_items': frappe.db.sql("""\ - select * from `tabTop Bar Item` - where parent='Website Settings' and parentfield='footer_items' - order by idx asc""", as_dict=1), + 'top_bar_items': get_items('top_bar_items'), + 'footer_items': get_items('footer_items'), "post_login": [ {"label": "My Account", "url": "/me"}, {"class": "divider"}, @@ -134,4 +124,23 @@ def get_website_settings(): context["favicon"] = settings.favicon return context + +def get_items(parentfield): + all_top_items = frappe.db.sql("""\ + select * from `tabTop Bar Item` + where parent='Website Settings' and parentfield= %s + order by idx asc""", parentfield, as_dict=1) + top_items = [d for d in all_top_items if not d['parent_label']] + + # attach child items to top bar + for d in all_top_items: + if d['parent_label']: + for t in top_items: + if t['label']==d['parent_label']: + if not 'child_items' in t: + t['child_items'] = [] + t['child_items'].append(d) + break + return top_items +