modules\apps\contacts\contacts-web\src\main\java\com\liferay\contacts\web\internal\notifications\ContactsCenterUserNotificationHandler.java
Тут пример события Logout, срабатывает перед выходом из сеанса. Деавторизация.
\modules\apps\click-to-chat\click-to-chat-web\src\main\java\com\liferay\click\to\chat\web\internal\events\LogoutPreAction.java
eclipse 2024-12 + gradle 8.12 + java 21.05
First time using Git
cd myproject
git init
# add all your files. Users can specify file names or directories instead of '.'
git add .
git commit -a -m 'Initial commit'
git remote add origin ssh://sss@git.code.sf.net/p/sss/del
git push -u origin master
Existing repository using Git
cd myproject
git remote add origin ssh://sss@git.code.sf.net/p/sss/del
git push -u origin master
Не знаю причину, но в один ясный день Liferay IDE отказался создавать mvc портлеты. Временный выход, работать через Blade CLI
Linux https://www.youtube.com/watch?v=wRluHYtmiRE
curl -L https://raw.githubusercontent.com/liferay/liferay-blade-cli/master/cli/installers/local | sh
Windows https://www.youtube.com/watch?v=KOu0vwroQ18
blade version 3.3.0.201811151753
Run 'blade update' to update to version 7.0.1... read more
Это необходимо, так как могут зарегистрировать такие экранные имена (screenName, nik), как admin, administrator и т.д.
Что бы этого не было, идем в админку -> Instance Settings -> User Authentication
А там уже видно (Reserved Credentials).
В разделе "Панель управления" -> "Администрирование сервера" -> "Внешние сервисы" нужно включить и задать правильный путь к GhostScript и ImageMagick.
Windows
После установки этих программ, в админке лайфрея пишем что-то вроде "C:\Program Files\gs\gs10.03.1\bin;C:\Program Files\ImageMagick-7.1.1-Q16-HDRI"... read more
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAuth.signOut();
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
});
можно писать так:
btnLogout.setOnClickListener(v -> {
mAuth.signOut();
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
});
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
//чтобы очистить весь стек (кнопка назад работать не будет грубо)
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
setResult(RESULT_OK, null);
startActivity(intent);
LoginActivity.this.finish();
<%@ include file="/META-INF/resources/init.jsp" %>
<%
//String backURL = ParamUtil.getString(request, "backURL", String.valueOf(renderResponse.createRenderURL()));
//renderResponse.setTitle("AAAAAAAAAAAAA");
//portletDisplay.setShowBackIcon(true);
//portletDisplay.setURLBack(backURL);
%>
<portlet:actionURL name="/parser/parse_to_start" var="parserActionURL" />
<clay:container-fluid
cssClass="container-form-lg"
>
<aui:form action="<%= parserActionURL %>" method="post" name="fm">
<aui:input name="redirect" type="hidden" value="<%= currentURL %>" />
<clay:sheet>
<h2 class="sheet-title">
<liferay-ui:message key="parsing" />
</h2>
<div class="form-group">
<%-- <aui:input label="folder" name="folderName" type="resource" value="123" /> --%>
<aui:input name="url" label="URL adress" placeholder="https://site.ru/music/all_authors.php"/>
<aui:input name="mainElement" label="Main Element" placeholder="#all_authors_list div.col-md-2.col-sm-3.col-6"/>
<aui:input name="specificElement" label="specific element" placeholder=".author_label" />
<aui:input name="linkText" label="Text Link" placeholder=""/>
</div>
<clay:sheet-footer>
<aui:button type="submit" />
<aui:button href="<%= currentURL %>" type="cancel" />
</clay:sheet-footer>
</clay:sheet>
</aui:form>
</clay:container-fluid>
build.gradle:
dependencies {
compileOnly group: "com.liferay.portal", name: "release.portal.api"
implementation group: "org.jsoup", name: "jsoup", version: "1.14.3"
cssBuilder group: "com.liferay", name: "com.liferay.css.builder", version: "3.1.4"
}
===================================================
~~~
/**
liferay.workspace.bundle.dist.include.metadata = true
liferay.workspace.modules.dir = modules
liferay.workspace.themes.dir = themes
liferay.workspace.wars.dir = wars
microsoft.translator.subscription.key =
liferay.workspace.product = portal-7.4-ga103
target.platform.index.sources = false
org.gradle.java.home=C:\\java\\jdk-11.0.19
Обычно API опаздывает в репозиториях, чем сам выход релиза.
Что бы выяснить, на какой версии программировать, нужно посмотреть тут
https://repo.maven.apache.org/maven2/com/liferay/portal/release.portal.api/
Сейчас на дворе версия Liferay Portal 7.4 GA105, но пока мы не можем с этим работать. Смотрим выше приведенную ссылку, и узнаем, что на данный момент пока 7.4.3.103-ga103... read more
1.. На гостевом сайте от админа создадим сайт из шаблона (Ускорителя) "Minium". Конечно, и без него можно начать, но все муторно создавать новые роли, каналы, и т.д.
2.. Создать организацию для клиента, например "MilkOrg".
3.. Привязать к этой организации будущего администратора, например "userMilk", с e-mail адресом "admin@milkorg.org".
4.. userMilk сделать администратором организации "MilkOrg". (Я добавил роли "Organization Administrator", "Organization Owner", "Organization Content Reviewer").
5.. Для организации "MilkOrg создаем пустой сайт и добавим пару страниц. Ну вот теперь у нас есть полноценный сайт с URL адресом http://localhost:8080/web/milkorg
6.. Далее, к администратору сайта userMilk добавляем еще дополнительные роли (Регулярные (Category Manager, Discount Manager, Operations Manager, Power User,Sales Agent))
7.. Далее, к администратора сайта userMilk привязываем с сайтом организации. Для этого идем в настройках аккаунта админа в вкладку Memberships -> Select Sites -> Liferay. Этот момент я не совсем понял, зачем нужно сначала привязать с сайтом "Liferay", но без этого не дает привязать с сайтом "MilkOrg. Сохраняем.
8.. Переходим на вкладку Roles. Там юзеру уже можем добавлять роли сайта (Site Administrator, Site Content Reviewer, Site Owner).
9.. В админке магазина создаем новый канал milkorgChannel. В вкладке Type канал привязываем с сайтом MilkOrg
Официально еще не объявили, но в гитхабе есть обновление Liferay IDE 4 GA1
Я просто на днях преобрел новый ноутбук на win11. Мои действия были таковы:
git clone https://github.com/liferay/liferay-ide.git
git checkout aa81b93d48c9b241161306eea7bc8828a502fce8 (18 ноября 2023 г.)
mvn clean Verified -DskipTests
Иногда бывает, что mvn надо запускать под определённую джаву, но системную JAVA_HOME не можете трогать, так как используется на других проектах. В таком случаем случаем редактируем C:\maven\bin\mvn.cmd (У вас путь мавена может быть другим).
И между строк @REM ==== START VALIDATION ==== и if not "%JAVA_HOME%"=="" goto OkJHome пишем свою желаемую версию jdk.
Например:
~~~
@REM ==== START VALIDATION ====
set JAVA_HOME=C:\java\jdk-17.0.8
if not "%JAVA_HOME%"=="" goto OkJHome
~~~... read more
Истоник тут.
Но он не работает в Liferay 7.4
И так, там всего 6 java файлов:
1.. CustomFieldDDMFormFieldRenderer исправляем из (modules/apps/dynamic-data-mapping/dynamic-data-mapping-service) com.liferay.dynamic.data.mapping.internal.render.DDMFormFieldFreeMarkerRenderer.java
2.. CustomFieldDDMFormFieldTypeSettings -
Liferay IDE 3.9.8 GA9 - по умолчанию использует eclipse 4.12 (Last revised May 23, 2019)
~~~
<#if entries?has_content>
<#assign portletFileRepositoryUtil = staticUtil["com.liferay.portal.kernel.portletfilerepository.PortletFileRepositoryUtil"] />
<#assign dlUtil = staticUtil["com.liferay.document.library.kernel.util.DLUtil"] />
<#assign dateFormat = "dd MMM yyyy - HH:mm:ss" />
<#assign ddmFieldLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMFieldLocalService")/>... read more
Для увеличения максимального размера файла на загрузку в Nginx, необходимо изменить значение директивы client_max_body_size. Тут я разрешил до 400 МБайт.
~~~
server {
server_name f127.ru www.f127.ru;
client_max_body_size 400M;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_read_timeout 1800;
proxy_connect_timeout 1800;
proxy_send_timeout 1800;
send_timeout 1800;
proxy_pass http://127.0.0.1:8080;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/f127.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/f127.ru/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
~~~ ... read more
Подробнее тут, https://f700.ru/web/sildar_org/liferay/-/asset_publisher/fGwSEpiXTPKX/content/%D0%BF%D0%B5%D1%80%D0%B2%D0%B8%D1%87%D0%BD%D1%8B%D0%B5-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8-liferay-7.4.3-%D1%87%D0%B0%D1%81%D1%82%D1%8C-%D1%82%D1%80%D0%B8
dnf install epel-release
dnf config-manager --set-enabled crb
dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm
dnf install --nogpgcheck https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm
dnf install ffmpeg ffmpeg-devel
ffmpeg -version... read more
Подробнее тут, https://f700.ru/web/sildar_org/liferay/-/asset_publisher/fGwSEpiXTPKX/content/bootstap-video-slider
~~~
<#assign portletFileRepositoryUtil = staticUtil["com.liferay.portal.kernel.portletfilerepository.PortletFileRepositoryUtil"] />
<#assign dlUtil = staticUtil["com.liferay.document.library.kernel.util.DLUtil"] />
<#assign dlFileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") /> ... read more