Порядок пунктов меню SPDocumentLibrary с использованием Custom_AddDocLibMenuItems
-
18-09-2019 - |
Вопрос
Я добавляю настраиваемый элемент контекстного меню к документам (а не к папкам) в списке SPDocumentLibrary в SharePoint.Следующий код работает, но всегда добавляет пункт пользовательского меню вверху контекстного меню, чего я не хочу.Я предполагал, что последний параметр в CAMOpt — это порядковый номер, определяющий порядок, но, похоже, это не имеет никакого эффекта.Кто-нибудь знает, можно ли добавить собственный пункт контекстного меню внизу списка?
function Custom_AddDocLibMenuItems(m, ctx) {
var otype = currentItemFSObjType = GetAttributeFromItemTable(itemTable, "OType", "FSObjType");
if (otype != 1) {
var itemId = GetAttributeFromItemTable(itemTable, "ItemId", "Id");
var listId = ctx.listName;
var action = 'Go_To_Page("' + ctx.HttpRoot + '/_layouts/custom/PAGES/mycustompage.aspx?ListId=' + listId + '&ListItemID=' + itemId + ');';
CAMOpt(m, 'Custom Menu Item', action, '/_layouts/custom/IMAGES/action.gif', '', 110);
CAMSep(m);
}
return false;
}
function Go_To_Page(page) {
window.location = page;
}
Решение
Есть ли причина, по которой вы не можете использовать функция настраиваемых действий?Например, используйте код элемента функции, аналогичный приведенному ниже, но измените порядковый номер Элемент CustomAction чтобы найти пункт меню:
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction
Id="DoSomething"
RegistrationType="ContentType"
RegistrationId="0x0101"
Location="EditControlBlock"
Sequence="10001"
ImageUrl="/_layouts/images/action.gif"
Title="Do Something">
<UrlAction Url="~site/_layouts/custom/PAGES/mycustompage.aspx?ListItemID={ItemId}&ListId={ListId}" />
</CustomAction>
</Elements>
Установка типа контента должна гарантировать, что эта функция не будет применяться к папкам.Если по какой-то причине он отображается и отключить его невозможно, вы можете использовать JavaScript/jQuery, чтобы скрыть этот пункт меню из папок.
Другие советы
В XML-элементах вашей функции, в которую вы включаете пользовательский элемент управления, добавьте туда последовательность:
Control Id="AdditionalPageHead"
ControlSrc="~/_ControlTemplates/blah/blah.ascx" Sequence="229"