Explorar o código

Display a dialog box when clicking on a conductor

Shun Miyazawa hai 1 ano
pai
achega
43d1bf89ca

+ 10 - 7
apps/app/src/client/components/Common/Dropdown/PageItemControl.tsx

@@ -27,6 +27,7 @@ export const MenuItemType = {
   DELETE: 'delete',
   DELETE: 'delete',
   REVERT: 'revert',
   REVERT: 'revert',
   PATH_RECOVERY: 'pathRecovery',
   PATH_RECOVERY: 'pathRecovery',
+  SYNC_LATEST_REVISION_BODY: 'syncLatestRevisionBody',
   SWITCH_CONTENT_WIDTH: 'switch_content_width',
   SWITCH_CONTENT_WIDTH: 'switch_content_width',
 } as const;
 } as const;
 export type MenuItemType = typeof MenuItemType[keyof typeof MenuItemType];
 export type MenuItemType = typeof MenuItemType[keyof typeof MenuItemType];
@@ -220,13 +221,15 @@ const PageItemControlDropdownMenu = React.memo((props: DropdownMenuProps): JSX.E
         ) }
         ) }
 
 
         {/* SyncLatestRevisionBody */}
         {/* SyncLatestRevisionBody */}
-        <DropdownItem
-          onClick={syncLatestRevisionBodyHandler}
-          className="grw-page-control-dropdown-item"
-        >
-          <span className="material-symbols-outlined me-1 grw-page-control-dropdown-icon">sync</span>
-          {t('SyncLatestRevisionBody')}
-        </DropdownItem>
+        { !forceHideMenuItems?.includes(MenuItemType.SYNC_LATEST_REVISION_BODY) && isEnableActions && !isReadOnlyUser && (
+          <DropdownItem
+            onClick={syncLatestRevisionBodyHandler}
+            className="grw-page-control-dropdown-item"
+          >
+            <span className="material-symbols-outlined me-1 grw-page-control-dropdown-icon">sync</span>
+            {t('SyncLatestRevisionBody')}
+          </DropdownItem>
+        )}
 
 
         { AdditionalMenuItems && (
         { AdditionalMenuItems && (
           <>
           <>

+ 9 - 0
apps/app/src/client/components/Navbar/GrowiContextualSubNavigation.tsx

@@ -256,6 +256,14 @@ const GrowiContextualSubNavigation = (props: GrowiContextualSubNavigationProps):
     openDeleteModal([pageWithMeta], { onDeleted: deletedHandler });
     openDeleteModal([pageWithMeta], { onDeleted: deletedHandler });
   }, [currentPathname, mutateCurrentPage, openDeleteModal, router, mutatePageInfo]);
   }, [currentPathname, mutateCurrentPage, openDeleteModal, router, mutatePageInfo]);
 
 
+  const syncLatestRevisionBodyHandler = useCallback(async(pageId: string) => {
+    // eslint-disable-next-line no-alert
+    const answer = window.confirm(t('sync-latest-reevision-body.confirm'));
+    if (answer) {
+      //
+    }
+  }, [t]);
+
   const switchContentWidthHandler = useCallback(async(pageId: string, value: boolean) => {
   const switchContentWidthHandler = useCallback(async(pageId: string, value: boolean) => {
     if (!isSharedPage) {
     if (!isSharedPage) {
       await updateContentWidth(pageId, value);
       await updateContentWidth(pageId, value);
@@ -331,6 +339,7 @@ const GrowiContextualSubNavigation = (props: GrowiContextualSubNavigationProps):
                 onClickDuplicateMenuItem={duplicateItemClickedHandler}
                 onClickDuplicateMenuItem={duplicateItemClickedHandler}
                 onClickRenameMenuItem={renameItemClickedHandler}
                 onClickRenameMenuItem={renameItemClickedHandler}
                 onClickDeleteMenuItem={deleteItemClickedHandler}
                 onClickDeleteMenuItem={deleteItemClickedHandler}
+                onClickSyncLatestRevisionBodyMenuItem={syncLatestRevisionBodyHandler}
                 onClickSwitchContentWidth={switchContentWidthHandler}
                 onClickSwitchContentWidth={switchContentWidthHandler}
               />
               />
             )}
             )}

+ 12 - 1
apps/app/src/client/components/PageControls/PageControls.tsx

@@ -113,6 +113,7 @@ type CommonProps = {
   onClickDuplicateMenuItem?: (pageToDuplicate: IPageForPageDuplicateModal) => void,
   onClickDuplicateMenuItem?: (pageToDuplicate: IPageForPageDuplicateModal) => void,
   onClickRenameMenuItem?: (pageToRename: IPageToRenameWithMeta) => void,
   onClickRenameMenuItem?: (pageToRename: IPageToRenameWithMeta) => void,
   onClickDeleteMenuItem?: (pageToDelete: IPageToDeleteWithMeta) => void,
   onClickDeleteMenuItem?: (pageToDelete: IPageToDeleteWithMeta) => void,
+  onClickSyncLatestRevisionBodyMenuItem?: (pageId: string) => void,
   onClickSwitchContentWidth?: (pageId: string, value: boolean) => void,
   onClickSwitchContentWidth?: (pageId: string, value: boolean) => void,
 }
 }
 
 
@@ -126,7 +127,8 @@ const PageControlsSubstance = (props: PageControlsSubstanceProps): JSX.Element =
     pageInfo,
     pageInfo,
     pageId, revisionId, path, shareLinkId, expandContentWidth,
     pageId, revisionId, path, shareLinkId, expandContentWidth,
     disableSeenUserInfoPopover, hideSubControls, showPageControlDropdown, forceHideMenuItems, additionalMenuItemRenderer,
     disableSeenUserInfoPopover, hideSubControls, showPageControlDropdown, forceHideMenuItems, additionalMenuItemRenderer,
-    onClickEditTagsButton, onClickDuplicateMenuItem, onClickRenameMenuItem, onClickDeleteMenuItem, onClickSwitchContentWidth,
+    onClickEditTagsButton, onClickDuplicateMenuItem, onClickRenameMenuItem,
+    onClickDeleteMenuItem, onClickSyncLatestRevisionBodyMenuItem, onClickSwitchContentWidth,
   } = props;
   } = props;
 
 
   const { data: isGuestUser } = useIsGuestUser();
   const { data: isGuestUser } = useIsGuestUser();
@@ -225,6 +227,14 @@ const PageControlsSubstance = (props: PageControlsSubstanceProps): JSX.Element =
     onClickDeleteMenuItem(pageToDelete);
     onClickDeleteMenuItem(pageToDelete);
   }, [onClickDeleteMenuItem, pageId, pageInfo, path, revisionId]);
   }, [onClickDeleteMenuItem, pageId, pageInfo, path, revisionId]);
 
 
+  const syncLatestRevisionBodyMenuItemClickHandler = useCallback(async() => {
+    if (onClickSyncLatestRevisionBodyMenuItem == null || path == null) {
+      return;
+    }
+
+    onClickSyncLatestRevisionBodyMenuItem(pageId);
+  }, [onClickSyncLatestRevisionBodyMenuItem, pageId, path]);
+
   const switchContentWidthClickHandler = useCallback(() => {
   const switchContentWidthClickHandler = useCallback(() => {
 
 
     const newValue = !expandContentWidth;
     const newValue = !expandContentWidth;
@@ -331,6 +341,7 @@ const PageControlsSubstance = (props: PageControlsSubstanceProps): JSX.Element =
           additionalMenuItemRenderer={additionalMenuItemRenderer}
           additionalMenuItemRenderer={additionalMenuItemRenderer}
           onClickRenameMenuItem={renameMenuItemClickHandler}
           onClickRenameMenuItem={renameMenuItemClickHandler}
           onClickDuplicateMenuItem={duplicateMenuItemClickHandler}
           onClickDuplicateMenuItem={duplicateMenuItemClickHandler}
+          onClickSyncLatestRevisionBodyMenuItem={syncLatestRevisionBodyMenuItemClickHandler}
           onClickDeleteMenuItem={deleteMenuItemClickHandler}
           onClickDeleteMenuItem={deleteMenuItemClickHandler}
         />
         />
       )}
       )}