소스 검색

Merge branch 'feat/bulk-export-pages-for-merge' into feat/define-archive-model

yusuketk 5 년 전
부모
커밋
375eaef31e
1개의 변경된 파일66개의 추가작업 그리고 1개의 파일을 삭제
  1. 66 1
      src/client/js/components/Page/PageShareManagement.jsx

+ 66 - 1
src/client/js/components/Page/PageShareManagement.jsx

@@ -3,17 +3,24 @@ import PropTypes from 'prop-types';
 import { UncontrolledTooltip } from 'reactstrap';
 import { UncontrolledTooltip } from 'reactstrap';
 import { withTranslation } from 'react-i18next';
 import { withTranslation } from 'react-i18next';
 import { withUnstatedContainers } from '../UnstatedUtils';
 import { withUnstatedContainers } from '../UnstatedUtils';
+
 import AppContainer from '../../services/AppContainer';
 import AppContainer from '../../services/AppContainer';
 import PageContainer from '../../services/PageContainer';
 import PageContainer from '../../services/PageContainer';
 import OutsideShareLinkModal from '../OutsideShareLinkModal';
 import OutsideShareLinkModal from '../OutsideShareLinkModal';
 
 
+import { toastError } from '../../util/apiNotification';
+
+import ArchiveCreateModal from '../ArchiveCreateModal';
+
 const PageShareManagement = (props) => {
 const PageShareManagement = (props) => {
   const { t, appContainer, pageContainer } = props;
   const { t, appContainer, pageContainer } = props;
 
 
+  const { path } = pageContainer.state;
   const { currentUser } = appContainer;
   const { currentUser } = appContainer;
 
 
   const [isOutsideShareLinkModalShown, setIsOutsideShareLinkModalShown] = useState(false);
   const [isOutsideShareLinkModalShown, setIsOutsideShareLinkModalShown] = useState(false);
 
 
+  const [isArchiveCreateModalShown, setIsArchiveCreateModalShown] = useState(false);
 
 
   function openOutsideShareLinkModalHandler() {
   function openOutsideShareLinkModalHandler() {
     setIsOutsideShareLinkModalShown(true);
     setIsOutsideShareLinkModalShown(true);
@@ -23,6 +30,35 @@ const PageShareManagement = (props) => {
     setIsOutsideShareLinkModalShown(false);
     setIsOutsideShareLinkModalShown(false);
   }
   }
 
 
+
+  async function getExportPageFile(type) {
+    const pageId = pageContainer.state.pageId;
+    try {
+      const res = await appContainer.apiv3Get('/pages/export', { pageId, type });
+      return res;
+    }
+    catch (err) {
+      toastError(Error(t('export_bulk.failed_to_export')));
+    }
+  }
+
+  function exportPage(exportPageFile) {
+    // TODO implement
+  }
+
+  function exportPageHundler(type) {
+    const exportPageFile = getExportPageFile(type);
+    exportPage(exportPageFile);
+  }
+  function openArchiveModalHandler() {
+    setIsArchiveCreateModalShown(true);
+  }
+
+  function closeArchiveCreateModalHandler() {
+    setIsArchiveCreateModalShown(false);
+  }
+
+
   function renderModals() {
   function renderModals() {
     return (
     return (
       <>
       <>
@@ -30,6 +66,12 @@ const PageShareManagement = (props) => {
           isOpen={isOutsideShareLinkModalShown}
           isOpen={isOutsideShareLinkModalShown}
           onClose={closeOutsideShareLinkModalHandler}
           onClose={closeOutsideShareLinkModalHandler}
         />
         />
+
+        <ArchiveCreateModal
+          isOpen={isArchiveCreateModalShown}
+          onClose={closeArchiveCreateModalHandler}
+          path={path}
+        />
       </>
       </>
     );
     );
   }
   }
@@ -71,9 +113,32 @@ const PageShareManagement = (props) => {
       {currentUser == null ? renderGuestUser() : renderCurrentUser()}
       {currentUser == null ? renderGuestUser() : renderCurrentUser()}
       <div className="dropdown-menu dropdown-menu-right">
       <div className="dropdown-menu dropdown-menu-right">
         <button className="dropdown-item" type="button" onClick={openOutsideShareLinkModalHandler}>
         <button className="dropdown-item" type="button" onClick={openOutsideShareLinkModalHandler}>
-          <i className="icon-fw icon-link"></i>{t('Shere this page link to public')}
+          <i className="icon-fw icon-link"></i>
+          {t('Shere this page link to public')}
           <span className="ml-2 badge badge-info badge-pill">{pageContainer.state.shareLinksNumber}</span>
           <span className="ml-2 badge badge-info badge-pill">{pageContainer.state.shareLinksNumber}</span>
         </button>
         </button>
+        <button
+          type="button"
+          className="dropdown-item"
+          onClick={() => {
+            exportPageHundler('markdown');
+          }}
+        >
+          <span>{t('export_bulk.export_page_markdown')}</span>
+        </button>
+        <button
+          type="button"
+          className="dropdown-item"
+          onClick={() => {
+            exportPageHundler('pdf');
+          }}
+        >
+          <span>{t('export_bulk.export_page_pdf')}</span>
+        </button>
+
+        <button className="dropdown-item" type="button" onClick={openArchiveModalHandler}>
+          <i className="icon-fw"></i>{t('Create Archive Page')}
+        </button>
       </div>
       </div>
       {renderModals()}
       {renderModals()}
     </>
     </>