Нам нужно создать скрытые "системные" подпапки в каждой папке IGFolder, которую создает обычный пользователь. Портлет галереи изображений находится в основном в частных макетах сообщества всех обычных пользователей. Портлеты и их конфигурация предварительно сгенерированы, поэтому обычные пользователи не могут их изменить (layout.user.[public|private].layouts.modified=false).
Почему мы хотим это сделать В этих системных папках мы будем хранить автоматически сгенерированные версии загруженных изображений. Это связано с тем, что мы также импортируем WebContent/JournalArticle, представляющие галереи изображений, которые предоставляют сами изображения разных размеров. В конце концов, мы хотим отображать содержимое IGFolders и JournalArticle одинаково, без особого кода.
Что я уже пробовал
Я попытался сделать это с помощью разрешений (resource-actions/imgallery.xml => owner-defaults), но на его собственных страницах сообщества пользователь также является администратором сообщества, что дает ему права делать и видеть почти все, что он хочет. (PermissionCheckerBagImpl.isCommunityAdminImpl)
Я думал о создании макетов, которые не принадлежат пользователю/его частному сообществу, но тестирование этого на общедоступной странице другого сообщества, к которому принадлежит пользователь, не сработало. Никак не могу заставить систему отображать IGFolders текущего пользователя, вместо этого отображаются папки сообщества.
Использование другого пользователя и группы для подпапок также не сработало, если groupId не совпадает с идентификатором родительской папки, для идентификатора родительской папки установлено значение 0, поэтому они вообще являются более длинными подпапками (IGFolderLocalServiceImpl.getParentFolderId).
Что может сработать, а я, вероятно, просто ошибаюсь
изменение владельца портлета/макета галереи изображений
возиться с разрешением так, как я не думал
добавление еще одного слоя групп/сообществ
размещение системных папок в другом месте (что, конечно, приводит
к большему количеству кода для поддержания связи между ними и их родительской папкой
)
Конечно, я мог бы использовать expandos, чтобы пометить системные папки — что я должен сделать в любом случае — и скрыть их после поиска в представлении, но тогда мне также пришлось бы возиться с количеством папок, чего я бы не хотел, так как я чувствую это не способ делать вещи.
Любые идеи приветствуются, пожалуйста, не стесняйтесь уточнять, я новичок в Liferay.