All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.resources.js.LayoutsManagementToolbarPropsTransformer.js Maven / Gradle / Ivy

/**
 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
 */

import {
	addParams,
	fetch,
	navigate,
	openConfirmModal,
	openModal,
	openSelectionModal,
	openToast,
	sub,
} from 'frontend-js-web';

import openDeleteLayoutModal from './openDeleteLayoutModal';

export default function propsTransformer({portletNamespace, ...otherProps}) {
	const convertSelectedPages = (itemData) => {
		openConfirmModal({
			message: Liferay.Language.get(
				'are-you-sure-you-want-to-convert-the-selected-pages'
			),
			onConfirm: (isConfirmed) => {
				if (isConfirmed) {
					const form = document.getElementById(
						`${portletNamespace}fm`
					);

					if (form) {
						submitForm(form, itemData?.convertLayoutURL);
					}
				}
			},
		});
	};

	const deleteSelectedPages = (itemData) => {
		openDeleteLayoutModal({
			message: Liferay.Language.get(
				'are-you-sure-you-want-to-delete-the-selected-pages-if-the-selected-pages-have-child-pages-they-will-also-be-removed'
			),
			multiple: true,
			onDelete: () => {
				const keys = getSelectedKeys(portletNamespace);

				const url = new URL(itemData?.deleteLayoutURL);

				fetch(
					addParams(
						{
							[`_${url.searchParams.get('p_p_id')}_rowIds`]:
								keys.join(','),
						},
						itemData?.deleteLayoutURL
					),
					{
						method: 'post',
					}
				)
					.then((response) => response.json())
					.then(({errorMessage, redirectURL}) => {
						if (errorMessage) {
							openToast({
								message: errorMessage,
								title: Liferay.Language.get('error'),
								type: 'danger',
							});
						}
						else {
							navigate(redirectURL);
						}
					})
					.catch(() =>
						openToast({
							message: Liferay.Language.get(
								'an-unexpected-error-occurred'
							),
							title: Liferay.Language.get('error'),
							type: 'danger',
						})
					);
			},
		});
	};

	const changePermissions = (itemData) => {
		const keys = getSelectedKeys(portletNamespace);

		if (keys.length > itemData.maxItemsToShowInfoMessage) {
			openModal({
				bodyHTML: `

${sub( Liferay.Language.get( 'you-have-selected-more-than-x-x-info-message' ), itemData.maxItemsToShowInfoMessage, Liferay.Language.get('pages') )}

`, buttons: [ { displayType: 'secondary', label: Liferay.Language.get('cancel'), type: 'cancel', }, { displayType: 'info', label: Liferay.Language.get('continue'), onClick: ({processClose}) => { processClose(); openChangePermissionsSelectionModal(itemData, keys); }, type: 'button', }, ], status: 'info', title: Liferay.Language.get('bulk-action-performance'), }); } else { openChangePermissionsSelectionModal(itemData, keys); } }; const openChangePermissionsSelectionModal = (itemData, keys) => { const url = new URL(itemData?.changePermissionsURL); openSelectionModal({ title: Liferay.Language.get('permissions'), url: addParams( { [`_${url.searchParams.get('p_p_id')}_resourcePrimKey`]: keys.join(','), }, itemData?.changePermissionsURL ), }); }; const exportTranslation = ({exportTranslationURL}) => { const keys = getSelectedKeys(portletNamespace); const url = new URL(exportTranslationURL); navigate( addParams( { [`_${url.searchParams.get('p_p_id')}_classPK`]: keys.join(','), }, exportTranslationURL ) ); }; return { ...otherProps, onActionButtonClick: (event, {item}) => { const data = item?.data; const action = data?.action; if (action === 'convertSelectedPages') { convertSelectedPages(data); } else if (action === 'deleteSelectedPages') { deleteSelectedPages(data); } else if (action === 'exportTranslation') { exportTranslation(data); } else if (action === 'changePermissions') { changePermissions(data); } }, }; } function getSelectedKeys(portletNamespace) { return Array.from( document.querySelectorAll(`[name=${portletNamespace}rowIds]:checked`) ).map(({value}) => value); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy