zwischenstand
This commit is contained in:
@@ -1,183 +0,0 @@
|
||||
{namespace meilisearch=WapplerSystems\Meilisearch\ViewHelpers}
|
||||
{namespace core=TYPO3\CMS\Core\ViewHelpers}
|
||||
|
||||
<f:layout name="Backend/WithPageTree"/>
|
||||
|
||||
<f:section name="Main">
|
||||
<div role="tabpanel">
|
||||
<ul class="nav nav-tabs t3js-tabs" role="tablist" id="tabs-tab" data-store-last-tab="1">
|
||||
<li role="presentation" class="t3js-tabmenu-item active">
|
||||
<a href="#synonyms-tab" title="" aria-controls="synonyms-tab" role="tab" data-toggle="tab">
|
||||
Synonyms
|
||||
</a>
|
||||
</li>
|
||||
<li role="presentation" class="t3js-tabmenu-item ">
|
||||
<a href="#stopwords-tab" title="" aria-controls="stopwords-tab" role="tab" data-toggle="tab">
|
||||
Stop Words
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane active" id="synonyms-tab">
|
||||
<div class="panel panel-tab">
|
||||
<div class="panel-body">
|
||||
|
||||
<f:render section="Synonyms" arguments="{_all}"/>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane" id="stopwords-tab">
|
||||
<div class="panel panel-tab">
|
||||
<div class="panel-body">
|
||||
|
||||
<f:render section="StopWords" arguments="{_all}"/>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</f:section>
|
||||
|
||||
<f:section name="Synonyms">
|
||||
By defining synonyms you can allow to find documents by words that do not occur in the documents but have the same meaning:<br/>
|
||||
<b>Note:</b> The word that you want replace with a synonym needs to appear on <b>both</b> sides when you want to find it with the term itself later!<br/>
|
||||
Example:<br />
|
||||
<ul>
|
||||
<li><b>"smartphone" => "smartphone, cellphone, mobile, mobilephone"</b>
|
||||
<ul>
|
||||
<li>will match <b>"smartphone, cellphone, mobile, mobilephone"</b></li>
|
||||
<li>And when "smartphone" were missing on the right side, then you could not find the documents with "smartphone" anymore!</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<b>Note: The changes do not apply on the fly, you need to reindex all the pages whith occurrences of changed synonyms.</b>
|
||||
|
||||
<f:if condition="{synonyms}">
|
||||
<f:then>
|
||||
<h3>Manage Synonyms</h3>
|
||||
<table class="table table-condensed table-hover table-striped">
|
||||
<thead>
|
||||
<tr class="t3-row-header">
|
||||
<th>Base Word</th><th>Synonyms</th>
|
||||
<th>
|
||||
<f:link.action action="deleteAllSynonyms" title="Delete all synonyms" class="btn btn-default btn-sm">
|
||||
<core:icon identifier="actions-edit-delete"/>
|
||||
</f:link.action>
|
||||
<f:link.action action="exportSynonyms" title="Export all synonyms" class="btn btn-default btn-sm">
|
||||
<core:icon identifier="actions-document-export-csv"/>
|
||||
</f:link.action>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<f:for each="{synonyms}" key="baseWord" as="synonymList">
|
||||
<tr>
|
||||
<td>{baseWord}</td>
|
||||
<td>{synonymList}</td>
|
||||
<td>
|
||||
<f:link.action action="deleteSynonyms" arguments="{baseWord:'{baseWord}'}" title="Remove Synonym Mapping"><core:icon identifier="actions-edit-delete"/></f:link.action>
|
||||
</td>
|
||||
</tr>
|
||||
</f:for>
|
||||
</tbody>
|
||||
</table>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<f:be.infobox state="-1">
|
||||
No synonyms configured yet.
|
||||
</f:be.infobox>
|
||||
</f:else>
|
||||
</f:if>
|
||||
|
||||
<h3>Add Synonyms (lowercase)</h3>
|
||||
<div class="section">
|
||||
<f:form action="addSynonyms" id="add-synonyms">
|
||||
<div class="form-group">
|
||||
<label for="baseWord">Base Word</label>
|
||||
<f:form.textfield id="baseWord" name="baseWord" class="form-control" />
|
||||
<span class="example">f.e. iphone</span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="synonyms">Synonyms</label>
|
||||
<f:form.textfield id="synonyms" name="synonyms" class="form-control" />
|
||||
<span class="example">comma-separated; f.e. smartphone, cellphone</span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<f:form.checkbox id="overrideExistingSingle" name="overrideExisting" value="1" />
|
||||
<label for="overrideExistingSingle"> Override, if synonym already exists</label>
|
||||
</div>
|
||||
<div class="submit">
|
||||
<f:form.submit value="Add Synonyms" class="btn btn-sm btn-default"/>
|
||||
</div>
|
||||
</f:form>
|
||||
</div>
|
||||
<h3>Upload Synonym List</h3>
|
||||
<div class="section">
|
||||
<f:form action="importSynonymList" id="upload-synonyms" method="post" enctype="multipart/form-data">
|
||||
<div class="form-group">
|
||||
<f:form.upload id="synonymFileUpload" name="synonymFileUpload" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<f:form.checkbox id="overrideExisting" name="overrideExisting" value="1" />
|
||||
<label for="overrideExisting"> Override synonym, if synonym already exists</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<f:form.checkbox id="deleteSynonymsBefore" name="deleteSynonymsBefore" value="1" />
|
||||
<label for="deleteSynonymsBefore"> Replace complete synonym list</label>
|
||||
</div>
|
||||
<div class="submit">
|
||||
<f:form.submit value="Upload file" class="btn btn-sm btn-default"/>
|
||||
</div>
|
||||
</f:form>
|
||||
</div>
|
||||
</f:section>
|
||||
|
||||
<f:section name="StopWords">
|
||||
<p> Stop words allow you to specify a list of words that will be discarded during indexing.<br/>
|
||||
Usually they are very small and very common words (such as "the" and "and") that often have <br/>
|
||||
little bearing on whether a document is a good match or not.<br/>
|
||||
The format is one word per line.</p>
|
||||
|
||||
<h3>Stop Word List (one per line, lowercase)</h3>
|
||||
<div class="section section-with-header">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<f:if condition="{stopWordsCount} == 0">
|
||||
<f:be.infobox state="-1">
|
||||
The stop word list is empty.
|
||||
</f:be.infobox>
|
||||
</f:if>
|
||||
|
||||
<f:form action="saveStopWords" id="edit-stopwords">
|
||||
<f:form.textarea name="stopWords" rows="20" cols="50" style="width: auto;" value="{stopWords}"/>
|
||||
<div class="submit">
|
||||
<f:form.submit value="Save Stop Word List" class="btn btn-sm btn-default"/>
|
||||
<f:if condition="{stopWordsCount} > 0">
|
||||
<f:link.action action="exportStopWords" title="Export StopWords" class="btn btn-default btn-sm">
|
||||
<core:icon identifier="actions-document-export-csv"/>
|
||||
</f:link.action>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3>Upload StopWords List</h3>
|
||||
<div class="section section-with-header">
|
||||
<f:form action="importStopWordList" id="upload-stopwords" method="post" enctype="multipart/form-data">
|
||||
<div class="form-group">
|
||||
<f:form.upload id="stopwordsFileUpload" name="stopwordsFileUpload" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<f:form.checkbox id="replaceStopwords" name="replaceStopwords" value="1" checked="1"/>
|
||||
<label for="replaceStopwords"> Override complete list</label>
|
||||
</div>
|
||||
<div class="submit">
|
||||
<f:form.submit value="Upload file" class="btn btn-sm btn-default"/>
|
||||
</div>
|
||||
</f:form>
|
||||
</div>
|
||||
</f:section>
|
@@ -2,153 +2,155 @@
|
||||
<f:layout name="Backend/WithPageTree"/>
|
||||
|
||||
<f:section name="Main">
|
||||
<f:be.pageRenderer includeCssFiles="{0: '{f:uri.resource(path:\'StyleSheets/Backend/IndexQueueModule.css\')}'}" includeRequireJsModules="{0:'TYPO3/CMS/Meilisearch/FormModal'}"/>
|
||||
<f:be.pageRenderer includeCssFiles="{0: '{f:uri.resource(path:\'StyleSheets/Backend/IndexQueueModule.css\')}'}" includeRequireJsModules="{0:'TYPO3/CMS/Meilisearch/FormModal'}"/>
|
||||
|
||||
<h1>Index Queue</h1>
|
||||
<p class="lead"><f:translate key="meilisearch.backend.index_queue_module.description" /></p>
|
||||
<h1>Index Queue</h1>
|
||||
<p class="lead">
|
||||
<f:translate key="meilisearch.backend.index_queue_module.description"/>
|
||||
</p>
|
||||
|
||||
<hr class="section-divider" />
|
||||
<hr class="section-divider"/>
|
||||
|
||||
<f:if condition="{indexqueue_statistics.totalCount} > 0">
|
||||
<div class="row section-with-header">
|
||||
<div class="col-md-12">
|
||||
<h2>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.header_status"/>
|
||||
</h2>
|
||||
<f:if condition="{indexqueue_statistics.totalCount} > 0">
|
||||
<div class="row section-with-header">
|
||||
<div class="col-md-12">
|
||||
<h2>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.header_status"/>
|
||||
</h2>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="progress">
|
||||
<f:if condition="{indexqueue_statistics.successCount} > 0">
|
||||
<div class="progress-bar progress-bar-success"
|
||||
style="width: {indexqueue_statistics.successPercentage}%"
|
||||
title="{f:translate(key:'meilisearch.backend.index_queue_module.status.indexed')}: {indexqueue_statistics.successCount}/{indexqueue_statistics.totalCount} ({indexqueue_statistics.successPercentage}%)">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="progress">
|
||||
<f:if condition="{indexqueue_statistics.successCount} > 0">
|
||||
<div class="progress-bar progress-bar-success"
|
||||
style="width: {indexqueue_statistics.successPercentage}%"
|
||||
title="{f:translate(key:'meilisearch.backend.index_queue_module.status.indexed')}: {indexqueue_statistics.successCount}/{indexqueue_statistics.totalCount} ({indexqueue_statistics.successPercentage}%)">
|
||||
|
||||
<f:translate key="meilisearch.backend.index_queue_module.status.indexed"/>
|
||||
</div>
|
||||
</f:if>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.status.indexed"/>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{indexqueue_statistics.pendingCount} > 0">
|
||||
<div class="progress-bar progress-bar-warning"
|
||||
style="width: {indexqueue_statistics.pendingPercentage}%"
|
||||
title="{f:translate(key:'meilisearch.backend.index_queue_module.status.pending')}: {indexqueue_statistics.pendingCount}/{indexqueue_statistics.totalCount} ({indexqueue_statistics.pendingPercentage}%)">
|
||||
<f:if condition="{indexqueue_statistics.pendingCount} > 0">
|
||||
<div class="progress-bar progress-bar-warning"
|
||||
style="width: {indexqueue_statistics.pendingPercentage}%"
|
||||
title="{f:translate(key:'meilisearch.backend.index_queue_module.status.pending')}: {indexqueue_statistics.pendingCount}/{indexqueue_statistics.totalCount} ({indexqueue_statistics.pendingPercentage}%)">
|
||||
|
||||
<f:translate key="meilisearch.backend.index_queue_module.status.pending"/>
|
||||
</div>
|
||||
</f:if>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.status.pending"/>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{indexqueue_statistics.failedCount} > 0">
|
||||
<div class="progress-bar progress-bar-danger"
|
||||
style="width: {indexqueue_statistics.failedPercentage}%"
|
||||
title="{f:translate(key:'meilisearch.backend.index_queue_module.status.errors')}: {indexqueue_statistics.failedCount}/{indexqueue_statistics.totalCount} ({indexqueue_statistics.failedPercentage}%)">
|
||||
<f:if condition="{indexqueue_statistics.failedCount} > 0">
|
||||
<div class="progress-bar progress-bar-danger"
|
||||
style="width: {indexqueue_statistics.failedPercentage}%"
|
||||
title="{f:translate(key:'meilisearch.backend.index_queue_module.status.errors')}: {indexqueue_statistics.failedCount}/{indexqueue_statistics.totalCount} ({indexqueue_statistics.failedPercentage}%)">
|
||||
|
||||
<f:translate key="meilisearch.backend.index_queue_module.status.errors"/>
|
||||
</div>
|
||||
</f:if>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.status.errors"/>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
</div>
|
||||
<f:form action="doIndexingRun" method="POST">
|
||||
<f:form.submit class="btn btn-sm btn-default"
|
||||
value="{f:translate(key:'meilisearch.backend.index_queue_module.index_now')}"/>
|
||||
</f:form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<f:form action="doIndexingRun" method="POST">
|
||||
<f:form.submit class="btn btn-sm btn-default"
|
||||
value="{f:translate(key:'meilisearch.backend.index_queue_module.index_now')}"/>
|
||||
</f:form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
<f:if condition="{indexqueue_errors}">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.errors.headline"/>
|
||||
</h2>
|
||||
<hr/>
|
||||
<f:if condition="{indexqueue_errors}">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.errors.headline"/>
|
||||
</h2>
|
||||
|
||||
<table class="table table-condensed table-hover table-striped">
|
||||
<tr>
|
||||
<th>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.errors.id"/>
|
||||
</th>
|
||||
<th>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.errors.item_type"/>
|
||||
</th>
|
||||
<th>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.errors.item_uid"/>
|
||||
</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<table class="table table-condensed table-hover table-striped">
|
||||
<tr>
|
||||
<th>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.errors.id"/>
|
||||
</th>
|
||||
<th>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.errors.item_type"/>
|
||||
</th>
|
||||
<th>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.errors.item_uid"/>
|
||||
</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
|
||||
<f:for each="{indexqueue_errors}" as="item">
|
||||
<tr>
|
||||
<td>{item.uid}</td>
|
||||
<td>{item.item_type}</td>
|
||||
<td>{item.item_uid}</td>
|
||||
<td>
|
||||
<f:link.action action="showError" arguments="{indexQueueItemId: item.uid}">
|
||||
<f:translate key="meilisearch.backend.index_queue_module.errors.show_button"/>
|
||||
</f:link.action>
|
||||
</td>
|
||||
</tr>
|
||||
</f:for>
|
||||
</table>
|
||||
<f:for each="{indexqueue_errors}" as="item">
|
||||
<tr>
|
||||
<td>{item.uid}</td>
|
||||
<td>{item.item_type}</td>
|
||||
<td>{item.item_uid}</td>
|
||||
<td>
|
||||
<f:link.action action="showError" arguments="{indexQueueItemId: item.uid}">
|
||||
<f:translate key="meilisearch.backend.index_queue_module.errors.show_button"/>
|
||||
</f:link.action>
|
||||
</td>
|
||||
</tr>
|
||||
</f:for>
|
||||
</table>
|
||||
|
||||
<f:form action="resetLogErrors" method="POST">
|
||||
<f:form.submit class="btn btn-sm btn-default"
|
||||
value="{f:translate(key:'meilisearch.backend.index_queue_module.errors.reset_button')}"/>
|
||||
</f:form>
|
||||
<f:form action="resetLogErrors" method="POST">
|
||||
<f:form.submit class="btn btn-sm btn-default"
|
||||
value="{f:translate(key:'meilisearch.backend.index_queue_module.errors.reset_button')}"/>
|
||||
</f:form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<hr class="section-divider" />
|
||||
<hr class="section-divider"/>
|
||||
|
||||
<div class="row section-with-header">
|
||||
<div class="col-md-12">
|
||||
<h2>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.header_init" />
|
||||
</h2>
|
||||
<div class="row section-with-header">
|
||||
<div class="col-md-12">
|
||||
<h2>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.header_init"/>
|
||||
</h2>
|
||||
|
||||
<f:form name="editform" action="initializeIndexQueue">
|
||||
<f:form name="editform" action="initializeIndexQueue">
|
||||
|
||||
<div class="t3js-formengine-palette-field index-queue-init-form">
|
||||
<f:format.raw>{indexQueueInitializationSelector}</f:format.raw>
|
||||
</div>
|
||||
<f:form.submit name="initializeIndexQueue" value="Queue Selected Content for Indexing" class="btn btn-sm btn-default"/>
|
||||
<meilisearch:backend.button.helpButton title="Index Queue Initialization" description="{f:translate(key:'meilisearch.backend.index_queue_module.help')}" />
|
||||
</f:form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="t3js-formengine-palette-field index-queue-init-form">
|
||||
<f:format.raw>{indexQueueInitializationSelector}</f:format.raw>
|
||||
</div>
|
||||
<f:form.submit name="initializeIndexQueue" value="Queue Selected Content for Indexing" class="btn btn-sm btn-default"/>
|
||||
<meilisearch:backend.button.helpButton title="Index Queue Initialization" description="{f:translate(key:'meilisearch.backend.index_queue_module.help')}"/>
|
||||
</f:form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<f:comment><!-- Show this button only if module indexadministration is allowed for be user/group --></f:comment>
|
||||
<meilisearch:backend.security.ifHasAccessToModule extension="Meilisearch" main="searchbackend" sub="indexadministration">
|
||||
<f:then>
|
||||
<hr class="section-divider" />
|
||||
<f:comment><!-- Show this button only if module indexadministration is allowed for be user/group --></f:comment>
|
||||
<meilisearch:backend.security.ifHasAccessToModule extension="Meilisearch" main="searchbackend" sub="indexadministration">
|
||||
<f:then>
|
||||
<hr class="section-divider"/>
|
||||
|
||||
<div class="row section-with-header">
|
||||
<div class="col-md-3">
|
||||
<div class="row section-with-header">
|
||||
<div class="col-md-3">
|
||||
|
||||
<f:form addQueryString="1"
|
||||
additionalParams="{route: '/searchbackend/MeilisearchIndexadministration/', tx_meilisearch_searchbackend_meilisearchindexadministration:{controller: 'Backend\\Search\\IndexAdministrationModule', action: 'clearIndexQueue', id: '{pageUID}', fromQueue: 'true'}}">
|
||||
<f:form.submit class="btn btn-sm btn-default btn-danger t3js-modal-formsubmit-trigger"
|
||||
data="{title: 'Please confirm', content: 'Are you sure you want to clear the Index Queue?', severity: 'warning'}"
|
||||
value="{f:translate(key:'meilisearch.backend.index_queue_module.button.clear_index_queue')}"/>
|
||||
</f:form>
|
||||
<f:form addQueryString="1"
|
||||
additionalParams="{route: '/searchbackend/MeilisearchIndexadministration/', tx_meilisearch_searchbackend_meilisearchindexadministration:{controller: 'Backend\\Search\\IndexAdministrationModule', action: 'clearIndexQueue', id: '{pageUID}', fromQueue: 'true'}}">
|
||||
<f:form.submit class="btn btn-sm btn-default btn-danger t3js-modal-formsubmit-trigger"
|
||||
data="{title: 'Please confirm', content: 'Are you sure you want to clear the Index Queue?', severity: 'warning'}"
|
||||
value="{f:translate(key:'meilisearch.backend.index_queue_module.button.clear_index_queue')}"/>
|
||||
</f:form>
|
||||
|
||||
</div>
|
||||
<div class="col-md-9 action-description">
|
||||
<h3>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.button.clear_index_queue"/>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="col-md-9 action-description">
|
||||
<h3>
|
||||
<f:translate key="meilisearch.backend.index_queue_module.button.clear_index_queue"/>
|
||||
</h3>
|
||||
|
||||
<p>
|
||||
This will empty the Index Queue. It will take care of only deleting
|
||||
the currently selected site's Index Queue entries.
|
||||
You will have to re-initialize the Index Queue afterwards.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</f:then>
|
||||
</meilisearch:backend.security.ifHasAccessToModule>
|
||||
<p>
|
||||
This will empty the Index Queue. It will take care of only deleting
|
||||
the currently selected site's Index Queue entries.
|
||||
You will have to re-initialize the Index Queue afterwards.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</f:then>
|
||||
</meilisearch:backend.security.ifHasAccessToModule>
|
||||
</f:section>
|
||||
|
@@ -83,17 +83,6 @@
|
||||
</f:be.infobox>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{invalidPaths}">
|
||||
<f:be.infobox title="Following paths are not valid:" state="1">
|
||||
<ul>
|
||||
<f:for each="{invalidPaths}" as="invalidPath">
|
||||
<li>{invalidPath}</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
<p>Path should not contain the characters "*, ?, <, >, |, :, or #"!</p>
|
||||
</f:be.infobox>
|
||||
</f:if>
|
||||
|
||||
<hr class="double" />
|
||||
Used domain: {site.domain}
|
||||
|
||||
|
Reference in New Issue
Block a user