diff --git a/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.txt b/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.txt
index 4a01347bcee..bc409f84a2d 100644
--- a/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.txt
+++ b/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.txt
@@ -2,16 +2,16 @@
{
"owner": "Administrator",
"docstatus": 0,
- "creation": "2012-11-23 16:46:22",
+ "creation": "2012-11-28 11:24:29",
"modified_by": "Administrator",
- "modified": "2012-11-26 10:11:53"
+ "modified": "2012-12-19 11:54:55"
},
{
"name": "__common__",
"ref_doctype": "Sales Invoice",
"doctype": "Report",
"is_standard": "Yes",
- "query": "select \n `tabDelivery Note`.`name` as \"Delivery Note:Link/Delivery Note:120\",\n`tabDelivery Note`.`customer` as \"Customer:Link/Customer:120\",\n`tabDelivery Note`.`status` as \"Status\",\n `tabDelivery Note`.`posting_date` as \"Date:Date\",\n `tabDelivery Note Item`.item_code as \"Item:Link/Item:120\",\n `tabDelivery Note Item`.description as \"Description\",\n `tabDelivery Note Item`.qty as \"Qty:Float\",\n `tabDelivery Note Item`.billed_qty as \"Billed Qty:Float\"\nfrom\n `tabDelivery Note`, `tabDelivery Note Item`\nwhere\n `tabDelivery Note Item`.`parent` = `tabDelivery Note`.`name`\n and `tabDelivery Note`.docstatus = 1\n and ifnull(`tabDelivery Note Item`.billed_qty,0) < ifnull(`tabDelivery Note Item`.qty,0)\norder by `tabDelivery Note`.posting_date asc"
+ "query": "select \n `tabDelivery Note`.`name` as \"Delivery Note:Link/Delivery Note:120\",\n`tabDelivery Note`.`customer` as \"Customer:Link/Customer:120\",\n`tabDelivery Note`.`status` as \"Status\",\n `tabDelivery Note`.`posting_date` as \"Date:Date\",\n `tabDelivery Note Item`.item_code as \"Item:Link/Item:120\",\n `tabDelivery Note Item`.description as \"Description:Data:120\",\n `tabDelivery Note Item`.amount as \"Amount:Currency:110\",\n (`tabDelivery Note Item`.billed_amt * ifnull(`tabDelivery Note`.conversion_rate, 1)) as \"Billed Amount:Currency:110\",\n (ifnull(`tabDelivery Note Item`.amount,0) - (ifnull(`tabDelivery Note Item`.billed_amt,0) * ifnull(`tabDelivery Note`.conversion_rate, 1))) as \"Pending Amount:Currency:120\"\nfrom\n `tabDelivery Note`, `tabDelivery Note Item`\nwhere\n `tabDelivery Note Item`.`parent` = `tabDelivery Note`.`name`\n and `tabDelivery Note`.docstatus = 1\n and ifnull(`tabDelivery Note Item`.billed_amt,0) < ifnull(`tabDelivery Note Item`.export_amount,0)\norder by `tabDelivery Note`.posting_date asc"
},
{
"name": "Delivered Items To Be Billed",
diff --git a/accounts/report/ordered_items_to_be_billed/ordered_items_to_be_billed.txt b/accounts/report/ordered_items_to_be_billed/ordered_items_to_be_billed.txt
index bf410933f3b..b5d4229fdd9 100644
--- a/accounts/report/ordered_items_to_be_billed/ordered_items_to_be_billed.txt
+++ b/accounts/report/ordered_items_to_be_billed/ordered_items_to_be_billed.txt
@@ -2,16 +2,16 @@
{
"owner": "Administrator",
"docstatus": 0,
- "creation": "2012-12-14 10:22:40",
+ "creation": "2012-12-14 14:27:05",
"modified_by": "Administrator",
- "modified": "2012-12-14 10:24:16"
+ "modified": "2012-12-19 11:52:26"
},
{
"name": "__common__",
"ref_doctype": "Sales Invoice",
"doctype": "Report",
"is_standard": "Yes",
- "query": "select \n `tabSales Order`.`name` as \"Sales Order:Link/Sales Order:120\",\n `tabSales Order`.`customer` as \"Customer:Link/Customer:120\",\n `tabSales Order`.`status` as \"Status\",\n `tabSales Order`.`transaction_date` as \"Date:Date\",\n `tabSales Order Item`.item_code as \"Item:Link/Item:120\",\n `tabSales Order Item`.description as \"Description\",\n `tabSales Order Item`.qty as \"Qty:Float\",\n `tabSales Order Item`.billed_qty as \"Billed Qty:Float\"\nfrom\n `tabSales Order`, `tabSales Order Item`\nwhere\n `tabSales Order Item`.`parent` = `tabSales Order`.`name`\n and `tabSales Order`.docstatus = 1\n and ifnull(`tabSales Order Item`.billed_qty,0) < ifnull(`tabSales Order Item`.qty,0)\norder by `tabSales Order`.transaction_date asc"
+ "query": "select \n `tabSales Order`.`name` as \"Sales Order:Link/Sales Order:120\",\n `tabSales Order`.`customer` as \"Customer:Link/Customer:120\",\n `tabSales Order`.`status` as \"Status\",\n `tabSales Order`.`transaction_date` as \"Date:Date\",\n `tabSales Order Item`.item_code as \"Item:Link/Item:120\",\n `tabSales Order Item`.description as \"Description:Data:120\",\n `tabSales Order Item`.amount as \"Amount:Currency:110\",\n (`tabSales Order Item`.billed_amt * ifnull(`tabSales Order`.conversion_rate, 1)) as \"Billed Amount:Currency:110\",\n (ifnull(`tabSales Order Item`.amount, 0) - (ifnull(`tabSales Order Item`.billed_amt, 0) * ifnull(`tabSales Order`.conversion_rate, 1))) as \"Pending Amount:Currency:120\"\nfrom\n `tabSales Order`, `tabSales Order Item`\nwhere\n `tabSales Order Item`.`parent` = `tabSales Order`.`name`\n and `tabSales Order`.docstatus = 1\n and ifnull(`tabSales Order Item`.billed_amt,0) < ifnull(`tabSales Order Item`.export_amount,0)\norder by `tabSales Order`.transaction_date asc"
},
{
"name": "Ordered Items To Be Billed",
diff --git a/hr/doctype/leave_application/leave_application.txt b/hr/doctype/leave_application/leave_application.txt
index dce8539a51d..edebe4bfd9c 100644
--- a/hr/doctype/leave_application/leave_application.txt
+++ b/hr/doctype/leave_application/leave_application.txt
@@ -4,7 +4,7 @@
"docstatus": 0,
"creation": "2012-12-10 10:25:20",
"modified_by": "Administrator",
- "modified": "2012-12-18 11:06:53"
+ "modified": "2012-12-18 11:06:54"
},
{
"is_submittable": 1,
diff --git a/manufacturing/doctype/bom/bom.py b/manufacturing/doctype/bom/bom.py
index ca566e6a480..fd7fa02d67a 100644
--- a/manufacturing/doctype/bom/bom.py
+++ b/manufacturing/doctype/bom/bom.py
@@ -158,12 +158,12 @@ class DocType:
""" Uncheck others if current one is selected as default,
update default bom in item master
"""
+ webnotes.conn.set(self.doc, "is_default", cint(self.doc.is_default))
if self.doc.is_default and self.doc.is_active:
from webnotes.model.utils import set_default
-
set_default(self.doc, "item")
webnotes.conn.set_value("Item", self.doc.item, "default_bom", self.doc.name)
-
+
else:
if not self.doc.is_active:
webnotes.conn.set(self.doc, "is_default", 0)
@@ -383,4 +383,4 @@ class DocType:
and t2.docstatus = 1 and t1.docstatus =1 """, self.doc.name)
if act_pbom and act_pbom[0][0]:
msgprint("""Sorry cannot inactivate as BOM: %s is child
- of one or many other active parent BOMs""" % self.doc.name, raise_exception=1)
\ No newline at end of file
+ of one or many other active parent BOMs""" % self.doc.name, raise_exception=1)
diff --git a/public/js/kb_common.js b/public/js/kb_common.js
index 88d95d013fc..1e3fcba15a3 100644
--- a/public/js/kb_common.js
+++ b/public/js/kb_common.js
@@ -33,7 +33,7 @@ KBItemToolbar = function(args, kb) {
this.make_timestamp = function() {
this.line1.innerHTML = repl('By %(name)s | %(when)s', {
- name: wn.utils.full_name(this.det.first_name, this.det.last_name),
+ name: wn.user_info(this.det.owner).fullname,
when: wn.datetime.comment_when(this.det.modified)
});
diff --git a/setup/doctype/item_group/item_group.js b/setup/doctype/item_group/item_group.js
index db894fa9d68..6bb6fe309d9 100644
--- a/setup/doctype/item_group/item_group.js
+++ b/setup/doctype/item_group/item_group.js
@@ -17,6 +17,9 @@
cur_frm.cscript.refresh = function(doc, cdt, cdn) {
cur_frm.cscript.set_root_readonly(doc);
+ cur_frm.add_custom_button("Item Group Tree", function() {
+ wn.set_route("Sales Browser", "Item Group");
+ })
}
cur_frm.cscript.set_root_readonly = function(doc) {
diff --git a/setup/doctype/item_group/item_group.py b/setup/doctype/item_group/item_group.py
index 2cec30dd1ac..81c5d80af2d 100644
--- a/setup/doctype/item_group/item_group.py
+++ b/setup/doctype/item_group/item_group.py
@@ -24,4 +24,21 @@ class DocType(DocTypeNestedSet):
def __init__(self, doc, doclist=[]):
self.doc = doc
self.doclist = doclist
- self.nsm_parent_field = 'parent_item_group';
\ No newline at end of file
+ self.nsm_parent_field = 'parent_item_group';
+
+ def on_update(self):
+ if self.doc.show_in_website:
+ # webpage updates
+ from website.utils import update_page_name
+ page_name = self.doc.name
+ if webnotes.conn.get_value("Website Settings", None,
+ "default_product_category")==self.doc.name:
+ page_name = "products"
+
+ update_page_name(self.doc, self.doc.name)
+
+ def prepare_template_args(self):
+ self.doc.sub_groups = webnotes.conn.sql("""select name, page_name
+ from `tabItem Group` where parent_item_group=%s
+ and ifnull(show_in_website,0)=1""", self.doc.name, as_dict=1)
+
\ No newline at end of file
diff --git a/setup/doctype/item_group/item_group.txt b/setup/doctype/item_group/item_group.txt
index 411869bf209..1a3e0637ed8 100644
--- a/setup/doctype/item_group/item_group.txt
+++ b/setup/doctype/item_group/item_group.txt
@@ -4,7 +4,7 @@
"docstatus": 0,
"creation": "2012-12-07 15:15:28",
"modified_by": "Administrator",
- "modified": "2012-12-17 15:00:01"
+ "modified": "2012-12-18 16:23:48"
},
{
"in_create": 1,
@@ -12,11 +12,13 @@
"module": "Setup",
"autoname": "field:item_group_name",
"document_type": "Master",
- "description": "Item Classification",
+ "allow_attach": 1,
"issingle": 0,
"name": "__common__",
"allow_rename": 1,
- "doctype": "DocType"
+ "description": "Item Classification",
+ "doctype": "DocType",
+ "max_attachments": 3
},
{
"name": "__common__",
@@ -49,33 +51,6 @@
"search_index": 0,
"reqd": 1
},
- {
- "description": "Check this if you want to show in website",
- "no_copy": 0,
- "search_index": 0,
- "doctype": "DocField",
- "label": "Show in Website",
- "fieldname": "show_in_website",
- "fieldtype": "Check"
- },
- {
- "depends_on": "show_in_website",
- "doctype": "DocField",
- "label": "Featured Items HTML",
- "fieldname": "featured_items_html",
- "fieldtype": "HTML",
- "options": "
Featured Items
"
- },
- {
- "description": "Items Featured on the Item Group Page",
- "depends_on": "show_in_website",
- "doctype": "DocField",
- "label": "Featured Items",
- "fieldname": "featured_items",
- "fieldtype": "Table",
- "hidden": 1,
- "options": "Featured Item"
- },
{
"doctype": "DocField",
"label": "Page Name",
@@ -112,6 +87,45 @@
"reqd": 1,
"options": "\nYes\nNo"
},
+ {
+ "doctype": "DocField",
+ "label": "Website Settings",
+ "fieldname": "sb9",
+ "fieldtype": "Section Break"
+ },
+ {
+ "description": "Check this if you want to show in website",
+ "no_copy": 0,
+ "search_index": 0,
+ "doctype": "DocField",
+ "label": "Show in Website",
+ "fieldname": "show_in_website",
+ "fieldtype": "Check"
+ },
+ {
+ "depends_on": "show_in_website",
+ "doctype": "DocField",
+ "label": "Description",
+ "fieldname": "description",
+ "fieldtype": "Text Editor"
+ },
+ {
+ "depends_on": "show_in_website",
+ "doctype": "DocField",
+ "label": "Featured Items",
+ "fieldname": "featured_items_html",
+ "fieldtype": "Section Break"
+ },
+ {
+ "description": "Items Featured on the Item Group Page",
+ "depends_on": "show_in_website",
+ "doctype": "DocField",
+ "label": "Featured Items",
+ "fieldname": "featured_items",
+ "fieldtype": "Table",
+ "hidden": 0,
+ "options": "Featured Item"
+ },
{
"print_hide": 1,
"no_copy": 1,
@@ -154,6 +168,22 @@
"options": "Item Group",
"report_hide": 1
},
+ {
+ "doctype": "DocField",
+ "label": "file_list",
+ "fieldname": "file_list",
+ "fieldtype": "Text",
+ "hidden": 1
+ },
+ {
+ "print_hide": 1,
+ "no_copy": 1,
+ "doctype": "DocField",
+ "label": "File List",
+ "fieldname": "file_list",
+ "fieldtype": "Text",
+ "hidden": 1
+ },
{
"amend": 0,
"create": 0,
diff --git a/stock/doctype/item/item.txt b/stock/doctype/item/item.txt
index ce54443c358..10017a69a8b 100644
--- a/stock/doctype/item/item.txt
+++ b/stock/doctype/item/item.txt
@@ -4,7 +4,7 @@
"docstatus": 0,
"creation": "2012-12-17 14:56:32",
"modified_by": "Administrator",
- "modified": "2012-12-17 16:02:00"
+ "modified": "2012-12-18 14:23:19"
},
{
"allow_attach": 1,
@@ -823,11 +823,12 @@
"permlevel": 0
},
{
+ "description": "Will appear in search",
"depends_on": "show_in_website",
"doctype": "DocField",
"label": "Short Description",
"fieldname": "web_short_description",
- "fieldtype": "Text",
+ "fieldtype": "Text Editor",
"permlevel": 0
},
{
diff --git a/support/doctype/support_ticket/support_ticket_list.js b/support/doctype/support_ticket/support_ticket_list.js
index 2d6090c3581..9dc84827bcf 100644
--- a/support/doctype/support_ticket/support_ticket_list.js
+++ b/support/doctype/support_ticket/support_ticket_list.js
@@ -15,7 +15,7 @@ wn.doclistviews['Support Ticket'] = wn.views.ListView.extend({
label_style: {
"status": {
- "Open": "danger",
+ "Open": "important",
"Closed": "success",
"Hold": "info",
"Waiting for Customer": "info"
diff --git a/utilities/page/questions/questions.py b/utilities/page/questions/questions.py
index b38bc1ed42c..20d38034fbc 100644
--- a/utilities/page/questions/questions.py
+++ b/utilities/page/questions/questions.py
@@ -35,7 +35,7 @@ def get_questions():
conds += ' and t1._user_tags like "%'+ t +'%"'
return webnotes.conn.sql("""select t1.name, t1.owner, t1.question, t1.modified, t1._user_tags,
- t2.first_name, t2.last_name, (select count(*) from tabAnswer where
+ (select count(*) from tabAnswer where
tabAnswer.question = t1.name) as answers
from tabQuestion t1, tabProfile t2
where t1.docstatus!=2
diff --git a/website/doctype/website_settings/website_settings.txt b/website/doctype/website_settings/website_settings.txt
index 14a762fc946..b6429655d79 100644
--- a/website/doctype/website_settings/website_settings.txt
+++ b/website/doctype/website_settings/website_settings.txt
@@ -2,23 +2,18 @@
{
"owner": "Administrator",
"docstatus": 0,
- "creation": "2012-05-21 15:54:09",
+ "creation": "2012-07-12 23:29:36",
"modified_by": "Administrator",
- "modified": "2012-07-09 16:20:58"
+ "modified": "2012-12-18 16:15:43"
},
{
- "section_style": "Simple",
- "allow_attach": 1,
- "module": "Website",
- "_last_update": "1329115882",
- "document_type": "Other",
"issingle": 1,
- "name": "__common__",
- "colour": "White:FFF",
+ "allow_attach": 1,
"doctype": "DocType",
- "show_in_menu": 0,
+ "module": "Website",
"max_attachments": 10,
- "version": 1
+ "document_type": "Other",
+ "name": "__common__"
},
{
"name": "__common__",
@@ -40,23 +35,52 @@
"doctype": "DocType"
},
{
- "create": 1,
- "doctype": "DocPerm",
- "write": 1,
- "role": "System Manager",
+ "doctype": "DocField",
+ "label": "Landing Page",
+ "fieldname": "sb0",
+ "fieldtype": "Section Break",
"permlevel": 0
},
{
- "create": 1,
- "doctype": "DocPerm",
- "write": 1,
- "role": "Website Manager",
+ "description": "The \"Web Page\" that is the website home page",
+ "doctype": "DocField",
+ "label": "Home Page",
+ "options": "Web Page",
+ "fieldname": "home_page",
+ "fieldtype": "Link",
+ "reqd": 1,
"permlevel": 0
},
{
- "role": "All",
- "permlevel": 1,
- "doctype": "DocPerm"
+ "description": "The name of your company / website as you want to appear on browser title bar. All pages will have this as the prefix to the title.",
+ "doctype": "DocField",
+ "label": "Title Prefix",
+ "fieldname": "title_prefix",
+ "fieldtype": "Data",
+ "permlevel": 0
+ },
+ {
+ "doctype": "DocField",
+ "fieldname": "cb4",
+ "fieldtype": "Column Break",
+ "permlevel": 0
+ },
+ {
+ "description": "Only Items / Groups under this Groups will be shown on the website. This will also represent the \"Products\" Home Page.",
+ "doctype": "DocField",
+ "label": "Default Product Category",
+ "options": "Item Group",
+ "fieldname": "default_product_category",
+ "fieldtype": "Link",
+ "permlevel": 0
+ },
+ {
+ "description": "If checked, the Home page will be the default Item Group for the website.",
+ "doctype": "DocField",
+ "label": "Home Page is Products",
+ "fieldname": "home_page_is_products",
+ "fieldtype": "Check",
+ "permlevel": 0
},
{
"doctype": "DocField",
@@ -66,36 +90,7 @@
"permlevel": 0
},
{
- "description": "The name of your company / website as you want to appear on browser title bar. All pages will have this as the prefix to the title.",
- "colour": "White:FFF",
- "doctype": "DocField",
- "label": "Title Prefix",
- "fieldname": "title_prefix",
- "fieldtype": "Data",
- "permlevel": 0
- },
- {
- "description": "The \"Web Page\" that is the website home page",
- "colour": "White:FFF",
- "doctype": "DocField",
- "label": "Home Page",
- "permlevel": 0,
- "fieldname": "home_page",
- "fieldtype": "Link",
- "reqd": 1,
- "options": "Web Page"
- },
- {
- "doctype": "DocField",
- "options": "Item Group",
- "fieldname": "default_product_category",
- "fieldtype": "Link",
- "label": "Default Product Category",
- "permlevel": 0
- },
- {
- "description": "Brand is what appears on the top-right of the toolbar. If it is an image, make sure it\nhas a transparent background and use the <img /> tag",
- "colour": "White:FFF",
+ "description": "Brand is what appears on the top-right of the toolbar. If it is an image, make sure it\nhas a transparent background and use the <img /> tag. Keep size as 200px x 30px",
"doctype": "DocField",
"label": "Brand HTML",
"fieldname": "brand_html",
@@ -104,10 +99,10 @@
},
{
"doctype": "DocField",
+ "label": "Top Bar Items",
"options": "Top Bar Item",
"fieldname": "top_bar_items",
"fieldtype": "Table",
- "label": "Top Bar Items",
"permlevel": 0
},
{
@@ -133,10 +128,10 @@
},
{
"doctype": "DocField",
+ "label": "Footer Items",
"options": "Top Bar Item",
"fieldname": "footer_items",
"fieldtype": "Table",
- "label": "Footer Items",
"permlevel": 0
},
{
@@ -148,13 +143,12 @@
},
{
"description": "An icon file with .ico extension. Should be 16 x 16 px. Generated using a favicon generator. [favicon-generator.org]",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "FavIcon",
- "permlevel": 0,
+ "options": "attach_files:",
"fieldname": "favicon",
"fieldtype": "Select",
- "options": "attach_files:"
+ "permlevel": 0
},
{
"description": "Sub-domain provided by erpnext.com",
@@ -194,12 +188,30 @@
},
{
"description": "Bind events on startup and page change",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Startup Code",
- "permlevel": 0,
+ "options": "Javascript",
"fieldname": "startup_code",
"fieldtype": "Code",
- "options": "Javascript"
+ "permlevel": 0
+ },
+ {
+ "create": 1,
+ "doctype": "DocPerm",
+ "write": 1,
+ "role": "System Manager",
+ "permlevel": 0
+ },
+ {
+ "create": 1,
+ "doctype": "DocPerm",
+ "write": 1,
+ "role": "Website Manager",
+ "permlevel": 0
+ },
+ {
+ "doctype": "DocPerm",
+ "role": "All",
+ "permlevel": 1
}
]
\ No newline at end of file
diff --git a/website/helpers/product.py b/website/helpers/product.py
index fec462607b2..60d54e67f0e 100644
--- a/website/helpers/product.py
+++ b/website/helpers/product.py
@@ -25,30 +25,23 @@ def get_product_info(item_code):
@webnotes.whitelist(allow_guest=True)
def get_product_list(args=None):
- """
- args = {
- 'limit_start': 0,
- 'limit_page_length': 20,
- 'search': '',
- 'product_group': '',
- }
- """
import webnotes
from webnotes.utils import cstr
if not args: args = webnotes.form_dict
+ if not args.search: args.search = ""
# base query
query = """\
- select name, item_name, page_name, website_image,
- description, web_short_description
+ select name, item_name, page_name, website_image, item_group,
+ if(ifnull(web_short_description,'')='', web_long_description,
+ web_short_description) as web_short_description
from `tabItem`
- where is_sales_item = 'Yes'
- and docstatus = 0
- and show_in_website = 1"""
+ where docstatus = 0
+ and show_in_website = 1 """
# search term condition
- if args.get('search'):
+ if args.search:
query += """
and (
web_short_description like %(search)s or
@@ -62,78 +55,9 @@ def get_product_list(args=None):
# product group condition
if args.get('product_group') and args.get('product_group') != 'All Products':
query += """
- and item_group = %(product_group)s"""
+ and item_group = %(product_group)s """
# order by
- query += """
- order by item_name asc, name asc"""
+ query += """order by item_name asc, name asc limit %s, 10""" % args.start
- from webnotes.widgets.query_builder import add_limit_to_query
- query, args = add_limit_to_query(query, args)
-
- return webnotes.conn.sql(query, args, as_dict=1)
-
-@webnotes.whitelist(allow_guest=True)
-def get_product_category_list(args=None):
- """
- args = {
- 'limit_start': 0,
- 'limit_page_length': 5,
- }
- """
- import webnotes
-
- if not args: args = webnotes.form_dict
-
- query = """\
- select count(name) as items, item_group
- from `tabItem`
- where is_sales_item = 'Yes'
- and docstatus = 0
- and show_in_website = 1
- group by item_group
- order by items desc"""
-
- from webnotes.widgets.query_builder import add_limit_to_query
- query, args = add_limit_to_query(query, args)
-
-
- result = webnotes.conn.sql(query, args, as_dict=1)
-
- # add All Products link
- total_count = sum((r.get('items') or 0 for r in result))
- result = [{'items': total_count, 'item_group': 'All Products'}] + (result or [])
-
- return result
-
-@webnotes.whitelist(allow_guest=True)
-def get_similar_product_list(args=None):
- """
- args = {
- 'limit_start': 0,
- 'limit_page_length': 5,
- 'product_name': '',
- 'product_group': '',
- }
- """
- import webnotes
-
- if not args: args = webnotes.form_dict
-
- query = """\
- select name, item_name, page_name, website_image,
- description, web_short_description
- from `tabItem`
- where is_sales_item = 'Yes'
- and docstatus = 0
- and show_in_website = 1
- and name != %(product_name)s
- and item_group = %(product_group)s
- order by item_name"""
-
- from webnotes.widgets.query_builder import add_limit_to_query
- query, args = add_limit_to_query(query, args)
-
- result = webnotes.conn.sql(query, args, as_dict=1)
-
- return result
\ No newline at end of file
+ return webnotes.conn.sql(query, args, as_dict=1)
\ No newline at end of file
diff --git a/website/templates/css/products.css b/website/templates/css/products.css
deleted file mode 100644
index 73289c4e203..00000000000
--- a/website/templates/css/products.css
+++ /dev/null
@@ -1,11 +0,0 @@
-
\ No newline at end of file
diff --git a/website/templates/html/product_group.html b/website/templates/html/product_group.html
index d5e18714b24..91d79b5f610 100644
--- a/website/templates/html/product_group.html
+++ b/website/templates/html/product_group.html
@@ -1 +1,35 @@
{% extends "html/page.html" %}
+
+{% block content %}
+
+
+
+
+ {% include 'html/product_search_box.html' %}
+ {% if description %}
+
{{ description or ""}}
+ {% else %}
+
{{ name }}
+ {% endif %}
+ {% if sub_groups %}
+
+
+ {% for d in sub_groups %}
+
+ {% endfor %}
+
+
+ {% endif %}
+ {% if obj.doclist.get({"doctype":"Featured Item"}) %}
+
+
Featured Products
+
+ {% endif %}
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/website/templates/html/product_page.html b/website/templates/html/product_page.html
index 80108f1820d..dd941901ab9 100644
--- a/website/templates/html/product_page.html
+++ b/website/templates/html/product_page.html
@@ -20,15 +20,20 @@
- {% include 'html/product_search.html' %}
+ {% include 'html/product_search_box.html' %}
{{ item_name }}
+
Item Code: {{ name }}
{% if website_image %}
{% else %}
-
-
This is an auto-generated Image
+
+
{% endif %}
@@ -42,7 +47,8 @@
Product Description
- {{ web_long_description or web_short_description }}
+ {{ web_long_description or web_short_description or
+ "[No description given]" }}
{% if obj.doclist.get({"doctype":"Item Website Specification"}) %}
@@ -51,7 +57,7 @@
{% for d in obj.doclist.get(
{"doctype":"Item Website Specification"}) %}
- | {{ d.label }} |
+ {{ d.label }} |
{{ d.description }} |
{% endfor %}
diff --git a/website/templates/html/product_search.html b/website/templates/html/product_search.html
deleted file mode 100644
index 034ec112f8b..00000000000
--- a/website/templates/html/product_search.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
\ No newline at end of file
diff --git a/website/templates/html/product_search_box.html b/website/templates/html/product_search_box.html
new file mode 100644
index 00000000000..125f0ba4b5a
--- /dev/null
+++ b/website/templates/html/product_search_box.html
@@ -0,0 +1,26 @@
+
+
\ No newline at end of file
diff --git a/website/templates/js/blog.js b/website/templates/js/blog.js
index 43b2d70a962..6f3260ca864 100644
--- a/website/templates/js/blog.js
+++ b/website/templates/js/blog.js
@@ -59,10 +59,17 @@ var blog = {
Read with comments...
\
', b)).appendTo($wrap);
});
- blog.start += data.length;
+ blog.start += (data.length || 0);
if(!data.length) {
- $("#next-page").toggle(false)
- .parent().append("
Nothing more to show.
");
+ if(blog.start) {
+ $("#next-page").toggle(false)
+ .parent().append("
Nothing more to show.
");
+ } else {
+ $("#next-page").toggle(false)
+ .parent().append("
No blogs written yet.
");
+ }
+ } else {
+ $("#next-page").toggle(true);
}
}
}
\ No newline at end of file
diff --git a/website/templates/js/blog_subscribe.js b/website/templates/js/blog_subscribe.js
deleted file mode 100644
index cdc013025d2..00000000000
--- a/website/templates/js/blog_subscribe.js
+++ /dev/null
@@ -1,33 +0,0 @@
-wn.provide('erpnext.blog');
-
-(function() {
- $('body').on('click', '.btn-blog-subscribe', function() {
- var d = new wn.ui.Dialog({
- title: "Get Blog Updates via Email",
- fields: [
- {label: "Your Name", fieldtype:"Data", reqd:1},
- {label: "Your Email Address", fieldtype:"Data", reqd:1
- ,description: "You can unsubscribe anytime."},
- {label: "Subscribe", fieldtype:"Button"}
- ]
- });
- $(d.fields_dict.subscribe.input).click(function() {
- var args = d.get_values();
- if(!args) return;
- wn.call({
- method: 'website.helpers.blog.add_subscriber',
- args: args,
- callback: function(r) {
- if(r.exc) {
- msgprint('Opps there seems to be some error, Please check back after some time.');
- } else {
- msgprint('Thanks for subscribing!');
- }
- d.hide();
- },
- btn: this
- })
- })
- d.show()
- })
-})()
diff --git a/website/templates/js/product_category.js b/website/templates/js/product_category.js
deleted file mode 100644
index 2b34708ec2b..00000000000
--- a/website/templates/js/product_category.js
+++ /dev/null
@@ -1,18 +0,0 @@
-wn.provide('erpnext.products');
-
-erpnext.products.make_product_categories = function(wrapper) {
- if (!wrapper) { wrapper = erpnext.products.wrapper; }
- if (!wrapper) { return; }
-
- wrapper.category_list = new wn.ui.Listing({
- parent: $(wrapper).find('.more-categories').get(0),
- method: 'website.helpers.product.get_product_category_list',
- hide_refresh: true,
- render_row: function(parent, data) {
- parent.innerHTML = repl(
- '
%(item_group)s (%(items)s)',
- data);
- }
- });
- wrapper.category_list.run();
-}
\ No newline at end of file
diff --git a/website/templates/js/products.js b/website/templates/js/products.js
deleted file mode 100644
index 720d192f3e9..00000000000
--- a/website/templates/js/products.js
+++ /dev/null
@@ -1,106 +0,0 @@
-// ERPNext - web based ERP (http://erpnext.com)
-// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see
.
-
-// js inside blog page
-
-{% include "js/product_category.js" %}
-
-wn.pages['{{ name }}'].onload = function(wrapper) {
- erpnext.products.wrapper = wrapper;
-
- // make product categories in the sidebar
- erpnext.products.make_product_categories(wrapper);
-
- // make lists
- erpnext.products.make_product_list(wrapper);
-
- // bind search button or enter key
- $(wrapper).find('.products-search .btn').click(function() {
- erpnext.products.product_list.run();
- });
-
- $(wrapper).find('.products-search input').keypress(function(ev) {
- if(ev.which==13) $(wrapper).find('.products-search .btn').click();
- });
-}
-
-erpnext.products.make_product_list = function(wrapper) {
- if (!wrapper) { wrapper = erpnext.products.wrapper; }
- if (!wrapper) { return; }
-
- erpnext.products.product_list = new wn.ui.Listing({
- parent: $(wrapper).find('#products-list').get(0),
- run_btn: $(wrapper).find('.products-search .btn').get(0),
- no_toolbar: true,
- method: 'website.helpers.product.get_product_list',
- get_args: function() {
- return {
- search: $('input[name="products-search"]').val() || '',
- product_group: erpnext.products.cur_group || '',
- };
- },
- render_row: function(parent, data) {
- if (!data.web_short_description) {
- data.web_short_description = data.description;
- }
- parent.innerHTML = repl('\
-
\
-
\
-
\
-
%(web_short_description)s
\
-
', data);
-
- if(data.website_image) {
- $(parent).find('.img-area').append(repl(
- '
s)
', data))
- } else {
- $(parent).find('.img-area').append(wn.dom.placeholder(100,
- data.item_name));
- }
- }
- });
-}
-
-wn.pages['{{ name }}'].onshow = function(wrapper) {
- // show default product category
- erpnext.products.set_group();
-}
-
-erpnext.products.set_group = function() {
- var cat = erpnext.products.get_group();
-
- // get erpnext.products.default_category
- var wrapper = erpnext.products.wrapper;
-
- $(wrapper).find('h1').html(cat.label);
- erpnext.products.product_list.run();
-}
-
-erpnext.products.get_group = function() {
- route = wn.get_route();
- if(route && route.length>1) {
- // from url
- var grp = route[1];
- var label = route[1];
- erpnext.products.cur_group = grp;
- } else {
- // default
- var grp = 'Products';
- var label = 'Products';
- erpnext.products.cur_group = null;
- }
- return {grp:grp, label:label};
-}
\ No newline at end of file
diff --git a/website/templates/pages/404.html b/website/templates/pages/404.html
index 042360823fb..04584d9a72c 100644
--- a/website/templates/pages/404.html
+++ b/website/templates/pages/404.html
@@ -3,7 +3,7 @@
{% block content %}
-
Page missing or moved
+
Page missing or moved
We are very sorry for this, but the page you are looking for is missing
(this could be because of a typo in the address) or moved.
diff --git a/website/templates/pages/blog.html b/website/templates/pages/blog.html
index 75681d5045f..f31af42222d 100644
--- a/website/templates/pages/blog.html
+++ b/website/templates/pages/blog.html
@@ -17,11 +17,12 @@
diff --git a/website/templates/pages/error.html b/website/templates/pages/error.html
new file mode 100644
index 00000000000..4fe394f66bc
--- /dev/null
+++ b/website/templates/pages/error.html
@@ -0,0 +1,11 @@
+{% extends "html/outer.html" %}
+
+{% block content %}
+
+
+
Oops, a server error has occured
+
+
%(error)s
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/product_search.html b/website/templates/pages/product_search.html
new file mode 100644
index 00000000000..f8a1144fbb5
--- /dev/null
+++ b/website/templates/pages/product_search.html
@@ -0,0 +1,97 @@
+{% extends "html/page.html" %}
+
+{% block title %}Product Search{% endblock %}
+
+{% block content %}
+
+
+
+
+
+ {% include 'html/product_search_box.html' %}
+
Search Results
+
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/products.html b/website/templates/pages/products.html
deleted file mode 100644
index aa23ea29c41..00000000000
--- a/website/templates/pages/products.html
+++ /dev/null
@@ -1,37 +0,0 @@
-{% extends "html/page.html" %}
-
-{% block javascript %}
- {% include "js/products.js" %}
-{% endblock %}
-
-{% block css %}
- {% include "css/products.css" %}
-{% endblock %}
-
-{% block title %}
- Products
-{% endblock %}
-
-{% block content %}
-
-{% endblock %}
\ No newline at end of file
diff --git a/website/utils.py b/website/utils.py
index 198746f20a1..be8f5e1b2e6 100644
--- a/website/utils.py
+++ b/website/utils.py
@@ -48,7 +48,7 @@ def render(page_name):
else:
html = get_html('index')
except Exception, e:
- html = get_html('404')
+ html = get_html('error')
from webnotes.handler import eprint, print_zip
eprint("Content-Type: text/html")
@@ -57,32 +57,29 @@ def render(page_name):
def get_html(page_name):
"""get page html"""
page_name = scrub_page_name(page_name)
- comments = get_comments(page_name)
html = ''
# load from cache, if auto cache clear is falsy
if not (hasattr(conf, 'auto_cache_clear') and conf.auto_cache_clear or 0):
html = webnotes.cache().get_value("page:" + page_name)
+ from_cache = True
- if html:
- comments += "\nload status: cache"
- else:
+ if not html:
html = load_into_cache(page_name)
- comments += "\nload status: fresh"
+ from_cache = False
- # insert comments
- html += """\n""" % webnotes.utils.cstr(comments)
+ if not html:
+ html = get_html("404")
+
+ if page_name=="error":
+ html = html % {"error": webnotes.getTraceback()}
+ else:
+ comments = "\n\npage:"+page_name+\
+ "\nload status: " + (from_cache and "cache" or "fresh")
+ html += """\n""" % webnotes.utils.cstr(comments)
return html
-
-def get_comments(page_name):
- if page_name == '404':
- comments = """error: %s""" % webnotes.getTraceback()
- else:
- comments = """page: %s""" % page_name
-
- return comments
def scrub_page_name(page_name):
if page_name.endswith('.html'):
@@ -114,6 +111,8 @@ def update_page_name(doc, title):
def load_into_cache(page_name):
args = prepare_args(page_name)
+ if not args:
+ return ""
html = build_html(args)
webnotes.cache().set_value("page:" + page_name, html)
return html
@@ -141,6 +140,9 @@ def prepare_args(page_name):
else:
args = get_doc_fields(page_name)
+ if not args:
+ return False
+
args.update(get_outer_env())
return args
@@ -156,6 +158,9 @@ def get_template_pages():
def get_doc_fields(page_name):
doc_type, doc_name = get_source_doc(page_name)
+ if not doc_type:
+ return False
+
obj = webnotes.get_obj(doc_type, doc_name, with_children=True)
if hasattr(obj, 'prepare_template_args'):