Можно ли добавить пользовательские действия в версию?
-
16-10-2019 - |
Вопрос
Мне нужно добавить пользовательское действие в версии файла. Оптимально, я хочу это на странице истории версий:
А второе место была бы форма отображения версии (результат нажатия просмотра в предыдущем меню):
Пользователи уже работают с историей версий и хотят легко скопировать некоторые детали из определенной версии. Я хотел бы не заставлять их снова выбирать версию в моем собственном окне.
Решение
Меню построено в JavaScript в файле core.js. Если вам нужно добавить новый пункт меню, вам придется переопределить этот файл ... не круто.
Лучший подход - это Используйте JavaScript, чтобы переопределить функцию что создает меню в Core.js. Вам просто нужно будет ссылаться на ваш файл после файла core.js и быть осторожным с загрузкой DEFE.
О форме отображения версии, шаблон определяется в DefaultTemplates.ascx
с идентификатором DocLibDisplayFormVersionToolBar
.
Я полагаю, вы могли бы переопределить рендеринг по умолчанию самостоятельно.
Другие советы
Я смог добавить пункт меню, как предложил Гилло в комментарии. Вот как это делается, переопределив метод из core.js:
// keep original version
var original_AddVersionMenuItemsCore;
// override the function from Core.js
function Kobi_AddVersionMenuItemsCore(m, ctx) {
// first, add the original menu items:
original_AddVersionMenuItemsCore(m, ctx);
// add my menu item:
var menuOption = CAMOpt(m, "Add Version to My Project",
"javascript:alert('This one');",
"/_layouts/images/mewa_gotoNamedItems.gif");
menuOption.id = "ID_Kobi_AddVersionToProject";
}
function Kobi_AddVersionActionsOnLoad(){
original_AddVersionMenuItemsCore = AddVersionMenuItemsCore;
AddVersionMenuItemsCore = Kobi_AddVersionMenuItemsCore;
}
// run the method at window load event
_spBodyOnLoadFunctionNames.push("Kobi_AddVersionActionsOnLoad");
Результат:
Некоторая помощь пришла от Google и этих сообщений: