Search in sources :

Example 16 with Filter

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);
                        }
                    }
                }
            }
        }
    }
}
Also used : Filter(org.olat.core.util.filter.Filter) TreeSet(java.util.TreeSet) StringOutput(org.olat.core.gui.render.StringOutput)

Example 17 with Filter

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();
}
Also used : VFSLeaf(org.olat.core.util.vfs.VFSLeaf) OlatDocument(org.olat.search.model.OlatDocument) Filter(org.olat.core.util.filter.Filter) VFSContainer(org.olat.core.util.vfs.VFSContainer) GlossaryItemManager(org.olat.core.commons.modules.glossary.GlossaryItemManager) Date(java.util.Date)

Example 18 with Filter

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>&nbsp;</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 &eacute;crire. Et encore un ou deux.</p></blockquote></div><p>Et une r&eacute;ponse avec citation incorpor&eacute;e</p>";
    String output = filter.filter(text);
    assertTrue("  Et une réponse avec citation incorporée".equals(output));
}
Also used : Filter(org.olat.core.util.filter.Filter) Test(org.junit.Test)

Example 19 with Filter

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;
}
Also used : OlatDocument(org.olat.search.model.OlatDocument) Filter(org.olat.core.util.filter.Filter) Identity(org.olat.core.id.Identity)

Example 20 with Filter

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);
    }
}
Also used : VFSContainerMapper(org.olat.core.util.vfs.VFSContainerMapper) Filter(org.olat.core.util.filter.Filter) VFSContainer(org.olat.core.util.vfs.VFSContainer)

Aggregations

Filter (org.olat.core.util.filter.Filter)32 StringOutput (org.olat.core.gui.render.StringOutput)4 Identity (org.olat.core.id.Identity)4 VFSContainer (org.olat.core.util.vfs.VFSContainer)4 Mattext (org.olat.ims.qti.editor.beecom.objects.Mattext)4 OlatDocument (org.olat.search.model.OlatDocument)4 XStream (com.thoughtworks.xstream.XStream)2 ArrayList (java.util.ArrayList)2 Date (java.util.Date)2 TreeSet (java.util.TreeSet)2 Element (org.dom4j.Element)2 Test (org.junit.Test)2 GlossaryItemManager (org.olat.core.commons.modules.glossary.GlossaryItemManager)2 WindowControl (org.olat.core.gui.control.WindowControl)2 User (org.olat.core.id.User)2 VFSContainerMapper (org.olat.core.util.vfs.VFSContainerMapper)2 VFSLeaf (org.olat.core.util.vfs.VFSLeaf)2 ChoiceQuestion (org.olat.ims.qti.editor.beecom.objects.ChoiceQuestion)2 Control (org.olat.ims.qti.editor.beecom.objects.Control)2 Duration (org.olat.ims.qti.editor.beecom.objects.Duration)2