Vanessa 2023-03-10 10:00:03 +08:00
parent c1d2259eac
commit 9d1c83ce37
7 changed files with 63 additions and 48 deletions

View file

@ -17,6 +17,9 @@ import {getWorkspaceName} from "../util/noRelyPCFunction";
import {needSubscribe} from "../util/needSubscribe";
export const lockScreen = () => {
if (window.siyuan.config.readonly) {
return
}
/// #if BROWSER
fetchPost("/api/system/logoutAuth", {}, () => {
window.location.href = `/check-auth?url=${window.location.href}`;

View file

@ -214,6 +214,9 @@ const renderRmNotebook = (element: HTMLElement) => {
};
export const openHistory = () => {
if (window.siyuan.config.readonly) {
return;
}
const exitDialog = window.siyuan.dialogs.find((item) => {
if (item.element.querySelector("#historyContainer")) {
item.destroy();

View file

@ -30,7 +30,7 @@ export const initBar = () => {
<span class="toolbar__text">${getWorkspaceName()}</span>
<svg class="toolbar__svg"><use xlink:href="#iconDown"></use></svg>
</div>
<div id="barSync" class="toolbar__item b3-tooltips b3-tooltips__se" aria-label="${window.siyuan.config.sync.stat || (window.siyuan.languages.syncNow + " " + updateHotkeyTip(window.siyuan.config.keymap.general.syncNow.custom))}">
<div id="barSync" class="toolbar__item b3-tooltips b3-tooltips__se${window.siyuan.config.readonly ? " fn__none" : ""}" aria-label="${window.siyuan.config.sync.stat || (window.siyuan.languages.syncNow + " " + updateHotkeyTip(window.siyuan.config.keymap.general.syncNow.custom))}">
<svg><use xlink:href="#iconCloudSucc"></use></svg>
</div>
<button id="barBack" data-menu="true" class="toolbar__item toolbar__item--disabled b3-tooltips b3-tooltips__se" aria-label="${window.siyuan.languages.goBack} ${updateHotkeyTip(window.siyuan.config.keymap.general.goBack.custom)}">
@ -40,14 +40,14 @@ export const initBar = () => {
<svg><use xlink:href="#iconForward"></use></svg>
</button>
<div class="fn__flex-1 fn__ellipsis" id="drag"><span class="fn__none">使 Development version, please backup before use</span></div>
<div id="toolbarVIP" class="fn__flex"></div>
<div id="toolbarVIP" class="fn__flex${window.siyuan.config.readonly ? " fn__none" : ""}"></div>
<div id="barSearch" class="toolbar__item b3-tooltips b3-tooltips__sw" aria-label="${window.siyuan.languages.globalSearch} ${updateHotkeyTip(window.siyuan.config.keymap.general.globalSearch.custom)}">
<svg><use xlink:href="#iconSearch"></use></svg>
</div>
<div id="barReadonly" class="toolbar__item b3-tooltips b3-tooltips__sw${window.siyuan.config.editor.readOnly ? " toolbar__item--active" : ""}" aria-label="${window.siyuan.languages.use} ${window.siyuan.config.editor.readOnly ? window.siyuan.languages.editMode : window.siyuan.languages.editReadonly} ${updateHotkeyTip(window.siyuan.config.keymap.general.editMode.custom)}">
<div id="barReadonly" class="toolbar__item b3-tooltips b3-tooltips__sw${window.siyuan.config.readonly ? " fn__none" : ""}${window.siyuan.config.editor.readOnly ? " toolbar__item--active" : ""}" aria-label="${window.siyuan.languages.use} ${window.siyuan.config.editor.readOnly ? window.siyuan.languages.editMode : window.siyuan.languages.editReadonly} ${updateHotkeyTip(window.siyuan.config.keymap.general.editMode.custom)}">
<svg><use xlink:href="#icon${window.siyuan.config.editor.readOnly ? "Preview" : "Edit"}"></use></svg>
</div>
<div id="barMode" class="toolbar__item b3-tooltips b3-tooltips__sw" aria-label="${window.siyuan.languages.appearanceMode}">
<div id="barMode" class="toolbar__item b3-tooltips b3-tooltips__sw${window.siyuan.config.readonly ? " fn__none" : ""}" aria-label="${window.siyuan.languages.appearanceMode}">
<svg><use xlink:href="#icon${window.siyuan.config.appearance.modeOS ? "Mode" : (window.siyuan.config.appearance.mode === 0 ? "Light" : "Dark")}"></use></svg>
</div>
<div class="fn__flex" id="windowControls"></div>`;
@ -112,8 +112,10 @@ export const initBar = () => {
event.stopPropagation();
break;
} else if (target.id === "toolbarVIP") {
const dialogSetting = openSetting();
dialogSetting.element.querySelector('.b3-tab-bar [data-name="account"]').dispatchEvent(new CustomEvent("click"));
if (!window.siyuan.config.readonly) {
const dialogSetting = openSetting();
dialogSetting.element.querySelector('.b3-tab-bar [data-name="account"]').dispatchEvent(new CustomEvent("click"));
}
event.stopPropagation();
break;
} else if (target.id === "barSearch") {

View file

@ -74,30 +74,32 @@ export const workspaceMenu = (rect: DOMRect) => {
submenu: dockMenu
}).element);
/// #if !BROWSER
const workspaceSubMenu: IMenu[] = [{
label: window.siyuan.languages.openBy + "...",
iconHTML: Constants.ZWSP,
click: async () => {
const localPath = await dialog.showOpenDialog({
defaultPath: window.siyuan.config.system.homeDir,
properties: ["openDirectory", "createDirectory"],
});
if (localPath.filePaths.length === 0) {
return;
if (!window.siyuan.config.readonly) {
const workspaceSubMenu: IMenu[] = [{
label: window.siyuan.languages.openBy + "...",
iconHTML: Constants.ZWSP,
click: async () => {
const localPath = await dialog.showOpenDialog({
defaultPath: window.siyuan.config.system.homeDir,
properties: ["openDirectory", "createDirectory"],
});
if (localPath.filePaths.length === 0) {
return;
}
openWorkspace(localPath.filePaths[0]);
}
openWorkspace(localPath.filePaths[0]);
}
}];
workspaceSubMenu.push({type: "separator"});
response.data.forEach((item: IWorkspace) => {
workspaceSubMenu.push(workspaceItem(item) as IMenu);
});
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.workspaceList,
icon: "iconWorkspace",
type: "submenu",
submenu: workspaceSubMenu,
}).element);
}];
workspaceSubMenu.push({type: "separator"});
response.data.forEach((item: IWorkspace) => {
workspaceSubMenu.push(workspaceItem(item) as IMenu);
});
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.workspaceList,
icon: "iconWorkspace",
type: "submenu",
submenu: workspaceSubMenu,
}).element);
}
/// #endif
window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element);
if (!window.siyuan.config.readonly) {
@ -155,24 +157,24 @@ export const workspaceMenu = (rect: DOMRect) => {
}
}],
}).element);
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.lockScreen,
icon: "iconLock",
accelerator: window.siyuan.config.keymap.general.lockScreen.custom,
click: () => {
lockScreen();
}
}).element);
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.dataHistory,
icon: "iconHistory",
accelerator: window.siyuan.config.keymap.general.dataHistory.custom,
click: () => {
openHistory();
}
}).element);
window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element);
}
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.lockScreen,
icon: "iconLock",
accelerator: window.siyuan.config.keymap.general.lockScreen.custom,
click: () => {
lockScreen();
}
}).element);
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.dataHistory,
icon: "iconHistory",
accelerator: window.siyuan.config.keymap.general.dataHistory.custom,
click: () => {
openHistory();
}
}).element);
window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element);
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.help,
icon: "iconHelp",

View file

@ -10,7 +10,7 @@ import {blockRender} from "../markdown/blockRender";
import {disabledForeverProtyle, disabledProtyle, enableProtyle} from "../util/onGet";
export const saveScroll = (protyle: IProtyle, getObject = false) => {
if (!protyle.wysiwyg.element.firstElementChild) {
if (!protyle.wysiwyg.element.firstElementChild || window.siyuan.config.readonly) {
// 报错或者空白页面
return undefined;
}

View file

@ -113,6 +113,9 @@ export const getSyncCloudList = (cloudPanelElement: Element, reload = false, cb?
};
export const syncGuide = (element?: Element) => {
if (window.siyuan.config.readonly) {
return;
}
if (element && element.classList.contains("toolbar__item--active")) {
return;
}

View file

@ -589,7 +589,9 @@ export const globalShortcut = () => {
return;
}
if (!isTabWindow && matchHotKey(window.siyuan.config.keymap.general.dataHistory.custom, event)) {
openHistory();
if (!window.siyuan.config.readonly) {
openHistory();
}
event.preventDefault();
return;
}