New look to the website
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index c241288..3120e73 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -667,9 +667,12 @@
def get_list_context(context=None):
from erpnext.controllers.website_list_for_contact import get_list_context
list_context = get_list_context(context)
- list_context["title"] = _("My Invoices")
- list_context["show_sidebar"] = True
- list_context["show_search"] = True
+ list_context.update({
+ 'show_sidebar': True,
+ 'show_search': True,
+ 'no_breadcrumbs': True,
+ 'title': _('Invoices'),
+ })
return list_context
@frappe.whitelist()
diff --git a/erpnext/portal/doctype/homepage_featured_product/homepage_featured_product.json b/erpnext/portal/doctype/homepage_featured_product/homepage_featured_product.json
index fe93098..81c75c6 100644
--- a/erpnext/portal/doctype/homepage_featured_product/homepage_featured_product.json
+++ b/erpnext/portal/doctype/homepage_featured_product/homepage_featured_product.json
@@ -257,7 +257,7 @@
"issingle": 0,
"istable": 1,
"max_attachments": 0,
- "modified": "2016-04-22 05:57:06.261401",
+ "modified": "2016-04-25 15:51:52.811124",
"modified_by": "Administrator",
"module": "Portal",
"name": "Homepage Featured Product",
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index 2cca7e2..4f78a59 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -174,7 +174,8 @@
return {
"show_sidebar": True,
"show_search": True,
- "title": _("My Projects"),
+ 'no_breadcrumbs': True,
+ "title": _("Projects"),
"get_list": get_project_list,
"row_template": "templates/includes/projects/project_row.html"
}
diff --git a/erpnext/public/css/website.css b/erpnext/public/css/website.css
index 25d08f6..8566c5c 100644
--- a/erpnext/public/css/website.css
+++ b/erpnext/public/css/website.css
@@ -80,7 +80,6 @@
background-color: #fafbfc;
}
.transaction-list-item .indicator {
- font-size: inherit;
font-weight: inherit;
color: #8D99A6;
margin-left: -15px;
@@ -126,6 +125,75 @@
border-top: 1px solid #d1d8dd;
padding-top: 15px;
}
+.cart-container {
+ margin: 50px 0px;
+}
+.cart-container .cart-item-header .h6 {
+ padding: 7px 15px;
+}
+.cart-container .cart-items {
+ margin: 30px 0px 0px;
+}
+.cart-container .cart-item-table {
+ margin: 0px -15px;
+}
+.cart-container .cart-item-header {
+ border-bottom: 1px solid #d1d8dd;
+}
+.cart-container .cart-image-col {
+ padding-right: 0px;
+}
+.cart-container .cart-image {
+ max-width: 55px;
+ max-height: 55px;
+ margin-top: -5px;
+}
+.cart-container .cart-taxes {
+ margin-top: 30px;
+}
+.cart-container .cart-taxes .row {
+ margin-top: 15px;
+}
+.cart-container .tax-grand-total-row {
+ border-top: 1px solid #d1d8dd;
+ padding-top: 15px;
+}
+.cart-container .cart-addresses {
+ margin-top: 50px;
+}
+.cart-items .cart-dropdown,
+.item_name_dropdown {
+ display: none;
+}
+.cart-dropdown-container {
+ width: 350px;
+ padding: 15px;
+}
+.cart-dropdown-container .item-price {
+ display: block !important;
+ padding-bottom: 10px;
+}
+.cart-dropdown-container .cart-item-header {
+ border-bottom: 1px solid #d1d8dd;
+}
+.cart-dropdown-container .cart-items .cart-dropdown {
+ display: block;
+ margin-top: 15px;
+}
+.cart-dropdown-container .item_name_dropdown {
+ display: block;
+}
+.cart-dropdown-container .item-description,
+.cart-dropdown-container .cart-items .checkout,
+.cart-dropdown-container .item_name_and_description {
+ display: none;
+}
+.cart-dropdown-container .checkout-btn {
+ margin: 15px;
+}
+.cart-dropdown-container .col-name-description {
+ margin-bottom: 8px;
+}
.product-list-link .row {
border-bottom: 1px solid #EBEFF2;
}
@@ -147,3 +215,36 @@
max-width: 350px;
}
}
+.item-group-content {
+ margin-top: 30px;
+}
+.product-image-img {
+ border: 1px solid #EBEFF2;
+ border-radius: 3px;
+}
+.product-text {
+ border-top: 1px solid #EBEFF2;
+ padding: 15px;
+ word-wrap: break-word;
+ height: 75px;
+}
+.product-image-wrapper {
+ padding-bottom: 30px;
+}
+.featured-product-heading,
+.all-products {
+ text-transform: uppercase;
+ letter-spacing: 0.5px;
+ font-size: 12px;
+ font-weight: 500;
+}
+.all-products {
+ font-weight: 300;
+ padding-left: 25px;
+ padding-right: 25px;
+ padding-top: 10px;
+ padding-bottom: 10px;
+}
+.homepage-tagline {
+ font-size: 40px !important;
+}
diff --git a/erpnext/public/js/shopping_cart.js b/erpnext/public/js/shopping_cart.js
index a3f7d3f..c09e383 100644
--- a/erpnext/public/js/shopping_cart.js
+++ b/erpnext/public/js/shopping_cart.js
@@ -12,6 +12,19 @@
}
// update login
shopping_cart.set_cart_count();
+
+ $(".shopping-cart").on('shown.bs.dropdown', function() {
+ if (!$('.shopping-cart-menu .cart-container').length) {
+ return frappe.call({
+ method: 'erpnext.shopping_cart.cart.get_shopping_cart_menu',
+ callback: function(r) {
+ if (r.message) {
+ $('.shopping-cart-menu').html(r.message);
+ }
+ }
+ });
+ }
+ });
});
$.extend(shopping_cart, {
@@ -32,7 +45,11 @@
},
btn: opts.btn,
callback: function(r) {
- shopping_cart.set_cart_count();
+ shopping_cart.set_cart_count();
+ if (r.message.shopping_cart_menu) {
+ $('.shopping-cart-menu').html(r.message.shopping_cart_menu);
+ }
+
if(opts.callback)
opts.callback(r);
}
@@ -43,14 +60,9 @@
set_cart_count: function() {
var cart_count = getCookie("cart_count");
- if($(".cart-icon").length == 0) {
- $('<div class="cart-icon small" style="float:right;padding:3px;border-radius:10px;\
- border: 1px solid #7575ff;">\
- <a href="/cart" style="color:#7575ff; text-decoration: none">\
- Cart\
- <span style="color:#7575ff;" class="badge" id="cart-count">5</span>\
- </a></div>').appendTo($('.shopping-cart'))
- }
+ if(cart_count) {
+ $(".shopping-cart").toggle(true);
+ }
var $cart = $('.cart-icon');
var $badge = $cart.find("#cart-count");
diff --git a/erpnext/public/less/website.less b/erpnext/public/less/website.less
index 0246cac..894340e 100644
--- a/erpnext/public/less/website.less
+++ b/erpnext/public/less/website.less
@@ -94,7 +94,6 @@
}
.indicator {
- font-size: inherit;
font-weight: inherit;
color: @text-muted;
margin-left: -15px;
@@ -161,6 +160,95 @@
}
}
+.cart-container {
+ margin: 50px 0px;
+
+ .cart-item-header .h6 {
+ padding: 7px 15px;
+ }
+
+ .cart-items {
+ margin: 30px 0px 0px;
+ }
+
+ .cart-item-table {
+ margin: 0px -15px;
+ }
+
+ .cart-item-header {
+ border-bottom: 1px solid #d1d8dd;
+ }
+
+ .cart-image-col {
+ padding-right: 0px;
+ }
+
+ .cart-image {
+ max-width: 55px;
+ max-height: 55px;
+ margin-top: -5px;
+ }
+
+ .cart-taxes {
+ margin-top: 30px;
+
+ .row {
+ margin-top: 15px;
+ }
+ }
+
+ .tax-grand-total-row {
+ border-top: 1px solid @border-color;
+ padding-top: 15px;
+ }
+
+ .cart-addresses {
+ margin-top: 50px;
+ }
+}
+
+.cart-items .cart-dropdown,
+.item_name_dropdown {
+ display:none;
+
+}
+.cart-dropdown-container {
+ width: 350px;
+ padding: 15px;
+
+ .item-price {
+ display: block !important;
+ padding-bottom: 10px;
+ }
+
+ .cart-item-header {
+ border-bottom: 1px solid #d1d8dd;
+ }
+
+ .cart-items .cart-dropdown {
+ display:block;
+ margin-top:15px;
+ }
+
+ .item_name_dropdown {
+ display:block;
+ }
+
+ .item-description,
+ .cart-items .checkout,
+ .item_name_and_description {
+ display: none;
+ }
+
+ .checkout-btn {
+ margin:15px;
+ }
+ .col-name-description {
+ margin-bottom:8px;
+ }
+
+}
+
.product-list-link {
.row {
border-bottom: 1px solid @light-border-color;
@@ -189,3 +277,43 @@
max-width: 350px;
}
}
+
+.item-group-content {
+ margin-top: 30px;
+}
+
+.product-image-img {
+ border: 1px solid @light-border-color;
+ border-radius: 3px;
+}
+
+.product-text {
+ border-top: 1px solid @light-border-color;
+ padding: 15px;
+ word-wrap: break-word;
+ height: 75px;
+}
+
+.product-image-wrapper {
+ padding-bottom: 30px;
+}
+
+
+.featured-product-heading, .all-products {
+ text-transform: uppercase;
+ letter-spacing: 0.5px;
+ font-size: 12px;
+ font-weight: 500;
+}
+
+.all-products {
+ font-weight: 300;
+ padding-left: 25px;
+ padding-right: 25px;
+ padding-top: 10px;
+ padding-bottom: 10px;
+}
+
+.homepage-tagline {
+ font-size:40px !important;
+}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py
index 4b26cfc..d7dae68 100644
--- a/erpnext/setup/doctype/item_group/item_group.py
+++ b/erpnext/setup/doctype/item_group/item_group.py
@@ -58,7 +58,7 @@
if start < 0:
start = 0
context.update({
- "items": get_product_list_for_group(product_group = self.name, start=start, limit=24, search=frappe.form_dict.get("q")),
+ "items": get_product_list_for_group(product_group = self.name, start=start, limit=24, search=frappe.form_dict.get("search")),
"parent_groups": get_parent_item_groups(self.name),
"title": self.name,
"products_as_list": cint(frappe.db.get_single_value('Website Settings', 'products_as_list'))
diff --git a/erpnext/shopping_cart/cart.py b/erpnext/shopping_cart/cart.py
index 2c3257e..c85dd8f 100644
--- a/erpnext/shopping_cart/cart.py
+++ b/erpnext/shopping_cart/cart.py
@@ -92,8 +92,9 @@
set_cart_count(quotation)
- if with_items:
- context = get_cart_quotation(quotation)
+ context = get_cart_quotation(quotation)
+
+ if cint(with_items):
return {
"items": frappe.render_template("templates/includes/cart/cart_items.html",
context),
@@ -101,7 +102,17 @@
context),
}
else:
- return quotation.name
+ return {
+ 'name': quotation.name,
+ 'shopping_cart_menu': get_shopping_cart_menu(context)
+ }
+
+@frappe.whitelist()
+def get_shopping_cart_menu(context=None):
+ if not context:
+ context = get_cart_quotation()
+
+ return frappe.render_template('templates/includes/cart/cart_dropdown.html', context)
@frappe.whitelist()
def update_cart_address(address_fieldname, address_name):
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index 79a4ea6..6c6a3b3 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -329,9 +329,12 @@
def get_list_context(context=None):
from erpnext.controllers.website_list_for_contact import get_list_context
list_context = get_list_context(context)
- list_context["title"] = _("My Shipments")
- list_context["show_sidebar"] = True
- list_context["show_search"] = True
+ list_context.update({
+ 'show_sidebar': True,
+ 'show_search': True,
+ 'no_breadcrumbs': True,
+ 'title': _('Shipments'),
+ })
return list_context
def get_invoiced_qty_map(delivery_note):
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 114bbab..de40a20 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -147,7 +147,8 @@
file = frappe.get_all("File", filters={
"file_url": self.website_image
}, fields=["name", "is_private"], order_by="is_private asc", limit_page_length=1)
-
+
+
if file:
file = file[0]
diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py
index fcc1edf..ab8e6d8 100644
--- a/erpnext/support/doctype/issue/issue.py
+++ b/erpnext/support/doctype/issue/issue.py
@@ -55,11 +55,12 @@
def get_list_context(context=None):
return {
- "title": _("My Issues"),
+ "title": _("Issues"),
"get_list": get_issue_list,
"row_template": "templates/includes/issue_row.html",
"show_sidebar": True,
- "show_search": True
+ "show_search": True,
+ 'no_breadcrumbs': True
}
def get_issue_list(doctype, txt, filters, limit_start, limit_page_length=20):
diff --git a/erpnext/templates/generators/item.html b/erpnext/templates/generators/item.html
index dabbf48..e074fa3 100644
--- a/erpnext/templates/generators/item.html
+++ b/erpnext/templates/generators/item.html
@@ -52,8 +52,10 @@
</div>
<br>
<div style="min-height: 100px; margin: 10px 0;">
- <h4 class="item-price" itemprop="price"></h4>
- <div class="item-stock" itemprop="availablity"></div>
+ <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
+ <h4 class="item-price" itemprop="price"></h4>
+ <div class="item-stock" itemprop="availability"></div>
+ </div>
<div class="item-cart hide">
<div id="item-add-to-cart">
<button class="btn btn-primary btn-sm">
@@ -71,7 +73,7 @@
</div>
<div class="row item-website-description" style="margin-top:30px; margin-bottom:20px">
<div class="col-md-12">
- <h4>{{ _("DESCRIPTION") }}</h4>
+ <div class="h6 text-uppercase">{{ _("Description") }}</div>
<div itemprop="description" class="item-desc">
{{ web_long_description or description or _("No description given") }}
</div>
@@ -81,7 +83,7 @@
{% if website_specifications -%}
<div class="row item-website-specification" style="margin-top: 40px">
<div class="col-md-12">
- <h4>{{ _("SPECIFICATIONS") }}</h4>
+ <div class="h6 text-uppercase">{{ _("Specifications") }}</div>
<table class="table borderless" style="width: 100%">
{% for d in website_specifications -%}
diff --git a/erpnext/templates/generators/item_group.html b/erpnext/templates/generators/item_group.html
index d014263..b9926d6 100644
--- a/erpnext/templates/generators/item_group.html
+++ b/erpnext/templates/generators/item_group.html
@@ -1,8 +1,5 @@
{% extends "templates/web.html" %}
-{#{% block header_actions %}
-{% include 'templates/includes/product_search_box.html' %}
-{% endblock %}#}
{% block header %}<h1>{{ _("Products") }}</h1>{% endblock %}
{% block breadcrumbs %}
<div class="page-breadcrumbs" data-html-block="breadcrumbs">
@@ -16,7 +13,7 @@
{% endblock %}
{% block page_content %}
-<div class="item-group-content">
+<div class="item-group-content" itemscope itemtype="http://schema.org/Product">
<div>
{% if slideshow %}<!-- slideshow -->
{% include "templates/includes/slideshow.html" %}
diff --git a/erpnext/templates/includes/cart.css b/erpnext/templates/includes/cart.css
index 07302db..e69de29 100644
--- a/erpnext/templates/includes/cart.css
+++ b/erpnext/templates/includes/cart.css
@@ -1,32 +0,0 @@
-.cart-content {
- min-height: 400px;
- margin-top: 60px;
-}
-
-.cart-header, .cart-footer {
- margin-bottom: 60px;
-}
-
-.cart-item-header {
- padding-bottom: 10px;
- margin-bottom: 10px;
- border-bottom: 1px solid #d1d8dd;
-}
-
-.tax-grand-total-row {
- font-size: 14px;
- margin-top: 30px;
- font-weight: bold;
-}
-
-.cart-addresses {
- margin-top: 80px;
- margin-bottom: 60px;
-}
-
-.cart-link {
- margin-top: 40px;
- text-align: right;
-
-
-}
\ No newline at end of file
diff --git a/erpnext/templates/includes/cart.js b/erpnext/templates/includes/cart.js
index 9cb5e6e..931df7a 100644
--- a/erpnext/templates/includes/cart.js
+++ b/erpnext/templates/includes/cart.js
@@ -16,6 +16,7 @@
shopping_cart.bind_address_select();
shopping_cart.bind_place_order();
shopping_cart.bind_change_qty();
+ shopping_cart.bind_remove_item();
},
@@ -71,6 +72,24 @@
});
});
},
+
+ bind_remove_item: function() {
+ $(".cart-items").on("click", ".remove-item", function() {
+ var item_code = $(this).attr("data-item-code");
+ shopping_cart.update_cart({
+ item_code: item_code,
+ qty: "0",
+ callback: function(r) {
+ location.reload();
+ if(!r.exc) {
+ $(".cart-items").html(r.message.items);
+ $(".cart-tax-items").html(r.message.taxes);
+ $(".cart-icon").hide();
+ }
+ },
+ });
+ });
+ },
render_tax_row: function($cart_taxes, doc, shipping_rules) {
var shipping_selector;
diff --git a/erpnext/templates/includes/cart/cart_address.html b/erpnext/templates/includes/cart/cart_address.html
index 1af8f0b..29d4f4b 100644
--- a/erpnext/templates/includes/cart/cart_address.html
+++ b/erpnext/templates/includes/cart/cart_address.html
@@ -1,11 +1,10 @@
-{% from "erpnext/templates/includes/cart/cart_macros.html"
- import show_address %}
+{% from "erpnext/templates/includes/cart/cart_macros.html" import show_address %}
<div class="row">
{% if addresses|length == 1%}
{% set select_address = True %}
{% endif %}
<div class="col-sm-6">
- <h4>{{ _("Shipping Address") }}</h4>
+ <div class="h6 text-uppercase">{{ _("Shipping Address") }}</div>
<div id="cart-shipping-address" class="panel-group"
data-fieldname="shipping_address_name">
{% for address in addresses %}
@@ -16,7 +15,7 @@
{{ _("Manage Addresses") }}</a>
</div>
<div class="col-sm-6">
- <h4>Billing Address</h4>
+ <div class="h6 text-uppercase">Billing Address</div>
<div id="cart-billing-address" class="panel-group"
data-fieldname="customer_address">
{% for address in addresses %}
diff --git a/erpnext/templates/includes/cart/cart_dropdown.html b/erpnext/templates/includes/cart/cart_dropdown.html
new file mode 100644
index 0000000..19892d4
--- /dev/null
+++ b/erpnext/templates/includes/cart/cart_dropdown.html
@@ -0,0 +1,26 @@
+<div class="cart-dropdown-container">
+ <div id="cart-error" class="alert alert-danger"
+ style="display: none;"></div>
+ <div class="row cart-items-dropdown cart-item-header text-muted">
+ <div class="col-sm-7 col-xs-6 h6 text-uppercase">
+ {{ _("Item") }}
+ </div>
+ <div class="col-sm-2 col-xs-2 text-right h6 text-uppercase">
+ {{ _("Qty") }}
+ </div>
+ <div class="col-sm-3 col-xs-2 text-right h6 text-uppercase">
+ {{ _("Price") }}
+ </div>
+ </div>
+
+ {% if doc.items %}
+ <div class="cart-items">
+ {% include "templates/includes/cart/cart_items.html" %}
+ </div>
+ <div class="text-center checkout-btn">
+ <p class="text-center"><a href="/cart" class="btn btn-primary">{{ _("Checkout") }}</a></p>
+ </div>
+ {% else %}
+ <p>{{ _("Cart is Empty") }}</p>
+ {% endif %}
+</div>
diff --git a/erpnext/templates/includes/cart/cart_items.html b/erpnext/templates/includes/cart/cart_items.html
index f7efa78..cd0bb86 100644
--- a/erpnext/templates/includes/cart/cart_items.html
+++ b/erpnext/templates/includes/cart/cart_items.html
@@ -1,23 +1,34 @@
{% from "erpnext/templates/includes/order/order_macros.html" import item_name_and_description %}
{% for d in doc.items %}
-<div class="cart-item">
- <div class="row">
- <div class="col-sm-8 col-xs-6" style="margin-bottom: 10px;">
- {{ item_name_and_description(d) }}
- </div>
- <div class="col-sm-2 col-xs-3 text-right">
- <span style="max-width: 50px; display: inline-block">
- <input class="form-control text-right cart-qty"
- value = "{{ d.get_formatted('qty') }}"
- data-item-code="{{ d.item_code }}"></span>
- <p class="text-muted small" style="margin-top: 10px;">
- {{ _("Rate") + ': ' + d.get_formatted("rate") }}
- </p>
- </div>
- <div class="col-sm-2 col-xs-3 text-right">
- {{ d.get_formatted("amount") }}
- </div>
+<div class="row cart-items checkout">
+ <div class="col-sm-8 col-xs-6 col-name-description">
+ {{ item_name_and_description(d) }}
+ </div>
+ <div class="col-sm-2 col-xs-3 text-right col-qty">
+ <span style="max-width: 50px; display: inline-block">
+ <input class="form-control text-right cart-qty"
+ value = "{{ d.get_formatted('qty') }}"
+ data-item-code="{{ d.item_code }}"></span>
+ <span class="text-muted small remove-item" data-item-code="{{ d.item_code }}">{{_("Remove")}}</span>
+ </div>
+ <div class="col-sm-2 col-xs-3 text-right col-amount">
+ {{ d.get_formatted("amount") }}
+ <p class="text-muted small item-rate">{{
+ _("Rate: {0}").format(d.get_formatted("rate")) }}</p>
</div>
</div>
-{% endfor %}
+
+<div class="row cart-items cart-dropdown">
+ <div class="col-sm-7 col-xs-6 col-name-description">
+ {{ item_name_and_description(d) }}
+ </div>
+ <div class="col-sm-2 col-xs-2 text-right col-qty">
+ {{ d.get_formatted('qty') }}
+ </div>
+ <div class="col-sm-3 col-xs-2 text-right col-amount">
+ {{ d.get_formatted("amount") }}
+
+ </div>
+</div>
+{% endfor %}
\ No newline at end of file
diff --git a/erpnext/templates/includes/issue_row.html b/erpnext/templates/includes/issue_row.html
index c090f93..5414d7c 100644
--- a/erpnext/templates/includes/issue_row.html
+++ b/erpnext/templates/includes/issue_row.html
@@ -1,11 +1,11 @@
-<div class="web-list-item">
- <a class="no-decoration" href="/issues?name={{ doc.name }}">
+<div class="web-list-item transaction-list-item">
+ <a href="/issues?name={{ doc.name }}">
<div class="row">
<div class="col-xs-8">
<span class="indicator {{ "red" if doc.status=="Open" else "darkgrey" }}">
{{ doc.name }}</span>
- <span style="margin-left: 15px;">
- {{ doc.subject }}</span>
+ <div class="items-preview text-ellipsis">
+ {{ doc.subject }}</div>
</div>
<div class="col-xs-4 text-right small text-muted">
{{ frappe.format_date(doc.modified) }}
diff --git a/erpnext/templates/includes/macros.html b/erpnext/templates/includes/macros.html
index 05181c0..8dc433a 100644
--- a/erpnext/templates/includes/macros.html
+++ b/erpnext/templates/includes/macros.html
@@ -1,4 +1,5 @@
{% macro product_image_square(website_image, css_class="") %}
+{% if website_image -%} <meta itemprop="image" content="{{ frappe.utils.quoted(website_image) | abs_url }}"></meta>{%- endif %}
<div class="product-image product-image-square {% if not website_image -%} missing-image {%- endif %} {{ css_class }}"
{% if website_image -%} style="background-image: url('{{ frappe.utils.quoted(website_image) | abs_url }}');" {%- endif %}>
</div>
@@ -7,7 +8,7 @@
{% macro product_image(website_image, css_class="") %}
<div class="product-image {% if not website_image -%} missing-image {%- endif %} {{ css_class }}">
{% if website_image -%}
- <img src="{{ frappe.utils.quoted(website_image) | abs_url }}" class="img-responsive">
+ <img itemprop="image" src="{{ frappe.utils.quoted(website_image) | abs_url }}" class="img-responsive">
{%- endif %}
</div>
{% endmacro %}
diff --git a/erpnext/templates/includes/navbar/navbar_items.html b/erpnext/templates/includes/navbar/navbar_items.html
new file mode 100644
index 0000000..9cdbd98
--- /dev/null
+++ b/erpnext/templates/includes/navbar/navbar_items.html
@@ -0,0 +1,12 @@
+{% extends 'frappe/templates/includes/navbar/navbar_items.html' %}
+
+{% block navbar_right_extension %}
+ <li class="dropdown shopping-cart">
+ <div class="cart-icon small">
+ <a class="dropdown-toggle" href="#" data-toggle="dropdown" id="navLogin">
+ Cart <span class="badge-wrapper" id="cart-count"></span>
+ </a>
+ <div class="dropdown-menu shopping-cart-menu"></div>
+ </div>
+ </li>
+{% endblock %}
\ No newline at end of file
diff --git a/erpnext/templates/includes/order/order_macros.html b/erpnext/templates/includes/order/order_macros.html
index af974aa..1b0e889 100644
--- a/erpnext/templates/includes/order/order_macros.html
+++ b/erpnext/templates/includes/order/order_macros.html
@@ -1,7 +1,7 @@
{% from "erpnext/templates/includes/macros.html" import product_image_square %}
{% macro item_name_and_description(d) %}
- <div class="row">
+ <div class="row item_name_and_description">
<div class="col-xs-4 col-sm-2 order-image-col">
<div class="order-image">
{{ product_image_square(d.image) }}
@@ -9,7 +9,18 @@
</div>
<div class="col-xs-8 col-sm-10">
{{ d.item_code }}
- <p class="text-muted small">{{ d.description }}</p>
+ <p class="text-muted small item-description">{{ d.description }}</p>
</div>
</div>
-{% endmacro %}
+
+ <div class="row item_name_dropdown">
+ <div class="col-xs-4 col-sm-4 order-image-col">
+ <div class="order-image">
+ {{ product_image_square(d.image) }}
+ </div>
+ </div>
+ <div class="col-xs-8 col-sm-8">
+ {{ d.item_code }}
+ </div>
+ </div>
+{% endmacro %}
\ No newline at end of file
diff --git a/erpnext/templates/includes/products_as_grid.html b/erpnext/templates/includes/products_as_grid.html
index ff39f1f..0a66de2 100644
--- a/erpnext/templates/includes/products_as_grid.html
+++ b/erpnext/templates/includes/products_as_grid.html
@@ -1,8 +1,10 @@
{% from "erpnext/templates/includes/macros.html" import product_image_square %}
<a class="product-link" href="{{ (route or page_name)|abs_url }}">
- <div class="col-sm-2 col-xs-4 product-image-wrapper">
+ <div class="col-sm-4 col-xs-4 product-image-wrapper">
+ <div class="product-image-img">
{{ product_image_square(thumbnail or website_image) }}
- <div class="text-ellipsis inline-block small product-text">{{ item_name }}</div>
+ <div class="product-text" itemprop="name">{{ item_name }}</div>
+ </div>
</div>
</a>
diff --git a/erpnext/templates/includes/projects.css b/erpnext/templates/includes/projects.css
index e4aa81b..1f758e3 100644
--- a/erpnext/templates/includes/projects.css
+++ b/erpnext/templates/includes/projects.css
@@ -83,7 +83,6 @@
}
.progress-hg{
- margin-bottom: 0!important;
- margin-top: 30px!important;
- height:5px;
+ margin-bottom: 30!important;
+ height:2px;
}
\ No newline at end of file
diff --git a/erpnext/templates/includes/transaction_row.html b/erpnext/templates/includes/transaction_row.html
index 05aed90..5c7b3be 100644
--- a/erpnext/templates/includes/transaction_row.html
+++ b/erpnext/templates/includes/transaction_row.html
@@ -2,22 +2,18 @@
<a href="/{{ pathname }}/{{ doc.name }}">
<div class="row">
<div class="col-sm-6">
- <span>{{ doc.name }}</span>
- <div class="small text-muted items-preview text-ellipsis">
+ <span class="indicator small {{ doc.indicator_color or "darkgrey" }}">
+ {{ doc.name }}</span>
+ <div class="items-preview text-ellipsis">
{{ doc.items_preview }}
</div>
</div>
- <div class="col-sm-4">
- <span class="indicator {{ doc.indicator_color or "darkgrey" }}">
- {{ doc.indicator_title or doc.status }}
- </span>
+ <div class="col-sm-6 text-right">
<div class="small text-muted transaction-time"
title="{{ frappe.utils.format_datetime(doc.modified, "medium") }}">
- {{ frappe.utils.pretty_date(doc.modified) }}
+ {{ frappe.utils.format_datetime(doc.modified, "medium") }}
</div>
- </div>
- <div class="col-sm-2 text-right">
- {{ doc.get_formatted("grand_total") }}
+ {{ doc.get_formatted("grand_total") }}
</div>
<!-- <div class="col-sm-3 text-right">
diff --git a/erpnext/templates/pages/cart.html b/erpnext/templates/pages/cart.html
index afba9b8..229d6d6 100644
--- a/erpnext/templates/pages/cart.html
+++ b/erpnext/templates/pages/cart.html
@@ -8,12 +8,6 @@
<script>{% include "templates/includes/cart.js" %}</script>
{% endblock %}
-{% block style %}
-<style>
- {% include "templates/includes/cart.css" %}
-</style>
-{% endblock %}
-
{% block header_actions %}
{% if doc.items %}
@@ -27,57 +21,55 @@
{% from "templates/includes/macros.html" import item_name_and_description %}
-<div class="cart-content">
- <div id="cart-container">
- <div id="cart-error" class="alert alert-danger"
- style="display: none;"></div>
- <div id="cart-items">
- <div class="row cart-item-header">
- <div class="col-sm-8 col-xs-6">
- Items
- </div>
- <div class="col-sm-2 col-xs-3 text-right">
- Qty
- </div>
- <div class="col-sm-2 col-xs-3 text-right">
- Amount
- </div>
- </div>
- {% if doc.items %}
- <div class="cart-items">
- {% include "templates/includes/cart/cart_items.html" %}
- </div>
- {% else %}
- <p>{{ _("Cart is Empty") }}</p>
- {% endif %}
- </div>
- {% if doc.items %}
- <!-- taxes -->
- <div class="cart-taxes row small">
- <div class="col-sm-8"><!-- empty --></div>
- <div class="col-sm-4 cart-tax-items">
- {% include "templates/includes/order/order_taxes.html" %}
- </div>
- </div>
- <div id="cart-totals">
- </div>
- {% if doc.tc_name %}
- <div class="cart-terms" style="display: none;" title={{doc.tc_name}}>
- {{doc.tc_name}}
- {{doc.terms}}
- </div>
- <div class="cart-link">
- <a href="#" onclick="show_terms();return false;">*Terms and Conditions</a>
- </div>
- {% endif %}
- <div class="cart-addresses">
- {% include "templates/includes/cart/cart_address.html" %}
- </div>
- <p class="cart-footer text-right">
- <button class="btn btn-primary btn-place-order btn-sm" type="button">
- {{ _("Place Order") }}</button></p>
- {% endif %}
- </div>
+<div class="cart-container">
+ <div id="cart-error" class="alert alert-danger"
+ style="display: none;"></div>
+ <div class="row cart-items cart-item-header text-muted">
+ <div class="col-sm-8 col-xs-6 h6 text-uppercase">
+ {{ _("Item") }}
+ </div>
+ <div class="col-sm-2 col-xs-3 text-right h6 text-uppercase">
+ {{ _("Qty") }}
+ </div>
+ <div class="col-sm-2 col-xs-3 text-right h6 text-uppercase">
+ {{ _("Subtotal") }}
+ </div>
+ </div>
+ {% if doc.items %}
+ <div class="cart-items">
+ {% include "templates/includes/cart/cart_items.html" %}
+ </div>
+ {% else %}
+ <p>{{ _("Cart is Empty") }}</p>
+ {% endif %}
+
+ {% if doc.items %}
+ <!-- taxes -->
+ <div class="row cart-taxes">
+ <div class="col-sm-6"><!-- empty --></div>
+ <div class="col-sm-6 text-right">
+ {% include "templates/includes/order/order_taxes.html" %}
+ </div>
+ </div>
+
+ {% if doc.tc_name %}
+ <div class="cart-terms" style="display: none;" title={{doc.tc_name}}>
+ {{doc.tc_name}}
+ {{doc.terms}}
+ </div>
+ <div class="cart-link">
+ <a href="#" onclick="show_terms();return false;">*Terms and Conditions</a>
+ </div>
+ {% endif %}
+
+ <div class="cart-addresses">
+ {% include "templates/includes/cart/cart_address.html" %}
+ </div>
+
+ <p class="cart-footer text-right">
+ <button class="btn btn-primary btn-place-order btn-sm" type="button">
+ {{ _("Place Order") }}</button></p>
+ {% endif %}
</div>
<!-- no-sidebar -->
diff --git a/erpnext/templates/pages/home.html b/erpnext/templates/pages/home.html
index e6cfc90..5ec396d 100644
--- a/erpnext/templates/pages/home.html
+++ b/erpnext/templates/pages/home.html
@@ -7,32 +7,27 @@
<div class="row">
<div class="col-sm-12">
- <h2 class="text-center">{{ homepage.tag_line or '' }}</h2>
- <p class="lead text-center">{{ homepage.description or '' }}</p>
- <p class="text-center">
- <a href="/login" class="btn btn-primary text-center">Login</a>
- </p>
-
+ <div class="homepage-tagline h1 text-center">{{ homepage.tag_line or '' }}</div>
+ <p class="text-center">{{ homepage.description or '' }}</p>
{% if homepage.products %}
- <!-- TODO: styling of this section -->
- <div class='featured-products-section'>
- <h5 class='text-uppercase'>{{ _("Featured Products") }}</h5>
+ <div class='featured-products-section' itemscope itemtype="http://schema.org/Product">
+ <h5 class='featured-product-heading'>{{ _("Featured Products") }}</h5>
<div class="featured-products">
<div id="search-list" class="row" style="margin-top:40px;">
{% for item in homepage.products %}
- <a class="product-link" href="{{ item.route | abs_url }}">
- <div class="col-sm-4 product-image-wrapper">
- {{ product_image_square(item.thumbnail or item.image) }}
- <div class="text-ellipsis inline-block small product-text">
- {{ item.item_name }}
- </div>
+ <a class="product-link" href="{{ item.route|abs_url }}">
+ <div class="col-sm-4 col-xs-4 product-image-wrapper">
+ <div class="product-image-img">
+ {{ product_image_square(item.thumbnail or item.image) }}
+ <div class="product-text" itemprop="name">{{ item.item_name }}</div>
</div>
- </a>
+ </div>
+ </a>
{% endfor %}
</div>
</div>
<!-- TODO: remove hardcoding of /products -->
- <p class="text-center"><a href="/products" class="btn btn-primary">More Products</a></p>
+ <div class=" text-center text-uppercase"><a href="/products" class="btn btn-primary all-products"> {{ _("View All Products") }}</a></div>
</div>
{% endif %}
</div>
@@ -42,7 +37,16 @@
{% block style %}
<style>
.featured-products-section {
- margin-top: 75px;
+ margin-top: 95px;
}
+
+ .home-login {
+ margin-top: 30px;
+ }
+ .btn-login {
+ width: 80px;
+ }
+
+
</style>
{% endblock %}
diff --git a/erpnext/templates/pages/home.py b/erpnext/templates/pages/home.py
index 9488efe..e7ff2ce 100644
--- a/erpnext/templates/pages/home.py
+++ b/erpnext/templates/pages/home.py
@@ -11,34 +11,11 @@
def get_context(context):
homepage = frappe.get_doc('Homepage')
+
+ for item in homepage.products:
+ item.route = '/' + '/'.join(frappe.db.get_value('Item', item.item_code, ['parent_website_route', 'page_name']))
+
+
return {
'homepage': homepage
- }
-
-
-@frappe.whitelist(allow_guest=True)
-def get_product_list(search=None, start=0, limit=6):
- # limit = 12 because we show 12 items in the grid view
-
- # base query
- query = """select name, item_name, page_name, website_image, thumbnail, item_group,
- web_long_description as website_description, parent_website_route
- from `tabItem`
- where show_in_website = 1
- and disabled=0
- and (end_of_life is null or end_of_life='0000-00-00' or end_of_life > %(today)s)
- and (variant_of is null or variant_of = '')"""
-
- # order by
- query += """ order by weightage desc, idx desc, modified desc limit %s, %s""" % (start, limit)
-
- data = frappe.db.sql(query, {
- "today": nowdate()
- }, as_dict=1)
-
- for d in data:
- d.route = ((d.parent_website_route + "/") if d.parent_website_route else "") \
- + (d.page_name or "")
-
- return [get_item_for_list_in_html(r) for r in data]
-
+ }
\ No newline at end of file
diff --git a/erpnext/templates/pages/order.html b/erpnext/templates/pages/order.html
index 191b078..98f7431 100644
--- a/erpnext/templates/pages/order.html
+++ b/erpnext/templates/pages/order.html
@@ -4,6 +4,9 @@
{% block breadcrumbs %}
{% include "templates/includes/breadcrumbs.html" %}
{% endblock %}
+{% block title %}
+{{ doc.name }}
+{% endblock %}
{% block header %}
<h1>{{ doc.name }}</h1>
diff --git a/erpnext/templates/pages/projects.html b/erpnext/templates/pages/projects.html
index 1cac25e..f50d455 100644
--- a/erpnext/templates/pages/projects.html
+++ b/erpnext/templates/pages/projects.html
@@ -3,27 +3,10 @@
{% block title %}{{ doc.project_name }}{% endblock %}
{%- from "templates/includes/projects/macros.html" import back_link -%}
-{% block header %}<h1>{{ doc.project_name }}</h1>{% endblock %}
-{% block header_actions %}{% if doc.percent_complete %}
- <div class="progress progress-hg">
- <div class="progress-bar progress-bar-{{ "warning" if doc.percent_complete|round < 100 else "success" }} active" role="progressbar"
- aria-valuenow="{{ doc.percent_complete|round|int }}"
- aria-valuemin="0" aria-valuemax="100" style="width:{{ doc.percent_complete|round|int }}%;">
- </div>
- </div>
- {% endif %}{% endblock %}
-{% block breadcrumbs %}
- <div class="page-breadcrumbs" data-html-block="breadcrumbs">
- <ul class="breadcrumb">
- <li>
- <span class="icon icon-angle-left"></span>
- <a href="/project">Projects</a>
- </li>
- </ul>
- </div>
+{% block header %}
+ <h1>{{ doc.project_name }}</h1>
{% endblock %}
-
{% block style %}
<style>
{% include "templates/includes/projects.css" %}
@@ -32,7 +15,13 @@
{% block page_content %}
-
+{% if doc.percent_complete %}
+<div class="progress progress-hg">
+ <div class="progress-bar progress-bar-{{ "warning" if doc.percent_complete|round < 100 else "success" }} active" role="progressbar" aria-valuenow="{{ doc.percent_complete|round|int }}"
+ aria-valuemin="0" aria-valuemax="100" style="width:{{ doc.percent_complete|round|int }}%;">
+ </div>
+</div>
+{% endif %}
<div class="clearfix">
<h4 style="float: left;">{{ _("Tasks") }}</h4>
diff --git a/erpnext/templates/pages/projects.py b/erpnext/templates/pages/projects.py
index f10b2fb..0f021a6 100644
--- a/erpnext/templates/pages/projects.py
+++ b/erpnext/templates/pages/projects.py
@@ -18,10 +18,10 @@
project.has_permission('read')
project.tasks = get_tasks(project.name, start=0, item_status='open',
- search=frappe.form_dict.get("q"))
+ search=frappe.form_dict.get("search"))
project.timelogs = get_timelogs(project.name, start=0,
- search=frappe.form_dict.get("q"))
+ search=frappe.form_dict.get("search"))
context.doc = project
diff --git a/erpnext/utilities/doctype/address/address.py b/erpnext/utilities/doctype/address/address.py
index a94bd56..f613faa 100644
--- a/erpnext/utilities/doctype/address/address.py
+++ b/erpnext/utilities/doctype/address/address.py
@@ -122,9 +122,10 @@
def get_list_context(context=None):
from erpnext.shopping_cart.cart import get_address_docs
return {
- "title": _("My Addresses"),
+ "title": _("Addresses"),
"get_list": get_address_docs,
"row_template": "templates/includes/address_row.html",
+ 'no_breadcrumbs': True,
}
def has_website_permission(doc, ptype, user, verbose=False):