Skip to content

Commit 5f48385

Browse files
committed
add endpoint to get KeywordIndex indexes
1 parent 5fdf327 commit 5f48385

8 files changed

Lines changed: 84 additions & 1 deletion

File tree

backend/src/kitconcept/keywordmanager/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"allowedRolesAndUsers",
1212
"getRawRelatedItems",
1313
"getEventType",
14+
"block_types",
1415
]
1516

1617
# A list of indexes that should always be reindexed when merging or deleting

backend/src/kitconcept/keywordmanager/services/configure.zcml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,12 @@
2727
name="@tags"
2828
/>
2929

30+
<plone:service
31+
method="GET"
32+
factory=".get.KeywordIndexesGet"
33+
for="zope.interface.Interface"
34+
permission="zope2.View"
35+
name="@keyword-indexes"
36+
/>
37+
3038
</configure>

backend/src/kitconcept/keywordmanager/services/get.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,9 @@ def reply(self):
2828
if batch.links:
2929
keywords_data["batching"] = batch.links
3030
return keywords_data
31+
32+
33+
class KeywordIndexesGet(Service):
34+
def reply(self):
35+
km = getUtility(IKeywordManager)
36+
return km.getKeywordIndexes()
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { GET_KEYWORD_INDEXES } from 'volto-keywordmanager/constants/KeywordIndexes';
2+
3+
export function getKeywordIndexes() {
4+
return {
5+
type: GET_KEYWORD_INDEXES,
6+
request: {
7+
op: 'get',
8+
path: '/@keyword-indexes',
9+
},
10+
};
11+
}

frontend/packages/volto-keywordmanager/src/components/KeywordManager.tsx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
deleteKeywords,
2424
updateKeywords,
2525
} from 'volto-keywordmanager/actions/keywords';
26+
import { getKeywordIndexes } from 'volto-keywordmanager/actions/keywordindexes';
2627

2728
import backSVG from '@plone/volto/icons/back.svg';
2829
import replaceSVG from '@plone/volto/icons/replace.svg';
@@ -56,6 +57,7 @@ const messages = defineMessages({
5657
const KeywordManager = (props) => {
5758
const { location } = props;
5859
const keywords = useSelector((state) => state.keywords);
60+
const keywordIndexes = useSelector((state) => state.keywordIndexes);
5961
const intl = useIntl();
6062
const dispatch = useDispatch();
6163
const isClient = useClient();
@@ -71,9 +73,11 @@ const KeywordManager = (props) => {
7173
const [isConfirmModalOpen, setIsConfirmModalOpen] = useState<boolean>(false);
7274
const [selectedRadio, setSelectedRadio] = useState<string>('select');
7375
const [name, setName] = useState<null | string>(null);
76+
const [index, setIndex] = useState<string>('Subject');
7477

7578
useEffect(() => {
7679
dispatch(getKeywords());
80+
dispatch(getKeywordIndexes());
7781
}, []);
7882

7983
const onShowKeyword = (kw: string) => {
@@ -116,6 +120,20 @@ const KeywordManager = (props) => {
116120
defaultMessage="Lorem Ipsum"
117121
/>
118122
</p>
123+
<div>
124+
{keywordIndexes?.items.length > 1 && (
125+
<Select
126+
label="Keyword field:"
127+
selectionMode="single"
128+
value={index}
129+
onChange={setIndex}
130+
items={keywordIndexes?.items.map((idx) => ({
131+
label: idx,
132+
value: idx,
133+
}))}
134+
/>
135+
)}
136+
</div>
119137
<div>
120138
<h2>Keywords</h2>
121139
<FormattedMessage

frontend/packages/volto-keywordmanager/src/config/settings.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { ConfigType } from '@plone/registry';
22
import KeywordManager from 'volto-keywordmanager/components/KeywordManager';
33
import { keywords } from 'volto-keywordmanager/reducers/keywords';
4+
import { keywordIndexes } from 'volto-keywordmanager/reducers/keywordIndexes';
45

56
export default function install(config: ConfigType) {
67
config.settings.controlpanels = [
@@ -20,7 +21,7 @@ export default function install(config: ConfigType) {
2021
},
2122
];
2223

23-
config.addonReducers = { ...config.addonReducers, keywords };
24+
config.addonReducers = { ...config.addonReducers, keywords, keywordIndexes };
2425

2526
return config;
2627
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const GET_KEYWORD_INDEXES = 'GET_KEYWORD_INDEXES';
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { GET_KEYWORD_INDEXES } from 'volto-keywordmanager/constants/KeywordIndexes';
2+
3+
const initalState = {
4+
error: null,
5+
items: [],
6+
loaded: false,
7+
loading: false,
8+
};
9+
10+
export function keywordIndexes(state = initalState, action = {}) {
11+
switch (action.type) {
12+
case `${GET_KEYWORD_INDEXES}_PENDING`:
13+
return {
14+
...state,
15+
error: null,
16+
loaded: false,
17+
loading: true,
18+
};
19+
case `${GET_KEYWORD_INDEXES}_SUCCESS`:
20+
return {
21+
...state,
22+
error: null,
23+
items: action.result,
24+
loaded: true,
25+
loading: false,
26+
};
27+
case `${GET_KEYWORD_INDEXES}_FAIL`:
28+
return {
29+
...state,
30+
error: action.error,
31+
loaded: false,
32+
loading: false,
33+
};
34+
default:
35+
return state;
36+
}
37+
}

0 commit comments

Comments
 (0)