如何自訂 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 權限和後端策略進行存取控制。

官方參考資料

留下評論

如何在 Microsoft Word 中移動圖片

如何在 Microsoft Word 中移動圖片

學習如何在 Word 中拖曳圖片、選擇文字環繞方式、將圖片與段落保持在一起或將其固定在頁面上,以及如何解決圖片無法移動的問題。

如何在 Excel 中插入複選框:兩種簡易方法

如何在 Excel 中插入複選框:兩種簡易方法

學習如何使用儲存格內工具在 Excel 中插入複選框,使用公式計算選取項目的數量,或在舊版桌面 Excel 中新增連結的表單控制項。

如何在 Excel 中自動填充字母:從 A 到 Z 及其他

如何在 Excel 中自動填充字母:從 A 到 Z 及其他

使用填充柄公式、SEQUENCE 或可重複使用的自訂清單在 Excel 中產生 A 到 Z、小寫字母或 Z 以上的標籤。

如何在 Excel 中新增刪除線:快捷鍵和逐步指南

如何在 Excel 中新增刪除線:快捷鍵和逐步指南

學習如何在 Windows、Mac 和網頁版 Excel 中新增刪除線、設定儲存格部分格式以及刪除線條而不刪除其值。

什麼是 Microsoft Access?它的資料庫工具是如何運作的?

什麼是 Microsoft Access?它的資料庫工具是如何運作的?

Microsoft Access 是一款 Windows 資料庫應用程序,用於儲存相關記錄、建立查詢、建立資料輸入表單和產生報表。了解它的工作原理以及適用場景。

如何在 Word 2010 中變更網格線高度和寬度

如何在 Word 2010 中變更網格線高度和寬度

了解如何在 Word 2010 中調整網格線高度和寬度、變更可見線頻率以及設定底層水平和垂直繪圖網格間距。

Office Outlook 2010 匯入和匯出:使用 PST 檔案移動數據

Office Outlook 2010 匯入和匯出:使用 PST 檔案移動數據

了解如何將 PST 檔案匯入 Outlook 2010 或匯出郵件、聯絡人、行事曆和任務。按照正確的選單操作,避免遺漏資料夾或重複文件。

使用 Nucleus Kernel 還原 Outlook PST 密碼

使用 Nucleus Kernel 還原 Outlook PST 密碼

使用 Kernel 的目前步驟還原忘記的 Outlook PST 密碼,包括如何識別正確的檔案、進行備份以及檢查工具的限制。

如何在 PowerPoint 幻燈片中插入網頁鏈接

如何在 PowerPoint 幻燈片中插入網頁鏈接

使用 LiveWeb 外掛程式將網站放置在 PowerPoint 投影片上,設定其大小和刷新行為,並在簡報前檢查相容性。

如何在 Word 2010 中變更預設字體和正文樣式

如何在 Word 2010 中變更預設字體和正文樣式

在 Word 2010 中設定預設字體、字號和文字效果,將選擇儲存到 Normal.dotm,然後修改 Normal 樣式以用於以後的文件。