Jamie Howard 8c5105d949
Publish multiple locales (#20258)
* fix: date comparison

* feat(core): document service publish multiple locales (#20046)

* feat(core): document service (un)publish multiple locales

* fix(core): cleanup locale param types

* feat(content-manager): wip - multiple locale support

* Count draft relations across locales (#20116)

* feat(content-manager): publish multiple locales from CM route

* feat(core): multiple locales in document service discard draft

* feat(content-manager): use bulkpublish for locale publish

* feat(content-manager): use query from bulkpublish locales

* feat(content-manager): publishMany

* feat(content-manager): api test for bulk locale + document publish

* chore(content-manager): fix for build

* fix(core): avoid * in locale data

* chore(content-manager): pr amends and validation improvement

* feat(content-manager): use transaction in document manager publish many

* feat(core): throw when a non string locale is provided and not supported

* fix(core): doc service find many

* chore: clean up

* feat(content-manager): Select fields that require validation in availablelocales (#20156)

* feat(content-manager): wip - select more fields in availablelocales

* feat(content-manager): wip available locales using entity traversal

* feat(content-manager): wip test available locales returns fields with validation

* feat(content-manager): test available locales returns fields with validation

* fix(content-manager): ensure sensitive info not exposed in available statuses

* fix(content-manager): sanitize document metadata available status

* fix(content-manager): sanitize document metadata available status at controller level

* fix(content-manager): populate only for validatable fields

* chore: clean up

* chore: clean up

* chore: clean up

* fix(content-manager): build issues

* fix(content-manager): allow null locales

* fix(content-manager): history service (#20185)

* fix(content-manager): history service

* chore(content-manager): clean up

* fix: pr feedback

* chore: update actions deps

* chore: update utility deps

* chore: upgrade sentry

* chore: upgrade graphql-tools

* fix: http-errors ugprade

* chore: add fs-extra types where needed

* docs(typescript): type system cheat sheet

* chore!: remove deprecated verbose option from ts:generate-types

* chore: clean up

fix(content-manager) correctly count bulk publish results

* fix(content-manager): pr feedback and test improvements

* feat(i18n): bulk locale publish modal in CM edit view (#20069)

* feat(i18n): wip bulk locale publish modal

* fix(i18n): wip - fe bulk locale publish

* feat(content-manager): multi locale publish, integrate with backend and add basic e2e test

* feat(i18n): wip - display validation errors in bulk locale modal

* chore: clean up

* chore(i18n): design system changes

* feat(i18n): display correct status after publish and clean up error messaging

* feat(i18n): access onclose from modal body

* fix(i18n): selected locale change

* fix(i18n): locale table state

* fix(i18n): edit view e2e test

* chore(content-manager): validation tweak wip

* feat(i18n): cover validation cases in i18n e2e tests

* chore: clean up

* fix(i18n): edit view more document actions disabled state

* chore: feedback

* fix(i18n): send all params to publish many

* fix(i18n): place bulk locale publish 3rd in array

* fix(content-manager): validation error extraction

* fix(content-manager): pr feedback

* fix: build

* chore(content-manager): simplify exports

* chore(i18n): revert package

---------

Co-authored-by: Alexandre Bodin <bodin.alex@gmail.com>
Co-authored-by: Jean-Sébastien Herbaux <jean-sebastien.herbaux@epitech.eu>
Co-authored-by: Ben Irvin <ben.irvin@strapi.io>

* fix(i18n): disable publish button after bulk locale publish

* fix(content-manager): ce e2e fix

* chore: typography

* fix(i18n): e2e edit view test

* fix: wip date comparison

* fix: wip date comparison

* fix(content-manager): simplify date comparison

* fix: clean up metadata api test

* chore: update api tests

* fix: draft versions must be ahead of published to be considered modified

* fix: published modified calculation

* fix: clean up

* fix: simplify draft and publish comparison

* chore: clean up

* fix: flaky fe tests

* fix: pr feedback

* fix(i18n): error message extraction in bulk locale modal

* chore: remove old publish action

* chore: pr feedback

* chore: refactor error types & validation messages

* chore: use anchor link for locale changes

* chore: fix releases

* fix: clean up

* chore: snapshot

---------

Co-authored-by: Marc-Roig <marc12info@gmail.com>
Co-authored-by: Alexandre Bodin <bodin.alex@gmail.com>
Co-authored-by: Jean-Sébastien Herbaux <jean-sebastien.herbaux@epitech.eu>
Co-authored-by: Ben Irvin <ben.irvin@strapi.io>
Co-authored-by: Josh <37798644+joshuaellis@users.noreply.github.com>
2024-05-10 18:20:35 +01:00

81 lines
1.9 KiB
TypeScript

import { Modules, Data } from '@strapi/types';
import { errors } from '@strapi/utils';
type PaginationQuery = Modules.EntityService.Params.Pagination.PageNotation;
export interface RelationResult {
documentId: Modules.Documents.ID;
id: number;
status?: Modules.Documents.Params.PublicationStatus.Kind;
locale?: Modules.Documents.Params.Locale.StringNotation;
[key: string]: any;
}
export interface Pagination {
page: NonNullable<PaginationQuery['page']>;
pageSize: NonNullable<PaginationQuery['pageSize']>;
pageCount: number;
total: number;
}
type RelationResponse =
| {
results: RelationResult[];
pagination: Pagination;
error?: never;
}
| {
results?: never;
pagination?: never;
error: errors.ApplicationError | errors.YupValidationError;
};
/**
* GET /relations/:model/:targetField
*/
export declare namespace FindAvailable {
export interface Params {
model: string;
targetField: string;
}
export interface Request {
body: {};
query: Partial<Pick<Pagination, 'pageSize' | 'page'>> & {
id?: Data.ID;
locale?: Modules.Documents.Params.Locale.StringNotation;
_filter?: string;
_q?: string;
idsToOmit?: Modules.Documents.ID[];
idsToInclude?: Modules.Documents.ID[];
};
}
export type Response = RelationResponse;
}
/**
* GET /relations/:model/:id/:targetField
*/
export declare namespace FindExisting {
export interface Params {
model: string;
targetField: string;
id?: Data.ID;
}
export interface Request {
body: {};
query: Partial<Pick<Pagination, 'pageSize' | 'page'>> & {
locale?: string | null;
_filter?: string;
_q?: string;
status?: Modules.Documents.Params.PublicationStatus.Kind;
idsToOmit?: Modules.Documents.ID[];
idsToInclude?: Modules.Documents.ID[];
};
}
export type Response = RelationResponse;
}