sanitize and trim search result description
This commit is contained in:
parent
7ed4bda46c
commit
09bf08ca9b
2 changed files with 40 additions and 11 deletions
|
|
@ -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 = '<span class="field-name text-muted">' +
|
||||
me.bold_keywords(part.slice(0, colon_index + 1), keywords) + '</span>' +
|
||||
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 = '<span class="field-name text-muted">' +
|
||||
me.bold_keywords(field_name, keywords) + ':' + '</span>' +
|
||||
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 = '<span class="field-name text-muted">' +
|
||||
me.bold_keywords(field_name, keywords) + ':' + '</span>';
|
||||
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(', ');
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue