From 1a8d8c90aa2793ad9e6d6de2be12edeeb02925da Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 26 Jul 2016 14:59:17 +0530 Subject: [PATCH] [minor] fix blog post route and formatter for item, employee --- frappe/docs/user/en/guides/desk/__init__.py | 0 .../en/guides/desk/formatter_for_link_fields.md | 17 +++++++++++++++++ frappe/docs/user/en/guides/desk/index.md | 5 +++++ frappe/public/js/frappe/form/formatters.js | 11 +++++++++-- frappe/website/doctype/blog_post/blog_post.py | 2 +- 5 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 frappe/docs/user/en/guides/desk/__init__.py create mode 100644 frappe/docs/user/en/guides/desk/formatter_for_link_fields.md create mode 100755 frappe/docs/user/en/guides/desk/index.md diff --git a/frappe/docs/user/en/guides/desk/__init__.py b/frappe/docs/user/en/guides/desk/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frappe/docs/user/en/guides/desk/formatter_for_link_fields.md b/frappe/docs/user/en/guides/desk/formatter_for_link_fields.md new file mode 100644 index 0000000000..ceb2a4474c --- /dev/null +++ b/frappe/docs/user/en/guides/desk/formatter_for_link_fields.md @@ -0,0 +1,17 @@ +In case where a code and a name is maintained for an entity, (for example for Employee there may be an Employee Code and Employee Name) and we want to show both the ID and name in a link field, we can make a formatter. + +#### Example: + + frappe.form.link_formatters['Employee'] = function(value, doc) { + if(doc.employee_name && doc.employee_name !== value) { + return value + ': ' + doc.employee_name; + } else { + return value; + } + } + +Notes: + +1. Both the primary key (`name) and the descriptive name (e.g. `employee_name`) must be present in the document. The descriptive name field could be hidden +1. This needs to be loaded before the document is loaded and can be re-used for all forms. You can also add it in `build.json` + diff --git a/frappe/docs/user/en/guides/desk/index.md b/frappe/docs/user/en/guides/desk/index.md new file mode 100755 index 0000000000..c32fa85913 --- /dev/null +++ b/frappe/docs/user/en/guides/desk/index.md @@ -0,0 +1,5 @@ +# Desk Customization + +Articles related to customization of Frappe Desk + +{index} diff --git a/frappe/public/js/frappe/form/formatters.js b/frappe/public/js/frappe/form/formatters.js index 5b76f7e3ed..e021dade2b 100644 --- a/frappe/public/js/frappe/form/formatters.js +++ b/frappe/public/js/frappe/form/formatters.js @@ -5,6 +5,8 @@ frappe.provide("frappe.form.formatters"); +frappe.form.link_formatters = {}; + frappe.form.formatters = { _right: function(value, options) { if(options && options.inline) { @@ -60,11 +62,16 @@ frappe.form.formatters = { return ''; } }, - Link: function(value, docfield, options) { + Link: function(value, docfield, options, doc) { var doctype = docfield._options || docfield.options; if(value && value.match(/^['"].*['"]$/)) { - return value.replace(/^.(.*).$/, "$1"); + value.replace(/^.(.*).$/, "$1"); + } + + if(frappe.form.link_formatters[doctype]) { + value = frappe.form.link_formatters[doctype](value, doc); } + if(options && options.for_print) { return value; } diff --git a/frappe/website/doctype/blog_post/blog_post.py b/frappe/website/doctype/blog_post/blog_post.py index accfe37394..189c24f05e 100644 --- a/frappe/website/doctype/blog_post/blog_post.py +++ b/frappe/website/doctype/blog_post/blog_post.py @@ -21,7 +21,7 @@ class BlogPost(WebsiteGenerator): def make_route(self): if not self.route: - return 'blog/' + frappe.db.get_value('Blog Category', self.blog_category, + return frappe.db.get_value('Blog Category', self.blog_category, 'route') + '/' + self.scrub(self.title) def get_feed(self):