#alfresco #alfresco-share
#alfresco #alfresco-поделиться
Вопрос:
Главное меню приложения Alfresco Share содержит несколько пунктов, которые команда проекта для нашего развертывания хочет отключить. В частности, «Мои файлы» и «Общие файлы». Скрытие было бы достаточно хорошим, но если мы сможем отключить их полностью, это было бы лучше всего. Это функции, к которым пользователи не должны иметь никакого доступа. Все их взаимодействия должны осуществляться через сайты.
Поддерживается ли Alfresco (например, «не будет ломаться при обновлении версий») способ сделать это?
Комментарии:
1. о какой версии вы говорите?
2. В настоящее время мы находимся на 4.2e.
Ответ №1:
У вас есть сообщение в блоге, описывающее, как скрыть пункты главного меню по этой ссылке. Позже выяснилось, что этот подход не работает в версиях ниже 4.2.2. это относится и к версии вашего сообщества (4.2e).
Вы можете использовать обходной путь, описанный по этой ссылке. Ниже приведен точный код, который вам нужен. В нижней части share-header.get.js добавьте следующее
var widget, widgetsToRemove = [ "HEADER_SHARED_FILES", "HEADER_MY_FILES" ], idx, max;
for (idx = 0, max = widgetsToRemove.length; idx < max; idx )
{
findAndRemoveIn(model.jsonModel.widgets, null, null, widgetsToRemove[idx]);
}
function findAndRemoveIn(obj, arrContext, arrIdx, id) {
var idx, max, key;
if (obj !== undefined amp;amp; obj !== null) {
if (Object.prototype.toString.apply(obj) === "[object Object]") {
if (obj.hasOwnProperty("id") amp;amp; obj.id === id) {
if (arrContext !== null amp;amp; arrIdx !== null)
{ arrContext.splice(arrIdx, 1); }
else
{ logger .debug("Unexpected match outside of array structure: " jsonUtils.toJSONString(obj)); }
} else {
for (key in obj) {
if (obj.hasOwnProperty(key))
{ findAndRemoveIn(obj[key], null, null, id); }
}
}
} else if (Object.prototype.toString.apply(obj) === "[object Array]") {
for (idx = 0, max = obj.length; idx < max; idx )
{ findAndRemoveIn(obj[idx], obj, idx, id); }
}
}
}
Позже вы сможете написать модуль расширения, когда это заработает.
Другие элементы, такие как HEADER_NAVIGATION_MENU_BAR, HEADER_TITLE_MENU, HEADER_TITLE, можно удалить из меню с помощью widgetUtils.Вспомогательная функция deleteObjectFromArray.
Последний вариант — использовать CSS.
Комментарии:
1. Я использовал это на 4.2f, и это сработало. Вы знаете свои цели. 🙂
2. AFAIK 4.2.2 — корпоративная версия
3. Бьюсь об заклад, это будет работать в версии 4.2e. Однако я не думаю, что у вас должны возникнуть проблемы с использованием 4.2f
4. Хммм, я, должно быть, делаю что-то не так. Сбой Alfresco с сообщением «05200001 не удалось выполнить сценарий ‘classpath*:alfresco/site-webscripts/org/alfresco/share/header/share-header.get.js ‘: 05200000 Ошибка типа: не удается прочитать свойство «виджеты» из null (файл:/C:/Alfresco/tomcat/webapps/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/share/header/share-header.get.js #1917)» ошибка при вставке javascript в share-header.get.js досье.
5. Теперь это работает. Я столкнулся с проблемами, связанными с тем, что servicerun, по-видимому, не работал без сбоев, что означало, что я не всегда видел обновления. Перезагрузка компьютера кажется единственным надежным способом заставить Alfresco полностью перезапуститься. Кроме того, одна из моих предыдущих проблем, по-видимому, заключалась в размещении кода в верхней части файла вместо нижней… Спасибо!