diff --git a/frappe/public/js/frappe/ui/toolbar/search.js b/frappe/public/js/frappe/ui/toolbar/search.js
index 1ec69c57c7..721700f66e 100644
--- a/frappe/public/js/frappe/ui/toolbar/search.js
+++ b/frappe/public/js/frappe/ui/toolbar/search.js
@@ -381,18 +381,47 @@ frappe.search.GlobalSearch = Class.extend({
get_finds: function(searchables, keywords) {
var me = this;
parts = searchables.split("|||");
+ content_length = 300;
content = [];
- parts.forEach(function(part) {
+ current_length = 0;
+ var field_text = "";
+ for(var i = 0; i < parts.length; i++) {
+ part = parts[i];
if(part.toLowerCase().indexOf(keywords) !== -1) {
- var colon_index = part.indexOf(':');
- part = '' +
- me.bold_keywords(part.slice(0, colon_index + 1), keywords) + '' +
- me.bold_keywords(part.slice(colon_index + 1), keywords);
- if(content.indexOf(part) === -1) {
- content.push(part);
+ if(part.indexOf('&&&') !== -1) {
+ var colon_index = part.indexOf('&&&');
+ var field_value = part.slice(colon_index + 3);
+ } else {
+ var colon_index = part.indexOf(':');
+ var field_value = part.slice(colon_index + 1);
+ }
+ var field_name = part.slice(0, colon_index);
+
+ var remaining_length = content_length - current_length;
+ current_length += field_name.length + field_value.length + 2;
+ if(current_length < content_length) {
+ field_text = '' +
+ me.bold_keywords(field_name, keywords) + ':' + '' +
+ me.bold_keywords(field_value, keywords);
+ if(content.indexOf(field_text) === -1) {
+ content.push(field_text);
+ }
+ } else {
+ if(field_name.length < remaining_length){
+ remaining_length -= field_name.length;
+ field_text = '' +
+ me.bold_keywords(field_name, keywords) + ':' + '';
+ field_value = field_value.slice(0, remaining_length);
+ field_value = field_value.slice(0, field_value.lastIndexOf(' ')) + ' ...';
+ field_text += me.bold_keywords(field_value, keywords);
+ content.push(field_text);
+ } else {
+ content.push('...');
+ }
+ break;
}
}
- });
+ }
return content.join(', ');
},
diff --git a/frappe/utils/global_search.py b/frappe/utils/global_search.py
index 528edd6cc4..b8fc9c31d1 100644
--- a/frappe/utils/global_search.py
+++ b/frappe/utils/global_search.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
import frappe
-from frappe.utils import cint
+from frappe.utils import cint, strip_html_tags
def setup_global_search_table():
'''Creates __global_seach table'''
@@ -52,9 +52,9 @@ def update_global_search(doc):
if d.parent == doc.name:
for field in d.meta.get_global_search_fields():
if d.get(field.fieldname):
- content.append(field.label + ": " + unicode(d.get(field.fieldname)))
+ content.append(field.label + "&&& " + strip_html_tags(unicode(d.get(field.fieldname))))
else:
- content.append(field.label + ": " + unicode(doc.get(field.fieldname)))
+ content.append(field.label + "&&& " + strip_html_tags(unicode(doc.get(field.fieldname))))
if content:
published = 0