Liferay 6.0.5 - скрыть IGFolders от владельца в частном / публичном макете его частного сообщества - PullRequest
1 голос
/ 05 августа 2011

Нам нужно создавать скрытые «системные» подпапки в каждом IGFolder, который создает обычный пользователь. Портлет галереи изображений находится в основном в макетах частного сообщества всех обычных пользователей.Портлеты и их конфигурация предварительно созданы, поэтому обычные пользователи не могут их изменить (layout.user. [Public | private] .layouts.modifiable = false).

Почему мы хотим это сделать В этих системных папках мы будем хранить автоматически сгенерированные версии загруженных изображений.Это потому, что мы также импортируем WebContent / JournalArticle, представляющий галереи изображений, которые предоставляют различные размеры самих изображений.В конце мы хотим отобразить содержимое IGFolders и JournalArticle одинаково без особого кода.

Что я уже пробовал

  • Я пытался сделать это с помощью разрешений (resource-actions / imgallery.xml => owner-defaults), но на своих страницах сообщества пользователь также CommunityAdmin, который дает ему право делать и видеть почти все, что он хочет.(PermissionCheckerBagImpl.isCommunityAdminImpl)

  • Я думал о создании макетов, которые не принадлежат пользователю / его частному сообществу, но проверял это на общедоступной странице другого сообщества, к которому принадлежат пользователи.чтобы не сработало.Я не могу заставить систему отображать IGFolders текущего пользователя вообще, вместо этого отображаются папки сообщества.

  • Использование другого пользователя и группы для подпапок неработать также, если groupId не совпадает с идентификатором родительской папки, для идентификатора родительской папки установлено значение 0, поэтому они вообще являются более длинными подпапками (IGFolderLocalServiceImpl.getParentFolderId).

Что может сработать, и я, вероятно, просто не понимаю

  • смена владельца портлета галереи изображений / макета

  • возиться с разрешением так, как я не думал о

  • добавление еще одного слоя групп / сообществ

  • размещение системных папокгде-то еще (что, конечно, приводит
    к большему количеству кода для поддержания отношений между ними и их
    родительской папкой)

Конечно, я мог бы использовать расширения для пометки системных папок- который у меня естьделать в любом случае - и скрывать их после поиска в представлении, но тогда мне также придется поиграть с количеством папок, чего я бы не хотел, так как я чувствую, что это не способ делать вещи.

Любые идеи приветствуются, пожалуйста, не стесняйтесь разрабатывать, я совсем новичок в Liferay

1 Ответ

1 голос
/ 18 ноября 2011

Вы можете создать подключаемый модуль и переопределить в нем (возможно, этот файл)

/portal/portal-web/docroot/html/portlet/image_gallery/view_folders.jsp

Там вы можете добавить код, чтобы игнорировать вашу "системную" папку, если она существует.Возможно, все «системные» папки могут иметь одно и то же имя (например, «_SYSTEM_FOLDER_»), с которым вы можете проверить.

Обратите внимание, что это просто скрывает папки, поэтому, если кто-то знает folderId и имеет разрешение на просмотр / редактирование егоони могли бы создать URL для доступа к нему.

...