use of org.olat.core.util.filter.Filter in project openolat by klemens.
the class TableListProvider method getResult.
@Override
public void getResult(String searchValue, ListReceiver receiver) {
Filter htmlFilter = FilterFactory.getHtmlTagsFilter();
Set<String> searchEntries = new TreeSet<String>();
int entryCounter = 1;
// loop over whole data-model
TableDataModel<?> unfilteredModel = table.getUnfilteredTableDataModel();
int rowCount = unfilteredModel.getRowCount();
int colCount = table.getColumnCountFromAllCDs();
a_a: for (int colIndex = 0; colIndex < colCount; colIndex++) {
ColumnDescriptor cd = table.getColumnDescriptorFromAllCDs(colIndex);
int dataColumn = cd.getDataColumn();
if (dataColumn >= 0 && table.isColumnDescriptorVisible(cd)) {
for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) {
Object obj = unfilteredModel.getValueAt(rowIndex, dataColumn);
// When a CustomCellRenderer exist, use this to render cell-value to String
if (cd instanceof CustomRenderColumnDescriptor) {
CustomRenderColumnDescriptor crcd = (CustomRenderColumnDescriptor) cd;
CustomCellRenderer customCellRenderer = crcd.getCustomCellRenderer();
if (customCellRenderer instanceof CustomCssCellRenderer) {
// For css renderers only use the hover
// text, not the CSS class name and other
// markup
CustomCssCellRenderer cssRenderer = (CustomCssCellRenderer) customCellRenderer;
obj = cssRenderer.getHoverText(obj);
if (!StringHelper.containsNonWhitespace((String) obj)) {
continue;
}
} else {
StringOutput sb = StringOutputPool.allocStringBuilder(250);
customCellRenderer.render(sb, null, obj, crcd.getLocale(), cd.getAlignment(), null);
obj = StringOutputPool.freePop(sb);
}
}
if (obj instanceof String) {
String valueString = (String) obj;
// Remove any HTML markup from the value
valueString = htmlFilter.filter(valueString);
// Finally compare with search value based on a simple lowercase match
if (valueString.toLowerCase().indexOf(searchValue.toLowerCase()) != -1) {
if (searchEntries.add(valueString)) {
// Add to receiver list same entries only once
if (searchEntries.size() == 1) {
// before first entry, add searchValue. But add only when one search match
receiver.addEntry(searchValue, searchValue);
}
// limit the number of entries
if (entryCounter++ > MAX_TABLE_SEARCH_RESULT_ENTRIES) {
receiver.addEntry("...", "...");
break a_a;
}
receiver.addEntry(valueString, valueString);
}
}
}
}
}
}
}
use of org.olat.core.util.filter.Filter in project openolat by klemens.
the class GlossaryManagerImpl method getIndexerDocument.
/**
* Creates a lucene index document for this glossary
*
* @param repositoryEntry
* @param searchResourceContext
* @return Document the index document
*/
@Override
public Document getIndexerDocument(RepositoryEntry repositoryEntry, SearchResourceContext searchResourceContext) {
GlossaryItemManager gIMgr = GlossaryItemManager.getInstance();
VFSContainer glossaryFolder = getGlossaryRootFolder(repositoryEntry.getOlatResource());
VFSLeaf glossaryFile = gIMgr.getGlossaryFile(glossaryFolder);
if (glossaryFile == null) {
return null;
}
String glossaryContent = gIMgr.getGlossaryContent(glossaryFolder);
// strip all html tags
Filter htmlTagsFilter = FilterFactory.getHtmlTagsFilter();
glossaryContent = htmlTagsFilter.filter(glossaryContent);
// create standard olat index document with this data
OlatDocument glossaryDocument = new OlatDocument();
if (repositoryEntry.getInitialAuthor() != null) {
glossaryDocument.setAuthor(repositoryEntry.getInitialAuthor());
}
if (repositoryEntry.getDisplayname() != null) {
glossaryDocument.setTitle(repositoryEntry.getDisplayname());
}
if (repositoryEntry.getDescription() != null) {
glossaryDocument.setDescription(htmlTagsFilter.filter(repositoryEntry.getDescription()));
}
glossaryDocument.setContent(glossaryContent);
glossaryDocument.setCreatedDate(repositoryEntry.getCreationDate());
glossaryDocument.setLastChange(new Date(glossaryFile.getLastModified()));
glossaryDocument.setResourceUrl(searchResourceContext.getResourceUrl());
glossaryDocument.setDocumentType(searchResourceContext.getDocumentType());
glossaryDocument.setCssIcon("o_FileResource-GLOSSARY_icon");
return glossaryDocument.getLuceneDocument();
}
use of org.olat.core.util.filter.Filter in project OpenOLAT by OpenOLAT.
the class WordCountTest method testCleanMessage.
@Test
public void testCleanMessage() {
Filter filter = new QuoteAndTagFilter();
String text = "<p> </p><div class=\"o_quote_wrapper\"><div class=\"o_quote_author mceNonEditable\">Am 23.11.09 12:29 hat OLAT Administrator geschrieben:</div><blockquote class=\"o_quote\"><p>Quelques mots que je voulais écrire. Et encore un ou deux.</p></blockquote></div><p>Et une réponse avec citation incorporée</p>";
String output = filter.filter(text);
assertTrue(" Et une réponse avec citation incorporée".equals(output));
}
use of org.olat.core.util.filter.Filter in project OpenOLAT by OpenOLAT.
the class EPAbstractHandler method getIndexerDocument.
@Override
public OlatDocument getIndexerDocument(SearchResourceContext searchResourceContext, AbstractArtefact artefact, EPFrontendManager ePFManager) {
OlatDocument document = new OlatDocument();
Identity author = artefact.getAuthor();
if (author != null) {
document.setAuthor(author.getName());
}
Filter filter = FilterFactory.getHtmlTagAndDescapingFilter();
document.setCreatedDate(artefact.getCreationDate());
document.setTitle(filter.filter(artefact.getTitle()));
document.setDescription(filter.filter(artefact.getDescription()));
document.setResourceUrl(searchResourceContext.getResourceUrl());
document.setDocumentType(searchResourceContext.getDocumentType());
document.setCssIcon(artefact.getIcon());
document.setParentContextType(searchResourceContext.getParentContextType());
document.setParentContextName(searchResourceContext.getParentContextName());
StringBuilder sb = new StringBuilder();
if (artefact.getReflexion() != null) {
sb.append(artefact.getReflexion()).append(' ');
}
getContent(artefact, sb, searchResourceContext, ePFManager);
document.setContent(sb.toString());
return document;
}
use of org.olat.core.util.filter.Filter in project OpenOLAT by OpenOLAT.
the class TextArtefactDetailsController method init.
private void init(UserRequest ureq) {
String artFulltextContent = ePFMgr.getArtefactFullTextContent(artefact);
if (!readOnlyMode) {
// prepare an edit link
String fulltext = FilterFactory.getHtmlTagAndDescapingFilter().filter(artFulltextContent);
fulltext = StringHelper.xssScan(fulltext);
fulltext = Formatter.truncate(fulltext, 50);
editBtn = LinkFactory.createCustomLink("text.edit.link", "edit", fulltext, Link.NONTRANSLATED, vC, this);
editBtn.setIconRightCSS("o_icon o_icon_inline_editable");
} else {
// register a mapper to deliver uploaded media files
final VFSContainer artefactFolder = ePFMgr.getArtefactContainer(artefact);
String mapperBase = registerMapper(ureq, new VFSContainerMapper(artefactFolder));
Filter urlFilter = FilterFactory.getBaseURLToMediaRelativeURLFilter(mapperBase);
String wrappedText = urlFilter.filter(artFulltextContent);
vC.contextPut("text", wrappedText);
}
}
Aggregations