[DE mobile] changes for private Editor controller
This commit is contained in:
parent
84650bb71d
commit
b0c9a1c5d2
|
@ -7,6 +7,7 @@ import { LocalStorage } from '../../../../common/mobile/utils/LocalStorage';
|
|||
import ContextMenuController from '../../../../common/mobile/lib/controller/ContextMenu';
|
||||
import { idContextMenuElement } from '../../../../common/mobile/lib/view/ContextMenu';
|
||||
import { Device } from '../../../../common/mobile/utils/device';
|
||||
import EditorUIController from '../lib/patch';
|
||||
|
||||
@inject ( stores => ({
|
||||
isEdit: stores.storeAppOptions.isEdit,
|
||||
|
@ -64,28 +65,25 @@ class ContextMenu extends ContextMenuController {
|
|||
onMenuItemClick(action) {
|
||||
super.onMenuItemClick(action);
|
||||
|
||||
if ( EditorUIController.ContextMenu.handleMenuItemClick(this, action) )
|
||||
return;
|
||||
|
||||
const api = Common.EditorApi.get();
|
||||
switch (action) {
|
||||
case 'cut':
|
||||
if (!api.Cut() && !LocalStorage.getBool("de-hide-copy-cut-paste-warning")) {
|
||||
if ( !LocalStorage.getBool("de-hide-copy-cut-paste-warning") )
|
||||
this.showCopyCutPasteModal();
|
||||
}
|
||||
|
||||
break;
|
||||
case 'copy':
|
||||
if (!api.Copy() && !LocalStorage.getBool("de-hide-copy-cut-paste-warning")) {
|
||||
if ( !LocalStorage.getBool("de-hide-copy-cut-paste-warning") )
|
||||
this.showCopyCutPasteModal();
|
||||
}
|
||||
|
||||
break;
|
||||
case 'paste':
|
||||
if (!api.Paste() && !LocalStorage.getBool("de-hide-copy-cut-paste-warning")) {
|
||||
if ( !LocalStorage.getBool("de-hide-copy-cut-paste-warning") )
|
||||
this.showCopyCutPasteModal();
|
||||
}
|
||||
break;
|
||||
case 'addcomment':
|
||||
Common.Notifications.trigger('addcomment');
|
||||
break;
|
||||
case 'viewcomment':
|
||||
Common.Notifications.trigger('viewcomment');
|
||||
|
||||
break;
|
||||
case 'review':
|
||||
setTimeout(() => {
|
||||
|
@ -97,18 +95,9 @@ class ContextMenu extends ContextMenuController {
|
|||
this.props.openOptions('coauth', 'cm-review-change');
|
||||
}, 400);
|
||||
break;
|
||||
case 'merge':
|
||||
api.MergeCells();
|
||||
break;
|
||||
case 'split':
|
||||
this.showSplitModal();
|
||||
break;
|
||||
case 'delete':
|
||||
api.asc_Remove();
|
||||
break;
|
||||
case 'deletetable':
|
||||
api.remTable();
|
||||
break;
|
||||
case 'edit':
|
||||
setTimeout(() => {
|
||||
this.props.openOptions('edit');
|
||||
|
@ -117,17 +106,7 @@ class ContextMenu extends ContextMenuController {
|
|||
case 'addlink':
|
||||
setTimeout(() => {
|
||||
this.props.openOptions('add', 'link');
|
||||
}, 400)
|
||||
break;
|
||||
case 'openlink':
|
||||
const stack = Common.EditorApi.get().getSelectedElements();
|
||||
let value;
|
||||
stack.forEach((item) => {
|
||||
if (item.get_ObjectType() == Asc.c_oAscTypeSelectElement.Hyperlink) {
|
||||
value = item.get_ObjectValue().get_Value();
|
||||
}
|
||||
});
|
||||
value && this.openLink(value);
|
||||
}, 400);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -228,196 +207,7 @@ class ContextMenu extends ContextMenuController {
|
|||
initMenuItems() {
|
||||
if ( !Common.EditorApi ) return [];
|
||||
|
||||
const { t } = this.props;
|
||||
const _t = t("ContextMenu", { returnObjects: true });
|
||||
|
||||
const { isEdit, canViewComments, canReview, isDisconnected } = this.props;
|
||||
|
||||
const api = Common.EditorApi.get();
|
||||
const stack = api.getSelectedElements();
|
||||
const canCopy = api.can_CopyCut();
|
||||
|
||||
let itemsIcon = [],
|
||||
itemsText = [];
|
||||
|
||||
if ( canCopy ) {
|
||||
itemsIcon.push({
|
||||
event: 'copy',
|
||||
icon: 'icon-copy'
|
||||
});
|
||||
}
|
||||
|
||||
if ( canViewComments && this.isComments && !isEdit ) {
|
||||
itemsText.push({
|
||||
caption: _t.menuViewComment,
|
||||
event: 'viewcomment'
|
||||
});
|
||||
}
|
||||
|
||||
let isText = false,
|
||||
isTable = false,
|
||||
isImage = false,
|
||||
isChart = false,
|
||||
isShape = false,
|
||||
isLink = false,
|
||||
lockedText = false,
|
||||
lockedTable = false,
|
||||
lockedImage = false,
|
||||
lockedHeader = false;
|
||||
|
||||
stack.forEach(item => {
|
||||
const objectType = item.get_ObjectType(),
|
||||
objectValue = item.get_ObjectValue();
|
||||
|
||||
if ( objectType == Asc.c_oAscTypeSelectElement.Header ) {
|
||||
lockedHeader = objectValue.get_Locked();
|
||||
} else
|
||||
if ( objectType == Asc.c_oAscTypeSelectElement.Paragraph ) {
|
||||
lockedText = objectValue.get_Locked();
|
||||
isText = true;
|
||||
} else
|
||||
if ( objectType == Asc.c_oAscTypeSelectElement.Image ) {
|
||||
lockedImage = objectValue.get_Locked();
|
||||
if ( objectValue && objectValue.get_ChartProperties() ) {
|
||||
isChart = true;
|
||||
} else
|
||||
if ( objectValue && objectValue.get_ShapeProperties() ) {
|
||||
isShape = true;
|
||||
} else {
|
||||
isImage = true;
|
||||
}
|
||||
} else
|
||||
if ( objectType == Asc.c_oAscTypeSelectElement.Table ) {
|
||||
lockedTable = objectValue.get_Locked();
|
||||
isTable = true;
|
||||
} else
|
||||
if ( objectType == Asc.c_oAscTypeSelectElement.Hyperlink ) {
|
||||
isLink = true;
|
||||
}
|
||||
});
|
||||
|
||||
if ( stack.length > 0 ) {
|
||||
const swapItems = function(items, indexBefore, indexAfter) {
|
||||
items[indexAfter] = items.splice(indexBefore, 1, items[indexAfter])[0];
|
||||
};
|
||||
|
||||
if ( isEdit && !isDisconnected ) {
|
||||
if ( !lockedText && !lockedTable && !lockedImage && !lockedHeader && canCopy ) {
|
||||
itemsIcon.push({
|
||||
event: 'cut',
|
||||
icon: 'icon-cut'
|
||||
});
|
||||
|
||||
// Swap 'Copy' and 'Cut'
|
||||
swapItems(itemsIcon, 0, 1);
|
||||
}
|
||||
|
||||
if ( !lockedText && !lockedTable && !lockedImage && !lockedHeader ) {
|
||||
itemsIcon.push({
|
||||
event: 'paste',
|
||||
icon: 'icon-paste'
|
||||
});
|
||||
}
|
||||
|
||||
if ( isTable && api.CheckBeforeMergeCells() && !lockedTable && !lockedHeader) {
|
||||
itemsText.push({
|
||||
caption: _t.menuMerge,
|
||||
event: 'merge'
|
||||
});
|
||||
}
|
||||
|
||||
if ( isTable && api.CheckBeforeSplitCells() && !lockedTable && !lockedHeader ) {
|
||||
itemsText.push({
|
||||
caption: _t.menuSplit,
|
||||
event: 'split'
|
||||
});
|
||||
}
|
||||
|
||||
if ( !lockedText && !lockedTable && !lockedImage && !lockedHeader ) {
|
||||
itemsText.push({
|
||||
caption: _t.menuDelete,
|
||||
event: 'delete'
|
||||
});
|
||||
}
|
||||
|
||||
if ( isTable && !lockedTable && !lockedText && !lockedHeader ) {
|
||||
itemsText.push({
|
||||
caption: _t.menuDeleteTable,
|
||||
event: 'deletetable'
|
||||
});
|
||||
}
|
||||
|
||||
if ( !lockedText && !lockedTable && !lockedImage && !lockedHeader ){
|
||||
itemsText.push({
|
||||
caption: _t.menuEdit,
|
||||
event: 'edit'
|
||||
});
|
||||
}
|
||||
|
||||
if ( !!api.can_AddHyperlink() && !lockedHeader) {
|
||||
itemsText.push({
|
||||
caption: _t.menuAddLink,
|
||||
event: 'addlink'
|
||||
});
|
||||
}
|
||||
|
||||
if ( canReview ) {
|
||||
if (this.inRevisionChange) {
|
||||
itemsText.push({
|
||||
caption: _t.menuReviewChange,
|
||||
event: 'reviewchange'
|
||||
});
|
||||
} else {
|
||||
itemsText.push({
|
||||
caption: _t.menuReview,
|
||||
event: 'review'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if ( this.isComments && canViewComments ) {
|
||||
itemsText.push({
|
||||
caption: _t.menuViewComment,
|
||||
event: 'viewcomment'
|
||||
});
|
||||
}
|
||||
|
||||
const isObject = isShape || isChart || isImage || isTable;
|
||||
const hideAddComment = !canViewComments || api.can_AddQuotedComment() === false || lockedText || lockedTable || lockedImage || lockedHeader || (!isText && isObject);
|
||||
if ( !hideAddComment ) {
|
||||
itemsText.push({
|
||||
caption: _t.menuAddComment,
|
||||
event: 'addcomment'
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( isLink ) {
|
||||
itemsText.push({
|
||||
caption: _t.menuOpenLink,
|
||||
event: 'openlink'
|
||||
});
|
||||
}
|
||||
|
||||
if ( Device.phone && itemsText.length > 2 ) {
|
||||
this.extraItems = itemsText.splice(2,itemsText.length, {
|
||||
caption: _t.menuMore,
|
||||
event: 'showActionSheet'
|
||||
});
|
||||
}
|
||||
|
||||
return itemsIcon.concat(itemsText);
|
||||
// return [{
|
||||
// caption: 'Edit',
|
||||
// event: 'edit'
|
||||
// }, {
|
||||
// caption: 'View',
|
||||
// event: 'view'
|
||||
// }, {
|
||||
// icon: 'icon-paste',
|
||||
// event: 'review'
|
||||
// }];
|
||||
return EditorUIController.ContextMenu.mapMenuItems(this);
|
||||
}
|
||||
|
||||
initExtraItems () {
|
||||
|
|
|
@ -14,7 +14,10 @@ EditorUIController.getToolbarOptions = () => {
|
|||
EditorUIController.initFonts = () => null;
|
||||
EditorUIController.initEditorStyles = () => null;
|
||||
EditorUIController.initFocusObjects = () => null;
|
||||
EditorUIController.filterFocusObjects = () => [];
|
||||
EditorUIController.initTableTemplates = () => null;
|
||||
EditorUIController.ContextMenu = {
|
||||
mapMenuItems: () => [],
|
||||
handleMenuItemClick: () => true,
|
||||
};
|
||||
|
||||
export default EditorUIController;
|
||||
|
|
|
@ -24,11 +24,10 @@ export class storeFocusObjects {
|
|||
_headerType = 1;
|
||||
|
||||
resetFocusObjects (objects) {
|
||||
this._focusObjects = objects;
|
||||
}
|
||||
|
||||
get settings() {
|
||||
return EditorUIController.filterFocusObjects(this._focusObjects);
|
||||
return !!this.intf ? this.intf.filterFocusObjects() : null;
|
||||
}
|
||||
|
||||
get headerType() {
|
||||
|
@ -42,83 +41,23 @@ export class storeFocusObjects {
|
|||
}
|
||||
|
||||
get headerObject() {
|
||||
const headers = [];
|
||||
for (let object of this._focusObjects) {
|
||||
if (object.get_ObjectType() == Asc.c_oAscTypeSelectElement.Header) {
|
||||
headers.push(object);
|
||||
}
|
||||
}
|
||||
if (headers.length > 0) {
|
||||
const object = headers[headers.length - 1]; // get top
|
||||
return object.get_ObjectValue();
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
return !!this.intf ? this.intf.getHeaderObject() : null;
|
||||
}
|
||||
|
||||
get paragraphObject() {
|
||||
const paragraphs = [];
|
||||
for (let object of this._focusObjects) {
|
||||
if (object.get_ObjectType() === Asc.c_oAscTypeSelectElement.Paragraph) {
|
||||
paragraphs.push(object);
|
||||
}
|
||||
}
|
||||
if (paragraphs.length > 0) {
|
||||
const object = paragraphs[paragraphs.length - 1]; // get top
|
||||
return object.get_ObjectValue();
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
return !!this.intf ? this.intf.getParagraphObject() : null;
|
||||
}
|
||||
|
||||
get shapeObject() {
|
||||
const shapes = [];
|
||||
for (let object of this._focusObjects) {
|
||||
if (object.get_ObjectType() === Asc.c_oAscTypeSelectElement.Image) {
|
||||
if (object.get_ObjectValue() && object.get_ObjectValue().get_ShapeProperties()) {
|
||||
shapes.push(object);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (shapes.length > 0) {
|
||||
const object = shapes[shapes.length - 1]; // get top
|
||||
return object.get_ObjectValue();
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
return !!this.intf ? this.intf.getShapeObject() : null;
|
||||
}
|
||||
|
||||
get imageObject() {
|
||||
const images = [];
|
||||
for (let object of this._focusObjects) {
|
||||
if (object.get_ObjectType() == Asc.c_oAscTypeSelectElement.Image) {
|
||||
const imageObject = object.get_ObjectValue();
|
||||
if (imageObject && imageObject.get_ShapeProperties() === null && imageObject.get_ChartProperties() === null) {
|
||||
images.push(object);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (images.length > 0) {
|
||||
const object = images[images.length - 1]; // get top
|
||||
return object.get_ObjectValue();
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
return !!this.intf ? this.intf.getImageObject() : null;
|
||||
}
|
||||
|
||||
get tableObject() {
|
||||
const tables = [];
|
||||
for (let object of this._focusObjects) {
|
||||
if (object.get_ObjectType() == Asc.c_oAscTypeSelectElement.Table) {
|
||||
tables.push(object);
|
||||
}
|
||||
}
|
||||
if (tables.length > 0) {
|
||||
const object = tables[tables.length - 1]; // get top table
|
||||
return object.get_ObjectValue();
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
return !!this.intf ? this.intf.getTableObject() : null;
|
||||
}
|
||||
|
||||
get isTableInStack() {
|
||||
|
@ -131,32 +70,10 @@ export class storeFocusObjects {
|
|||
}
|
||||
|
||||
get chartObject() {
|
||||
const charts = [];
|
||||
for (let object of this._focusObjects) {
|
||||
if (object.get_ObjectValue() && object.get_ObjectValue().get_ChartProperties()) {
|
||||
charts.push(object);
|
||||
}
|
||||
}
|
||||
if (charts.length > 0) {
|
||||
const object = charts[charts.length - 1]; // get top table
|
||||
return object.get_ObjectValue();
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
return !!this.intf ? this.intf.getChartObject() : null;
|
||||
}
|
||||
|
||||
get linkObject() {
|
||||
const links = [];
|
||||
for (let object of this._focusObjects) {
|
||||
if (object.get_ObjectType() == Asc.c_oAscTypeSelectElement.Hyperlink) {
|
||||
links.push(object);
|
||||
}
|
||||
}
|
||||
if (links.length > 0) {
|
||||
const object = links[links.length - 1]; // get top
|
||||
return object.get_ObjectValue();
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
return !!this.intf ? this.intf.getLinkObject() : null;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue