Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 28 additions & 8 deletions src/bundle/Resources/public/js/scripts/admin.location.view.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,22 @@
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const publishedContentId = urlParams.get('publishedContentId');
const handleEditItem = (content, location) => {
const sendForm = () => {
doc.querySelector('#form_subitems_content_edit_create').click();
};
const updateForm = (contentId, languageCode) => {
doc.querySelector('#form_subitems_content_edit_content_info').value = contentId;
doc.querySelector(`#form_subitems_content_edit_language_${languageCode}`).checked = true;
};
const handleEditItem = (content, location, isLanguageSelectorOpened) => {
const contentId = content._id;
const locationId = location._id;
const languageCode = content.mainLanguageCode;
const checkVersionDraftLink = Routing.generate('ibexa.version_draft.has_no_conflict', { contentId, languageCode, locationId });
const submitVersionEditForm = () => {
doc.querySelector('#form_subitems_content_edit_content_info').value = contentId;
doc.querySelector(`#form_subitems_content_edit_language_${languageCode}`).checked = true;
doc.querySelector('#form_subitems_content_edit_create').click();
};

const addDraft = () => {
submitVersionEditForm();
updateForm(contentId, languageCode);
sendForm();
bootstrap.Modal.getOrCreateInstance(doc.querySelector('#version-draft-conflict-modal')).hide();
};
const attachModalListeners = (wrapper) => {
Expand All @@ -37,6 +41,9 @@
if (conflictModal) {
bootstrap.Modal.getOrCreateInstance(conflictModal).show();
conflictModal.addEventListener('shown.bs.modal', () => ibexa.helpers.tooltips.parse());
conflictModal.addEventListener('hide.bs.modal', () => {
doc.body.dispatchEvent(new CustomEvent('ibexa:edit-content-reset-language-selector'));
});
}
};
const showModal = (modalHtml) => {
Expand Down Expand Up @@ -71,7 +78,11 @@
if (response.status === 409) {
response.text().then(showModal);
} else if (response.status === 200) {
submitVersionEditForm();
updateForm(contentId, languageCode);

if (!isLanguageSelectorOpened) {
sendForm();
}
}
})
.catch(ibexa.helpers.notification.showErrorNotification);
Expand All @@ -84,6 +95,7 @@
modalTableTitleNode.setAttribute('title', title);
modalTableTitleNode.dataset.originalTitle = title;
};

const setModalTableBody = (failedItemsData) => {
const modal = doc.querySelector(SELECTOR_MODAL_BULK_ACTION_FAIL);
const table = modal.querySelector('.ibexa-bulk-action-failed-modal__table');
Expand Down Expand Up @@ -194,6 +206,14 @@
);
});

doc.body.addEventListener(
'ibexa-sub-items:submit-version-edit-form',
() => {
sendForm();
},
false,
);

if (publishedContentId) {
emdedItemsUpdateChannel.postMessage({ contentId: publishedContentId });
}
Expand Down
13 changes: 10 additions & 3 deletions src/bundle/Resources/public/js/scripts/button.content.edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
const editVersion = (event) => {
const versionEditForm = doc.querySelector(FORM_EDIT);
const versionEditFormName = versionEditForm.name;
const { contentId, versionNo, languageCode } = event.currentTarget.dataset;
const { contentId, versionNo, languageCode, withConfirm } = event.currentTarget.dataset;
const contentInfoInput = versionEditForm.querySelector(`input[name="${versionEditFormName}[content_info]"]`);
const versionInfoContentInfoInput = versionEditForm.querySelector(
`input[name="${versionEditFormName}[version_info][content_info]"]`,
Expand Down Expand Up @@ -34,6 +34,7 @@

wrapper.innerHTML = modalHtml;

const conflictModal = doc.querySelector('#version-draft-conflict-modal');
const addDraftButton = wrapper.querySelector('.ibexa-btn--add-draft');

if (addDraftButton) {
Expand All @@ -43,7 +44,11 @@
wrapper
.querySelectorAll('.ibexa-btn--prevented')
.forEach((btn) => btn.addEventListener('click', (wrapperBtnEvent) => wrapperBtnEvent.preventDefault(), false));
bootstrap.Modal.getOrCreateInstance(doc.querySelector('#version-draft-conflict-modal')).show();

bootstrap.Modal.getOrCreateInstance(conflictModal).show();
conflictModal.addEventListener('hide.bs.modal', () => {
doc.body.dispatchEvent(new CustomEvent('ibexa:edit-content-reset-language-selector'));
});
};
const handleCanEditCheck = (response) => {
if (response.canEdit) {
Expand All @@ -60,7 +65,9 @@
} else if (response.status === 403) {
response.text().then(showErrorNotification);
} else if (response.status === 200) {
submitVersionEditForm();
if (!withConfirm) {
submitVersionEditForm();
}
}
};

Expand Down
67 changes: 45 additions & 22 deletions src/bundle/Resources/public/js/scripts/button.translation.edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,47 +3,46 @@
constructor(config) {
this.container = config.container;
this.toggler = config.container.querySelector('.ibexa-btn--translations-list-toggler');
this.translationsList = config.container.querySelector('.ibexa-translation-selector__list-wrapper');
this.extraActionsContainer = config.container.querySelector('.ibexa-extra-actions');
this.closeBtn = config.container.querySelector('.ibexa-extra-actions__close-btn');
this.confirmBtn = config.container.querySelector('.ibexa-extra-actions__confirm-btn');
this.languagesBtns = config.container.querySelectorAll('.ibexa-btn--select-language');
this.backdrop = config.backdrop;

this.tableNode = null;

this.hideTranslationsList = this.hideTranslationsList.bind(this);
this.showTranslationsList = this.showTranslationsList.bind(this);
this.hideExtraActionPanel = this.hideExtraActionPanel.bind(this);
this.showExtraActionPanel = this.showExtraActionPanel.bind(this);
this.setActiveLanguage = this.setActiveLanguage.bind(this);
this.resetLanguageSelector = this.resetLanguageSelector.bind(this);

this.setPosition = this.setPosition.bind(this);
}

setPosition() {
const topOffset = parseInt(this.translationsList.dataset.topOffset, 10);
const topOffset = parseInt(this.extraActionsContainer.dataset.topOffset, 10);
const topPosition = window.scrollY > topOffset ? 0 : topOffset - window.scrollY;
const height = window.scrollY > topOffset ? window.innerHeight : window.innerHeight + window.scrollY - topOffset;

this.translationsList.style.top = `${topPosition}px`;
this.translationsList.style.height = `${height}px`;
this.extraActionsContainer.style.top = `${topPosition}px`;
this.extraActionsContainer.style.height = `${height}px`;
}

hideTranslationsList(event) {
const closestTranslationSelector = event.target.closest('.ibexa-translation-selector');
const clickedOnTranslationsList = closestTranslationSelector && closestTranslationSelector.isSameNode(this.container);
const clickedOnDraftConflictModal = event.target.closest('.ibexa-modal--version-draft-conflict');

if (clickedOnTranslationsList || clickedOnDraftConflictModal) {
return;
}

hideExtraActionPanel() {
if (this.tableNode) {
this.tableNode.classList.add('ibexa-table--last-column-sticky');

this.tableNode = null;
}

this.backdrop.hide();
this.translationsList.classList.add('ibexa-translation-selector__list-wrapper--hidden');
doc.removeEventListener('click', this.hideTranslationsList, false);
this.extraActionsContainer.classList.add('ibexa-extra-actions--hidden');

this.closeBtn.removeEventListener('click', this.hideExtraActionPanel, false);
}

showTranslationsList({ currentTarget }) {
this.translationsList.classList.remove('ibexa-translation-selector__list-wrapper--hidden');
showExtraActionPanel({ currentTarget }) {
this.extraActionsContainer.classList.remove('ibexa-extra-actions--hidden');

this.tableNode = currentTarget.closest('.ibexa-table--last-column-sticky');

Expand All @@ -52,14 +51,38 @@
}

this.setPosition();

this.backdrop.show();
doc.addEventListener('click', this.hideTranslationsList, false);
this.closeBtn.addEventListener('click', this.hideExtraActionPanel, false);

ibexa.helpers.tooltips.hideAll();
}

setActiveLanguage(event) {
const { contentId, languageCode } = event.currentTarget.dataset;

this.confirmBtn.dataset.contentId = contentId;
this.confirmBtn.dataset.languageCode = languageCode;
this.confirmBtn.disabled = false;

this.languagesBtns.forEach((btn) => btn.classList.remove('ibexa-btn--active'));
event.currentTarget.classList.add('ibexa-btn--active');
}

resetLanguageSelector() {
this.confirmBtn.dataset.contentId = null;
this.confirmBtn.dataset.languageCode = null;
this.confirmBtn.disabled = true;

this.languagesBtns.forEach((btn) => btn.classList.remove('ibexa-btn--active'));
}

init() {
this.toggler.addEventListener('click', this.showTranslationsList, false);
this.toggler.addEventListener('click', this.showExtraActionPanel, false);
this.languagesBtns.forEach((btn) => {
btn.addEventListener('click', this.setActiveLanguage, false);
});

document.body.addEventListener('ibexa:edit-content-reset-language-selector', this.resetLanguageSelector, false);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@
'click',
() => {
languageRadioOption.checked = true;
languageRadioOption.dispatchEvent(new CustomEvent('change'));
languageRadioOption.dispatchEvent(
new CustomEvent('change', {
detail: {
sendImmediately: true,
},
}),
);
},
false,
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,28 +46,44 @@
attachModalListeners(wrapper, form, btns);
};
const changeHandler = (form, btns, event) => {
const sendImmediately = event?.detail?.sendImmediately ?? false;
const contentIdInput = form.querySelector('.ibexa-extra-actions__form-field--content-info');
const locationInput = form.querySelector('.ibexa-extra-actions__form-field--location');
const contentId = contentIdInput.value;
const locationId = locationInput.value;
const checkedBtn = event.currentTarget;
const languageCode = checkedBtn.value;
const checkVersionDraftLink = Routing.generate('ibexa.version_draft.has_no_conflict', { contentId, languageCode, locationId });
const activeLanguageItem = event.target.closest('.ibexa-instant-filter__group-item')?.querySelector('.ibexa-label');
const allLanguageItems = form.querySelectorAll('.ibexa-instant-filter__group-item .ibexa-label');
const submitBtn = form.querySelector('.ibexa-extra-actions__confirm-btn');

allLanguageItems.forEach((item) => {
item.classList.remove('ibexa-label--active');
});

fetch(checkVersionDraftLink, {
credentials: 'same-origin',
}).then((response) => {
if (response.status === 409) {
response.text().then(showModal.bind(null, form, btns));
submitBtn.disabled = true;

return;
} else if (response.status === 200) {
if (form.querySelector('#user_edit_version_info')) {
redirectToUserEdit(languageCode, contentId, form);

return;
}

form.submit();
if (sendImmediately) {
form.submit();
}
}

submitBtn.disabled = false;
activeLanguageItem?.classList.add('ibexa-label--active');
});
};
const attachEventsToEditActionsWidget = (container) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,13 @@
'click',
() => {
languageRadioOption.checked = true;
languageRadioOption.dispatchEvent(new CustomEvent('change'));
languageRadioOption.dispatchEvent(
new CustomEvent('change', {
detail: {
sendImmediately: true,
},
}),
);
},
false,
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ import { getInstance } from '@ibexa-admin-ui/src/bundle/Resources/public/js/scri
initExtraActionsWidget(dataset);
});
doc.body.addEventListener('ibexa-extra-actions:toggle-widget', (event) => toggleExtraActionsWidget(event.detail), false);

closeBtns.forEach((closeBtn) =>
closeBtn.addEventListener(
'click',
Expand Down
Loading
Loading