Merge pull request #5299 from vjFaLk/alert-docs
Updated Email Alert docs
diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index e9e5b2f..8559b8c 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1,2 +1,2 @@
from __future__ import unicode_literals
-__version__ = '6.27.14'
+__version__ = '6.27.15'
diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index 104bef7..a551d06 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -87,7 +87,7 @@
return
existing_is_group = frappe.db.get_value("Account", self.name, "is_group")
- if self.is_group != existing_is_group:
+ if cint(self.is_group) != cint(existing_is_group):
if self.check_gle_exists():
throw(_("Account with existing transaction cannot be converted to ledger"))
elif self.is_group:
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/docs/user/manual/en/customize-erpnext/articles/making-custom-reports-in-erpnext.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/making-custom-reports-in-erpnext.md
index 46af27e..7bc965b 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/making-custom-reports-in-erpnext.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/making-custom-reports-in-erpnext.md
@@ -12,12 +12,12 @@
Query Report is written in SQL which pull values from account's database and fetch in the report. Though SQL queries can be written from front end, like HTML, its restricted in hosted users. Because it will allow users with no access to specific report to query data directly from the database.
-Check Purchase Order Item to be Received report in Stock module for example of Query report. Click [here](https://frappe.github.io/frappe/user/guides/reports-and-printing/how-to-make-query-report.html) to learn how to create Query Report.
+Check Purchase Order Item to be Received report in Stock module for example of Query report. Click [here](https://frappe.github.io/frappe/user/en/guides/reports-and-printing/how-to-make-query-report.html) to learn how to create Query Report.
### 3. Script Report
Script Reports are written in Python and stored on server side. These are complex reports which involves logic and calculation. Since these reports are written on server side, customizing it from hosted account is not possible.
-Check Financial Analytics report in Accounts module for example of Script Report. Click [here](https://frappe.github.io/frappe/user/guides/reports-and-printing/how-to-make-script-reports.html) to learn how to create Script Report.
+Check Financial Analytics report in Accounts module for example of Script Report. Click [here](https://frappe.github.io/frappe/user/en/guides/reports-and-printing/how-to-make-script-reports.html) to learn how to create Script Report.
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/integrating-erpnext-with-other-application.md b/erpnext/docs/user/manual/en/setting-up/articles/integrating-erpnext-with-other-application.md
index 2d2c179..3cbf159 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/integrating-erpnext-with-other-application.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/integrating-erpnext-with-other-application.md
@@ -2,6 +2,6 @@
For now, ERPNext has out-of-the-box integration available for some applications like Shopify, your SMS gateway and payment gateway. To integrate ERPNext with other application, you can use REST API of Frappe. Check following links to learn more about REST API of Frappe.
-[Frappe Rest API](https://frappe.github.io/frappe/user/guides/integration/rest_api.html)
+[Frappe Rest API](https://frappe.github.io/frappe/user/en/guides/integration/rest_api.html)
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 10aaa9a..2be21d6 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -7,7 +7,7 @@
app_description = """ERP made simple"""
app_icon = "icon-th"
app_color = "#e74c3c"
-app_version = "6.27.14"
+app_version = "6.27.15"
app_email = "info@erpnext.com"
app_license = "GNU General Public License (v3)"
source_link = "https://github.com/frappe/erpnext"
@@ -32,6 +32,8 @@
on_session_creation = "erpnext.shopping_cart.utils.set_cart_count"
on_logout = "erpnext.shopping_cart.utils.clear_cart_count"
+remember_selected = ['Company', 'Cost Center', 'Project']
+
# website
update_website_context = "erpnext.shopping_cart.utils.update_website_context"
my_account_context = "erpnext.shopping_cart.utils.update_my_account_context"
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 97b97cd..3ee0158 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -169,7 +169,7 @@
erpnext.patches.v6_0.multi_currency
erpnext.patches.v5_0.repost_gle_for_jv_with_multiple_party
erpnext.patches.v5_0.portal_fixes
-erpnext.patches.v5_0.reset_values_in_tools
+erpnext.patches.v5_0.reset_values_in_tools # 02-05-2016
execute:frappe.delete_doc("Page", "users")
erpnext.patches.v5_0.update_material_transferred_for_manufacturing_again
erpnext.patches.v5_0.index_on_account_and_gl_entry
diff --git a/erpnext/patches/v5_0/reset_values_in_tools.py b/erpnext/patches/v5_0/reset_values_in_tools.py
index 2825e4f..5aac83e 100644
--- a/erpnext/patches/v5_0/reset_values_in_tools.py
+++ b/erpnext/patches/v5_0/reset_values_in_tools.py
@@ -6,6 +6,7 @@
def execute():
for dt in ["Payment Tool", "Bank Reconciliation", "Payment Reconciliation", "Leave Control Panel",
- "Salary Manager", "Upload Attenadance", "Production Planning Tool", "BOM Replace Tool"]:
+ "Salary Manager", "Upload Attenadance", "Production Planning Tool", "BOM Replace Tool", "Customize Form",
+ "Employee Attendance Tool", "Rename Tool", "BOM Replace Tool", "Process Payroll", "Naming Series"]:
frappe.db.sql("delete from `tabSingles` where doctype=%s", dt)
\ No newline at end of file
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.js b/erpnext/projects/doctype/project/project.js
index 9148397..4835287 100644
--- a/erpnext/projects/doctype/project/project.js
+++ b/erpnext/projects/doctype/project/project.js
@@ -43,11 +43,32 @@
});
}
- frm.dashboard.show_heatmap = true;
- frm.dashboard.heatmap_message = __('This is based on the Time Logs created against this project');
- frm.dashboard.show_dashboard();
+ frm.trigger('show_dashboard');
}
+ },
+ show_dashboard: function(frm) {
+ frm.dashboard.show_heatmap = true;
+ frm.dashboard.heatmap_message = __('This is based on the Time Logs created against this project');
+ frm.dashboard.show_dashboard();
+ if(frm.doc.__onload.activity_summary.length) {
+ var hours = $.map(frm.doc.__onload.activity_summary, function(d) { return d.total_hours });
+ var max_count = Math.max.apply(null, hours);
+ var sum = hours.reduce(function(a, b) { return a + b; }, 0);
+ var section = frm.dashboard.add_section(
+ frappe.render_template('project_dashboard',
+ {
+ data: frm.doc.__onload.activity_summary,
+ max_count: max_count,
+ sum: sum
+ }));
+
+ section.on('click', '.time-log-link', function() {
+ var activity_type = $(this).attr('data-activity_type');
+ frappe.set_route('List', 'Time Log',
+ {'activity_type': activity_type, 'project': frm.doc.name});
+ });
+ }
}
});
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index c5808a2..e7f5b7a 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -27,6 +27,8 @@
})
self.set_onload('links', self.meta.get_links_setup())
+ self.set_onload('activity_summary', frappe.db.sql('''select activity_type, sum(hours) as total_hours
+ from `tabTime Log` where project=%s group by activity_type order by total_hours desc''', self.name, as_dict=True))
def __setup__(self):
self.onload()
@@ -183,7 +185,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/projects/doctype/project/project_dashboard.html b/erpnext/projects/doctype/project/project_dashboard.html
index efd6861..34a2d04 100644
--- a/erpnext/projects/doctype/project/project_dashboard.html
+++ b/erpnext/projects/doctype/project/project_dashboard.html
@@ -1,10 +1,26 @@
-<h5 style="margin-top: 0px;">Tasks</h5>
-{% if(project.tasks.length) { %}
- {% project.tasks.forEach(function(d) { %}
- <p><span class="indicator {{
- {"Open": "red", "Closed": "green", "Cancelled": "darkgrey"}[d.status] || "orange" }}"><a style="font-weight: normal"
- href="#Form/Task/{{ d.task_id }}">{{ d.title }}</a></span></p>
- {% }); %}
-{% } else { %}
- <p class="text-muted small">No Tasks Defined</p>
-{% } %}
\ No newline at end of file
+<h5 style="margin-top: 0px;">Activity Summary</h5>
+<h6 style="margin-bottom: 25px;">{{ __("Total hours: {0}", [flt(sum, 2) ]) }}</h6>
+{% for d in data %}
+<div class="row">
+ <div class="col-xs-4">
+ <a class="small time-log-link" data-activity_type="{{ d.activity_type || "" }}">
+ {{ d.activity_type || __("Unknown") }}</a>
+ </div>
+ <div class="col-xs-8">
+ <span class="inline-graph">
+ <span class="inline-graph-half">
+ </span>
+ <span class="inline-graph-half" title="{{ __("hours") }}">
+ <span class="inline-graph-count">
+ {{ __("{0} hours", [flt(d.total_hours, 2)]) }}
+ </span>
+ <span class="inline-graph-bar">
+ <span class="inline-graph-bar-inner dark"
+ style="width: {{ cint(d.total_hours/max_count * 100) }}%">
+ </span>
+ </span>
+ </span>
+ </span>
+ </div>
+</div>
+{% endfor %}
\ No newline at end of file
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/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 99036aa..3f6ea5a 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -19,20 +19,20 @@
frappe.ui.form.on(this.frm.cscript.tax_table, "rate", function(frm, cdt, cdn) {
cur_frm.cscript.calculate_taxes_and_totals();
- })
+ });
frappe.ui.form.on(this.frm.cscript.tax_table, "tax_amount", function(frm, cdt, cdn) {
cur_frm.cscript.calculate_taxes_and_totals();
- })
+ });
frappe.ui.form.on(this.frm.cscript.tax_table, "row_id", function(frm, cdt, cdn) {
cur_frm.cscript.calculate_taxes_and_totals();
- })
+ });
frappe.ui.form.on(this.frm.cscript.tax_table, "included_in_print_rate", function(frm, cdt, cdn) {
cur_frm.cscript.set_dynamic_labels();
cur_frm.cscript.calculate_taxes_and_totals();
- })
+ });
frappe.ui.form.on(this.frm.doctype, "apply_discount_on", function(frm) {
if(frm.doc.additional_discount_percentage) {
@@ -40,7 +40,7 @@
} else {
cur_frm.cscript.calculate_taxes_and_totals();
}
- })
+ });
frappe.ui.form.on(this.frm.doctype, "additional_discount_percentage", function(frm) {
if (frm.via_discount_amount) {
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 a63f32d..d403b18 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):
diff --git a/setup.py b/setup.py
index 27f4604..fb914f8 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
from setuptools import setup, find_packages
from pip.req import parse_requirements
-version = "6.27.14"
+version = "6.27.15"
requirements = parse_requirements("requirements.txt", session="")
setup(