|
@@ -13,6 +13,7 @@ import { createSubscribedElement } from './UnstatedUtils';
|
|
|
import AppContainer from '../services/AppContainer';
|
|
import AppContainer from '../services/AppContainer';
|
|
|
import PageContainer from '../services/PageContainer';
|
|
import PageContainer from '../services/PageContainer';
|
|
|
import PagePathAutoComplete from './PagePathAutoComplete';
|
|
import PagePathAutoComplete from './PagePathAutoComplete';
|
|
|
|
|
+import ApiErrorMessage from './PageManagement/ApiErrorMessage';
|
|
|
|
|
|
|
|
const PageDuplicateModal = (props) => {
|
|
const PageDuplicateModal = (props) => {
|
|
|
const { t, appContainer, pageContainer } = props;
|
|
const { t, appContainer, pageContainer } = props;
|
|
@@ -23,6 +24,7 @@ const PageDuplicateModal = (props) => {
|
|
|
const { crowi } = appContainer.config;
|
|
const { crowi } = appContainer.config;
|
|
|
|
|
|
|
|
const [pageNameInput, setPageNameInput] = useState(path);
|
|
const [pageNameInput, setPageNameInput] = useState(path);
|
|
|
|
|
+ const [errorMessage, setErrorMessage] = useState(null);
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* change pageNameInput
|
|
* change pageNameInput
|
|
@@ -34,14 +36,14 @@ const PageDuplicateModal = (props) => {
|
|
|
|
|
|
|
|
async function clickDuplicateButtonHandler() {
|
|
async function clickDuplicateButtonHandler() {
|
|
|
try {
|
|
try {
|
|
|
|
|
+ setErrorMessage(null);
|
|
|
const res = await appContainer.apiPost('/pages.duplicate', { page_id: pageId, new_path: pageNameInput });
|
|
const res = await appContainer.apiPost('/pages.duplicate', { page_id: pageId, new_path: pageNameInput });
|
|
|
- const page = res.page;
|
|
|
|
|
|
|
+ const { page } = res;
|
|
|
window.location.href = `${page.path}?duplicated=${path}`;
|
|
window.location.href = `${page.path}?duplicated=${path}`;
|
|
|
}
|
|
}
|
|
|
catch (err) {
|
|
catch (err) {
|
|
|
- console.log(err.message);
|
|
|
|
|
|
|
+ setErrorMessage(err.message);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -77,7 +79,7 @@ const PageDuplicateModal = (props) => {
|
|
|
</div>
|
|
</div>
|
|
|
</ModalBody>
|
|
</ModalBody>
|
|
|
<ModalFooter>
|
|
<ModalFooter>
|
|
|
- {/* TODO add error massage */}
|
|
|
|
|
|
|
+ <ApiErrorMessage errorMessage={errorMessage} />
|
|
|
<button type="button" className="btn btn-primary" onClick={clickDuplicateButtonHandler}>Duplicate page</button>
|
|
<button type="button" className="btn btn-primary" onClick={clickDuplicateButtonHandler}>Duplicate page</button>
|
|
|
</ModalFooter>
|
|
</ModalFooter>
|
|
|
</Modal>
|
|
</Modal>
|