Просмотр исходного кода

Merge pull request #2484 from weseek/display-all-pages-for-output-

Display all pages for output
yusuketk 5 лет назад
Родитель
Сommit
6e156bbffc

+ 1 - 0
resource/locales/en_US/translation.json

@@ -708,6 +708,7 @@
   },
   "export_bulk": {
     "failed_to_export": "Failed to export",
+    "failed_to_count_pages": "Failed to count pages",
     "export_page_markdown": "Export page as Markdown",
     "export_page_pdf": "Export page as PDF"
   },

+ 1 - 0
resource/locales/ja_JP/translation.json

@@ -700,6 +700,7 @@
   },
   "export_bulk": {
     "failed_to_export": "ページのエクスポートに失敗しました",
+    "failed_to_count_pages": "ページ数の取得に失敗しました",
     "export_page_markdown": "マークダウン形式でページをエクスポート",
     "export_page_pdf": "PDF形式でページをエクスポート"
   },

+ 6 - 0
src/client/js/components/ArchiveCreateModal.jsx

@@ -217,6 +217,9 @@ const ArchiveCreateModal = (props) => {
         </div>
       </ModalBody>
       <ModalFooter>
+        {/* TO DO implement correct number at GW-3053 */}
+        合計{props.totalPages}ページ取得
+        {props.errorMessage}
         <button type="button" className="btn btn-primary" onClick={done}>
           Done
         </button>
@@ -233,6 +236,9 @@ ArchiveCreateModal.propTypes = {
   isOpen: PropTypes.bool.isRequired,
   onClose: PropTypes.func,
   path: PropTypes.string.isRequired,
+  totalPages: PropTypes.number,
+  errorMessage: PropTypes.string,
+
 };
 
 export default withTranslation()(ArchiveCreateModalWrapper);

+ 20 - 2
src/client/js/components/Page/PageShareManagement.jsx

@@ -15,13 +15,17 @@ import ArchiveCreateModal from '../ArchiveCreateModal';
 const PageShareManagement = (props) => {
   const { t, appContainer, pageContainer } = props;
 
-  const { path } = pageContainer.state;
+  const { path, pageId } = pageContainer.state;
   const { currentUser } = appContainer;
 
   const [isOutsideShareLinkModalShown, setIsOutsideShareLinkModalShown] = useState(false);
 
   const [isArchiveCreateModalShown, setIsArchiveCreateModalShown] = useState(false);
 
+  const [totalPages, setTotalPages] = useState(null);
+
+  const [errorMessage, setErrorMessage] = useState(null);
+
   function openOutsideShareLinkModalHandler() {
     setIsOutsideShareLinkModalShown(true);
   }
@@ -32,7 +36,6 @@ const PageShareManagement = (props) => {
 
 
   async function getExportPageFile(type) {
-    const pageId = pageContainer.state.pageId;
     try {
       const res = await appContainer.apiv3Get('/pages/export', { pageId, type });
       return res;
@@ -42,6 +45,16 @@ const PageShareManagement = (props) => {
     }
   }
 
+  async function getArchivePageData() {
+    try {
+      const res = await appContainer.apiv3Get('page/count-children-pages', { pageId });
+      setTotalPages(res.data.dummy);
+    }
+    catch (err) {
+      setErrorMessage(t('export_bulk.failed_to_count_pages'));
+    }
+  }
+
   function exportPage(exportPageFile) {
     // TODO implement
   }
@@ -50,10 +63,13 @@ const PageShareManagement = (props) => {
     const exportPageFile = getExportPageFile(type);
     exportPage(exportPageFile);
   }
+
   function openArchiveModalHandler() {
     setIsArchiveCreateModalShown(true);
+    getArchivePageData();
   }
 
+
   function closeArchiveCreateModalHandler() {
     setIsArchiveCreateModalShown(false);
   }
@@ -71,6 +87,8 @@ const PageShareManagement = (props) => {
           isOpen={isArchiveCreateModalShown}
           onClose={closeArchiveCreateModalHandler}
           path={path}
+          errorMessage={errorMessage}
+          totalPages={totalPages}
         />
       </>
     );

+ 11 - 0
src/server/routes/apiv3/page.js

@@ -257,5 +257,16 @@ module.exports = (crowi) => {
     });
   });
 
+  router.get('/count-children-pages', accessTokenParser, loginRequired, async(req, res) => {
+
+    // TO DO implement correct number at another task
+
+    const { pageId } = req.query;
+    console.log(pageId);
+
+    const dummy = 6;
+    return res.apiv3({ dummy });
+  });
+
   return router;
 };