Я перефразирую наш последний блог. метод, который мы использовали для этого.
Наш вариант использования заключался в том, что у нас были существующие действия в представлении библиотеки документов, которые мы не хотели воссоздавать, со стандартной конфигурацией xml.
Первым шагом является создание модуля расширения общего доступа для добавления контроллера Javascript в web-extensions/site-data/extensions/example.xml
:
<extension>
<modules>
<module>
<id>Example Service</id>
<version>1.0</version>
<auto-deploy>true</auto-deploy>
<customizations>
<customization>
<targetPackageRoot>org.alfresco.share.pages.faceted-search</targetPackageRoot>
<sourcePackageRoot>com.parashift.example</sourcePackageRoot>
</customization>
</customizations>
</module>
</modules>
</extension>
Это загрузит дополнительный javascript, что позволит вам настроить конфигурацию виджета.
Создайте файл в web-extension/site-webscripts/com/parashift/example/faceted-search.get.js
(или любое другое имя пакета, которое вы использовали в sourcePackageRoot
), добавьте файл с именем faceted-search.get.js
со следующим содержимым:
var searchResultPage = widgetUtils.findObject(model.jsonModel.widgets, "id", "FCTSRCH_SEARCH_RESULT");
if(searchResultPage != null) {
searchResultPage.config = {
enableContextMenu : false,
mergeActions : true,
additionalDocumentAndFolderActions : ["example-action"]
}
}
model.jsonModel.widgets.push({
id: "EXAMPLE_LISTENER",
name: "parashift/action/example"
});
Это будет:
- Добавьте
example-action
в список действий в результатах поиска. Это должно быть уже настроено в каком-то файле share-config.xml.
- Добавьте новый виджет прослушивателя, который будет прослушиваться при нажатии кнопки действия.
Добавьте файл для вашего виджета слушателя: META-INF/parashift/action/example.js
define(["dojo/_base/declare",
"dijit/_WidgetBase",
"alfresco/core/Core"
],
function(declare, _Widget, Core) {
return declare([_Widget, Core], {
postCreate: function () {
this.alfSubscribe("ALF_SINGLE_DOCUMENT_ACTION_REQUEST", lang.hitch(this, this._onPayloadReceive));
},
_onPayloadReceive: function (payload) {
if(payload.action.id == "example-action") {
this.alfLog("log", "Received action, handling accordingly");
.......
}
}
});
});
Этот код будет прослушивать ALF_SINGLE_DOCUMENT_ACTION_REQUEST
и выполнять функцию _onPayloadReceive
. В этой функции мы фильтруем example-action
и выполняем любой пользовательский код.
Переменная payload
будет включать объекты document
и action
. Используя журнал отладки, вы можете увидеть, какова их форма.
Это примерно эквивалентно старому методу YUI:
YAHOO.Bubbling.fire("registerAction", {
actionName: "onExampleAction",
fn: function(file) {
console.log("Received action, handling accordingly");
....
}
});
person
Cetra
schedule
28.06.2016