[SSE mobile] Added protection for cells and objects

This commit is contained in:
SergeyEzhin 2021-10-07 20:44:04 +04:00
parent da148ca430
commit 0c145e9b6f
5 changed files with 64 additions and 51 deletions

View file

@ -4,10 +4,13 @@ import { f7 } from 'framework7-react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import ToolbarView from "../view/Toolbar"; import ToolbarView from "../view/Toolbar";
const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetInfo', 'storeFocusObjects', 'storeToolbarSettings')(observer(props => { const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetInfo', 'storeFocusObjects', 'storeToolbarSettings', 'storeWorksheets')(observer(props => {
const {t} = useTranslation(); const {t} = useTranslation();
const _t = t("Toolbar", { returnObjects: true }); const _t = t("Toolbar", { returnObjects: true });
const storeWorksheets = props.storeWorksheets;
const worksheetProtection = storeWorksheets.worksheetProtection;
const appOptions = props.storeAppOptions; const appOptions = props.storeAppOptions;
const isDisconnected = props.users.isDisconnected; const isDisconnected = props.users.isDisconnected;
@ -153,6 +156,7 @@ const ToolbarController = inject('storeAppOptions', 'users', 'storeSpreadsheetIn
showEditDocument={showEditDocument} showEditDocument={showEditDocument}
onEditDocument={onEditDocument} onEditDocument={onEditDocument}
isDisconnected={isDisconnected} isDisconnected={isDisconnected}
worksheetProtection={worksheetProtection}
/> />
) )
})); }));

View file

@ -101,7 +101,7 @@ export class storeWorksheets {
this.isProtectedWorkbook = value; this.isProtectedWorkbook = value;
} }
worksheetProtection; worksheetProtection = {wsLock: false, wsProps: ''};
setWorksheetProtection(value) { setWorksheetProtection(value) {
this.worksheetProtection = value; this.worksheetProtection = value;
} }

View file

@ -5,12 +5,14 @@ import EditorUIController from '../lib/patch'
const ToolbarView = props => { const ToolbarView = props => {
const isDisconnected = props.isDisconnected; const isDisconnected = props.isDisconnected;
const worksheetProtection = props.worksheetProtection;
const undo_box = props.isEdit && EditorUIController.toolbarOptions ? EditorUIController.toolbarOptions.getUndoRedo({ const undo_box = props.isEdit && EditorUIController.toolbarOptions ? EditorUIController.toolbarOptions.getUndoRedo({
disabledUndo: !props.isCanUndo || isDisconnected, disabledUndo: !props.isCanUndo || isDisconnected,
disabledRedo: !props.isCanRedo || isDisconnected, disabledRedo: !props.isCanRedo || isDisconnected,
onUndoClick: props.onUndo, onUndoClick: props.onUndo,
onRedoClick: props.onRedo onRedoClick: props.onRedo
}) : null; }) : null;
return ( return (
<Fragment> <Fragment>
<NavLeft> <NavLeft>
@ -25,6 +27,7 @@ const ToolbarView = props => {
} }
{props.isEdit && EditorUIController.toolbarOptions && EditorUIController.toolbarOptions.getEditOptions({ {props.isEdit && EditorUIController.toolbarOptions && EditorUIController.toolbarOptions.getEditOptions({
disabled: props.disabledEditControls || props.disabledControls || isDisconnected, disabled: props.disabledEditControls || props.disabledControls || isDisconnected,
worksheetProtection,
onEditClick: () => props.openOptions('edit'), onEditClick: () => props.openOptions('edit'),
onAddClick: () => props.openOptions('add') onAddClick: () => props.openOptions('add')
})} })}

View file

@ -44,8 +44,9 @@ const EditCell = props => {
onFontSize: props.onFontSize, onFontSize: props.onFontSize,
onFontClick: props.onFontClick onFontClick: props.onFontClick
}}/> }}/>
{!wsLock && !wsProps.FormatCells && {!wsLock || !wsProps.FormatCells &&
<> <>
<List>
<ListItem className='buttons'> <ListItem className='buttons'>
<Row> <Row>
<a className={'button' + (isBold ? ' active' : '')} onClick={() => {props.toggleBold(!isBold)}}><b>B</b></a> <a className={'button' + (isBold ? ' active' : '')} onClick={() => {props.toggleBold(!isBold)}}><b>B</b></a>
@ -92,6 +93,7 @@ const EditCell = props => {
<Icon slot="media" icon="icon-table-borders-all"></Icon> : null <Icon slot="media" icon="icon-table-borders-all"></Icon> : null
} }
</ListItem> </ListItem>
</List>
<List> <List>
<ListItem title={_t.textFormat} link="/edit-format-cell/" routeProps={{ <ListItem title={_t.textFormat} link="/edit-format-cell/" routeProps={{
onCellFormat: props.onCellFormat, onCellFormat: props.onCellFormat,

View file

@ -197,6 +197,10 @@ const PageSpreadsheetSettings = props => {
const { t } = useTranslation(); const { t } = useTranslation();
const _t = t('View.Settings', {returnObjects: true}); const _t = t('View.Settings', {returnObjects: true});
const storeSpreadsheetSettings = props.storeSpreadsheetSettings; const storeSpreadsheetSettings = props.storeSpreadsheetSettings;
const storeWorksheets = props.storeWorksheets;
const worksheetProtection = storeWorksheets.worksheetProtection;
const wsLock = worksheetProtection.wsLock;
const wsProps = worksheetProtection.wsProps;
const isPortrait = storeSpreadsheetSettings.isPortrait; const isPortrait = storeSpreadsheetSettings.isPortrait;
const isHideHeadings = storeSpreadsheetSettings.isHideHeadings; const isHideHeadings = storeSpreadsheetSettings.isHideHeadings;
const isHideGridlines = storeSpreadsheetSettings.isHideGridlines; const isHideGridlines = storeSpreadsheetSettings.isHideGridlines;
@ -253,7 +257,7 @@ const PageSpreadsheetSettings = props => {
</ListItem> </ListItem>
</List> </List>
<List> <List>
<ListItem title={_t.textColorSchemes} link="/color-schemes/" routeProps={{ <ListItem title={_t.textColorSchemes} className={wsLock && wsProps.FormatCells ? 'disabled' : ''} link="/color-schemes/" routeProps={{
onColorSchemeChange: props.onColorSchemeChange, onColorSchemeChange: props.onColorSchemeChange,
initPageColorSchemes: props.initPageColorSchemes initPageColorSchemes: props.initPageColorSchemes
}}></ListItem> }}></ListItem>
@ -264,7 +268,7 @@ const PageSpreadsheetSettings = props => {
const SpreadsheetFormats = inject("storeSpreadsheetSettings")(observer(PageSpreadsheetFormats)); const SpreadsheetFormats = inject("storeSpreadsheetSettings")(observer(PageSpreadsheetFormats));
const SpreadsheetMargins = inject("storeSpreadsheetSettings")(observer(PageSpreadsheetMargins)); const SpreadsheetMargins = inject("storeSpreadsheetSettings")(observer(PageSpreadsheetMargins));
const SpreadsheetSettings = inject("storeSpreadsheetSettings")(observer(PageSpreadsheetSettings)); const SpreadsheetSettings = inject("storeSpreadsheetSettings", "storeWorksheets")(observer(PageSpreadsheetSettings));
const SpreadsheetColorSchemes = inject("storeSpreadsheetSettings")(observer(PageSpreadsheetColorSchemes)); const SpreadsheetColorSchemes = inject("storeSpreadsheetSettings")(observer(PageSpreadsheetColorSchemes));
export { export {