/**
* Copyright (C) 2005-2016 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* This module simply provides a set of attributes that define topic names for publications
* and subscriptions. This should be mixed into any widget that wishes to use those topics
* to ensure consistency. It also allows the actual values to be managed from a single file.
*
* @module alfresco/documentlibrary/_AlfDocumentListTopicMixin
* @author Dave Draper
*/
define(["dojo/_base/declare",
"alfresco/core/topics"],
function(declare, topics) {
return declare(null, {
/**
* This topic is used to request that the Document List reloads data using its current parameters.
*
* @event reloadDataTopic
* @instance
* @type {string}
* @default
*/
reloadDataTopic: topics.RELOAD_DATA_TOPIC,
/**
* This topic is used to publish changes to the current displayed parent location. It should be used to provide
* all the metdata for rendering the current view of documents.
*
* @event metadataChangeTopic
* @instance
* @type {string}
* @default
*/
metadataChangeTopic: "ALF_CURRENT_NODEREF_CHANGED",
/**
* @event hashChangeTopic
* @instance
* @type {string}
* @default
*/
hashChangeTopic: "ALF_HASH_CHANGED",
/**
* This differs from the "hashChangeTopic" because it describes the "filter" filter (as opposed to a "path" filter)
* rather than just indicating that the current filter has been changed. This is required so that widgets can reflect
* information about the currently selected filter - for example, a breadcrumb trail needs to show information about the
* selected filter.
*
* @event filterSelectionTopic
* @instance
* @type {string}
* @default
*/
filterSelectionTopic: "ALF_DOCLIST_FILTER_SELECTION",
/**
* This is fired when a tag is chosen for a document list.
*
* @instance
* @type {string}
* @default [topics.DOCUMENTLIST_TAG_CHANGED]{@link module:alfresco/core/topics#DOCUMENTLIST_TAG_CHANGED}
*/
docListTagChangedTopic: topics.DOCUMENTLIST_TAG_CHANGED,
/**
* This topic is used to publish changes for the users access rights to the current location, e.g. if they
* no longer have creation rights.
*
* @event userAccessChangeTopic
* @instance
* @type {string}
* @default
*/
userAccessChangeTopic: "ALF_DOCLIST_USER_ACCESS_CHANGED",
/**
* This topic is used to publish the details of documents loaded for the current location.
*
* @event documentsLoadedTopic
* @instance
* @type {string}
* @default
*/
documentsLoadedTopic: "ALF_DOCLIST_DOCUMENTS_LOADED",
/**
* This topic is used to indicate that documents could not be loaded.
*
* @event documentLoadFailedTopic
* @instance
* @type {string}
* @default
*/
documentLoadFailedTopic: "ALF_DOCLIST_DOCUMENTS_LOAD_FAILED",
/**
* This topic is used to publish changes of page within the current location.
*
* @event pageSelectionTopic
* @instance
* @type {string}
* @default
*/
pageSelectionTopic: "ALF_DOCLIST_PAGE_SELECTED",
/**
* This topic is used to publish changes of the number of documents to show for each page.
*
* @event docsPerpageSelectionTopic
* @instance
* @type {string}
* @default
*/
docsPerpageSelectionTopic: "ALF_DOCLIST_DOCS_PER_PAGE_SELECTION",
/**
* This is the topic on which the valid registered views will publish the menu items that can be used to
* select them (the view). A default is provided but can be overridden.
*
* @event selectionMenuItemTopic
* @instance
* @type {string}
* @default
*/
selectionMenuItemTopic: "ALF_DOCLIST_PROVIDE_VIEW_SELECTION_MENU_ITEM",
/**
* @event viewSelectionTopic
* @instance
* @type {string}
* @default
*/
viewSelectionTopic: "ALF_DOCLIST_SELECT_VIEW",
/**
* The name of the group into which to place all view selection menu items.
*
* @event viewSelectionMenuItemGroup
* @instance
* @type {string}
* @default
*/
viewSelectionMenuItemGroup: "DOCUMENT_LIBRARY_VIEW",
/**
* The topic to publish on when a view is selected that provides additional controls
*
* @event additionalViewControlsTopic
* @instance
* @type {string}
* @default
*/
additionalViewControlsTopic: "ALF_DOCLIST_PROVIDE_ADDITIONAL_VIEW_CONTROLS",
/**
* This differs from the "documentSelectedTopic" attribute as it is used to make general selection requests, e.g. "selectAll"
*
* @instance
* @type {string}
* @default [DOCUMENT_SELECTION_UPDATE]{@link module:alfresco/core/topics#DOCUMENT_SELECTION_UPDATE}
* @event
* @property {object[]} selectedItems The selected items
*/
documentSelectionTopic: topics.DOCUMENT_SELECTION_UPDATE,
/**
* This differs from the "documentSelectionTopic" attribute as it should be used for individual documents
*
* @instance
* @type {string}
* @default
* @event
* @property {object} value The item selected
*/
documentSelectedTopic: topics.DOCUMENT_SELECTED,
/**
* Used to indicate the list of currently selected documents has changed and provides the details of those items.
*
* @instance
* @type {string}
* @default
* @event
* @property {object[]} selectedItems The items selected
*/
selectedDocumentsChangeTopic: topics.SELECTED_DOCUMENTS_CHANGED,
/**
* Use to indicate that an individual document has been deselected (e.g. that it should no longer be included in group actions).
*
* @instance
* @type {string}
* @default
* @event
* @property {object} value The item de-selected
*/
documentDeselectedTopic: topics.DOCUMENT_DESELECTED,
/**
* @event sortRequestTopic
* @instance
* @type {string}
* @default [SORT_LIST]{@link module:alfresco/core/topics#SORT_LIST}
*/
sortRequestTopic: topics.SORT_LIST,
/**
* @event
* @instance
* @type {string}
* @default [UPDATE_LIST_SORT_FIELD]{@link module:alfresco/core/topics#UPDATE_LIST_SORT_FIELD}
*/
sortFieldSelectionTopic: topics.UPDATE_LIST_SORT_FIELD,
/**
* @event showFoldersTopic
* @instance
* @type {string}
* @default
*/
showFoldersTopic: "ALF_DOCLIST_SHOW_FOLDERS",
/**
* Used to indicate whether or not to display the current path rendered within the document list.
*
* @event showPathTopic
* @instance
* @type {string}
* @default
*/
showPathTopic: "ALF_DOCLIST_SHOW_PATH",
/**
* Indicates whether or not to display a sidebar to accompany the document list (this may contain additional controls
* such as trees, filters, etc).
*
* @event showSidebarTopic
* @instance
* @type {string}
* @default
*/
showSidebarTopic: "ALF_DOCLIST_SHOW_SIDEBAR",
/**
* Used to request an action on an individual document (as opposed to a group of documents).
*
* @event singleDocumentActionTopic
* @instance
* @type {string}
* @default
*/
singleDocumentActionTopic: "ALF_SINGLE_DOCUMENT_ACTION_REQUEST",
/**
* Used to indicate that a document has been tagged.
*
* @instance
* @type {string}
* @default [topics.DOCUMENT_TAGGED]{@link module:alfresco/core/topics#DOCUMENT_TAGGED}
* @listens module:alfresco/core/topics#DOCUMENT_TAGGED
* @event
*/
documentTaggedTopic: topics.DOCUMENT_TAGGED,
/**
* @event syncLocationTopic
* @instance
* @type {string}
* @default
*/
syncLocationTopic: "ALF_SYNC_CURRENT_LOCATION",
/**
* @event unsyncLocationTopic
* @instance
* @type {string}
* @default
*/
unsyncLocationTopic: "ALF_UNSYNC_CURRENT_LOCATION",
/**
* Used by infinite scroll to let other widgets know that the bottom of the page has been reached.
*
* @event scrollNearBottom
* @instance
* @type {string}
* @default [topics.SCROLL_NEAR_BOTTOM]{@link module:alfresco/core/topics#SCROLL_NEAR_BOTTOM}
*/
scrollNearBottom: topics.SCROLL_NEAR_BOTTOM,
/**
* Used to let infinite scroll know we're finished and it can trigger again.
*
* @event scrollReturn
* @instance
* @type {string}
* @default
*/
scrollReturn: "ALF_SCROLL_RETURN",
/**
* Indicates that a document request has started. Usually used in conjunction with requestFinishedTopic.
* e.g. by code to prevent duplicate submission of requests.
*
* @event requestInProgressTopic
* @instance
* @type {string}
* @default
*/
requestInProgressTopic: "ALF_DOCLIST_REQUEST_IN_PROGRESS",
/**
* Indicates that a document request finished. Usually used in conjunction with requestInProgressTopic.
* e.g. by code to prevent duplicate submission of requests.
*
* @event requestFinishedTopic
* @instance
* @type {string}
* @default [topics.REQUEST_FINISHED_TOPIC]{@link module:alfresco/core/topics#REQUEST_FINISHED_TOPIC}
*/
requestFinishedTopic: topics.REQUEST_FINISHED_TOPIC,
/**
* This topic should be published to indicate that a path has been changed. It is used by both the
* [AlfDocumentList]{@link module:alfresco/documentlibrary/AlfDocumentList} and the
* [AlfBreadcrumbTrail]{@link module:alfresco/documentlibrary/AlfBreadcrumbTrail}, but the default
* value can be overridden through configuration if required.
*
* @instance
* @type {string}
* @default [topics.PATH_CHANGED]{@link module:alfresco/core/topics#PATH_CHANGED}
*/
pathChangeTopic: topics.PATH_CHANGED
});
});