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
12 changes: 11 additions & 1 deletion assets/locales/en_US.json
Original file line number Diff line number Diff line change
Expand Up @@ -4612,5 +4612,15 @@
"Evidence could not be downloaded.": "Evidence could not be downloaded.",
"Delete message": "Delete message",
"Message Sent": "Message Sent",
"Are you sure you want to delete the selected message?": "Are you sure you want to delete the selected message?"
"Are you sure you want to delete the selected message?": "Are you sure you want to delete the selected message?",
"Delete CMS pages": "Delete CMS pages",
"The following page will be deleted:": "The following page will be deleted:",
"Pages in different languages are not automatically linked. Select only related pages.": "Pages in different languages are not automatically linked. Select only related pages.",
"Select additional pages from other languages": "Select additional pages from other languages",
"No other language pages were found in this category.": "No other language pages were found in this category.",
"Other language pages could not be loaded. You can still delete only the current page.": "Other language pages could not be loaded. You can still delete only the current page.",
"Selected pages to delete:": "Selected pages to delete:",
"Delete selected pages": "Delete selected pages",
"The following pages will be deleted:": "The following pages will be deleted:",
"A maximum of 100 pages can be deleted at once.": "A maximum of 100 pages can be deleted at once."
}
12 changes: 11 additions & 1 deletion assets/locales/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -4610,5 +4610,15 @@
"Evidence could not be downloaded.": "No se pudo descargar la evidencia.",
"Delete message": " Borrar mensaje",
"Message Sent": "Mensaje enviado",
"Are you sure you want to delete the selected message?": "\u00bfEsta seguro de que desea borrar este mensaje?"
"Are you sure you want to delete the selected message?": "\u00bfEsta seguro de que desea borrar este mensaje?",
"Delete CMS pages": "Eliminar páginas del CMS",
"The following page will be deleted:": "Se eliminará la siguiente página:",
"Pages in different languages are not automatically linked. Select only related pages.": "Las páginas en distintos idiomas no se vinculan automáticamente. Seleccione solo las páginas relacionadas.",
"Select additional pages from other languages": "Seleccionar páginas adicionales en otros idiomas",
"No other language pages were found in this category.": "No se encontraron otras páginas en distintos idiomas dentro de esta categoría.",
"Other language pages could not be loaded. You can still delete only the current page.": "No se pudieron cargar las páginas de otros idiomas. Aun así, puede eliminar únicamente la página actual.",
"Selected pages to delete:": "Páginas seleccionadas para eliminar:",
"Delete selected pages": "Eliminar páginas seleccionadas",
"The following pages will be deleted:": "Se eliminarán las siguientes páginas:",
"A maximum of 100 pages can be deleted at once.": "Puede eliminar un máximo de 100 páginas a la vez."
}
12 changes: 11 additions & 1 deletion assets/locales/fr_FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -4612,5 +4612,15 @@
"Evidence could not be downloaded.": "Les preuves n\u2019ont pas pu \u00eatre t\u00e9l\u00e9charg\u00e9es.",
"Delete message": "Supprimer le message",
"Message Sent": "Message envoy\u00e9",
"Are you sure you want to delete the selected message?": "\u00cates-vous certain de vouloir supprimer le message s\u00e9lectionn\u00e9\u202f?"
"Are you sure you want to delete the selected message?": "\u00cates-vous certain de vouloir supprimer le message s\u00e9lectionn\u00e9\u202f?",
"Delete CMS pages": "Supprimer des pages CMS",
"The following page will be deleted:": "La page suivante sera supprimée :",
"Pages in different languages are not automatically linked. Select only related pages.": "Les pages dans différentes langues ne sont pas liées automatiquement. Sélectionnez uniquement les pages correspondantes.",
"Select additional pages from other languages": "Sélectionner d’autres pages dans d’autres langues",
"No other language pages were found in this category.": "Aucune autre page dans une langue différente n’a été trouvée dans cette catégorie.",
"Other language pages could not be loaded. You can still delete only the current page.": "Impossible de charger les pages des autres langues. Vous pouvez tout de même supprimer uniquement la page actuelle.",
"Selected pages to delete:": "Pages sélectionnées pour suppression :",
"Delete selected pages": "Supprimer les pages sélectionnées",
"The following pages will be deleted:": "Les pages suivantes seront supprimées :",
"A maximum of 100 pages can be deleted at once.": "Vous pouvez supprimer au maximum 100 pages à la fois."
}
43 changes: 43 additions & 0 deletions assets/vue/services/pageService.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,46 @@ async function deletePage(iri) {
await api.delete(iri)
}

/**
* Load CMS pages in the same category, across languages, for explicit selection.
* The collection is already scoped to the current access URL by PageExtension.
*/
async function getPagesForLanguageDeletion(category) {
const pages = []
let page = 1
const limit = 500

while (true) {
const result = await baseService.getCollection("/api/pages", { category, page, itemsPerPage: 100 })
pages.push(...(result.items || []))

if (pages.length > limit) {
throw new Error("Too many pages in this category to review safely. Narrow the category first.")
}
if (!result.nextPageParams) {
if (Number(result.totalItems || 0) > pages.length) {
throw new Error("Not all pages could be loaded. No pages were deleted.")
}
return pages
}
const nextPage = Number(result.nextPageParams.page)
if (!Number.isInteger(nextPage) || nextPage <= page) {
throw new Error("Page pagination failed. No pages were deleted.")
}
page = nextPage
}
}

/** Delete exactly the page IDs selected by the administrator, atomically. */
async function deleteLanguagePages(sourcePageId, pageIds) {
return await baseService.post(`/api/pages/${sourcePageId}/delete-languages`, { pageIds })
}

/** Delete explicitly selected CMS pages, including across categories. */
async function deleteBulkPages(pageIds) {
return await baseService.post("/api/pages/actions/bulk-delete", { pageIds })
}

/**
* ---------------------------
* Page Layouts Service
Expand Down Expand Up @@ -171,6 +211,9 @@ export default {
getTopbarVisibility,
// Pages
getPublicPageBySlug,
getPagesForLanguageDeletion,
deleteLanguagePages,
deleteBulkPages,
postPage,
updatePage,
deletePage,
Expand Down
Loading
Loading