如何自訂 CODE 使用者介面並隱藏特定工具列

簡答:在 CODE 中,可透過「緊湊」或「選項卡式」視圖設定來變更工具列的整體樣式。要隱藏某個筆記本標籤或命令,支援的方法是使用 WOPI 主機的 PostMessage API;檢視器的常規選單無法永久移除所有使用者的單一命令。管理員可以為伺服器設定預設介面模式,而嵌入 CODE 的主機可以傳送會話層級的隱藏或顯示訊息。

選擇與您的存取權限相符的方法。如果您只需要更多文件空間,請折疊工具列或切換到緊湊視圖。如果您的 WOPI 整合需要省略「幫助」標籤或格式設定命令,請在編輯器準備好後發送相應的 PostMessage。如果您的目標是封鎖列印、下載或編輯等操作,也請使用相關的 WOPI 功能或權限;隱藏按鈕會改變顯示方式,但不會改變授權方式。

選擇合適的客製化方案

你想改變什麼使用此方法它的影響
預設使用簡潔選單或選項卡式筆記本欄user_interface.mode在伺服器配置中設定該 CODE 部署的預設介面模式
暫時為文件騰出更多空間從使用者介面折疊筆記本欄,或發送Collapse_Notebookbar隱藏標籤按鈕;使用者可以再次展開它們。
隱藏筆記本欄選項卡,例如「幫助」。傳送Hide_NotebookTabWOPI嵌入式編輯器會話中的一個標籤頁
隱藏編輯器介面中的一個命令傳送Hide_Command該指令的選單、工具列和上下文選單項
僅隱藏特定的工具列按鈕Hide_Button使用按鈕 ID傳送一個工具列按鈕;其 ID 可能會因 UI 和版本而異。

相關 SDK 手冊指出,Hide_NotebookTab該功能從 24.04.11.1 和Hide_Command24.04.11.2 版本開始可用。 CODE 發布套件和整合器建置版本可能有所不同,因此在依賴 API 訊息之前,請檢查您實際執行的伺服器版本。

更改緊湊視圖和選項卡視圖之間的預設設置

緊湊視圖使用選單和較小的工具列。選項卡式檢視將控制項分組到筆記本列標籤中。伺服器設定是user_interface.mode,支援的值是compact和tabbed。諸如classic和之類的舊標籤notebookbar已被棄用,請使用這些名稱。

基於瀏覽器的文件編輯器會在範例頁面上方顯示一個緊湊的選單行和一個狹窄的格式工具列。
簡潔視圖範例:編輯器在文件上方使用功能表行和窄格式工具列。

若要設定管理員控制的預設值,請編輯以下部分<mode>中的現有條目:<user_interface>coolwsd.xml

<user_interface>
  <mode type="string" desc="Controls the user interface style. The 'default' means: Take the value from ui_defaults, or decide for one of compact or tabbed (default|compact|tabbed)" default="default">tabbed</mode>
</user_interface>

請使用此選項compact代替tabbed緊湊選單。在實際的設定檔中,請修改現有的模式條目,而不是新增第二個條目。具體的配置路徑和重啟步驟取決於 CODE 是以軟體包、容器還是透過其他平台安裝的。請遵循該部署的配置方法,根據需要重新啟動或重新載入服務,並開啟一個新的文件會話以確認預設設定。

此設定會啟用預設介面模式,但不會隱藏任何特定命令。使用者或整合商可能已儲存介面偏好設置,這些設定會優先生效,具體取決於伺服器的已儲存 UI 狀態配置。如果某個瀏覽器始終以不同的視圖重新打開,請先測試一個全新的會話,並檢查整合商的使用者偏好設定行為,然後再變更更多伺服器設定。

折疊工具列而不刪除命令

如果目的只是為了增加文件空間,通常折疊選項卡式筆記本欄就足夠了。 SDK 的Collapse_Notebookbar訊息會隱藏筆記本列按鈕;選項卡名稱仍然可見,使用者可以再次展開控制項。同樣的訊息也會在緊湊視圖中隱藏按鈕條。這是一個可逆的顯示更改,並非禁用編輯功能。

文件編輯器會顯示一個選項卡式筆記本欄,其中包含「開始」、「插入」、「版面配置」、「審閱」、「檢視」和「幫助」選項卡,以及分組的格式控制項。
範例性標籤視圖,其中顯示了筆記本列標籤和分組格式控制項。

在支援的介面中,使用者還可以透過與選項卡條互動來折疊或展開筆記本欄。具體的單擊或雙擊操作可能會因視圖和版本而異。如果使用者需要恢復折疊的筆記本欄,請保持選項卡名稱可見,並在他們使用的相同程式碼版本中測試該操作。

在 WOPI 整合中隱藏一個選項卡或命令

會話級隱藏需要一個宿主應用程序,該應用程式將代碼嵌入到 iframe 中並能夠向其發送訊息。它不是可以貼上到任何設定檔中的通用設定coolwsd.xml。 PostMessage API 使用包含 `<username>` MessageId、時間戳記和選用參數的訊息Values。 WOPI 宿主必須先完成就緒交換,然後才能發送編輯器指令。請為宿主頁面配置 WOPI PostMessageOrigin,並使用代碼 iframe 的確切來源作為瀏覽器訊息目標;請勿使用萬用字元目標來源。

主機收到對應的App_LoadingStatus就緒事件並傳送訊息後Host_PostmessageReady,即可傳送隱藏訊息。例如,以下呼叫會隱藏目前開啟的編輯器會話中的「幫助」標籤和下劃線命令:

const frame = document.getElementById("collaboraFrame");
const collaboraOrigin = "https://office.example.com";

function sendToCollabora(MessageId, Values = {}) {
  frame.contentWindow.postMessage({
    MessageId,
    SendTime: Date.now(),
    Values
  }, collaboraOrigin);
}

// Call after the WOPI PostMessage readiness exchange.
sendToCollabora("Hide_NotebookTab", { id: "Help" });
sendToCollabora("Hide_Command", { id: ".uno:Underline" });
選項卡式編輯器顯示「開始」、「插入」、「版面配置」、「審閱」和「檢視」選項卡,「幫助」標籤已隱藏。
範例標籤視圖,其中「說明」標籤已隱藏,而筆記本欄中的其他標籤仍可見。
編輯器工具列省略了下劃線控件,而其他格式控制項仍然保留;主機程式碼窗格顯示了 .uno:Underline 的 Hide_Command 訊息。
WOPI 主機自訂範例:下劃線命令被隱藏,而工具列的其餘部分仍然可見。

請將此處替換office.example.com為您自己的 CODE iframe 的來源。此範例展示了訊息格式;請將其整合到宿主的實際 iframe 生命週期中,並在回應之前驗證傳入訊息的來源。 CODE 文件指出,先前發送的宿主訊息Host_PostmessageReady可能會被忽略。

你該使用哪一條訊息?

  • Hide_NotebookTab:在選項卡視圖中,它可以用於整個選項卡。它id是選項卡 ID,例如Help。Show_NotebookTab表示撤銷更改。此標籤在會話期間保持隱藏狀態,直到收到顯示訊息。
  • Hide_Command:當需要將命令從功能表、工具列和上下文功能表中移除時,請使用此選項。例如,`.` 表示該指令的 ID 為 ` .uno:Underline.`。此選項Show_Command會反轉其 ID。僅當希望將該命令從所有這些介面中移除時才使用此選項。
  • Hide_Button:當您只想隱藏單一按鈕而不是該命令的所有 UI 條目時,請使用此功能。它的 ID 是工具列按鈕 ID,不一定是 UNO 指令名稱。 Collabora 文件指出這些 ID 通常保持穩定,但不能保證始終如此;請根據您的特定版本和設備外形尺寸,對照原始碼進行確認。
  • Hide_Menubar此操作會隱藏整個功能表列。它並非針對單一指令進行控制,請勿與隱藏筆記本列標籤混淆。

postMessage API 適用於整合主機。如果您使用的是 Nextcloud、ownCloud 或其他平台,請在建立自訂主機程式碼之前,請檢查其連接器是否公開了支援的設定。避免將 CSS 注入到編輯器頁面中:這樣做在不同版本之間不穩定,並且只會隱藏控制項的視覺效果。

檢查此變更是否符合您的使用場景。

使用與使用者相同的瀏覽器、文件類型、權限和程式碼版本開啟測試文件。確認所選模式,檢查是否僅隱藏了預期的選項卡或命令,並測試對應的顯示訊息或工具列展開操作。如果您的整合支援 Writer、Calc 和 Impress,請對這三個模組重複上述步驟;不同模組的可用命令和工具列 ID 不一定相同。

如果隱藏控制項仍然顯示,請檢查傳送訊息的主機Host_PostmessageReady、其 WOPIPostMessageOrigin和 iframe 目標來源是否正確,以及訊息是否使用了預期的 ID 和拼字。此外,也要對照文件中記錄的功能基線檢查伺服器版本。成功的視覺隱藏並不會從底層文件引擎移除指令,也不會建立安全限制。請使用 WOPI 權限和後端策略進行存取控制。

官方參考資料

留下評論

修復程式碼文件編輯工作階段在 10 分鐘後斷開連線的問題

修復程式碼文件編輯工作階段在 10 分鐘後斷開連線的問題

檢查 WebSocket 逾時、代理規則、入口設定和 CODE 日誌,排查 Collabora Online CODE 會話在大約 10 分鐘後斷開連線的問題。

如何在 Collabora Online 程式碼中限製檔案匯出選項

如何在 Collabora Online 程式碼中限製檔案匯出選項

透過 WOPI CheckFileInfo 限制 Collabora Online 程式碼匯出。了解何時使用 DisableExport、HideExportOption 以及單獨的主機端下載控制。

如何自訂 CODE 使用者介面並隱藏特定工具列

如何自訂 CODE 使用者介面並隱藏特定工具列

了解如何透過 WOPI PostMessage API 在 CODE 中切換緊湊視圖和選項卡視圖、折疊筆記本欄以及隱藏特定選項卡或命令。

如何為 Collabora CODE 容器設定 SSL 終止

如何為 Collabora CODE 容器設定 SSL 終止

為 Collabora CODE 在 Nginx 後設定 SSL 終止,包括 Docker 設定、WebSocket 代理、驗證檢查和故障排除指南。

限制編輯以保護 Word 2010 文件

限制編輯以保護 Word 2010 文件

保護您的重要文件免受任何外部來源的侵害將非常有益。有時在撰寫文件時,迫切需要

Access 2010:建立資料庫表之間的關係

Access 2010:建立資料庫表之間的關係

關係型資料庫管理系統(如 Access 2010)的優點之一是可以輕鬆設定具有約束的表和關係,以使

MS Access 2010:使用 IFF 函數查詢

MS Access 2010:使用 IFF 函數查詢

在 MS Access 中,如果指定條件的計算結果為 TRUE,則 IIF 函數傳回一個值;如果計算結果為 FALSE,則傳回另一個值。 IIF 函數

Microsoft Word 2010 間距

Microsoft Word 2010 間距

間距在建立文件時非常重要,因為它會影響文件的外觀和呈現效果。您可以輕鬆增加或減少

Office Excel 2010 圖表與圖形

Office Excel 2010 圖表與圖形

圖表和圖形是呈現數據的絕佳方式。 Microsoft Excel 2010 提供幾乎所有類型的圖表,並簡化了繪製流程,以便

匯出/匯入功能區和快速存取工具列設定 [Office 2010]

匯出/匯入功能區和快速存取工具列設定 [Office 2010]

Microsoft Office 套件應用程式提供了最簡單的方法來自訂功能區、標籤和快速存取工具欄,但如果您需要安裝新的