Skip to content

Commit 934cf68

Browse files
Merge branch 'main' into fix/7375
2 parents 77470e1 + cd82f6b commit 934cf68

File tree

19 files changed

+83
-24
lines changed

19 files changed

+83
-24
lines changed

dev-test/config.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ collections: # A list of collections the CMS should be able to edit
6262
folder: '_restaurants'
6363
slug: '{{year}}-{{month}}-{{day}}-{{slug}}'
6464
summary: '{{title}} -- {{year}}/{{month}}/{{day}}'
65-
create: true # Allow users to create new documents in this collection
65+
create: true # Allow users to create new documents in this collection
6666
editor:
6767
visualEditing: true
6868
fields: # The fields each document in this collection have
@@ -276,7 +276,7 @@ collections: # A list of collections the CMS should be able to edit
276276
label_singular: 'Page'
277277
folder: _pages
278278
create: true
279-
nested: { depth: 100 }
279+
nested: { depth: 100, subfolders: false }
280280
fields:
281281
- label: Title
282282
name: title

package-lock.json

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/decap-cms-app/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
## [3.6.3](https://github.com/decaporg/decap-cms/compare/decap-cms-app@3.6.2...decap-cms-app@3.6.3) (2025-05-15)
7+
8+
**Note:** Version bump only for package decap-cms-app
9+
10+
## [3.6.2](https://github.com/decaporg/decap-cms/compare/decap-cms-app@3.6.1...decap-cms-app@3.6.2) (2025-02-13)
11+
12+
**Note:** Version bump only for package decap-cms-app
13+
614
## [3.6.1](https://github.com/decaporg/decap-cms/compare/decap-cms-app@3.6.0...decap-cms-app@3.6.1) (2025-01-30)
715

816
**Note:** Version bump only for package decap-cms-app

packages/decap-cms-app/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "decap-cms-app",
33
"description": "An extensible, open source, Git-based, React CMS for static sites. Reusable congiuration with React as peer.",
4-
"version": "3.6.1",
4+
"version": "3.6.3",
55
"homepage": "https://www.decapcms.org",
66
"repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-app",
77
"bugs": "https://github.com/decaporg/decap-cms/issues",
@@ -40,7 +40,7 @@
4040
"decap-cms-backend-gitlab": "^3.2.2",
4141
"decap-cms-backend-proxy": "^3.1.4",
4242
"decap-cms-backend-test": "^3.1.3",
43-
"decap-cms-core": "^3.6.0",
43+
"decap-cms-core": "^3.6.2",
4444
"decap-cms-editor-component-image": "^3.1.3",
4545
"decap-cms-lib-auth": "^3.0.5",
4646
"decap-cms-lib-util": "^3.2.0",

packages/decap-cms-core/CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,17 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
## [3.6.2](https://github.com/decaporg/decap-cms/compare/decap-cms-core@3.6.1...decap-cms-core@3.6.2) (2025-05-15)
7+
8+
### Bug Fixes
9+
10+
- **#7371:** Duplicate Localized Content When Duplicating Entries with i18n Enabled ([#7372](https://github.com/decaporg/decap-cms/issues/7372)) ([c5b1dfe](https://github.com/decaporg/decap-cms/commit/c5b1dfe50ae34230c735d58dd1df475fa17ee578)), closes [#7371](https://github.com/decaporg/decap-cms/issues/7371)
11+
- **nested-i18n:** pass newPath only when customPath differs from current path ([#7418](https://github.com/decaporg/decap-cms/issues/7418)) ([86d41d7](https://github.com/decaporg/decap-cms/commit/86d41d79b20583041570bce30b46835a36bcecf2))
12+
13+
## [3.6.1](https://github.com/decaporg/decap-cms/compare/decap-cms-core@3.6.0...decap-cms-core@3.6.1) (2025-02-13)
14+
15+
**Note:** Version bump only for package decap-cms-core
16+
617
# [3.6.0](https://github.com/decaporg/decap-cms/compare/decap-cms-core@3.5.0...decap-cms-core@3.6.0) (2025-01-29)
718

819
### Bug Fixes

packages/decap-cms-core/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ declare module 'decap-cms-core' {
310310
publish?: boolean;
311311
nested?: {
312312
depth: number;
313+
subfolders?: boolean;
313314
};
314315
meta?: { path?: { label: string; widget: string; index_file: string } };
315316

packages/decap-cms-core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "decap-cms-core",
33
"description": "Decap CMS core application, see decap-cms package for the main distribution.",
4-
"version": "3.6.0",
4+
"version": "3.6.2",
55
"repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-core",
66
"bugs": "https://github.com/decaporg/decap-cms/issues",
77
"module": "dist/esm/index.js",

packages/decap-cms-core/src/actions/entries.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,7 @@ export function draftDuplicateEntry(entry: EntryMap) {
389389
type: DRAFT_CREATE_DUPLICATE_FROM_ENTRY,
390390
payload: createEntry(entry.get('collection'), '', '', {
391391
data: entry.get('data'),
392+
i18n: entry.get('i18n'),
392393
mediaFiles: entry.get('mediaFiles').toJS(),
393394
}),
394395
};

packages/decap-cms-core/src/backend.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,12 +1128,13 @@ export class Backend {
11281128
updateAssetProxies(assetProxies, config, collection, entryDraft, path);
11291129
} else {
11301130
const slug = entryDraft.getIn(['entry', 'slug']);
1131+
const path = entryDraft.getIn(['entry', 'path']);
11311132
dataFile = {
1132-
path: entryDraft.getIn(['entry', 'path']),
1133+
path,
11331134
// for workflow entries we refresh the slug on publish
11341135
slug: customPath && !useWorkflow ? slugFromCustomPath(collection, customPath) : slug,
11351136
raw: this.entryToRaw(collection, entryDraft.get('entry')),
1136-
newPath: customPath,
1137+
newPath: customPath === path ? undefined : customPath,
11371138
};
11381139
}
11391140

packages/decap-cms-core/src/components/Collection/Entries/EntriesCollection.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ export class EntriesCollection extends React.Component {
117117
}
118118
}
119119

120-
export function filterNestedEntries(path, collectionFolder, entries) {
120+
export function filterNestedEntries(path, collectionFolder, entries, subfolders) {
121121
const filtered = entries.filter(e => {
122122
let entryPath = e.get('path').slice(collectionFolder.length + 1);
123123
if (!entryPath.startsWith(path)) {
@@ -130,6 +130,13 @@ export function filterNestedEntries(path, collectionFolder, entries) {
130130
entryPath = entryPath.slice(path.length + 1);
131131
}
132132

133+
// if subfolders legacy mode is enabled, show only immediate subfolders
134+
// also show index file in root folder
135+
if (subfolders) {
136+
const depth = entryPath.split('/').length;
137+
return path ? depth === 2 : depth <= 2;
138+
}
139+
133140
// only show immediate children
134141
return !entryPath.includes('/');
135142
});
@@ -145,7 +152,12 @@ function mapStateToProps(state, ownProps) {
145152

146153
if (collection.has('nested')) {
147154
const collectionFolder = collection.get('folder');
148-
entries = filterNestedEntries(filterTerm || '', collectionFolder, entries);
155+
entries = filterNestedEntries(
156+
filterTerm || '',
157+
collectionFolder,
158+
entries,
159+
collection.get('nested').get('subfolders') !== false,
160+
);
149161
}
150162
const entriesLoaded = selectEntriesLoaded(state.entries, collection.get('name'));
151163
const isFetching = selectIsFetching(state.entries, collection.get('name'));

0 commit comments

Comments
 (0)