Index Application
![]() | An Index of all pages, attachments, orphans and deleted pages and attachments found in the wiki. |
Type | XAR |
Category | |
Developed by | |
Rating | |
License | GNU Lesser General Public License 2.1 |
Bundled With | XWiki Standard |
Compatibility | Since 3.5M1 |
Table of contents
Description
The Index Application offers several features
- Page Index for the whole wiki. Displays items found in the wiki: pages, attachments, orphans, deleted pages, deleted attachments
- A macro to display all pages in a live table, based on some parameters
- A macro to display all spaces based on some parameters
- Page Index for a space ( ).
Accessing the Indexes
The Page Index is available in the drawer menu (that you can active by clicking on the top right icon):
Features
Table View of all Pages
Lists all pages found in the wiki in a filterable table view and allows performing actions on them: view, edit, delete, change access rights:
Tree View of all Pages
Lists all pages found in the wiki in a tree view:
You can search for specific pages and attachments. The tree will expand to show the corresponding node (v6.4.1+).
All Attachments
Lists all attachments found in the wiki using a live table. You can filter and sort the attachments by mime type, file name, location, file size, last modification date and author.
All Deleted Pages
Lists all deleted pages found in the wiki and allows restoring them from the trash or deleting them forever from the trash:
To restore a single deleted page, find the page from the list and click the "restore page" icon.
Permanently delete all pages
Starting with XWiki 10.11RC1 it is now possible to permanently delete all pages that have been already deleted, in order to clean the recycle bin.
Restoring a Page Translation
in order to be able to restore a deleted page translation, the main page (default translation) needs to be first restored or recreated. To do that you have 2 options:
- browse through the deleted pages, find and restore a default translation of the page OR
- click on the disabled restore button of the translation and you will be redirected to the location of the default page where you can re-create it.
After clicking on the button to restore a translation, if the wiki is multilingual, you will be redirected to the restored page in the language of the translation you have just restored.
Restoring an Entire Batch
Deleted Batch ID column allows you to filter or sort pages that were deleted together. Clicking on a page's batch ID will take you to the page's restore screen that will allow you to either restore just that page or the entire batch of pages that were deleted together with it.
theKeep in mind that what you are seeing is the current state of the deleted batch. Some pages might have been restored in the meantime and others may have been deleted from the recycle bin. You will only see the deleted pages from that batch that are still inside the recycle bin.
The process can be observed in the following screens:
The log is displayed only for advanced users.
If a page from the batch was recreated in the meantime (i.e. not restored, but a new page was created in the location of a deleted one) then the restore operation will report as failed, even if all the other pages may have been successfully restored. An advanced user can inspect the log to see which page from the batch failed to restore.
Note: The batch ID is also displayed and accessible when viewing a deleted page and seeing the recycle bin entries for that page. On that screen, clicking on the batch ID will take you through the above described process.
All Deleted Attachments
Lists all deleted attachments found in the wiki and allows restoring them from the trash or deleting them forever from the trash:
All Orphaned Pages
Lists all orphaned pages found in the wiki (i.e. pages that have no parent set).
Pages Macro
See the documentation page for the Pages Macro.
Spaces Macro
See the documentation page for the deprecated Spaces macro.
Space-level Index
The Space Index is completely similar to the Page Index but only lists information for the current space. For example for the Main space:
Asynchronous Document Static Analysis
14.1+
Asynchronous analysis of document are possible with the TaskManager component. The queued tasks are persisted. In other word, they are not lost when the server is stopped, and will be queued again when the server is restarted.
TaskManager Roles
@Unstable
public interface TaskConsumer
{
/**
* Consume a task.
*
* @param documentReference of the document to analyze
* @param version the version of the document to analyze
* @throws IndexException in case of error during the execution of the task
*/
void consume(DocumentReference documentReference, String version) throws IndexException;
}
@Unstable
public interface TaskManager
{
/**
* Add a task to the queue.
*
* @param wikiId the wiki containing the document
* @param docId the document id
* @param version the document version
* @param type the type of task to add
* @return a completable future for this task
*/
CompletableFuture<TaskData> addTask(String wikiId, long docId, String version, String type);
/**
* Replace all the tasks of the queue with the same document and task type with the new task.
*
* @param wikiId the wiki containing the document
* @param docId the document id
* @param version the document version
* @param type the type of task to add
* @return a completable future for this task
*/
CompletableFuture<TaskData> replaceTask(String wikiId, long docId, String version, String type);
/**
* @return the number of tasks in the queue
*/
long getQueueSize();
/**
* @param type the type of task to count
* @return the number of tasks of a given type in the queue
*/
long getQueueSize(String type);
}
Adding a task to the queue
The example below is drawn for the Mentions Application implementation. The method addTask is called on TaskManager is called with the following parameters:
- the reference of the wiki in which the document to analyze is located
- the unique id of the document to analyze
- the version of the document to analyze (in our example, the latest version of the document)
- the type of the task to execute on the document (in our example, the "mention" task)
@Singleton
@Named("MentionsCreatedEventListener")
public class MentionsCreatedEventListener extends AbstractEventListener
{
private static final List<DocumentCreatedEvent> EVENTS = singletonList(new DocumentCreatedEvent());
@Inject
private Logger logger;
@Inject
private TaskManager taskManager;
@Inject
private RemoteObservationManagerContext remoteObservationManagerContext;
/**
* Default constructor.
*/
public MentionsCreatedEventListener()
{
super("MentionsCreatedEventListener", EVENTS);
}
@Override
public void onEvent(Event event, Object source, Object data)
{
if (!(event instanceof DocumentCreatedEvent) || this.remoteObservationManagerContext.isRemoteState()) {
return;
}
this.logger.debug("Event [{}] received from [{}] with data [{}].", DocumentCreatedEvent.class.getName(), source,
data);
XWikiDocument doc = (XWikiDocument) source;
this.taskManager.addTask(doc.getDocumentReference().getWikiReference().getName(), doc.getId(), doc.getVersion(),
MENTION_TASK_ID);
}
}
Implementing a task consumer
Implementing a task consumer is done by implementing the TaskConsumer role and given a unique hint to the new component. This hint must match the type of the queued task.
For each queued task, the component corresponding to the type of the task if resolved and called.
@Singleton
@Named("mention")
public class DefaultMentionsDataConsumer implements TaskConsumer
{
@Override
public void consume(DocumentReference documentReference, String version) throws IndexException
{
// [proceed to the analysis of the document in the given version]
}
}
JMX Monitoring
An object named org.xwiki:name=index is declared and provides two attributes:
- getQueueSize: Returns the total number of queued tasks
- getQueueSizePerType: Returns the total number of tasks grouped by their types
Prerequisites & Installation Instructions
We recommend using the Extension Manager to install this extension (Make sure that the text "Installable with the Extension Manager" is displayed at the top right location on this page to know if this extension can be installed with the Extension Manager). Note that installing Extensions when being offline is currently not supported and you'd need to use some complex manual method.
You can also use the following manual method, which is useful if this extension cannot be installed with the Extension Manager or if you're using an old version of XWiki that doesn't have the Extension Manager:
- Log in the wiki with a user having Administration rights
- Go to the Administration page and select the Import category
- Follow the on-screen instructions to upload the downloaded XAR
- Click on the uploaded XAR and follow the instructions
- You'll also need to install all dependent Extensions that are not already installed in your wiki
Dependencies
Dependencies for this extension (org.xwiki.platform:xwiki-platform-index-ui 14.0):
- org.xwiki.platform:xwiki-platform-livetable-ui 14.0
- org.xwiki.platform:xwiki-platform-index-tree-macro 14.0
- org.xwiki.platform:xwiki-platform-rendering-macro-velocity 14.0
- org.xwiki.rendering:xwiki-rendering-macro-html 14.0
- org.xwiki.platform:xwiki-platform-rendering-macro-include 14.0
- org.xwiki.platform:xwiki-platform-rendering-wikimacro-store 14.0
- org.xwiki.platform:xwiki-platform-livedata-macro 14.0
- org.xwiki.platform:xwiki-platform-livedata-livetable 14.0